diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 252a914..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Deploy to GitHub Pages - -on: - # Trigger the workflow every time you push to the `main` branch - # Using a different branch name? Replace `main` with your branch’s name - push: - branches: [ main ] - # Allows you to run this workflow manually from the Actions tab on GitHub. - workflow_dispatch: - -# Allow this job to clone the repo and create a page deployment -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout your repository using git - uses: actions/checkout@v4 - - name: Install, build, and upload your site - uses: withastro/action@v2 - # with: - # path: . # The root location of your Astro project inside the repository. (optional) - # node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional) - # package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional) - - deploy: - needs: build - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5052540..0000000 --- a/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# build output -dist/ - -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store - -.vercel diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 57c8cad..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["biomejs.biome", "astro-build.astro-vscode"] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b91cc0d..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "editor.formatOnSave": true, - "editor.defaultFormatter": "biomejs.biome", - "[javascript]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[javascriptreact]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "editor.codeActionsOnSave": { - "source.fixAll": "explicit", - "quickfix.biome": "always", - "source.organizeImports.biome": "always" - }, - "frontMatter.dashboard.openOnStart": false -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 17698e4..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 saicaca - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 45b3675..0000000 --- a/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# 🍥Fuwari - -A static blog template built with [Astro](https://astro.build). - -[**🖥️Live Demo (Vercel)**](https://fuwari.vercel.app)   /   [**🌏中文 README**](https://github.com/saicaca/fuwari/blob/main/README.zh-CN.md)   /   [**📦Old Hexo Version**](https://github.com/saicaca/hexo-theme-vivia) - -![Preview Image](https://raw.githubusercontent.com/saicaca/resource/main/fuwari/home.png) - -## ✨ Features - -- [x] Built with [Astro](https://astro.build) and [Tailwind CSS](https://tailwindcss.com) -- [x] Smooth animations and page transitions -- [x] Light / dark mode -- [x] Customizable theme colors & banner -- [x] Responsive design -- [ ] Comments -- [x] Search -- [ ] TOC - -## 🚀 How to Use - -1. [Generate a new repository](https://github.com/saicaca/fuwari/generate) from this template or fork this repository. -2. To edit your blog locally, clone your repository, run `pnpm install` AND `pnpm add sharp` to install dependencies. - - Install [pnpm](https://pnpm.io) `npm install -g pnpm` if you haven't. -3. Edit the config file `src/config.ts` to customize your blog. -4. Run `pnpm new-post ` to create a new post and edit it in `src/content/posts/`. -5. Deploy your blog to Vercel, Netlify, GitHub Pages, etc. following [the guides](https://docs.astro.build/en/guides/deploy/). You need to edit the site configuration in `astro.config.mjs` before deployment. - -## ⚙️ Frontmatter of Posts - -```yaml ---- -title: My First Blog Post -published: 2023-09-09 -description: This is the first post of my new Astro blog. -image: /images/cover.jpg -tags: [Foo, Bar] -category: Front-end -draft: false ---- -``` - -## 🧞 Commands - -All commands are run from the root of the project, from a terminal: - -| Command | Action | -|:------------------------------------|:-------------------------------------------------| -| `pnpm install` AND `pnpm add sharp` | Installs dependencies | -| `pnpm dev` | Starts local dev server at `localhost:4321` | -| `pnpm build` | Build your production site to `./dist/` | -| `pnpm preview` | Preview your build locally, before deploying | -| `pnpm new-post ` | Create a new post | -| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | -| `pnpm astro --help` | Get help using the Astro CLI | diff --git a/README.zh-CN.md b/README.zh-CN.md deleted file mode 100644 index acc9d0d..0000000 --- a/README.zh-CN.md +++ /dev/null @@ -1,55 +0,0 @@ -# 🍥Fuwari - -基于 [Astro](https://astro.build) 开发的静态博客模板。 - -[**🖥️在线预览(Vercel)**](https://fuwari.vercel.app)   /   [**🌏English README**](https://github.com/saicaca/fuwari)   /   [**📦旧 Hexo 版本**](https://github.com/saicaca/hexo-theme-vivia) - -![Preview Image](https://raw.githubusercontent.com/saicaca/resource/main/fuwari/home.png) - -## ✨ 功能特性 - -- [x] 基于 Astro 和 Tailwind CSS 开发 -- [x] 流畅的动画和页面过渡 -- [x] 亮色 / 暗色模式 -- [x] 自定义主题色和横幅图片 -- [x] 响应式设计 -- [ ] 评论 -- [x] 搜索 -- [ ] 文内目录 - -## 🚀 使用方法 - -1. 使用此模板[生成新仓库](https://github.com/saicaca/fuwari/generate)或 Fork 此仓库 -2. 进行本地开发,Clone 新的仓库,执行 `pnpm install` 和 `pnpm add sharp` 以安装依赖 - - 若未安装 [pnpm](https://pnpm.io),执行 `npm install -g pnpm` -3. 通过配置文件 `src/config.ts` 自定义博客 -4. 执行 `pnpm new-post ` 创建新文章,并在 `src/content/posts/` 目录中编辑 -5. 参考[官方指南](https://docs.astro.build/zh-cn/guides/deploy/)将博客部署至 Vercel, Netlify, GitHub Pages 等;部署前需编辑 `astro.config.mjs` 中的站点设置。 - -## ⚙️ 文章 Frontmatter - -```yaml ---- -title: My First Blog Post -published: 2023-09-09 -description: This is the first post of my new Astro blog. -image: /images/cover.jpg -tags: [Foo, Bar] -category: Front-end -draft: false ---- -``` - -## 🧞 指令 - -下列指令均需要在项目根目录执行: - -| Command | Action | -|:----------------------------------|:----------------------------------| -| `pnpm install` 并 `pnpm add sharp` | 安装依赖 | -| `pnpm dev` | 在 `localhost:4321` 启动本地开发服务器 | -| `pnpm build` | 构建网站至 `./dist/` | -| `pnpm preview` | 本地预览已构建的网站 | -| `pnpm new-post ` | 创建新文章 | -| `pnpm astro ...` | 执行 `astro add`, `astro check` 等指令 | -| `pnpm astro --help` | 显示 Astro CLI 帮助 | diff --git a/appmanifest.json b/appmanifest.json new file mode 100644 index 0000000..f826fb7 --- /dev/null +++ b/appmanifest.json @@ -0,0 +1,42 @@ +{ + "name": "xiaoyouxi", + "short_name": "xiaoyouxi", + "description": "", + "start_url": "index.html", + "display": "fullscreen", + "orientation": "landscape", + "background_color": "#ffffff", + "icons": [ + { + "src": "icons/icon-16.png", + "sizes": "16x16", + "type": "image/png" + }, + { + "src": "icons/icon-32.png", + "sizes": "32x32", + "type": "image/png" + }, + { + "src": "icons/icon-64.png", + "sizes": "64x64", + "type": "image/png" + }, + { + "src": "icons/icon-128.png", + "sizes": "128x128", + "type": "image/png" + }, + { + "src": "icons/icon-256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "icons/icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "screenshots": [] +} \ No newline at end of file diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index 9fc4ca3..0000000 --- a/astro.config.mjs +++ /dev/null @@ -1,94 +0,0 @@ -import tailwind from "@astrojs/tailwind" -import Compress from "astro-compress" -import icon from "astro-icon" -import { defineConfig } from "astro/config" -import Color from "colorjs.io" -import rehypeAutolinkHeadings from "rehype-autolink-headings" -import rehypeKatex from "rehype-katex" -import rehypeSlug from "rehype-slug" -import remarkMath from "remark-math" -import { remarkReadingTime } from "./src/plugins/remark-reading-time.mjs" -import svelte from "@astrojs/svelte" -import swup from '@swup/astro'; - -const oklchToHex = (str) => { - const DEFAULT_HUE = 250 - const regex = /-?\d+(\.\d+)?/g - const matches = str.string.match(regex) - const lch = [matches[0], matches[1], DEFAULT_HUE] - return new Color("oklch", lch).to("srgb").toString({ - format: "hex", - }) -} - -// https://astro.build/config -export default defineConfig({ - site: "https://Fragtex254.github.io", - base: "/", - integrations: [ - tailwind(), - swup({ - theme: false, - animationClass: 'transition-', - containers: ['main'], - smoothScrolling: true, - cache: true, - preload: true, - accessibility: true, - globalInstance: true, - }), - icon({ - include: { - "material-symbols": ["*"], - "fa6-brands": ["*"], - "fa6-regular": ["*"], - "fa6-solid": ["*"], - }, - }), - Compress({ - Image: false, - }), - svelte(), - ], - markdown: { - remarkPlugins: [remarkMath, remarkReadingTime], - rehypePlugins: [ - rehypeKatex, - rehypeSlug, - [ - rehypeAutolinkHeadings, - { - behavior: "append", - properties: { - className: ["anchor"], - }, - content: { - type: "element", - tagName: "span", - properties: { - className: ["anchor-icon"], - 'data-pagefind-ignore': true, - }, - children: [ - { - type: "text", - value: "#", - }, - ], - }, - }, - ], - ], - }, - vite: { - css: { - preprocessorOptions: { - stylus: { - define: { - oklchToHex: oklchToHex, - }, - }, - }, - }, - }, -}) diff --git a/biome.json b/biome.json deleted file mode 100644 index f2af656..0000000 --- a/biome.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", - "extends": [], - "files": { "ignoreUnknown": true }, - "organizeImports": { - "enabled": true - }, - "formatter": { - "enabled": true, - "formatWithErrors": false, - "ignore": [], - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 80 - }, - "javascript": { - "parser": { - "unsafeParameterDecoratorsEnabled": true - }, - "formatter": { - "quoteStyle": "single", - "jsxQuoteStyle": "single", - "trailingComma": "all", - "semicolons": "asNeeded", - "arrowParentheses": "asNeeded" - } - }, - "json": { - "parser": { "allowComments": true }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 80 - } - }, - "linter": { - "ignore": [], - "rules": { - "a11y": { - "recommended": true - }, - "complexity": { - "recommended": true - }, - "correctness": { - "recommended": true - }, - "performance": { - "recommended": true - }, - "security": { - "recommended": true - }, - "style": { - "recommended": true - }, - "suspicious": { - "recommended": true - }, - "nursery": { - "recommended": true - } - } - } -} diff --git a/data.json b/data.json new file mode 100644 index 0000000..6b42264 --- /dev/null +++ b/data.json @@ -0,0 +1 @@ +{"project":["xiaoyouxi",null,[[[0,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,false,false,1],[7,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,1],[9,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,1],[13,false,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,false,false,1],[14,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,1]],[[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[8,1],[10,1],[11,1],[12,1],[15,1],[16,1]]],[["bg",0,false,[],0,0,null,[["Default",5,false,1,0,false,620871563231257,[["images/shared-0-sheet2.webp",7980480,0,0,2480,4792,false,1,0.5,0.5,[],[],""]]]],[],false,false,497377193667731,[],null,0,null],["binansuo",0,false,[],0,0,null,[["Default",5,false,1,0,false,192756738941941,[["images/shared-0-sheet3.webp",2683170,0,0,2480,1533,false,1,0.5,0.5,[],[],""]]]],[],false,false,320131781919561,[],null,1,null],["bg2",0,false,[],0,0,null,[["Default",5,false,1,0,false,965734351223548,[["images/shared-0-sheet0.webp",8689424,0,0,2480,4792,false,1,0.5,0.5,[],[],""]]]],[],false,false,243262979865978,[],null,2,null],["fadianchang",0,false,[[411081405232535,1,"sy",3],[171304837548761,1,"interal",4]],1,0,null,[["bad",5,false,1,0,false,920782982224869,[["images/shared-0-sheet4.webp",1345864,1,1,1016,566,true,1,0.530511811023622,0.8392226148409894,[],[-0.499015748031496,-0.4328621908127207,0.41437007874015763,-0.45229681978798614,0.4365157480314962,-0.3166961130742052,0.4586614173228347,-0.18109540636042432,0.3513779527559058,0.1148409893992931,-0.44980314960629914,0.13604240282685554],""]]],["fix",5,false,1,0,false,430597013856837,[["images/shared-0-sheet4.webp",1345864,569,1,1016,566,true,1,0.530511811023622,0.8392226148409894,[],[-0.499015748031496,-0.4328621908127207,0.41437007874015763,-0.45229681978798614,0.4365157480314962,-0.3166961130742052,0.4586614173228347,-0.18109540636042432,0.3513779527559058,0.1148409893992931,-0.44980314960629914,0.13604240282685554],""]]]],[["Solid",1,966123169391375,5]],false,false,373146181754285,[],null,6,null],["paotai",0,false,[[411081405232535,1,"sy",3],[354740809353605,1,"atk",7],[578299233565360,1,"lv",8]],2,0,null,[["Default",5,false,1,0,false,263896336743001,[["images/shared-0-sheet4.webp",1345864,523,1537,497,292,true,1,0.2857142857142857,0.5,[["pao",1.0241448692152917,0.613013698630137]],[0.7142857142857143,-0.5,0.7142857142857143,0.5,-0.2857142857142857,0.5,-0.2857142857142857,-0.5],""]]]],[["Turret",2,608814201628020,9],["Tween",3,711123344566895,10]],false,false,313597532569079,[],null,11,null],["cankao",0,false,[],0,0,null,[["Default",5,false,1,0,false,972866388146573,[["images/shared-0-sheet1.webp",8002264,0,0,2480,4792,false,1,0.5,0.5,[],[],""]]]],[],false,false,382026106041308,[],null,12,null],["ui_dianli",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,741306472660963,[["images/shared-0-sheet4.webp",1345864,1116,1537,281,279,true,1,0.5,0.5,[],[],""]]]],[],false,false,918026031590172,[],null,13,null],["ui_daojishi",0,false,[[971523674624831,1,"interal",4]],1,0,null,[["Default",5,false,1,0,false,312444105032608,[["images/shared-0-sheet4.webp",1345864,1659,1,877,294,true,1,0.5,0.5,[],[],""]]]],[["Timer",4,424898268259077,14]],false,false,858454859432850,[],null,15,null],["ui_boci",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,503680733917793,[["images/shared-0-sheet4.webp",1345864,1659,1025,786,285,true,1,0.5,0.5,[],[],""]]]],[],false,false,203421365920716,[],null,16,null],["paodan",0,false,[[180689740339616,1,"atk",7]],2,0,null,[["Default",5,false,1,0,false,268024560887111,[["images/shared-0-sheet5.webp",77818,417,513,154,85,true,1,0.5,0.5,[],[0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5],""]]]],[["Bullet",5,405898865692970,17],["DestroyOutsideLayout",6,262124105776271,18]],false,false,848103791968239,[],null,19,null],["base",0,false,[[136479514091266,1,"getBulilding",20]],0,0,null,[["Animation 1",5,false,1,0,false,712091237175542,[["images/shared-0-sheet5.webp",77818,1,513,220,220,false,1,0.5,0.5,[],[],""]]]],[],false,false,959029571486299,[],null,21,null],["role_hp3",7,false,[[164104078200843,1,"puid",22]],1,0,["images/role_hp3-sheet0.webp",646,0,0,231,44,false],null,[["Pin",8,446524345987287,23]],false,false,873834284690391,[],null,24,[1,1]],["role_hp2",7,false,[[164104078200843,1,"puid",22]],0,0,["images/role_hp2-sheet0.webp",670,0,0,181,44,false],null,[],false,false,241988272485579,[],null,25,[1,1]],["role_hp1",7,false,[[164104078200843,1,"puid",22]],0,0,["images/role_hp1-sheet0.webp",1008,0,0,237,48,false],null,[],false,false,508939369332669,[],null,26,[1,1]],["boss_hp2",7,false,[[164104078200843,1,"puid",22]],1,0,["images/boss_hp2-sheet0.webp",730,0,0,218,53,false],null,[["DestroyOutsideLayout",6,671972745607661,18]],false,false,569943843940986,[],null,27,[1,1]],["boss_hp1",7,false,[[164104078200843,1,"puid",22]],1,0,["images/boss_hp1-sheet0.webp",2270,0,0,458,58,false],null,[["DestroyOutsideLayout",6,630449153284225,18]],false,false,300232117265577,[],null,28,[1,1]],["boss_hp3",7,false,[[164104078200843,1,"puid",22]],1,0,["images/boss_hp3-sheet0.webp",876,0,0,451,53,false],null,[["Pin",8,410251253329968,23]],false,false,925280848694969,[],null,29,[1,1]],["skillbg",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,748108335984851,[["images/shared-0-sheet6.webp",880118,0,0,2480,553,false,1,0.5,0.5,[],[],""]]]],[],false,false,319122802640555,[],null,30,null],["icon_skill1",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,795318986985949,[["images/shared-0-sheet4.webp",1345864,1,1025,520,520,false,1,0.5,0.5,[],[],""]]]],[],false,false,462723237934298,[],null,31,null],["icon_skill2",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,542533845511287,[["images/shared-0-sheet4.webp",1345864,1137,523,520,520,false,1,0.5,0.5,[],[],""]]]],[],false,false,668999806608710,[],null,32,null],["icon_skill3",0,false,[[971523674624831,1,"interal",4]],0,0,null,[["Default",5,false,1,0,false,724800410672133,[["images/shared-0-sheet4.webp",1345864,1137,1,520,520,false,1,0.5,0.5,[],[],""]]]],[],false,false,912635634864454,[],null,33,null],["eny_hp3",7,false,[[164104078200843,1,"puid",22]],0,0,["images/eny_hp3-sheet0.webp",646,0,0,231,44,false],null,[],false,false,152984223775955,[],null,34,[1,1]],["eny_hp2",7,false,[[164104078200843,1,"puid",22]],0,0,["images/eny_hp2-sheet0.webp",666,0,0,181,44,false],null,[],false,false,496010475328615,[],null,35,[1,1]],["eny_hp1",7,false,[[164104078200843,1,"puid",22]],0,0,["images/eny_hp1-sheet0.webp",1008,0,0,237,48,false],null,[],false,false,538994828964896,[],null,36,[1,1]],["role_1",0,false,[[411081405232535,1,"sy",3],[632577955994450,2,"state",37],[323517463709282,2,"nextState",38]],1,0,null,[["daiji",40,true,1,0,false,593876527500039,[["images/role_1-sheet8.webp",192712,1,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,1073,1025,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,537,1025,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,1,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,1073,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,537,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet8.webp",192712,1,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1073,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,537,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1073,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,537,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1073,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,537,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet7.webp",249930,1,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1073,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,537,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1073,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,537,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1073,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,537,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet6.webp",248328,1,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1073,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,537,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1073,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,537,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1073,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,537,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet5.webp",254148,1,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,537,1299,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,1,1299,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,1073,1233,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,537,683,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,1231,617,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,1,683,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""],["images/role_1-sheet4.webp",242354,1231,1,534,614,false,1,0.40262172284644193,0.8745928338762216,[],[-0.10299625468164803,-0.2752442996742671,0.05056179775280856,-0.26547231270358296,0.050561797752808335,0.004885993485341911,-0.11048689138576767,0.008143322475569925],""]]],["pao",16,true,1,0,false,176643897666836,[["images/role_1-sheet1.webp",236250,635,1325,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.05005807613900354,-0.277924193070773,0.10349997629545304,-0.2681522061000887,0.10349997629545282,0.0022061000888361493,-0.057548712843123184,0.005463429079064164],""],["images/role_1-sheet1.webp",236250,1,1325,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,1269,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,635,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,1,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,1269,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,635,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet1.webp",236250,1,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1269,1325,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,635,1325,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1,1325,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1269,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,635,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1,663,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1269,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,635,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""],["images/role_1-sheet0.webp",238138,1,1,632,660,false,1,0.38449367088607594,0.8106060606060606,[],[-0.08486820272128204,-0.2112575264041061,0.06868984971317454,-0.20148553943342196,0.06868984971317432,0.06887276675550291,-0.09235883942540168,0.07213009574573093],""]]],["xiuli",20,true,1,0,false,768218773151747,[["images/role_1-sheet4.webp",242354,616,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.09026033933928446,-0.2830044069745158,0.06329771309517213,-0.27323242000383163,0.0632977130951719,-0.0028741138149067647,-0.0977509760434041,0.0003832151753212498],""],["images/role_1-sheet4.webp",242354,1,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1231,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,616,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1231,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,616,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1231,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,616,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet3.webp",236822,1,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1231,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,616,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1,1365,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1231,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,616,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1,683,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,616,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet2.webp",237984,1231,1,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""],["images/role_1-sheet1.webp",236250,1269,1325,613,680,false,1,0.4029363784665579,0.7647058823529411,[],[-0.10331091030176398,-0.16535734815098668,0.0502471421326926,-0.15558536118030253,0.05024714213269238,0.11477294500862234,-0.11080154700588363,0.11803027399885035],""]]]],[["Pin",8,580602781591739,23]],false,false,191422782717665,[],null,39,null],["Touch",9,false,[],0,0,null,null,[],false,false,710054076943541,[],null,40,null,[true]],["role_proxy",0,false,[],2,0,null,[["Animation 1",5,false,1,0,false,782848611823646,[["images/shared-0-sheet5.webp",77818,257,897,100,100,false,1,0.5,1,[],[],""]]]],[["MoveTo",10,873695076475888,41],["Pathfinding",11,773035610143327,42]],false,false,428567325253164,[],null,43,null],["eny_1",0,false,[[411081405232535,1,"sy",3],[959604035918940,2,"state",37],[174737783358662,1,"hp",44],[157843391377904,1,"maxhp",45],[673249040303074,1,"atk",7]],3,0,null,[["zou",30,true,1,0,false,247607084177088,[["images/eny_1-sheet14.webp",57852,0,0,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1113,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,557,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1113,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,557,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1113,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,557,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet13.webp",1043102,1,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1113,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,557,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1113,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,557,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1113,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,557,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet12.webp",1003194,1,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1113,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,557,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1,1113,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1113,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,557,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1,557,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1113,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,557,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet11.webp",986926,1,1,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet10.webp",975624,1113,1125,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet10.webp",975624,557,1125,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""],["images/eny_1-sheet10.webp",975624,1,1125,554,554,false,1,0.6191335740072202,0.944043321299639,[],[-0.1498330155897185,-0.30859370406519315,0.10480806933571274,-0.3060419337010073,0.10661312348733776,-0.023048248450710407,-0.15010343568733997,-0.01798586530885804],""]]],["shouji",20,false,1,0,false,592979343196856,[["images/eny_1-sheet10.webp",975624,1119,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet10.webp",975624,560,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet10.webp",975624,1,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet10.webp",975624,1119,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet10.webp",975624,560,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet10.webp",975624,1,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1119,1125,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,560,1125,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1,1125,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1119,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,560,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1,563,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1119,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,560,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet9.webp",1034554,1,1,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,1119,1340,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,560,1340,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,1,1340,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,1119,778,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,560,778,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""],["images/eny_1-sheet8.webp",997620,1,778,557,560,false,1,0.5798922800718133,0.9732142857142857,[],[-0.167160887310969,-0.32208003722661716,0.08334510049152966,-0.3212366216845044,0.08154976835508498,-0.031235458352722456,-0.17465152401508865,-0.03869241507678012],""]]],["siwang",50,false,1,0,false,159253724629062,[["images/eny_1-sheet8.webp",997620,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.395858402802948,-0.24218992733650713,-0.2423003503684914,-0.23241794036582297,-0.24230035036849162,0.037940365823101896,-0.40334903950706763,0.04119769481332991],""],["images/eny_1-sheet8.webp",997620,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.029677419354838697,-0.8123076923076923,0.15612903225806452,-0.6861538461538462,0.24774193548387102,-0.5707692307692308,0.1509677419354839,-0.007692307692307776,0.03870967741935494,0.01538461538461533,-0.07225806451612904,-0.004615384615384688,-0.17161290322580636,-0.05076923076923079,-0.264516129032258,-0.5692307692307692,-0.25677419354838704,-0.6615384615384616,-0.1548387096774193,-0.8061538461538462],""],["images/eny_1-sheet8.webp",997620,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.06967741935483862,-0.7815384615384615,0.05161290322580647,-0.7707692307692308,0.2735483870967742,-0.6107692307692307,0.3019354838709678,-0.48000000000000004,0.16000000000000003,-0.023076923076923106,0.05419354838709678,0.018461538461538418,-0.09548387096774191,-0.01692307692307693,-0.17290322580645157,-0.09999999999999998,-0.17161290322580636,-0.6338461538461538,-0.14709677419354839,-0.7076923076923077],""],["images/eny_1-sheet7.webp",647626,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.06064516129032249,-0.7876923076923077,0.06580645161290322,-0.7692307692307693,0.2748387096774194,-0.5892307692307692,0.2980645161290323,-0.4984615384615385,0.2967741935483872,-0.4553846153846154,0.16645161290322585,-0.009230769230769265,0.05419354838709678,0.013846153846153841,-0.06580645161290322,-0.012307692307692353,-0.15612903225806452,-0.08000000000000007,-0.1806451612903225,-0.19692307692307698,-0.16387096774193544,-0.6415384615384616,-0.13032258064516122,-0.7246153846153847],""],["images/eny_1-sheet7.webp",647626,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.04645161290322575,-0.796923076923077,0.07870967741935486,-0.7723076923076924,0.20129032258064516,-0.6646153846153846,0.2722580645161291,-0.5676923076923077,0.2967741935483872,-0.4707692307692308,0.16516129032258065,0.006153846153846176,0.050322580645161374,0.007692307692307665,-0.03741935483870962,-0.007692307692307776,-0.13548387096774184,-0.05230769230769239,-0.19999999999999996,-0.20615384615384613,-0.15999999999999992,-0.6507692307692308,-0.13032258064516122,-0.7261538461538461],""],["images/eny_1-sheet7.webp",647626,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.04258064516129023,-0.816923076923077,0.08387096774193548,-0.7892307692307693,0.19870967741935486,-0.6723076923076923,0.2438709677419355,-0.5969230769230769,0.2929032258064517,-0.46153846153846156,0.16516129032258065,0.006153846153846176,0.050322580645161374,0.007692307692307665,-0.11225806451612896,-0.026153846153846194,-0.21677419354838706,-0.21076923076923082,-0.17677419354838708,-0.6384615384615385,-0.14580645161290318,-0.7261538461538461],""],["images/eny_1-sheet7.webp",647626,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.04258064516129023,-0.8415384615384616,0.0929032258064516,-0.8076923076923077,0.19096774193548394,-0.696923076923077,0.28387096774193554,-0.4707692307692308,0.14709677419354839,-0.006153846153846176,0.03483870967741942,0.007692307692307665,-0.08774193548387088,-0.0015384615384615996,-0.22064516129032252,-0.22000000000000008,-0.20516129032258063,-0.6261538461538462,-0.18967741935483862,-0.7138461538461539],""],["images/eny_1-sheet7.webp",647626,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.041290322580645133,-0.8353846153846154,0.0864516129032259,-0.7923076923076924,0.16903225806451616,-0.7476923076923078,0.25935483870967746,-0.4953846153846154,0.21935483870967742,-0.17538461538461536,0.1458064516129033,-0.003076923076923088,0.030967741935483906,0.007692307692307665,-0.08516129032258057,0.0015384615384614886,-0.22193548387096768,-0.1892307692307693,-0.25161290322580643,-0.6984615384615385],""],["images/eny_1-sheet7.webp",647626,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.06838709677419352,-0.8,0.1535483870967742,-0.76,0.22193548387096773,-0.5323076923076924,0.22451612903225815,-0.16000000000000003,0.14322580645161298,0,0.029677419354838808,0.009230769230769154,-0.08387096774193548,0.0015384615384614886,-0.21935483870967737,-0.16000000000000003,-0.2993548387096774,-0.5969230769230769,-0.30064516129032254,-0.6892307692307693],""],["images/eny_1-sheet6.webp",700528,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.1212903225806451,-0.7584615384615385,0.11225806451612907,-0.7569230769230769,0.1780645161290323,-0.5707692307692308,0.23354838709677428,-0.16307692307692312,0.14193548387096777,0.003076923076923088,0.02580645161290329,0.009230769230769154,-0.08387096774193548,0.0015384615384614886,-0.21290322580645155,-0.13076923076923075,-0.3406451612903225,-0.5784615384615385,-0.33935483870967736,-0.6476923076923078],""],["images/eny_1-sheet6.webp",700528,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[0.056774193548387086,-0.7584615384615385,0.13419354838709685,-0.6061538461538462,0.2387096774193549,-0.1676923076923077,0.13161290322580654,0.007692307692307665,0.024516129032258083,0.010769230769230753,-0.08387096774193548,0.0015384615384614886,-0.20258064516129026,-0.10461538461538467,-0.36387096774193545,-0.5061538461538462,-0.3754838709677419,-0.5907692307692308,-0.17419354838709677,-0.7230769230769231],""],["images/eny_1-sheet6.webp",700528,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[0.015483870967741953,-0.7723076923076924,0.11225806451612907,-0.6246153846153847,0.23741935483870968,-0.15538461538461545,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.08129032258064517,0.003076923076923088,-0.1961290322580645,-0.08923076923076922,-0.384516129032258,-0.4784615384615385,-0.39999999999999997,-0.5553846153846154,-0.2451612903225806,-0.696923076923077],""],["images/eny_1-sheet6.webp",700528,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.020645161290322567,-0.7861538461538462,0.10064516129032264,-0.64,0.23483870967741938,-0.1461538461538462,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.08129032258064517,0.003076923076923088,-0.18838709677419352,-0.07538461538461538,-0.3987096774193548,-0.44461538461538463,-0.42064516129032253,-0.5292307692307693,-0.24387096774193545,-0.7107692307692308],""],["images/eny_1-sheet6.webp",700528,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.05935483870967739,-0.7938461538461539,0.0903225806451613,-0.6507692307692308,0.23354838709677428,-0.1446153846153846,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07999999999999996,0.003076923076923088,-0.1806451612903225,-0.06615384615384623,-0.4116129032258064,-0.42000000000000004,-0.43225806451612897,-0.5,-0.2748387096774193,-0.7107692307692308],""],["images/eny_1-sheet6.webp",700528,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.09677419354838701,-0.7876923076923077,0.08000000000000007,-0.6553846153846155,0.22838709677419355,-0.14,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07999999999999996,0.003076923076923088,-0.184516129032258,-0.06153846153846154,-0.41290322580645156,-0.3861538461538462,-0.4309677419354838,-0.4723076923076923,-0.3058064516129032,-0.7061538461538461],""],["images/eny_1-sheet5.webp",681962,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.1264516129032257,-0.7707692307692308,0.07225806451612904,-0.6569230769230769,0.22322580645161294,-0.13692307692307693,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07870967741935475,0.003076923076923088,-0.21032258064516124,-0.0953846153846154,-0.4141935483870967,-0.3784615384615385,-0.4193548387096774,-0.4584615384615385,-0.33419354838709675,-0.696923076923077,-0.2309677419354838,-0.7446153846153847],""],["images/eny_1-sheet5.webp",681962,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.14580645161290318,-0.7476923076923078,0.06709677419354843,-0.6569230769230769,0.2129032258064517,-0.12307692307692308,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07741935483870965,0.004615384615384577,-0.2309677419354838,-0.13538461538461544,-0.40645161290322573,-0.38,-0.40645161290322573,-0.4753846153846154,-0.35612903225806447,-0.6846153846153846,-0.2503225806451612,-0.7353846153846154],""],["images/eny_1-sheet5.webp",681962,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2619354838709677,-0.7261538461538461,-0.1535483870967741,-0.7230769230769231,-0.03483870967741931,-0.7000000000000001,0.06451612903225812,-0.6507692307692308,0.20387096774193558,-0.15846153846153854,0.20258064516129037,-0.11538461538461542,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07870967741935475,0.003076923076923088,-0.24387096774193545,-0.17846153846153845,-0.39612903225806445,-0.38153846153846155,-0.3987096774193548,-0.4984615384615385,-0.37032258064516127,-0.6707692307692308],""],["images/eny_1-sheet5.webp",681962,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2683870967741935,-0.716923076923077,-0.023225806451612874,-0.6938461538461539,0.06709677419354843,-0.6415384615384616,0.19741935483870976,-0.1446153846153846,0.18967741935483873,-0.10461538461538467,0.12903225806451613,0.010769230769230753,0.024516129032258083,0.012307692307692242,-0.07612903225806444,0.004615384615384577,-0.384516129032258,-0.38461538461538464,-0.3948387096774193,-0.5092307692307693,-0.38064516129032255,-0.6569230769230769],""],["images/eny_1-sheet5.webp",681962,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2748387096774193,-0.7092307692307692,-0.06967741935483862,-0.6815384615384615,0.05419354838709678,-0.6261538461538462,0.20258064516129037,-0.17846153846153845,0.20516129032258068,-0.13846153846153852,0.13161290322580654,0.013846153846153841,0.06967741935483873,0.013846153846153841,-0.08129032258064517,0.010769230769230753,-0.392258064516129,-0.36000000000000004,-0.40645161290322573,-0.46769230769230774,-0.38838709677419353,-0.6461538461538462],""],["images/eny_1-sheet5.webp",681962,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2748387096774193,-0.6984615384615385,-0.07354838709677414,-0.6584615384615384,0.049032258064516165,-0.6015384615384616,0.2141935483870968,-0.1923076923076923,0.12516129032258072,0.018461538461538418,-0.08387096774193548,0.018461538461538418,-0.24645161290322576,-0.12461538461538468,-0.39354838709677414,-0.3323076923076923,-0.4141935483870967,-0.44461538461538463,-0.39096774193548384,-0.6353846153846154],""],["images/eny_1-sheet4.webp",649428,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2812903225806451,-0.6938461538461539,-0.17548387096774187,-0.6815384615384615,0.021935483870967776,-0.5907692307692308,0.18967741935483873,-0.27076923076923076,0.19225806451612903,-0.23076923076923084,0.12774193548387103,0.012307692307692242,-0.014193548387096744,0.02923076923076917,-0.06451612903225801,0.020000000000000018,-0.25935483870967735,-0.09076923076923082,-0.39354838709677414,-0.2923076923076924,-0.4361290322580645,-0.42307692307692313,-0.4025806451612903,-0.6292307692307693],""],["images/eny_1-sheet4.webp",649428,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.2258064516129032,-0.6938461538461539,-0.02709677419354839,-0.5800000000000001,0.15870967741935493,-0.2907692307692308,0.13161290322580654,0.006153846153846176,0.015483870967741953,0.03384615384615386,-0.03483870967741931,0.02923076923076917,-0.2851612903225806,-0.08153846153846156,-0.47354838709677416,-0.37230769230769234,-0.4116129032258064,-0.5938461538461539],""],["images/eny_1-sheet4.webp",649428,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.25161290322580643,-0.6784615384615384,-0.08516129032258057,-0.5676923076923077,0.11354838709677428,-0.3292307692307692,0.1187096774193549,-0.013846153846153841,0.0283870967741936,0.03692307692307695,-0.02451612903225797,0.039999999999999925,-0.2851612903225806,-0.03846153846153855,-0.5083870967741935,-0.29538461538461547,-0.43225806451612897,-0.5323076923076924],""],["images/eny_1-sheet4.webp",649428,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.30322580645161284,-0.6184615384615385,-0.17032258064516126,-0.5384615384615385,0.06451612903225812,-0.3046153846153846,0.10064516129032264,-0.03384615384615386,0.07225806451612904,0.0015384615384614886,0.03612903225806452,0.03692307692307695,-0.049032258064516054,0.04307692307692301,-0.3058064516129032,0.01538461538461533,-0.5587096774193547,-0.20153846153846156,-0.5277419354838709,-0.3553846153846154],""],["images/eny_1-sheet4.webp",649428,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.3793548387096774,-0.5523076923076924,-0.2580645161290322,-0.5030769230769231,0.03483870967741942,-0.24461538461538468,0.07870967741935486,-0.056923076923076965,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.3251612903225806,0.06615384615384612,-0.6025806451612903,-0.10153846153846158,-0.5858064516129031,-0.2676923076923077,-0.5599999999999999,-0.32153846153846155,-0.4954838709677419,-0.42000000000000004],""],["images/eny_1-sheet4.webp",649428,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42709677419354836,-0.536923076923077,-0.2941935483870967,-0.5015384615384615,0.058064516129032295,-0.17692307692307696,0.08129032258064517,-0.08000000000000007,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.31741935483870964,0.0707692307692307,-0.6051612903225806,-0.06000000000000005,-0.6090322580645161,-0.22153846153846157,-0.5935483870967742,-0.2846153846153846,-0.5354838709677419,-0.3907692307692308],""],["images/eny_1-sheet3.webp",640826,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4903225806451612,-0.49692307692307697,-0.34967741935483865,-0.48923076923076925,0.059354838709677504,-0.14,0.08129032258064517,-0.10153846153846158,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.2941935483870967,0.07692307692307687,-0.5974193548387097,0.0015384615384614886,-0.6245161290322581,-0.1430769230769231,-0.6232258064516129,-0.20923076923076922,-0.5780645161290322,-0.3323076923076923],""],["images/eny_1-sheet3.webp",640826,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.38322580645161286,-0.48000000000000004,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.2851612903225806,0.07692307692307687,-0.592258064516129,0.03538461538461535,-0.6309677419354838,-0.10461538461538467,-0.6348387096774193,-0.17538461538461536,-0.5987096774193548,-0.29692307692307696,-0.5212903225806451,-0.4723076923076923],""],["images/eny_1-sheet3.webp",640826,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.39354838709677414,-0.48615384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.2812903225806451,0.07692307692307687,-0.5909677419354838,0.039999999999999925,-0.6554838709677419,-0.1461538461538462,-0.6516129032258065,-0.1892307692307693,-0.5638709677419355,-0.45692307692307693],""],["images/eny_1-sheet3.webp",640826,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.40774193548387094,-0.48923076923076925,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5690322580645161,0.08461538461538454,-0.672258064516129,-0.15384615384615385,-0.5987096774193548,-0.42000000000000004],""],["images/eny_1-sheet3.webp",640826,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4219354838709677,-0.48615384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5058064516129032,0.11384615384615382,-0.5690322580645161,0.10461538461538455,-0.6838709677419355,-0.11076923076923084,-0.616774193548387,-0.3738461538461539],""],["images/eny_1-sheet3.webp",640826,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4309677419354838,-0.4815384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5083870967741935,0.12461538461538457,-0.5754838709677419,0.11692307692307691,-0.6851612903225806,-0.07538461538461538,-0.6632258064516129,-0.2123076923076923,-0.6206451612903225,-0.3292307692307692],""],["images/eny_1-sheet2.webp",603586,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.43741935483870964,-0.47692307692307695,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5148387096774193,0.13384615384615384,-0.5832258064516128,0.12,-0.6812903225806451,-0.04615384615384621,-0.664516129032258,-0.1876923076923077,-0.6141935483870967,-0.2923076923076924,-0.5264516129032257,-0.39692307692307693],""],["images/eny_1-sheet2.webp",603586,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.43999999999999995,-0.4723076923076923,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5225806451612902,0.14,-0.5883870967741935,0.1184615384615384,-0.6761290322580644,-0.023076923076923106,-0.6632258064516129,-0.1676923076923077,-0.5277419354838709,-0.3953846153846154],""],["images/eny_1-sheet2.webp",603586,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.44258064516129025,-0.4707692307692308,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5264516129032257,0.1446153846153846,-0.5883870967741935,0.1184615384615384,-0.6709677419354838,-0.004615384615384688,-0.6619354838709677,-0.15384615384615385,-0.5277419354838709,-0.3953846153846154],""],["images/eny_1-sheet2.webp",603586,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.44258064516129025,-0.4707692307692308,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5277419354838709,0.14769230769230768,-0.5858064516129031,0.12,-0.6670967741935483,0.004615384615384577,-0.6606451612903226,-0.1446153846153846,-0.5277419354838709,-0.3953846153846154],""],["images/eny_1-sheet2.webp",603586,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.44258064516129025,-0.4723076923076923,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5135483870967741,0.15538461538461534,-0.5819354838709677,0.12,-0.6658064516129032,0.006153846153846176,-0.6606451612903226,-0.14,-0.5277419354838709,-0.3953846153846154],""],["images/eny_1-sheet2.webp",603586,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.43999999999999995,-0.47384615384615386,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5109677419354839,0.15538461538461534,-0.576774193548387,0.12,-0.6658064516129032,0.006153846153846176,-0.6619354838709677,-0.14,-0.5277419354838709,-0.3953846153846154],""],["images/eny_1-sheet1.webp",616020,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.43741935483870964,-0.4753846153846154,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5058064516129032,0.15384615384615385,-0.5703225806451613,0.12,-0.6683870967741935,0.0015384615384614886,-0.664516129032258,-0.1430769230769231,-0.5290322580645161,-0.3938461538461539],""],["images/eny_1-sheet1.webp",616020,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4361290322580645,-0.4784615384615385,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.49806451612903224,0.15076923076923077,-0.5664516129032258,0.1184615384615384,-0.6735483870967741,-0.007692307692307776,-0.6658064516129032,-0.15384615384615385,-0.5483870967741935,-0.37230769230769234],""],["images/eny_1-sheet1.webp",616020,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4335483870967741,-0.48000000000000004,-0.24903225806451607,-0.3676923076923077,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.5032258064516129,0.1430769230769231,-0.5625806451612902,0.11692307692307691,-0.6787096774193548,-0.01692307692307693,-0.6709677419354838,-0.16000000000000003,-0.5458064516129032,-0.37692307692307697],""],["images/eny_1-sheet1.webp",616020,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.43225806451612897,-0.4815384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4954838709677419,0.14,-0.5612903225806452,0.11384615384615382,-0.6838709677419355,-0.026153846153846194,-0.6748387096774193,-0.1692307692307693,-0.544516129032258,-0.3784615384615385],""],["images/eny_1-sheet1.webp",616020,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4815384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4941935483870967,0.13538461538461533,-0.5625806451612902,0.11076923076923073,-0.687741935483871,-0.03384615384615386,-0.6761290322580644,-0.17846153846153845,-0.5961290322580645,-0.316923076923077,-0.5419354838709677,-0.38153846153846155],""],["images/eny_1-sheet1.webp",616020,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4830769230769231,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.015483870967741953,0.03230769230769226,-0.07096774193548383,0.009230769230769154,-0.4051612903225806,-0.4476923076923077,-0.07225806451612904,0.009230769230769154,-0.4890322580645161,0.13230769230769224,-0.5587096774193547,0.11230769230769233,-0.6903225806451613,-0.0476923076923077,-0.6774193548387096,-0.1876923076923077,-0.6025806451612903,-0.3153846153846154],""],["images/eny_1-sheet0.webp",620308,1305,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.4283870967741935,-0.4830769230769231,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4877419354838709,0.12923076923076915,-0.5587096774193547,0.11230769230769233,-0.6929032258064516,-0.05230769230769239,-0.6774193548387096,-0.19538461538461538,-0.5987096774193548,-0.32615384615384624],""],["images/eny_1-sheet0.webp",620308,1,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4830769230769231,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4903225806451612,0.12615384615384617,-0.5664516129032258,0.10461538461538455,-0.6929032258064516,-0.06000000000000005,-0.6774193548387096,-0.20000000000000007,-0.6064516129032258,-0.32153846153846155],""],["images/eny_1-sheet0.webp",620308,653,1025,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4830769230769231,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4916129032258064,0.12461538461538457,-0.5599999999999999,0.11230769230769233,-0.6941935483870967,-0.06000000000000005,-0.6761290322580644,-0.20461538461538464,-0.6193548387096773,-0.3092307692307693],""],["images/eny_1-sheet0.webp",620308,653,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4830769230769231,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.015483870967741953,0.03230769230769226,-0.07096774193548383,0.009230769230769154,-0.4051612903225806,-0.4476923076923077,-0.07225806451612904,0.009230769230769154,-0.4903225806451612,0.12461538461538457,-0.5599999999999999,0.11384615384615382,-0.6929032258064516,-0.06615384615384623,-0.6761290322580644,-0.20461538461538464,-0.616774193548387,-0.3138461538461539],""],["images/eny_1-sheet0.webp",620308,1305,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4815384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4941935483870967,0.12461538461538457,-0.5612903225806452,0.11384615384615382,-0.6929032258064516,-0.06461538461538463,-0.6748387096774193,-0.20615384615384613,-0.616774193548387,-0.3138461538461539],""],["images/eny_1-sheet0.webp",620308,1,1,775,650,true,1,0.6954838709677419,0.8415384615384616,[],[-0.42967741935483866,-0.4815384615384616,0.08000000000000007,-0.11384615384615393,0.07870967741935486,0.003076923076923088,0.016774193548387162,0.03230769230769226,-0.4890322580645161,0.12615384615384617,-0.5638709677419355,0.11230769230769233,-0.6929032258064516,-0.06307692307692314,-0.6748387096774193,-0.20461538461538464,-0.6180645161290322,-0.3107692307692308],""]]]],[["Pin",8,367447829343487,23],["Pathfinding",11,431684752670992,42],["Fade",12,546792554964674,46]],false,false,531675362166998,[],null,47,null],["ui_nomberText",13,false,[[852720478825716,2,"typeid",48]],0,0,null,null,[],false,false,590591067154238,[],null,49,null],["paodan_ef",0,false,[],1,0,null,[["Animation 1",14,false,1,0,false,955642467998855,[["images/paodan_ef-sheet0.webp",108322,153,769,170,150,true,1,0.5,0.5,[],[0.04117647058823526,-0.2533333333333333,0.2647058823529411,0.06000000000000005,0.03529411764705881,0.21999999999999997,-0.21176470588235297,0.033333333333333326,-0.1823529411764706,-0.22666666666666668],""],["images/paodan_ef-sheet0.webp",108322,1,769,170,150,true,1,0.5,0.5,[],[0.05294117647058827,-0.32,0.1941176470588235,-0.23333333333333334,0.42352941176470593,-0.006666666666666654,0.3058823529411765,0.09333333333333338,0.05294117647058827,0.26,-0.00588235294117645,0.2866666666666666,-0.23529411764705882,0.18000000000000005,-0.2705882352941177,0.14,-0.37058823529411766,-0.013333333333333308,-0.21764705882352942,-0.2733333333333333],""],["images/paodan_ef-sheet0.webp",108322,305,769,170,150,true,1,0.5,0.5,[],[0.06470588235294117,-0.3666666666666667,0.22352941176470587,-0.24666666666666665,0.28823529411764703,-0.15333333333333332,0.388235294117647,0.14,0.03529411764705881,0.2733333333333333,-0.2529411764705882,0.21333333333333337,-0.3058823529411765,0.1466666666666666,-0.33529411764705885,0.07999999999999996,-0.2705882352941177,-0.32],""],["images/paodan_ef-sheet0.webp",108322,153,513,170,150,true,1,0.5,0.5,[],[-0.3058823529411765,-0.3733333333333333,-0.05882352941176472,-0.33999999999999997,0.22941176470588232,-0.24666666666666665,0.40588235294117647,0.16000000000000003,0.07058823529411762,0.26,-0.2529411764705882,0.21999999999999997,-0.37058823529411766,0.07999999999999996],""],["images/paodan_ef-sheet0.webp",108322,1,513,170,150,true,1,0.5,0.5,[],[-0.29411764705882354,-0.3733333333333333,-0.052941176470588214,-0.3466666666666667,0.23529411764705888,-0.24666666666666665,0.37058823529411766,0.1333333333333333,0.32352941176470584,0.17333333333333334,0.09411764705882353,0.30000000000000004,-0.2529411764705882,0.22666666666666668,-0.3176470588235294,0.14],""],["images/paodan_ef-sheet0.webp",108322,305,513,170,150,true,1,0.5,0.5,[],[-0.05882352941176472,-0.35333333333333333,0.24117647058823533,-0.24666666666666665,0.34705882352941175,0.12,0.3411764705882353,0.17333333333333334,0.09999999999999998,0.31999999999999995,-0.2647058823529412,0.23333333333333328,-0.32352941176470584,0.11333333333333329,-0.2705882352941177,-0.21999999999999997,-0.24117647058823527,-0.2533333333333333],""],["images/paodan_ef-sheet0.webp",108322,153,257,170,150,true,1,0.5,0.5,[],[-0.06470588235294117,-0.36,0.24117647058823533,-0.26,0.3176470588235294,-0.06,0.33529411764705885,0.19333333333333336,0.09999999999999998,0.33999999999999997,-0.2705882352941177,0.24,-0.32941176470588235,0.16666666666666663,-0.32941176470588235,0.11333333333333329,-0.2647058823529412,-0.23333333333333334,-0.23529411764705882,-0.26666666666666666],""],["images/paodan_ef-sheet0.webp",108322,1,257,170,150,true,1,0.5,0.5,[],[-0.05882352941176472,-0.36,0.24117647058823533,-0.26666666666666666,0.32352941176470584,-0.053333333333333344,0.3647058823529412,0.12,0.3529411764705882,0.18666666666666665,0.09999999999999998,0.3533333333333334,-0.28823529411764703,0.24,-0.32941176470588235,0.18000000000000005,-0.33529411764705885,0.11333333333333329,-0.28823529411764703,-0.21999999999999997,-0.2588235294117647,-0.2533333333333333],""],["images/paodan_ef-sheet0.webp",108322,305,257,170,150,true,1,0.5,0.5,[],[-0.11764705882352944,-0.3466666666666667,0.3294117647058824,-0.06,0.35882352941176465,0.09333333333333338,0.12352941176470589,0.36,-0.3,0.2466666666666667,-0.2705882352941177,-0.2533333333333333],""],["images/paodan_ef-sheet0.webp",108322,257,1,170,150,true,1,0.5,0.5,[],[],""],["images/paodan_ef-sheet0.webp",108322,1,1,170,150,true,1,0.5,0.5,[],[],""]]]],[["DestroyOutsideLayout",6,298047766769584,18]],false,false,308741461898859,[],null,50,null],["升级橙",0,false,[],0,0,null,[["Default",5,false,1,0,false,492493007111492,[["images/shared-0-sheet5.webp",77818,1,244,225,241,false,1,0.5,0.5,[],[],""],["images/shared-0-sheet5.webp",77818,257,1,225,241,false,1,0.5,0.5,[],[],""]]]],[],false,false,379526910237449,[],null,51,null],["LocalStorage",14,false,[],0,0,null,null,[],false,false,153578449966741,[],null,52,null,[]],["newbiebg",7,false,[],0,0,["images/newbiebg-sheet0.webp",40,0,0,60,60,false],null,[],false,false,308167475693329,[],null,53,[1,1]],["newbieround",0,false,[],1,0,null,[["Animation 1",5,false,1,0,false,411153479855201,[["images/shared-0-sheet5.webp",77818,1,769,160,160,false,1,0.5,0.5,[],[],""]]]],[["Tween",3,384923127241118,10]],false,false,615523986405166,[],null,54,null],["newbiehandbg",0,false,[],2,0,null,[["Default",5,false,1,0,false,991170106488159,[["images/shared-0-sheet5.webp",77818,223,491,192,192,false,1,0.5,0.5,[],[],""]]]],[["Fade",12,653088514854310,46],["Tween",3,132922039689307,10]],false,false,890556348531724,[],null,55,null],["newbiehand",0,false,[],1,0,null,[["Default",5,false,1,0,false,271443216728761,[["images/shared-0-sheet4.webp",1345864,817,1537,297,306,false,1,0.5,0.5,[],[],""]]]],[["Sine",15,696695098304769,56]],false,false,991416385849410,[],null,57,null],["talkbg",0,false,[],1,0,null,[["Default",5,false,1,0,false,471343414587005,[["images/shared-0-sheet5.webp",77818,257,244,245,218,true,1,0.27755102040816326,0.7844036697247706,[["Image Point 1",0.5,0.5]],[],""]]]],[["Tween",3,565436315680319,10]],false,false,337730184294239,[],null,58,null],["talkbgText",13,false,[],0,0,null,null,[],false,false,415224192070296,[],null,59,null],["tips",0,false,[],0,0,null,[["Animation 1",5,false,1,0,false,906021588397382,[["images/shared-0-sheet5.webp",77818,1,1,225,241,false,1,0.5111111111111111,1,[],[0.026666666666666727,-1,0.4,-0.8547717842323651,0.48888888888888893,-0.5311203319502075,0.36,-0.2116182572614108,0.03555555555555556,0,-0.37777777777777777,-0.19917012448132776,-0.5111111111111111,-0.5601659751037344,-0.33777777777777773,-0.8879668049792531],""]]]],[],false,false,888767984841614,[],null,60,null],["ef_repair",0,false,[[969566235484474,2,"buildingType",61],[844469420388931,1,"pid",62]],1,0,null,[["repair",16,false,1,0,false,802001623586406,[["images/ef_repair-sheet2.webp",255524,1,705,350,300,false,1,0.5,0.5,[],[0.14571428571428569,-0.30333333333333334,0.24285714285714288,-0.04666666666666669,0.042857142857142816,0.2666666666666667,-0.011428571428571455,0.2666666666666667,-0.34571428571428575,0.22999999999999998,-0.4285714285714286,0.06666666666666665,-0.34285714285714286,-0.13],""],["images/ef_repair-sheet0.webp",367410,1,1,350,300,true,1,0.5,0.5,[],[0.11142857142857143,-0.3466666666666667,0.15142857142857147,-0.31,0.2628571428571429,-0.11666666666666664,0.25428571428571434,0.18666666666666665,0.08857142857142852,0.29666666666666663,-0.008571428571428563,0.31666666666666665,-0.3,0.22333333333333338,-0.4514285714285714,0.08666666666666667,-0.4514285714285714,0.046666666666666634,-0.36,-0.15666666666666668],""],["images/ef_repair-sheet0.webp",367410,303,1,350,300,true,1,0.5,0.5,[],[0.10857142857142854,-0.35,0.15428571428571425,-0.31333333333333335,0.26857142857142857,-0.13333333333333336,0.2628571428571429,0.1466666666666666,0.12285714285714289,0.2866666666666666,0.07999999999999996,0.31333333333333335,0,0.32333333333333336,-0.3057142857142857,0.20666666666666667,-0.46,0.01666666666666672,-0.39714285714285713,-0.16333333333333333,-0.32,-0.20666666666666667],""],["images/ef_repair-sheet0.webp",367410,605,1,350,300,true,1,0.5,0.5,[],[0.1428571428571429,-0.32999999999999996,0.2628571428571429,-0.15000000000000002,0.2571428571428571,0.07999999999999996,0.18571428571428572,0.25,0.04571428571428571,0.31999999999999995,-0.24571428571428572,0.24,-0.32857142857142857,0.18666666666666665,-0.4685714285714286,0,-0.4085714285714286,-0.17333333333333334],""],["images/ef_repair-sheet0.webp",367410,1,353,350,300,true,1,0.5,0.5,[],[0.09142857142857141,-0.35333333333333333,0.14571428571428569,-0.32,0.24857142857142855,-0.15333333333333332,0.20285714285714285,0.24,0.04571428571428571,0.30333333333333334,-0.24,0.23333333333333328,-0.3342857142857143,0.18000000000000005,-0.4714285714285714,-0.020000000000000018,-0.15714285714285714,-0.31666666666666665],""],["images/ef_repair-sheet0.webp",367410,303,353,350,300,true,1,0.5,0.5,[],[0.0971428571428572,-0.3566666666666667,0.14,-0.32333333333333336,0.23142857142857143,-0.1766666666666667,0.27428571428571424,0.09333333333333338,0.2571428571428571,0.17333333333333334,0.2171428571428572,0.20666666666666667,0.0971428571428572,0.2733333333333333,0.0485714285714286,0.29000000000000004,-0.03142857142857142,0.29333333333333333,-0.26,0.21333333333333337,-0.33999999999999997,0.16333333333333333,-0.4714285714285714,-0.023333333333333317,-0.2142857142857143,-0.29666666666666663],""],["images/ef_repair-sheet0.webp",367410,605,353,350,300,true,1,0.5,0.5,[],[0.0971428571428572,-0.3566666666666667,0.13428571428571423,-0.33666666666666667,0.24571428571428566,-0.1766666666666667,0.28,0.036666666666666625,0.26857142857142857,0.11333333333333329,0.1885714285714286,0.2366666666666667,-0.002857142857142836,0.29000000000000004,-0.3514285714285714,0.16333333333333333,-0.47714285714285715,-0.023333333333333317,-0.21714285714285714,-0.32333333333333336],""],["images/ef_repair-sheet0.webp",367410,1,705,350,300,false,1,0.5,0.5,[],[0.13428571428571423,-0.33999999999999997,0.22571428571428576,-0.22666666666666668,0.29428571428571426,-0.06,0.20285714285714285,0.22666666666666668,0.02571428571428569,0.2766666666666666,-0.06285714285714283,0.27,-0.33999999999999997,0.17666666666666664,-0.38285714285714284,0.10666666666666669,-0.41428571428571426,-0.08666666666666667,-0.38857142857142857,-0.2,-0.18857142857142856,-0.33666666666666667],""],["images/ef_repair-sheet0.webp",367410,513,705,350,300,false,1,0.5,0.5,[],[0.07999999999999996,-0.39666666666666667,0.1628571428571428,-0.32,0.3114285714285714,-0.08333333333333331,0.2114285714285714,0.21333333333333337,-0.037142857142857144,0.28,-0.33999999999999997,0.16333333333333333,-0.3771428571428571,0.06999999999999995,-0.4085714285714286,-0.07666666666666666,-0.3942857142857143,-0.21666666666666667,-0.14285714285714285,-0.35333333333333333],""],["images/ef_repair-sheet1.webp",417100,1,1,350,300,true,1,0.5,0.5,[],[0.08857142857142852,-0.42666666666666664,0.3057142857142857,-0.13666666666666666,0.3057142857142857,0.17333333333333334,0.20571428571428574,0.22666666666666668,-0.037142857142857144,0.2866666666666666,-0.33999999999999997,0.17000000000000004,-0.38285714285714284,0.13,-0.4,-0.22666666666666668],""],["images/ef_repair-sheet1.webp",417100,303,1,350,300,true,1,0.5,0.5,[],[0.08571428571428574,-0.4533333333333333,0.21999999999999997,-0.29000000000000004,0.2828571428571428,-0.15999999999999998,0.3085714285714286,0.17666666666666664,0.21999999999999997,0.22333333333333338,-0.0485714285714286,0.2833333333333333,-0.23428571428571426,0.24,-0.39142857142857146,0.1166666666666667,-0.40285714285714286,-0.22999999999999998],""],["images/ef_repair-sheet1.webp",417100,605,1,350,300,true,1,0.5,0.5,[],[0.08857142857142852,-0.4633333333333333,0.2142857142857143,-0.30666666666666664,0.2828571428571428,-0.16666666666666669,0.3571428571428571,0.06333333333333335,0.31999999999999995,0.16666666666666663,-0.0485714285714286,0.2666666666666667,-0.34285714285714286,0.16333333333333333,-0.39714285714285713,0.10999999999999999,-0.38857142857142857,-0.12,-0.32,-0.25],""],["images/ef_repair-sheet1.webp",417100,1,353,350,300,true,1,0.5,0.5,[],[0.1171428571428571,-0.35,0.2371428571428571,-0.29666666666666663,0.3628571428571429,0.046666666666666634,0.34285714285714286,0.1333333333333333,0.22857142857142854,0.23333333333333328,0.11142857142857143,0.2566666666666667,-0.06285714285714283,0.26,-0.24571428571428572,0.24,-0.39714285714285713,0.07666666666666666,-0.3771428571428571,-0.10999999999999999,-0.32,-0.24333333333333335,-0.06571428571428573,-0.33666666666666667],""],["images/ef_repair-sheet1.webp",417100,303,353,350,300,true,1,0.5,0.5,[],[0.13428571428571423,-0.35,0.1914285714285714,-0.32,0.33999999999999997,-0.11333333333333334,0.3571428571428571,0.033333333333333326,0.3542857142857143,0.08666666666666667,0.24571428571428566,0.2466666666666667,0.14571428571428569,0.27,-0.1085714285714286,0.2733333333333333,-0.24,0.23333333333333328,-0.38,0.15000000000000002,-0.3942857142857143,0.07333333333333336,-0.32,-0.24,-0.15714285714285714,-0.31666666666666665],""],["images/ef_repair-sheet1.webp",417100,605,353,350,300,true,1,0.5,0.5,[],[0.14857142857142858,-0.3466666666666667,0.1914285714285714,-0.31333333333333335,0.24857142857142855,-0.26,0.3628571428571429,-0.10333333333333333,0.24857142857142855,0.25,-0.05714285714285716,0.26,-0.25142857142857145,0.21666666666666667,-0.38857142857142857,0.1433333333333333,-0.38571428571428573,0.00666666666666671,-0.3342857142857143,-0.19666666666666666,-0.2142857142857143,-0.29666666666666663],""],["images/ef_repair-sheet1.webp",417100,1,705,350,300,false,1,0.5,0.5,[],[0.14857142857142858,-0.35,0.27142857142857146,-0.24666666666666665,0.3771428571428571,-0.10333333333333333,0.24571428571428566,0.2366666666666667,-0.3028571428571428,0.20999999999999996,-0.3942857142857143,0.1333333333333333,-0.39142857142857146,0,-0.33999999999999997,-0.16999999999999998,-0.2,-0.32666666666666666],""],["images/ef_repair-sheet1.webp",417100,513,705,350,300,false,1,0.5,0.5,[],[0.15428571428571425,-0.3466666666666667,0.28,-0.24333333333333335,0.3828571428571429,-0.10999999999999999,0.2828571428571428,0.20999999999999996,-0.005714285714285727,0.24,-0.3142857142857143,0.19333333333333336,-0.3942857142857143,0.1266666666666667,-0.3942857142857143,0,-0.37142857142857144,-0.10666666666666669,-0.18857142857142856,-0.33666666666666667],""],["images/ef_repair-sheet2.webp",255524,1,1,350,300,true,1,0.5,0.5,[],[0.15428571428571425,-0.3466666666666667,0.2914285714285715,-0.22999999999999998,0.34285714285714286,0.00666666666666671,0.29428571428571426,0.18000000000000005,0.18571428571428572,0.23333333333333328,-0.011428571428571455,0.24,-0.33714285714285713,0.17000000000000004,-0.39142857142857146,0.11333333333333329,-0.36857142857142855,-0.13666666666666666,-0.18,-0.32333333333333336],""],["images/ef_repair-sheet2.webp",255524,303,1,350,300,true,1,0.5,0.5,[],[0.15428571428571425,-0.3433333333333333,0.2857142857142857,-0.22666666666666668,0.3342857142857143,0.00666666666666671,0.3285714285714286,0.09999999999999998,0.28,0.19333333333333336,0.19428571428571428,0.21999999999999997,-0.18571428571428572,0.23333333333333328,-0.38285714285714284,0.11333333333333329,-0.38285714285714284,0.06999999999999995,-0.3514285714285714,-0.15333333333333332,-0.26857142857142857,-0.2633333333333333,-0.17714285714285716,-0.32666666666666666],""],["images/ef_repair-sheet2.webp",255524,605,1,350,300,true,1,0.5,0.5,[],[-0.15999999999999998,-0.33999999999999997,0.15428571428571425,-0.33999999999999997,0.2828571428571428,-0.22333333333333333,0.31999999999999995,0,0.3057142857142857,0.12,-0.03999999999999998,0.22666666666666668,-0.3,0.16666666666666663,-0.36,0.08333333333333337,-0.35714285714285715,-0.08333333333333331,-0.3114285714285714,-0.19666666666666666,-0.24,-0.2833333333333333],""],["images/ef_repair-sheet2.webp",255524,1,353,350,300,true,1,0.5,0.5,[],[0.15428571428571425,-0.30666666666666664,0.2628571428571429,-0.16666666666666669,0.3142857142857143,0.10666666666666669,-0.05714285714285716,0.21999999999999997,-0.34571428571428575,0.013333333333333308],""],["images/ef_repair-sheet2.webp",255524,303,353,350,300,true,1,0.5,0.5,[],[0.23428571428571432,0.00666666666666671,0.3142857142857143,0.09666666666666668,-0.08571428571428569,0.19666666666666666,-0.07142857142857145,0.07999999999999996],""],["images/ef_repair-sheet2.webp",255524,605,513,350,300,true,1,0.5,0.5,[],[-0.14285714285714285,-0.013333333333333308,-0.08285714285714285,-0.010000000000000009,-0.11428571428571427,0.21666666666666667,-0.19428571428571428,0.17666666666666664,-0.26285714285714284,0.09333333333333338],""]]]],[["Fade",12,556632664140675,46]],false,false,471166770222952,[],null,63,null],["eny_hurttext",13,false,[],2,0,null,null,[["Fade",12,337407741771559,46],["Bullet",5,195562668893837,17]],false,false,750605079087897,[],null,64,null],["icondianli",0,false,[],2,0,null,[["Default",5,false,1,0,false,563994933173600,[["images/shared-0-sheet5.webp",77818,223,685,160,160,false,1,0.5,0.5,[],[],""]]]],[["Fade",12,259318224700605,46],["Bullet",5,845445490155714,17]],false,false,859799611955742,[],null,65,null],["dianlitext",13,false,[],0,0,null,null,[],false,false,479277240404524,[],null,66,null],["ef_skill",0,false,[],0,0,null,[["Default",15,false,1,0,false,918968470203480,[["images/ef_skill-sheet0.webp",220010,1,1,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,257,1,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,513,1,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,769,1,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,1,257,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,257,257,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,513,257,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,769,257,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,1,513,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,257,513,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,513,513,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,769,513,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,1,769,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,257,769,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,513,769,220,220,false,1,0.5,0.5,[],[],""],["images/ef_skill-sheet0.webp",220010,769,769,220,220,false,1,0.5,0.5,[],[],""]]]],[],false,false,770774061400253,[],null,67,null],["bomb",0,false,[],3,0,null,[["Default",5,false,1,0,false,486383922862070,[["images/shared-0-sheet5.webp",77818,385,769,100,180,false,1,0.5,0.5,[],[],""]]]],[["Bullet2",5,128774346547904,68],["Timer",4,274602555184329,14],["DestroyOutsideLayout",6,568942425183568,18]],false,false,402705345056888,[],null,69,null],["bomb_ef",0,false,[],1,0,null,[["Animation 1",16,false,1,0,false,560225754341189,[["images/bomb_ef-sheet0.webp",271996,257,769,220,220,false,1,0.5,0.5,[],[-0.04999999999999999,-0.2772727272727273,0.036363636363636376,-0.2772727272727273,0.11363636363636365,-0.2545454545454545,0.1863636363636364,-0.2090909090909091,0.21818181818181814,-0.17727272727272725,0.25,-0.12727272727272726,0.2772727272727272,-0.040909090909090895,0.2727272727272727,0.07272727272727275,0.25,0.14090909090909087,0.2272727272727273,0.1863636363636364,0.1636363636363637,0.2545454545454545,0.07272727272727275,0.28181818181818186,-0.06363636363636366,0.2772727272727272,-0.12272727272727274,0.25909090909090904,-0.2409090909090909,0.1636363636363637,-0.2863636363636364,0.054545454545454564,-0.2863636363636364,-0.054545454545454564,-0.2590909090909091,-0.13181818181818183,-0.2272727272727273,-0.17727272727272725,-0.14545454545454545,-0.24545454545454548],""],["images/bomb_ef-sheet0.webp",271996,1,769,220,220,false,1,0.5,0.5,[],[-0.013636363636363613,-0.3318181818181818,0.34545454545454546,-0.2909090909090909,0.38636363636363635,0.09999999999999998,0.3772727272727273,0.19999999999999996,0.17272727272727273,0.3136363636363636,-0.06363636363636366,0.3545454545454545,-0.15909090909090912,0.3318181818181818,-0.2545454545454545,0.2863636363636364,-0.4,-0.009090909090909094,-0.39545454545454545,-0.08181818181818185,-0.30454545454545456,-0.2772727272727273,-0.07727272727272727,-0.32727272727272727],""],["images/bomb_ef-sheet0.webp",271996,257,513,220,220,false,1,0.5,0.5,[],[0.009090909090909038,-0.3136363636363636,0.36363636363636365,-0.30454545454545456,0.38636363636363635,0.20454545454545459,0.21818181818181814,0.30454545454545456,0.013636363636363669,0.38181818181818183,-0.2545454545454545,0.30000000000000004,-0.40454545454545454,-0.013636363636363613,-0.40454545454545454,-0.07272727272727275,-0.32727272727272727,-0.28181818181818186],""],["images/bomb_ef-sheet0.webp",271996,1,513,220,220,false,1,0.5,0.5,[],[0.013636363636363669,-0.3181818181818182,0.36818181818181817,-0.3136363636363636,0.35,0.018181818181818188,0.20454545454545459,0.25909090909090904,0.05909090909090908,0.38636363636363635,0.013636363636363669,0.38636363636363635,-0.11818181818181817,0.35,-0.25,0.2090909090909091,-0.40909090909090906,-0.05909090909090908,-0.32727272727272727,-0.2863636363636364],""],["images/bomb_ef-sheet0.webp",271996,257,257,220,220,false,1,0.5,0.5,[],[0.036363636363636376,-0.32272727272727275,0.08181818181818179,-0.32272727272727275,0.3318181818181818,-0.28181818181818186,0.3545454545454545,-0.2090909090909091,0.3727272727272727,-0.08636363636363636,0.3545454545454545,0.018181818181818188,0.05909090909090908,0.3772727272727273,-0.10909090909090907,0.35,-0.35454545454545455,0.07272727272727275,-0.40454545454545454,-0.05909090909090908,-0.2909090909090909,-0.2363636363636364],""],["images/bomb_ef-sheet0.webp",271996,1,257,220,220,false,1,0.5,0.5,[],[0.009090909090909038,-0.3181818181818182,0.054545454545454564,-0.3181818181818182,0.12272727272727268,-0.30454545454545456,0.3545454545454545,0.013636363636363669,0.1454545454545455,0.30454545454545456,-0.06363636363636366,0.2545454545454545,-0.32272727272727275,0.12727272727272732,-0.36363636363636365,0.08181818181818179,-0.38181818181818183,-0.009090909090909094,-0.3090909090909091,-0.2318181818181818],""],["images/bomb_ef-sheet0.webp",271996,257,1,220,220,false,1,0.5,0.5,[],[-0.09090909090909088,-0.19090909090909092,0.13181818181818183,-0.14545454545454545,0.12727272727272732,0.24545454545454548,-0.054545454545454564,0.23636363636363633],""],["images/bomb_ef-sheet0.webp",271996,1,1,220,220,false,1,0.5,0.5,[],[0.013636363636363669,0.040909090909090895,0.08181818181818179,0.05909090909090908,0.08636363636363631,0.13181818181818183],""]]]],[["DestroyOutsideLayout",6,723160548201972,18]],false,false,111867363824107,[],null,70,null],["uiicons",0,true,[[971523674624831,1,"interal",4]],1,0,null,null,[["Anchor",16,358233674177767,71]],false,false,454698040164431,[],null,72,null],["objs",0,true,[[411081405232535,1,"sy",3]],0,0,null,null,[],false,false,491725419579528,[],null,73,null],["hps",7,true,[[164104078200843,1,"puid",22]],0,0,null,null,[],false,false,524001471883016,[],null,74,null]],[[46,6,8,7,17,19,18,20],[47,4,3,24,27],[48,14,15,16,23,22,21,13,12,11]],[["game",2480,4792,false,false,0.5,0.5,"e_game",884391830463199,[["bg",0,369086143171922,true,[255,255,255],false,1,1,1,false,false,1,0,true,[[[1240,2396,0,2480,4792,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],0,2,[],[],[true,"Default",0,true],""]],[],0,true,false,false,[]],["game",4,595368767713605,true,[255,255,255],true,1,1,1,false,false,1,0,true,[],[],0,true,false,false,[["game_base",1,637391261136939,true,[255,255,255],true,1,1,1,false,false,1,0,true,[[[1240,3800,0,2480,1533,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],1,3,[],[],[true,"Default",0,true],""],[[1320,4080,0,1016,566,0,0,[1,1,1,1],0.530511811023622,0.8392226148409894,0,0,[],null,null,null,["",""]],3,5,[0,0],[[true,""]],[true,"bad",0,true],""],[[344,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,11,[0],[],[false,"Animation 1",0,true],""],[[600,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,12,[0],[],[false,"Animation 1",0,true],""],[[864,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,13,[0],[],[false,"Animation 1",0,true],""],[[1640,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,16,[0],[],[false,"Animation 1",0,true],""],[[1904,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,17,[0],[],[false,"Animation 1",0,true],""],[[2168,3416,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,18,[0],[],[false,"Animation 1",0,true],""],[[344,3680,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,19,[0],[],[false,"Animation 1",0,true],""],[[600,3680,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,20,[0],[],[false,"Animation 1",0,true],""],[[1904,3680,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,21,[0],[],[false,"Animation 1",0,true],""],[[2168,3680,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,22,[0],[],[false,"Animation 1",0,true],""],[[352,3960,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,23,[0],[],[false,"Animation 1",0,true],""],[[2176,3960,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],10,26,[0],[],[false,"Animation 1",0,true],""]],[],0,true,false,false,[]],["game_battle",2,739043201072331,true,[255,255,255],true,1,1,1,false,false,1,0,true,[[[784,2752,0,534,614,0,0,[1,1,1,1],0.40262172284644193,0.8745928338762216,0,0,[],null,null,null,["",""]],24,30,[0,"",""],[[false]],[true,"daiji",0,true],""],[[784,2760,0,100,100,0,0,[1,1,1,1],0.5,1,0,0,[],null,null,null,["",""]],26,42,[],[[600,9999,9999,0,false,true,true],[100,-1,0,600,9999,9999,720,false,false,0,true]],[true,"Animation 1",0,true],""]],[],0,true,false,false,[]],["game_top",3,381034074173611,true,[255,255,255],true,1,1,1,false,false,1,0,true,[[[3008,3128,0,225,241,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],30,46,[],[],[true,"Default",0,true],""],[[912,2400,0,1900,1400,0,0,[1,1,1,1],0.27755102040816326,0.7844036697247706,0,0,[],null,[127,[[884391830463199,3,55,511,0,19]],18],null,["",""]],36,54,[],[[true]],[true,"Default",0,true],""],[[672,1952,0,1256,392,0,0,[1,1,1,1],0,0.5,0,0,[],null,[511,null,19],null,["",""]],37,55,[],[],["需要先修理好发电机",true,"Arial",80,0,true,false,[0,0,0],0,1,2,0,-1,true,3,false],""],[[3032,2696,0,225,241,0,0,[1,1,1,1],0.5111111111111111,1,0,0,[],null,null,null,["",""]],38,56,[],[],[true,"Animation 1",0,true],""],[[3120,3728,0,350,300,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],39,14,["",0],[[0,0,0.3,true,false]],[true,"repair",0,true],""],[[2952,1672,0,536,232,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],40,15,[],[[0.2,0.5,0.3,true,true],[200,0,0,false,false,false,true]],["123",true,"Binhtuy",120,0,false,false,[0.996078431372549,0.9921568627450981,0.01568627450980392],1,1,2,0,-1,true,4,false],""],[[3160,1968,0,160,160,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,[127,[[884391830463199,3,25,511,0,24]],23],null,["",""]],41,24,[],[[0.2,0.5,0.3,true,true],[200,0,0,false,false,false,true]],[true,"Default",0,true],""],[[3152,1968,0,304,160,0,0,[1,1,1,1],1,0.5,0,0,[],null,[511,null,24],null,["",""]],42,25,[],[],["+1",true,"Binhtuy",120,0,false,false,[0.9294117647058824,0.9058823529411765,0.8431372549019608],1,1,2,0,-1,true,5,false],""],[[-232,1832,0,100,180,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],44,58,[],[[3000,0,2000,false,false,false,true],[],[]],[true,"Default",0,true],""],[[-448,2008,0,170,150,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],45,59,[],[[]],[true,"Animation 1",0,true],""]],[],0,true,false,false,[]]]],["ui",8,209800572938912,true,[255,255,255],true,1,1,1,false,false,1,0,true,[],[],0,true,false,false,[["ui_skill",5,379078534725828,true,[255,255,255],true,1,1,1,false,false,1,0,true,[[[1240,4512,0,2480,553,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],17,37,[0],[[2,1,0,0,true]],[true,"Default",0,true],""],[[616,4280,0,520,520,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],18,38,[0],[[2,1,0,0,true]],[true,"Default",0,true],""],[[1240,4280,0,520,520,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],19,39,[0],[[2,1,0,0,true]],[true,"Default",0,true],""],[[1864,4280,0,520,520,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],20,40,[0],[[2,1,0,0,true]],[true,"Default",0,true],""]],[],0,true,false,false,[]],["ui_icon",6,715045196936018,true,[255,255,255],true,1,1,1,false,false,1,0,true,[[[2200,184,0,281,279,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],6,7,[0],[[1,0,0,0,true]],[true,"Default",0,true],""],[[2336,256,0,320,140,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],28,48,["dianli"],[],["46",true,"Binhtuy",100,4,true,false,[0.9294117647058824,0.9058823529411765,0.8431372549019608],1,1,2,0,-1,true,4,false],""],[[1240,176,0,877,294,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],7,8,[0],[[2,0,0,0,true],[]],[true,"Default",0,true],""],[[1344,176,0,360,140,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],28,44,["daojishi"],[],["124",true,"Binhtuy",100,0,true,false,[0,0,0],1,1,2,0,-1,true,4,false],""],[[392,496,0,786,285,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],8,9,[0],[[0,0,0,0,true]],[true,"Default",0,true],""],[[424,480,0,384,140,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],28,47,["turns"],[],["2/4",true,"Binhtuy",100,0,false,false,[0.9294117647058824,0.9058823529411765,0.8431372549019608],1,1,2,0,-1,true,4,false],""],[[1472,3800,0,192,192,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],34,52,[],[[0,0,1,false,false],[true]],[true,"Default",0,true],""],[[1616,3936,0,297,306,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],35,53,[],[[1,0,0.7,0,0,0,20,0,true]],[true,"Default",0,true],""]],[],0,true,false,false,[]],["ui_start",7,417697501510538,true,[255,255,255],true,1,1,1,true,false,1,0,true,[[[2912,936,0,368,352,0,0,[1,1,1,0.6],0,0,0,0,[],null,null,null,["",""]],32,50,[],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[3112,1128,0,160,160,0,0,[1,1,1,1],0.5,0.5,8,0,[],null,null,null,["",""]],33,51,[],[[true]],[true,"Animation 1",0,true],""]],[],0,true,false,false,[]]]],["cankao",9,242997282491211,false,[255,255,255],true,1,1,0.4,false,false,1,0,true,[[[1240,2396,0,2480,4792,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],5,4,[],[],[true,"Default",0,true],""]],[],0,true,false,false,[]]],[],[]],["obj",4960,9584,false,false,0.5,0.5,null,782469442614985,[["Layer 0",0,844311179499682,true,[255,255,255],false,1,1,1,false,false,1,0,true,[[[364,206,0,231,44,0,0,[1,1,1,1],0,0,0,0,[],null,[127,[[782469442614985,0,28,123,0,1],[782469442614985,0,29,127,0,2]],0],null,["",""]],11,27,[0],[[false]],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[372,206,0,216,44,0,0,[1,1,1,1],0,0,0,0,[],null,[123,null,1],null,["",""]],12,28,[0],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[364,206,0,237,48,0,0,[1,1,1,1],0,0,0,0,[],null,[127,null,2],null,["",""]],13,29,[0],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[372,430,0,451,53,0,0,[1,1,1,1],0,0,0,0,[],null,[127,[[782469442614985,0,32,123,0,4],[782469442614985,0,33,127,0,5]],3],null,["",""]],16,31,[0],[[false]],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[372,430,0,218,53,0,0,[1,1,1,1],0,0,0,0,[],null,[123,null,4],null,["",""]],14,32,[0],[[]],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[372,430,0,458,58,0,0,[1,1,1,1],0,0,0,0,[],null,[127,null,5],null,["",""]],15,33,[0],[[]],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[462,1392,0,554,554,0,0,[1,1,1,1],0.6191335740072202,0.944043321299639,0,0,[],null,[127,[[782469442614985,0,34,511,0,7],[782469442614985,0,35,507,0,8],[782469442614985,0,36,511,0,9]],6],null,["",""]],27,43,[0,"",0,0,1],[[false],[30,-1,0,100,1000,2000,135,false,true,1,true],[0,0,0,true,false]],[true,"zou",0,true],""],[[347,924,0,231,44,0,0,[1,1,1,1],0,0,0,0,[],null,[511,null,7],null,["",""]],21,34,[0],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[347,924,0,181,44,0,0,[1,1,1,1],0,0,0,0,[],null,[507,null,8],null,["",""]],22,35,[0],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[339,924,0,237,48,0,0,[1,1,1,1],0,0,0,0,[],null,[511,null,9],null,["",""]],23,36,[0],[],[true,0,1,1,0,0,1,1,0,false,1,1,1,0.1,0.1],""],[[-276,725,0,154,85,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],9,6,[0],[[1200,0,0,false,true,false,true],[]],[true,"Default",0,true],""],[[1303,1281,0,497,292,0,0,[1,1,1,1],0.2857142857142857,0.5,0,0,[],null,null,null,["",""]],4,10,[0,0,0],[[3000,1,true,180,1,false,500,true,true],[true]],[true,"Default",0,true],""],[[-376,425,0,170,150,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],29,45,[],[[]],[true,"Animation 1",0,true],""],[[1237,294,0,220,220,0,0,[1,1,1,1],0.5,0.5,0,0,[],null,null,null,["",""]],43,57,[],[],[true,"Default",0,true],""]],[],0,true,false,false,[]]],[],[]]],[["e_game",[[1,"gamestart",0,0,false,false,565265536661712,false,75],[1,"gameturnTimer",0,0,false,false,514210922105578,false,76],[1,"gameturns",0,0,false,false,956981321445973,false,77],[1,"gamesdianli",0,0,false,false,914177363344931,false,78],[4,["startgame",0,[],true,false,false],false,null,299681461387550,1,[],[[-1,17,null,567258459526089,0,null,[[11,565265536661712],[7,[0]]]],[-1,17,null,218412158344579,0,null,[[11,514210922105578],[7,[1]]]],[-1,17,null,574712087358886,0,null,[[11,956981321445973],[7,[0]]]]]],[0,0,false,null,750752962514033,2,[[-1,18,null,1,false,false,false,681011616237306,null]],[[-1,17,null,457306658546342,0,null,[[11,514210922105578],[7,[2]]]],[-1,17,null,507393959725438,0,null,[[11,565265536661712],[7,[2]]]],[-1,17,null,442517111608232,0,null,[[11,914177363344931],[7,[2]]]],[-1,17,null,596535206905516,0,null,[[11,956981321445973],[7,[2]]]],[-1,19,null,431230002484082,0,null,[[5,[3]],[3,0]]],[24,20,null,951772808333044,0,null,[[10,1],[7,[4]]]],[24,20,null,474339942409671,0,null,[[10,2],[7,[4]]]],[24,21,null,321406681738982,0,null,[[0,[5,[1,26,22,false]]],[0,[5,[1,26,23,false]]]]],[24,24,"Pin",367081489940497,0,null,[[4,26],[16,true],[16,true],[16,true],[3,0],[3,0],[16,false]]],[28,25,null,635797036739206,0,null,[[7,[6]]]],[18,26,null,469708531679171,0,null,[[3,0]]],[20,26,null,519062974297239,0,null,[[3,0]]],[31,27,null,382707691937297,2048,null,[[1,[7]]]],[34,28,"Fade",437811989098882,0,null,[[0,[8]]]],[34,29,"Fade",704349836619212,0,null,[[0,[9]]]],[34,30,"Fade",476507365112590,0,null,[[0,[8]]]],[34,31,"Fade",120718897624074,0,null],[34,32,null,256669543456858,0,null,[[0,[10]],[0,[10]]]],[34,33,"Tween",289489966520120,2048,null,[[1,[11]],[3,1],[0,[12]],[0,[12]],[0,[0]],[18,0],[3,0],[3,0],[3,0],[0,[0]]]],[34,26,null,396242622834434,0,null,[[3,0]]],[35,26,null,419019064122265,0,null,[[3,0]]],[36,26,null,958185133831697,0,null,[[3,0]]],[37,25,null,169514595740247,0,null,[[7,[13]]]]],[[0,0,false,null,748232908907162,3,[[28,34,null,0,false,false,false,218755329234156,null,[[10,0],[8,0],[7,[14]]]]],[]]]],[0,0,false,null,635096851629102,4,[[-1,35,null,0,false,false,false,412964084361691,null]],[[47,20,null,752752367237928,0,null,[[10,0],[7,[5,[1,47,23,false]]]]],[-1,36,null,174363044801462,0,null,[[4,47],[10,0]]],[23,37,null,661567491939450,0,null,[[3,0],[4,27]]],[22,37,null,347744336028618,0,null,[[3,0],[4,27]]],[21,37,null,202001918243960,0,null,[[3,0],[4,27]]]]],[0,0,false,null,285416554546616,5,[[34,38,"Tween",1,false,false,false,346223072104739,null,[[1,[11]]]]],[[-1,39,null,734726910494169,1,null,[[0,[15]]]],[34,32,null,246498564753466,0,null,[[0,[10]],[0,[10]]]],[34,40,"Fade",495407916470395,0,null],[34,33,"Tween",939963644325891,2048,null,[[1,[11]],[3,1],[0,[12]],[0,[12]],[0,[0]],[18,0],[3,0],[3,0],[3,0],[0,[0]]]]]],[0,0,false,null,215635765871228,6,[[31,41,null,1,false,false,false,706466883513304,null,[[1,[7]]]]],[[-2,"startgame",null,279472943205430,0,null]]],[0,0,false,null,692293309671718,7,[[31,42,null,1,false,false,false,197343189454585,null,[[1,[7]]]]],[[-1,39,null,344706022105960,1,null,[[0,[0]]]],[-2,"talking",null,715985219616753,0,null,[[1,[16]]]]]],[4,["talking",0,[[1,"talking",1,"",false,false,599794586383460,false,79]],true,false,false],false,null,733461427885858,8,[],[],[[0,0,false,null,278954582606717,9,[],[[37,25,null,109902814473424,0,null,[[7,[13]]]],[24,20,null,378457662234224,0,null,[[10,1],[7,[17,[3,599794586383460]]]]],[36,26,null,308348671544715,0,null,[[3,1]]],[36,32,null,726008648445982,0,null,[[0,[18]],[0,[18]]]],[36,21,null,427381370583250,0,null,[[0,[19,[1,24,22,false]]],[0,[20,[1,24,23,false]]]]],[36,33,"Tween",430979202277108,2048,null,[[1,[11]],[3,1],[0,[21]],[0,[22]],[0,[8]],[18,0],[3,0],[3,0],[3,0],[0,[0]]]],[36,33,"Tween",547942019049517,2048,null,[[1,[23]],[3,0],[0,[24,[1,24,22,false]]],[0,[20,[1,24,23,false]]],[0,[8]],[18,0],[3,0],[3,0],[3,0],[0,[0]]]]]]]],[0,0,false,null,333790651396503,10,[[36,38,"Tween",1,false,false,false,873845875320182,null,[[1,[11]]]]],[],[[0,0,false,null,954446214772871,11,[[24,43,null,0,false,false,false,791158825626399,null,[[10,1],[8,0],[7,[16]]]]],[[-1,39,null,560096457592281,1,null,[[0,[25]]]],[37,44,null,582126174390536,0,null,[[7,[26]],[0,[0]]]]]],[0,0,false,null,613922515794825,12,[[-1,45,null,0,false,false,false,370296206629385,null],[24,43,null,0,false,false,false,436630902931897,null,[[10,1],[8,0],[7,[27]]]]],[[-1,39,null,312768854592792,1,null,[[0,[25]]]],[37,44,null,752366001988818,0,null,[[7,[28]],[0,[0]]]]]]]],[0,0,false,null,926033471388457,13,[[37,46,null,1,false,false,false,198035457130087,null]],[[24,20,null,619130996435328,0,null,[[10,2],[7,[29]]]]]],[0,0,false,null,886856576127714,14,[[25,47,null,1,false,false,false,244184427411179,null],[24,43,null,0,false,false,false,877818312107219,null,[[10,2],[8,0],[7,[29]]]],[25,48,null,0,false,true,false,315106227271941,null,[[4,3]]]],[[36,26,null,544391915716601,0,null,[[3,0]]]],[[0,0,false,null,583524215824436,15,[[24,43,null,0,false,false,false,738056245119905,null,[[10,1],[8,0],[7,[16]]]]],[[24,20,null,949230776458574,0,null,[[10,1],[7,[30]]]],[-2,"newbie",null,479440223086648,0,null]]],[0,0,false,null,945292912837506,16,[[-1,45,null,0,false,false,false,303506116544210,null],[24,43,null,0,false,false,false,439731819667334,null,[[10,1],[8,0],[7,[27]]]]],[[-2,"startgame",null,635692128218606,0,null],[24,20,null,989385929048343,0,null,[[10,1],[7,[31]]]]]]]],[4,["newbie",0,[],true,false,false],false,null,671932019992029,17,[],[[-1,19,null,696101551021540,0,null,[[5,[3]],[3,1]]],[32,49,null,568444211804527,0,null,[[0,[2]],[0,[2]]]],[32,50,null,636214884950347,0,null,[[0,[32,[4,51]]],[0,[32,[4,52]]]]],[33,21,null,235770041466390,0,null,[[0,[5,[1,3,22,false]]],[0,[20,[1,3,23,false]]]]],[33,32,null,135584939679514,0,null,[[0,[33]],[0,[33]]]],[33,33,"Tween",344987560826004,2048,null,[[1,[34]],[3,1],[0,[35]],[0,[35]],[0,[36]],[18,0],[3,0],[3,0],[3,0],[0,[0]]]]]],[0,0,false,null,421973112405668,18,[[33,38,"Tween",1,false,false,false,287376501835251,null,[[1,[34]]]]],[[34,26,null,728024545410967,0,null,[[3,1]]],[35,26,null,919952963420675,0,null,[[3,1]]]]],[0,0,false,null,519129708519511,19,[[29,53,null,1,false,false,false,716331728691174,null,[[1,[37]]]]],[[29,54,null,697542970901992,0,null]]],[0,0,false,null,124373247160646,20,[[45,53,null,1,false,false,false,724779924849639,null,[[1,[37]]]]],[[45,54,null,414113399637539,0,null]]],[0,0,false,null,429366169075152,21,[[-1,55,null,0,false,false,false,173841534824537,null,[[11,565265536661712],[8,0],[7,[0]]]]],[],[[0,0,false,null,194682830766275,22,[[25,56,null,1,false,false,false,283369307004573,null,[[4,19],[3,0]]]],[],[[0,0,false,null,951104014400095,23,[],[[-1,57,null,387601946277362,256,null,[[4,43],[5,[5,[1,24,58,true]]],[0,[5,[1,24,22,false]]],[0,[38,[1,24,23,false],[1,24,59,false]]],[16,false],[20,[13]]]],[43,60,null,267440600565922,0,null,[[0,[39]]]]]],[0,0,false,null,790700529454548,24,[],[[20,60,null,253053793056726,0,null,[[0,[40]]]],[-1,39,null,609885848519621,1,null,[[0,[41]]]],[20,60,null,958460471639186,0,null,[[0,[0]]]]]],[0,0,false,null,264158093837618,25,[[-1,61,null,0,true,false,false,274316655107518,null,[[0,[39]]]]],[[-1,57,null,748018974265582,256,null,[[4,44],[5,[5,[1,24,58,true]]],[0,[5,[1,24,22,false]]],[0,[5,[1,24,23,false]]],[16,false],[20,[13]]]],[44,62,"Bullet2",649319290820989,0,null,[[0,[42,[4,63]]]]],[44,64,"Bullet2",586709316066581,0,null,[[0,[43,[4,63]]]]],[44,65,"Timer",382268042832965,0,null,[[0,[44,[4,63]]],[3,0],[1,[45]]]],[44,60,null,119485328976499,0,null,[[0,[39]]]]]]]],[0,0,false,null,949824493433702,26,[[44,66,"Timer",0,false,false,false,618097294935439,null,[[1,[45]]]]],[[44,54,null,740005111368831,0,null],[-1,57,null,197245476080140,256,null,[[4,45],[5,[5,[1,44,58,true]]],[0,[5,[1,44,22,false]]],[0,[5,[1,44,23,false]]],[16,false],[20,[13]]]],[45,60,null,541159651634948,0,null,[[0,[46]]]]]],[0,0,false,null,903212799335135,27,[[45,67,null,1,false,false,false,447704173097645,null],[45,68,null,0,false,false,false,153840994344698,null,[[1,[37]]]],[45,69,null,0,false,false,false,111703086824228,null,[[8,0],[0,[15]]]]],[],[[0,0,false,null,810065622073099,28,[[45,70,null,0,false,false,false,473631556890158,null,[[4,27]]],[27,43,null,0,false,false,false,541444596190706,null,[[10,2],[8,4],[7,[2]]]]],[],[[0,0,false,null,725688896378558,29,[[-1,71,null,0,true,false,false,858573570604925,null,[[4,27]]]],[[-2,"attackEny",null,825129371289656,0,null,[[0,[5,[1,27,72,false]]],[0,[47,[4,73],[4,63]]]]]]]]]]],[0,0,false,null,257479090739807,30,[[-1,74,null,0,false,false,false,694532098596621,null,[[0,[0]]]]],[[-1,75,null,378004614194659,0,null,[[11,514210922105578],[7,[0]]]]],[[0,0,false,null,760408752139505,31,[[-1,55,null,0,false,false,false,485812183805754,null,[[11,514210922105578],[8,3],[7,[2]]]]],[[-1,17,null,211464737622263,0,null,[[11,514210922105578],[7,[1]]]],[-1,76,null,373089386537923,0,null,[[11,956981321445973],[7,[0]]]]]],[0,0,false,null,299789739615194,32,[[28,34,null,0,false,false,false,760265038052110,null,[[10,0],[8,0],[7,[48]]]]],[[28,25,null,346904367378666,0,null,[[7,[49,[3,514210922105578]]]]]]],[0,0,false,null,585229964599459,33,[[28,34,null,0,false,false,false,808642099534972,null,[[10,0],[8,0],[7,[50]]]]],[[28,25,null,156460364138573,0,null,[[7,[51,[3,956981321445973]]]]]]]]],[0,0,false,null,476821279591673,34,[[25,56,null,1,false,false,false,380824374862329,null,[[4,3],[3,0]]],[3,43,null,0,false,false,false,855528405272230,null,[[10,1],[8,0],[7,[2]]]]],[[-1,76,null,433297035666574,0,null,[[11,914177363344931],[7,[0]]]],[-1,57,null,564435006303744,256,null,[[4,41],[5,[52]],[0,[53,[1,25,77,false]]],[0,[54,[1,3,23,false],[1,3,59,false]]],[16,true],[20,[13]]]],[41,62,"Bullet",441219352481857,0,null,[[0,[55]]]],[42,25,null,470301998192484,0,null,[[7,[56]]]],[3,20,null,594980622625860,0,null,[[10,1],[7,[0]]]],[3,60,null,245552295817241,0,null,[[0,[40]]]],[-1,39,null,469129669582180,1,null,[[0,[41]]]],[3,60,null,979213966218212,0,null,[[0,[0]]]]],[[0,0,false,null,914961388156038,35,[[28,34,null,0,false,false,false,596470931629504,null,[[10,0],[8,0],[7,[57]]]]],[[28,25,null,228826705830752,0,null,[[7,[49,[3,914177363344931]]]]]]],[0,0,false,null,128579325527277,36,[],[[-1,39,null,955621099457915,1,null,[[0,[8]]]],[3,20,null,607824602066682,0,null,[[10,1],[7,[2]]]]]]]],[0,0,false,null,366710861797654,37,[[25,56,null,1,false,false,false,609978675093345,null,[[4,10],[3,0]]],[10,43,null,0,false,false,false,211669907347581,null,[[10,0],[8,0],[7,[2]]]]],[],[[0,0,false,null,226921980767448,38,[[-1,55,null,0,false,false,false,463601369774766,null,[[11,914177363344931],[8,5],[7,[58]]]]],[[10,20,null,887475856780499,0,null,[[10,0],[7,[0]]]],[-1,57,null,371284147045381,256,null,[[4,39],[5,[52]],[0,[5,[1,10,22,false]]],[0,[5,[1,10,23,false]]],[16,false],[20,[13]]]],[39,20,null,775356346796539,0,null,[[10,0],[7,[59]]]],[39,20,null,714007335548466,0,null,[[10,1],[7,[5,[1,10,72,false]]]]],[39,60,null,810037846656379,0,null,[[0,[15]]]],[-1,75,null,466870413216233,0,null,[[11,914177363344931],[7,[58]]]],[-1,57,null,582201671612689,256,null,[[4,41],[5,[52]],[0,[5,[1,10,22,false]]],[0,[54,[1,10,23,false],[1,10,59,false]]],[16,true],[20,[13]]]],[41,62,"Bullet",670579981142693,0,null,[[0,[60]]]],[42,78,null,855401548191651,0,null,[[0,[61]]]],[42,25,null,416600540021506,0,null,[[7,[62]]]]],[[0,0,false,null,884912442599897,39,[[28,34,null,0,false,false,false,829435015059162,null,[[10,0],[8,0],[7,[57]]]]],[[28,25,null,778214760929232,0,null,[[7,[49,[3,914177363344931]]]]]]]]],[0,0,false,null,969202476857885,40,[[-1,45,null,0,false,false,false,889092044556018,null]],[]]]],[0,0,false,null,932779031602972,41,[[-1,74,null,0,false,false,false,356801783751212,null,[[0,[0]]]]],[[-1,57,null,830485960659766,256,null,[[4,27],[5,[63]],[0,[64,[4,63],[4,51]]],[0,[65]],[16,true],[20,[13]]]],[27,20,null,805399146042132,0,null,[[10,3],[7,[66]]]],[27,20,null,368104240720127,0,null,[[10,1],[7,[23]]]],[27,20,null,760967538671361,0,null,[[10,4],[7,[0]]]],[27,20,null,777158809339163,0,null,[[10,2],[7,[67,[2,27,false,3]]]]],[27,79,"Pathfinding",706219869828943,2048,null,[[0,[5,[1,3,22,false]]],[0,[5,[1,3,23,false]]]]],[-1,80,null,968334403444331,1,null],[27,81,"Pathfinding",679389514361618,0,null],[27,82,null,155255841430598,0,null,[[1,[68]],[3,1]]]]],[0,0,false,null,823358016429867,42,[[-1,71,null,0,true,false,false,584950194648141,null,[[4,27]]]],[],[[0,0,false,null,715502491382400,43,[[27,83,null,0,false,false,false,937217551364609,null,[[8,5],[0,[69,[4,51]]]]]],[[27,84,null,494967528324058,0,null,[[3,1]]]]],[0,0,false,null,285424561778097,44,[[-1,45,null,0,false,false,false,970666613359377,null]],[[27,84,null,728855576694992,0,null,[[3,0]]]]]]],[0,0,false,null,643669718596449,45,[[4,85,"Turret",1,false,false,false,451598902561138,null]],[[-1,57,null,488815642635851,256,null,[[4,9],[5,[5,[1,4,58,true]]],[0,[70,[1,4,86,false]]],[0,[70,[1,4,87,false]]],[16,false],[20,[13]]]],[9,62,"Bullet",463782495958170,0,null,[[0,[5,[1,4,88,false]]]]],[9,20,null,578117450889256,0,null,[[10,0],[7,[71,[2,4,false,2],[2,4,false,1]]]]],[4,89,"Tween",255960401512058,2048,null,[[1,[72]],[3,2],[0,[73,[1,4,90,false]]],[0,[41]],[18,2],[3,0],[3,0],[3,1],[0,[0]]]]]],[4,["attackEny",0,[[1,"enyPid",0,0,false,false,264898554689254,false,80],[1,"hurtValue",0,0,false,false,158211159876545,false,81]],true,false,false],false,null,207995526899915,46,[],[],[[0,0,false,null,844098158077456,47,[[27,91,null,0,false,false,true,877997445813550,null,[[0,[17,[3,264898554689254]]]]]],[[-1,17,null,462982117158588,0,null,[[11,158211159876545],[7,[17,[3,158211159876545]]]]],[27,20,null,904278051773636,0,null,[[10,1],[7,[74]]]],[27,92,"Pathfinding",980336214450684,0,null],[27,93,null,704955919187815,0,null,[[10,2],[7,[17,[3,158211159876545]]]]],[27,82,null,393916100497399,0,null,[[1,[74]],[3,1]]],[9,54,null,401533234215677,0,null],[-1,57,null,367657603484224,256,null,[[4,29],[5,[5,[1,27,58,true]]],[0,[5,[1,27,22,false]]],[0,[75,[1,27,23,false]]],[16,false],[20,[13]]]],[29,60,null,315566330758007,0,null,[[0,[39]]]],[-1,57,null,426112315500287,256,null,[[4,40],[5,[5,[1,27,58,true]]],[0,[5,[1,27,22,false]]],[0,[76,[1,27,23,false],[1,27,59,false]]],[16,false],[20,[13]]]],[40,62,"Bullet",977571363953484,0,null,[[0,[55]]]],[40,25,null,966757975506015,0,null,[[7,[77,[3,158211159876545]]]]]],[[0,0,false,null,322611521687089,48,[[27,94,null,0,false,false,true,170947456141463,null,[[4,22],[3,0]]]],[[22,95,null,469027689497128,0,null,[[0,[78,[2,27,false,2],[2,27,false,3]]]]]]],[0,0,false,null,799207240947887,49,[[27,43,null,0,false,false,false,499157455028918,null,[[10,2],[8,3],[7,[2]]]]],[[27,96,null,220077815254596,0,null,[[3,0]]],[27,20,null,880092445119433,0,null,[[10,1],[7,[79]]]],[27,82,null,386457456443868,0,null,[[1,[79]],[3,1]]],[27,28,"Fade",637684786102927,0,null,[[0,[2]]]],[27,29,"Fade",206975336840545,0,null,[[0,[25]]]],[27,30,"Fade",107902463907355,0,null,[[0,[25]]]],[27,31,"Fade",566143680333413,0,null]],[[0,0,false,null,927836254891498,50,[[27,94,null,0,false,false,true,965611114458735,null,[[4,21],[3,0]]]],[[21,97,null,188119164081618,0,null]]],[0,0,false,null,971389910246131,51,[[27,94,null,0,false,false,true,683977713662976,null,[[4,22],[3,0]]]],[[22,97,null,434727473505060,0,null]]],[0,0,false,null,422531481812390,52,[[27,94,null,0,false,false,true,975528355623157,null,[[4,23],[3,0]]]],[[23,97,null,278887086647421,0,null]]]]]]]]],[0,0,false,null,213735426151516,53,[[9,98,null,0,false,false,true,412430241793646,null,[[4,27]]],[27,43,null,0,false,false,false,647037399755865,null,[[10,2],[8,4],[7,[2]]]]],[[-2,"attackEny",null,637797202566344,0,null,[[0,[5,[1,27,72,false]]],[0,[80,[2,9,false,0],[4,73],[4,63]]]]]]],[0,0,false,null,960152290530322,54,[[27,53,null,1,false,false,false,813929975429047,null,[[1,[74]]]],[27,43,null,0,false,false,false,565466754200426,null,[[10,2],[8,4],[7,[2]]]]],[[27,79,"Pathfinding",956714261471775,2048,null,[[0,[5,[1,3,22,false]]],[0,[5,[1,3,23,false]]]]],[-1,80,null,809180260457785,1,null],[27,81,"Pathfinding",485762130181073,0,null],[27,82,null,752366999531813,0,null,[[1,[68]],[3,1]]]]]]],[0,0,false,null,672545333595188,55,[[25,56,null,1,false,false,false,392357192078180,null,[[4,3],[3,0]]],[-1,99,null,0,false,false,false,506149928147100,null,[[5,[3]]]]],[[24,20,null,451328615840064,0,null,[[10,2],[7,[81]]]],[34,26,null,132232467717236,0,null,[[3,0]]],[35,26,null,601824605371291,0,null,[[3,0]]],[-1,19,null,946826006860778,0,null,[[5,[3]],[3,0]]],[26,79,"Pathfinding",754434818573185,2048,null,[[0,[82,[1,3,22,false]]],[0,[83,[1,3,23,false]]]]],[-1,80,null,926114124098636,1,null],[26,81,"Pathfinding",295247633753607,0,null]],[[0,0,false,null,696577490958089,56,[[-1,100,null,0,false,false,false,454237728970111,null,[[7,[32,[1,25,77,false]]],[8,5],[7,[5,[1,24,22,false]]]]]],[[24,84,null,299845500800521,0,null,[[3,1]]]]],[0,0,false,null,745004562800803,57,[[-1,45,null,0,false,false,false,263463972630703,null]],[[24,84,null,787809915806829,0,null,[[3,0]]]]]]],[0,0,false,null,997089856249713,58,[[26,101,"Pathfinding",0,false,false,false,442492201353892,null]],[],[[0,0,false,null,169960359084588,59,[[24,43,null,0,false,true,false,350822083015290,null,[[10,1],[8,0],[7,[84]]]]],[[24,82,null,587790945071011,0,null,[[1,[84]],[3,1]]],[24,20,null,217359080687249,0,null,[[10,1],[7,[84]]]]]]]],[0,0,true,null,666192998397772,60,[[26,102,"Pathfinding",1,false,false,false,831554906403934,null]],[[24,82,null,567904785281916,0,null,[[1,[31]],[3,1]]],[24,20,null,842244171337550,0,null,[[10,1],[7,[31]]]]],[[0,0,false,null,103025149616353,61,[[24,43,null,0,false,false,false,438344453907982,null,[[10,2],[8,0],[7,[81]]]]],[[24,82,null,913024086546328,0,null,[[1,[81]],[3,1]]],[24,20,null,744792218936085,0,null,[[10,1],[7,[81]]]],[-1,39,null,147006939207014,1,null,[[0,[85]]]],[-1,57,null,596344793326991,256,null,[[4,39],[5,[5,[1,3,58,true]]],[0,[5,[1,3,22,false]]],[0,[86,[1,3,23,false]]],[16,false],[20,[13]]]],[39,20,null,328101312099854,0,null,[[10,0],[7,[87]]]],[39,60,null,814298286884049,0,null,[[0,[46]]]]]]]],[0,0,false,null,446664970429197,62,[[39,53,null,1,false,false,false,827351905960722,null,[[1,[88]]]]],[[39,28,"Fade",618638859155555,0,null,[[0,[2]]]],[39,29,"Fade",272830324351030,0,null,[[0,[2]]]],[39,30,"Fade",200499713598778,0,null,[[0,[8]]]],[39,31,"Fade",527792534043819,0,null]]],[0,0,false,null,599333656697388,63,[[39,67,null,1,false,false,false,386354464265255,null],[39,68,null,0,false,false,false,983561029351704,null,[[1,[88]]]],[39,69,null,0,false,false,false,681726366279968,null,[[8,0],[0,[89]]]]],[],[[0,0,false,null,381093867491757,64,[[39,43,null,0,false,false,false,923070412315890,null,[[10,0],[8,0],[7,[87]]]]],[[3,82,null,675605629816869,0,null,[[1,[90]],[3,1]]],[24,20,null,977078995953843,0,null,[[10,1],[7,[31]]]],[24,82,null,222188403359878,0,null,[[1,[31]],[3,1]]],[-2,"talking",null,732891768641953,0,null,[[1,[27]]]]]],[0,0,false,null,756982702189682,65,[[39,43,null,0,false,false,false,979906253345569,null,[[10,0],[8,0],[7,[59]]]]],[],[[0,0,false,null,354092449187649,66,[[10,91,null,0,false,false,true,527861856526384,null,[[0,[67,[2,39,false,1]]]]]],[[-1,57,null,850957069922343,256,null,[[4,4],[5,[5,[1,10,58,true]]],[0,[5,[1,10,22,false]]],[0,[5,[1,10,23,false]]],[16,false],[20,[13]]]],[4,103,"Turret",724596373714144,0,null,[[4,27]]],[4,104,null,643360258280527,0,null,[[0,[55]]]],[4,105,null,816693510277523,0,null,[[3,1],[4,39]]],[4,20,null,678891032605017,0,null,[[10,2],[7,[0]]]],[4,20,null,539224740931250,0,null,[[10,1],[7,[91]]]]]]]]]],[0,0,false,null,376787735321615,67,[[26,106,"MoveTo",0,false,false,false,910775569024345,null]],[],[[0,0,false,null,956329693581727,68,[[24,43,null,0,false,true,false,913570571662564,null,[[10,1],[8,0],[7,[84]]]]],[[24,82,null,540524250688770,0,null,[[1,[84]],[3,1]]],[24,20,null,854057803954986,0,null,[[10,1],[7,[84]]]]]]]],[0,0,true,null,385295642375812,69,[[26,107,"MoveTo",1,false,false,false,710961982528857,null],[26,108,"MoveTo",1,false,false,false,870922087890740,null]],[[24,82,null,374950691526871,0,null,[[1,[31]],[3,1]]],[24,20,null,763610249393396,0,null,[[10,1],[7,[31]]]]]]]]],[],"media/",false,2480,4792,4,true,"trilinear",false,"1.0.0.0",false,false,4,2,60,false,true,1,true,0.7853981633974483,[],"icons/",[],"normalized","tyy5sf7yru9","fonts/",[["Timeline 1",5,0.1,"default","default",[],0,0,1,"",1,1]],"high-performance",[],null,"vsync","","icons/loading-logo.png",false,4,false,null,[],"folders",1,10000,false,[]]} \ No newline at end of file diff --git a/frontmatter.json b/frontmatter.json deleted file mode 100644 index cb9e910..0000000 --- a/frontmatter.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "$schema": "https://frontmatter.codes/frontmatter.schema.json", - "frontMatter.framework.id": "astro", - "frontMatter.preview.host": "http://localhost:4321", - "frontMatter.content.publicFolder": "public", - "frontMatter.content.pageFolders": [ - { - "title": "posts", - "path": "[[workspace]]/src/content/posts" - } - ], - "frontMatter.taxonomy.contentTypes": [ - { - "name": "default", - "pageBundle": true, - "previewPath": "'blog'", - "filePrefix": null, - "clearEmpty": true, - "fields": [ - { - "title": "title", - "name": "title", - "type": "string", - "single": true - }, - { - "title": "description", - "name": "description", - "type": "string" - }, - { - "title": "published", - "name": "published", - "type": "datetime", - "default": "{{now}}", - "isPublishDate": true - }, - { - "title": "preview", - "name": "image", - "type": "image", - "isPreviewImage": true - }, - { - "title": "tags", - "name": "tags", - "type": "list" - }, - { - "title": "category", - "name": "category", - "type": "string" - }, - { - "title": "draft", - "name": "draft", - "type": "boolean" - } - ] - } - ] -} diff --git a/icons/icon-128.png b/icons/icon-128.png new file mode 100644 index 0000000..4c9860a Binary files /dev/null and b/icons/icon-128.png differ diff --git a/icons/icon-16.png b/icons/icon-16.png new file mode 100644 index 0000000..d4e6a43 Binary files /dev/null and b/icons/icon-16.png differ diff --git a/icons/icon-256.png b/icons/icon-256.png new file mode 100644 index 0000000..f8fe3a9 Binary files /dev/null and b/icons/icon-256.png differ diff --git a/icons/icon-32.png b/icons/icon-32.png new file mode 100644 index 0000000..3eac31e Binary files /dev/null and b/icons/icon-32.png differ diff --git a/icons/icon-512.png b/icons/icon-512.png new file mode 100644 index 0000000..d09fb2d Binary files /dev/null and b/icons/icon-512.png differ diff --git a/icons/icon-64.png b/icons/icon-64.png new file mode 100644 index 0000000..c98252e Binary files /dev/null and b/icons/icon-64.png differ diff --git a/icons/loading-logo.png b/icons/loading-logo.png new file mode 100644 index 0000000..c98252e Binary files /dev/null and b/icons/loading-logo.png differ diff --git a/images/bomb_ef-sheet0.webp b/images/bomb_ef-sheet0.webp new file mode 100644 index 0000000..faccbef Binary files /dev/null and b/images/bomb_ef-sheet0.webp differ diff --git a/images/boss_hp1-sheet0.webp b/images/boss_hp1-sheet0.webp new file mode 100644 index 0000000..f455023 Binary files /dev/null and b/images/boss_hp1-sheet0.webp differ diff --git a/images/boss_hp2-sheet0.webp b/images/boss_hp2-sheet0.webp new file mode 100644 index 0000000..dc3a4c5 Binary files /dev/null and b/images/boss_hp2-sheet0.webp differ diff --git a/images/boss_hp3-sheet0.webp b/images/boss_hp3-sheet0.webp new file mode 100644 index 0000000..99cefae Binary files /dev/null and b/images/boss_hp3-sheet0.webp differ diff --git a/images/ef_repair-sheet0.webp b/images/ef_repair-sheet0.webp new file mode 100644 index 0000000..f905759 Binary files /dev/null and b/images/ef_repair-sheet0.webp differ diff --git a/images/ef_repair-sheet1.webp b/images/ef_repair-sheet1.webp new file mode 100644 index 0000000..1d48189 Binary files /dev/null and b/images/ef_repair-sheet1.webp differ diff --git a/images/ef_repair-sheet2.webp b/images/ef_repair-sheet2.webp new file mode 100644 index 0000000..b5bb3dd Binary files /dev/null and b/images/ef_repair-sheet2.webp differ diff --git a/images/ef_skill-sheet0.webp b/images/ef_skill-sheet0.webp new file mode 100644 index 0000000..467c903 Binary files /dev/null and b/images/ef_skill-sheet0.webp differ diff --git a/images/eny_1-sheet0.webp b/images/eny_1-sheet0.webp new file mode 100644 index 0000000..7a532af Binary files /dev/null and b/images/eny_1-sheet0.webp differ diff --git a/images/eny_1-sheet1.webp b/images/eny_1-sheet1.webp new file mode 100644 index 0000000..e93a0ed Binary files /dev/null and b/images/eny_1-sheet1.webp differ diff --git a/images/eny_1-sheet10.webp b/images/eny_1-sheet10.webp new file mode 100644 index 0000000..cb45b2f Binary files /dev/null and b/images/eny_1-sheet10.webp differ diff --git a/images/eny_1-sheet11.webp b/images/eny_1-sheet11.webp new file mode 100644 index 0000000..4cb8b53 Binary files /dev/null and b/images/eny_1-sheet11.webp differ diff --git a/images/eny_1-sheet12.webp b/images/eny_1-sheet12.webp new file mode 100644 index 0000000..08f59a0 Binary files /dev/null and b/images/eny_1-sheet12.webp differ diff --git a/images/eny_1-sheet13.webp b/images/eny_1-sheet13.webp new file mode 100644 index 0000000..8e72d62 Binary files /dev/null and b/images/eny_1-sheet13.webp differ diff --git a/images/eny_1-sheet14.webp b/images/eny_1-sheet14.webp new file mode 100644 index 0000000..77a6bbd Binary files /dev/null and b/images/eny_1-sheet14.webp differ diff --git a/images/eny_1-sheet2.webp b/images/eny_1-sheet2.webp new file mode 100644 index 0000000..7c5257d Binary files /dev/null and b/images/eny_1-sheet2.webp differ diff --git a/images/eny_1-sheet3.webp b/images/eny_1-sheet3.webp new file mode 100644 index 0000000..46f9ec3 Binary files /dev/null and b/images/eny_1-sheet3.webp differ diff --git a/images/eny_1-sheet4.webp b/images/eny_1-sheet4.webp new file mode 100644 index 0000000..0d3ce9e Binary files /dev/null and b/images/eny_1-sheet4.webp differ diff --git a/images/eny_1-sheet5.webp b/images/eny_1-sheet5.webp new file mode 100644 index 0000000..fb0e6a3 Binary files /dev/null and b/images/eny_1-sheet5.webp differ diff --git a/images/eny_1-sheet6.webp b/images/eny_1-sheet6.webp new file mode 100644 index 0000000..d712f16 Binary files /dev/null and b/images/eny_1-sheet6.webp differ diff --git a/images/eny_1-sheet7.webp b/images/eny_1-sheet7.webp new file mode 100644 index 0000000..e009b12 Binary files /dev/null and b/images/eny_1-sheet7.webp differ diff --git a/images/eny_1-sheet8.webp b/images/eny_1-sheet8.webp new file mode 100644 index 0000000..9894940 Binary files /dev/null and b/images/eny_1-sheet8.webp differ diff --git a/images/eny_1-sheet9.webp b/images/eny_1-sheet9.webp new file mode 100644 index 0000000..6cc7484 Binary files /dev/null and b/images/eny_1-sheet9.webp differ diff --git a/images/eny_hp1-sheet0.webp b/images/eny_hp1-sheet0.webp new file mode 100644 index 0000000..8e3e105 Binary files /dev/null and b/images/eny_hp1-sheet0.webp differ diff --git a/images/eny_hp2-sheet0.webp b/images/eny_hp2-sheet0.webp new file mode 100644 index 0000000..a5aef20 Binary files /dev/null and b/images/eny_hp2-sheet0.webp differ diff --git a/images/eny_hp3-sheet0.webp b/images/eny_hp3-sheet0.webp new file mode 100644 index 0000000..bb9ee37 Binary files /dev/null and b/images/eny_hp3-sheet0.webp differ diff --git a/images/newbiebg-sheet0.webp b/images/newbiebg-sheet0.webp new file mode 100644 index 0000000..be95ae0 Binary files /dev/null and b/images/newbiebg-sheet0.webp differ diff --git a/images/paodan_ef-sheet0.webp b/images/paodan_ef-sheet0.webp new file mode 100644 index 0000000..0955520 Binary files /dev/null and b/images/paodan_ef-sheet0.webp differ diff --git a/images/role_1-sheet0.webp b/images/role_1-sheet0.webp new file mode 100644 index 0000000..3cb101c Binary files /dev/null and b/images/role_1-sheet0.webp differ diff --git a/images/role_1-sheet1.webp b/images/role_1-sheet1.webp new file mode 100644 index 0000000..927c6c5 Binary files /dev/null and b/images/role_1-sheet1.webp differ diff --git a/images/role_1-sheet2.webp b/images/role_1-sheet2.webp new file mode 100644 index 0000000..1f8cd1d Binary files /dev/null and b/images/role_1-sheet2.webp differ diff --git a/images/role_1-sheet3.webp b/images/role_1-sheet3.webp new file mode 100644 index 0000000..8fc3e22 Binary files /dev/null and b/images/role_1-sheet3.webp differ diff --git a/images/role_1-sheet4.webp b/images/role_1-sheet4.webp new file mode 100644 index 0000000..53a64b7 Binary files /dev/null and b/images/role_1-sheet4.webp differ diff --git a/images/role_1-sheet5.webp b/images/role_1-sheet5.webp new file mode 100644 index 0000000..a855dfc Binary files /dev/null and b/images/role_1-sheet5.webp differ diff --git a/images/role_1-sheet6.webp b/images/role_1-sheet6.webp new file mode 100644 index 0000000..21c4ee7 Binary files /dev/null and b/images/role_1-sheet6.webp differ diff --git a/images/role_1-sheet7.webp b/images/role_1-sheet7.webp new file mode 100644 index 0000000..4417dee Binary files /dev/null and b/images/role_1-sheet7.webp differ diff --git a/images/role_1-sheet8.webp b/images/role_1-sheet8.webp new file mode 100644 index 0000000..b3113ff Binary files /dev/null and b/images/role_1-sheet8.webp differ diff --git a/images/role_hp1-sheet0.webp b/images/role_hp1-sheet0.webp new file mode 100644 index 0000000..8e3e105 Binary files /dev/null and b/images/role_hp1-sheet0.webp differ diff --git a/images/role_hp2-sheet0.webp b/images/role_hp2-sheet0.webp new file mode 100644 index 0000000..d39f887 Binary files /dev/null and b/images/role_hp2-sheet0.webp differ diff --git a/images/role_hp3-sheet0.webp b/images/role_hp3-sheet0.webp new file mode 100644 index 0000000..bb9ee37 Binary files /dev/null and b/images/role_hp3-sheet0.webp differ diff --git a/images/shared-0-sheet0.webp b/images/shared-0-sheet0.webp new file mode 100644 index 0000000..ba0d1ba Binary files /dev/null and b/images/shared-0-sheet0.webp differ diff --git a/images/shared-0-sheet1.webp b/images/shared-0-sheet1.webp new file mode 100644 index 0000000..e6422c1 Binary files /dev/null and b/images/shared-0-sheet1.webp differ diff --git a/images/shared-0-sheet2.webp b/images/shared-0-sheet2.webp new file mode 100644 index 0000000..2859467 Binary files /dev/null and b/images/shared-0-sheet2.webp differ diff --git a/images/shared-0-sheet3.webp b/images/shared-0-sheet3.webp new file mode 100644 index 0000000..37577f4 Binary files /dev/null and b/images/shared-0-sheet3.webp differ diff --git a/images/shared-0-sheet4.webp b/images/shared-0-sheet4.webp new file mode 100644 index 0000000..b3a2175 Binary files /dev/null and b/images/shared-0-sheet4.webp differ diff --git a/images/shared-0-sheet5.webp b/images/shared-0-sheet5.webp new file mode 100644 index 0000000..0bae978 Binary files /dev/null and b/images/shared-0-sheet5.webp differ diff --git a/images/shared-0-sheet6.webp b/images/shared-0-sheet6.webp new file mode 100644 index 0000000..ce1ee29 Binary files /dev/null and b/images/shared-0-sheet6.webp differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..38cfd09 --- /dev/null +++ b/index.html @@ -0,0 +1,42 @@ + + + + +xiaoyouxi + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/offline.json b/offline.json new file mode 100644 index 0000000..be20eba --- /dev/null +++ b/offline.json @@ -0,0 +1 @@ +{"version":1721569034564,"fileList":["scripts/main.js","scripts/c3runtime.js","scripts/objRefTable.js","scripts/c3main.js","scripts/dispatchworker.js","scripts/jobworker.js","workermain.js","data.json","scripts/modernjscheck.js","scripts/supportcheck.js","scripts/offlineclient.js","icons/icon-16.png","icons/icon-32.png","icons/icon-64.png","icons/loading-logo.png","icons/icon-128.png","icons/icon-256.png","icons/icon-512.png","pathfind.js","redblackset.js","style.css","images/role_hp3-sheet0.webp","images/role_hp2-sheet0.webp","images/role_hp1-sheet0.webp","images/boss_hp2-sheet0.webp","images/boss_hp1-sheet0.webp","images/boss_hp3-sheet0.webp","images/eny_hp3-sheet0.webp","images/eny_hp2-sheet0.webp","images/eny_hp1-sheet0.webp","images/shared-0-sheet5.webp","images/role_1-sheet0.webp","images/role_1-sheet1.webp","images/role_1-sheet2.webp","images/shared-0-sheet6.webp","images/role_1-sheet3.webp","images/role_1-sheet4.webp","images/role_1-sheet5.webp","images/role_1-sheet6.webp","images/role_1-sheet7.webp","images/role_1-sheet8.webp","images/shared-0-sheet4.webp","images/eny_1-sheet0.webp","images/shared-0-sheet3.webp","images/eny_1-sheet1.webp","images/eny_1-sheet2.webp","images/eny_1-sheet3.webp","images/eny_1-sheet4.webp","images/eny_1-sheet5.webp","images/eny_1-sheet6.webp","images/eny_1-sheet7.webp","images/eny_1-sheet8.webp","images/eny_1-sheet9.webp","images/eny_1-sheet14.webp","images/paodan_ef-sheet0.webp","images/newbiebg-sheet0.webp","images/eny_1-sheet10.webp","images/eny_1-sheet11.webp","images/eny_1-sheet12.webp","images/ef_repair-sheet0.webp","images/ef_repair-sheet2.webp","images/eny_1-sheet13.webp","images/ef_skill-sheet0.webp","images/ef_repair-sheet1.webp","images/bomb_ef-sheet0.webp","images/shared-0-sheet1.webp","images/shared-0-sheet2.webp","images/shared-0-sheet0.webp","scripts/register-sw.js"]} \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 8a87d9d..0000000 --- a/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "fuwari", - "type": "module", - "version": "0.0.1", - "packageManager": "pnpm@9.0.4", - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build && pagefind --site dist", - "preview": "astro preview", - "astro": "astro", - "new-post": "node scripts/new-post.js", - "format": "biome format --write ./src", - "lint": "biome check --apply ./src" - }, - "dependencies": { - "@astrojs/check": "^0.5.9", - "@astrojs/svelte": "^5.2.0", - "@astrojs/tailwind": "^5.1.0", - "@fontsource-variable/jetbrains-mono": "^5.0.20", - "@fontsource/roboto": "^5.0.12", - "@swup/astro": "^1.4.0", - "astro": "^4.4.15", - "astro-compress": "^2.2.15", - "astro-icon": "1.1.0", - "colorjs.io": "^0.5.0", - "mdast-util-to-string": "^4.0.0", - "overlayscrollbars": "^2.6.1", - "pagefind": "^1.0.4", - "reading-time": "^1.5.0", - "rehype-autolink-headings": "^7.1.0", - "rehype-katex": "^7.0.0", - "rehype-slug": "^6.0.0", - "remark-math": "^6.0.0", - "sharp": "^0.33.2", - "svelte": "^4.2.12", - "tailwindcss": "^3.4.1", - "typescript": "^5.4.2" - }, - "devDependencies": { - "@astrojs/ts-plugin": "^1.6.0", - "@biomejs/biome": "1.6.1", - "@iconify-json/fa6-brands": "^1.1.18", - "@iconify-json/fa6-regular": "^1.1.18", - "@iconify-json/fa6-solid": "^1.1.20", - "@iconify-json/material-symbols": "^1.1.74", - "@rollup/plugin-yaml": "^4.1.2", - "@tailwindcss/typography": "^0.5.10", - "stylus": "^0.63.0" - } -} \ No newline at end of file diff --git a/pathfind.js b/pathfind.js new file mode 100644 index 0000000..a2b3295 --- /dev/null +++ b/pathfind.js @@ -0,0 +1,20 @@ +'use strict';{const PF_CLEAR=0;const CELL_MAX_DIMENSION=Math.pow(2,26);const PF_OBSTACLE=2147483647;function XYToKey(x,y){return x*CELL_MAX_DIMENSION+y}function KeyToXY(k){const x=Math.floor(k/CELL_MAX_DIMENSION);const y=k%CELL_MAX_DIMENSION;return[x,y]}function Make2DCellArray(w,h){const ret=[];for(let x=0;x=this._hcells||y>=this._vcells)return PF_OBSTACLE; +let ret=this._cells[x][y];if(this._groupCostCells!==null)ret=Math.min(ret+this._groupCostCells[x][y],PF_OBSTACLE);return ret}IsBoxAllClear(startX,startY,endX,endY){const minX=Math.min(startX,endX);const maxX=Math.max(startX,endX);const minY=Math.min(startY,endY);const maxY=Math.max(startY,endY);for(let x=minX;x<=maxX;++x){const curCellCol=this._cells[x];for(let y=minY;y<=maxY;++y)if(curCellCol[y]!==0)return false}return true}FindPath(startX,startY,endX,endY,directMovementMode){if(!this._cells)return null; +startX=Math.floor(startX);startY=Math.floor(startY);endX=Math.floor(endX);endY=Math.floor(endY);this._targetX=endX;this._targetY=endY;const minX=Math.min(startX,endX);const maxX=Math.max(startX,endX);const minY=Math.min(startY,endY);const maxY=Math.max(startY,endY);if(minX<0||minY<0||maxX>=this._hcells||maxY>=this._vcells)return null;if(directMovementMode!==0&&this.IsBoxAllClear(startX,startY,endX,endY))return[{x:endX,y:endY}];return this._AStarFindPath(startX,startY,directMovementMode)}_AStarFindPath(startX, +startY,directMovementMode){const adjacentCost=this._adjacentCost;const diagonalCost=this._diagonalCost;const diagonals=this._diagonalsEnabled;const openList=this._openList;const openMap=this._openMap;const closedSet=this._closedSet;const startNode=new Node(startX,startY);openList.Add(startNode);openMap.set(XYToKey(startX,startY),startNode);while(!openList.IsEmpty()){const c=openList.Shift();const key=XYToKey(c._x,c._y);openMap.delete(key);closedSet.add(key);if(c._x===this._targetX&&c._y===this._targetY){this._ClearIntermediateData(); +return this._GetResultPath(c,directMovementMode)}this._currentNode=c;const x=c._x;const y=c._y;const obsLeft=this.At(x-1,y)===PF_OBSTACLE;const obsTop=this.At(x,y-1)===PF_OBSTACLE;const obsRight=this.At(x+1,y)===PF_OBSTACLE;const obsBottom=this.At(x,y+1)===PF_OBSTACLE;if(!obsLeft)this._AddCellToOpenList(x-1,y,adjacentCost);if(diagonals&&!obsLeft&&!obsTop&&this.At(x-1,y-1)!==PF_OBSTACLE)this._AddCellToOpenList(x-1,y-1,diagonalCost);if(!obsTop)this._AddCellToOpenList(x,y-1,adjacentCost);if(diagonals&& +!obsTop&&!obsRight&&this.At(x+1,y-1)!==PF_OBSTACLE)this._AddCellToOpenList(x+1,y-1,diagonalCost);if(!obsRight)this._AddCellToOpenList(x+1,y,adjacentCost);if(diagonals&&!obsRight&&!obsBottom&&this.At(x+1,y+1)!==PF_OBSTACLE)this._AddCellToOpenList(x+1,y+1,diagonalCost);if(!obsBottom)this._AddCellToOpenList(x,y+1,adjacentCost);if(diagonals&&!obsBottom&&!obsLeft&&this.At(x-1,y+1)!==PF_OBSTACLE)this._AddCellToOpenList(x-1,y+1,diagonalCost)}this._ClearIntermediateData();return null}_AddCellToOpenList(x, +y,g){const key=XYToKey(x,y);if(this._closedSet.has(key))return;const curCellCost=this.At(x,y);const c=this._openMap.get(key);if(c){if(this._currentNode._g+g+curCellCost1)pathList.shift();return pathList}_AddPathGroupCost(pathList){const cost=this._pathGroupCost;const cellSpread=this._pathGroupCellSpread;const spreadOffset=Math.floor(cellSpread/ +2);const hcells=this._hcells;const vcells=this._vcells;const costCells=new Set;for(const node of pathList){const nodeX=node.x;const nodeY=node.y;const startX=Math.max(nodeX-spreadOffset,0);const startY=Math.max(nodeY-spreadOffset,0);const endX=Math.min(startX+cellSpread,hcells);const endY=Math.min(startY+cellSpread,vcells);for(let x=startX;xR_EPSILON){retList.push(curNode);curDx=nextDx;curDy=nextDy}}}return retList}_FilterNodesForDirectMovement(pathList){if(pathList.length===0)return[];if(pathList.length<=2)return pathList.slice(0);const retList=[];let i=0,len=pathList.length;while(i=len-2)++i;else{let j=i+1;while(j=len)break;const tryNode=pathList[j];if(!this.IsBoxAllClear(curNode.x,curNode.y,tryNode.x,tryNode.y))break}}}return retList}}}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 20656b6..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,10024 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@astrojs/check': - specifier: ^0.5.9 - version: 0.5.9(prettier@2.8.8)(typescript@5.4.2) - '@astrojs/svelte': - specifier: ^5.2.0 - version: 5.2.0(astro@4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2))(svelte@4.2.12)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - '@astrojs/tailwind': - specifier: ^5.1.0 - version: 5.1.0(astro@4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2))(tailwindcss@3.4.1) - '@fontsource-variable/jetbrains-mono': - specifier: ^5.0.20 - version: 5.0.20 - '@fontsource/roboto': - specifier: ^5.0.12 - version: 5.0.12 - '@swup/astro': - specifier: ^1.4.0 - version: 1.4.0(@types/babel__core@7.20.5) - astro: - specifier: ^4.4.15 - version: 4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2) - astro-compress: - specifier: ^2.2.15 - version: 2.2.15 - astro-icon: - specifier: 1.1.0 - version: 1.1.0 - colorjs.io: - specifier: ^0.5.0 - version: 0.5.0 - mdast-util-to-string: - specifier: ^4.0.0 - version: 4.0.0 - overlayscrollbars: - specifier: ^2.6.1 - version: 2.6.1 - pagefind: - specifier: ^1.0.4 - version: 1.0.4 - reading-time: - specifier: ^1.5.0 - version: 1.5.0 - rehype-autolink-headings: - specifier: ^7.1.0 - version: 7.1.0 - rehype-katex: - specifier: ^7.0.0 - version: 7.0.0 - rehype-slug: - specifier: ^6.0.0 - version: 6.0.0 - remark-math: - specifier: ^6.0.0 - version: 6.0.0 - sharp: - specifier: ^0.33.2 - version: 0.33.2 - svelte: - specifier: ^4.2.12 - version: 4.2.12 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1 - typescript: - specifier: ^5.4.2 - version: 5.4.2 - devDependencies: - '@astrojs/ts-plugin': - specifier: ^1.6.0 - version: 1.6.0 - '@biomejs/biome': - specifier: 1.6.1 - version: 1.6.1 - '@iconify-json/fa6-brands': - specifier: ^1.1.18 - version: 1.1.18 - '@iconify-json/fa6-regular': - specifier: ^1.1.18 - version: 1.1.18 - '@iconify-json/fa6-solid': - specifier: ^1.1.20 - version: 1.1.20 - '@iconify-json/material-symbols': - specifier: ^1.1.74 - version: 1.1.75 - '@rollup/plugin-yaml': - specifier: ^4.1.2 - version: 4.1.2(rollup@2.79.1) - '@tailwindcss/typography': - specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.4.1) - stylus: - specifier: ^0.63.0 - version: 0.63.0 - -packages: - - '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@antfu/install-pkg@0.1.1': - resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - - '@antfu/utils@0.7.7': - resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} - - '@astrojs/check@0.5.9': - resolution: {integrity: sha512-+QsQMtYq4oso+gmilJC9HLmdi0glZ+04V/VyyTTPry7n21jqjX9SfgDpLGxMk5cwPC/vwZMkn6ORGPnkZS/L5w==} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - - '@astrojs/compiler@2.7.0': - resolution: {integrity: sha512-XpC8MAaWjD1ff6/IfkRq/5k1EFj6zhCNqXRd5J43SVJEBj/Bsmizkm8N0xOYscGcDFQkRgEw6/eKnI5x/1l6aA==} - - '@astrojs/internal-helpers@0.2.1': - resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==} - - '@astrojs/language-server@2.8.2': - resolution: {integrity: sha512-8BfOqx4kYSZqLxpXezryoblg1z4ufgWAh7Y9iT/3g8sUzG1jE1MVdwxXixRbsOu9X4bgLDLMwbOgXp63Fbd/zA==} - hasBin: true - peerDependencies: - prettier: ^3.0.0 - prettier-plugin-astro: '>=0.11.0' - peerDependenciesMeta: - prettier: - optional: true - prettier-plugin-astro: - optional: true - - '@astrojs/markdown-remark@4.2.1': - resolution: {integrity: sha512-2RQBIwrq+2qPYtp99bH+eL5hfbK0BoxXla85lHsRpIX/IsGqFrPX6pXI2cbWPihBwGbKCdxS6uZNX2QerZWwpQ==} - - '@astrojs/prism@3.0.0': - resolution: {integrity: sha512-g61lZupWq1bYbcBnYZqdjndShr/J3l/oFobBKPA3+qMat146zce3nz2kdO4giGbhYDt4gYdhmoBz0vZJ4sIurQ==} - engines: {node: '>=18.14.1'} - - '@astrojs/svelte@5.2.0': - resolution: {integrity: sha512-GmwbXks2WMkmAfl0rlPM/2gA1RtmZzjGV2mOceV3g7QNyjIsSYBPKrlEnSFnuR+YMvlAtWdbMFBsb3gtGxnTTg==} - engines: {node: '>=18.14.1'} - peerDependencies: - astro: ^4.0.0 - svelte: ^4.0.0 || ^5.0.0-next.56 - typescript: ^5.3.3 - - '@astrojs/tailwind@5.1.0': - resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==} - peerDependencies: - astro: ^3.0.0 || ^4.0.0 - tailwindcss: ^3.0.24 - - '@astrojs/telemetry@3.0.4': - resolution: {integrity: sha512-A+0c7k/Xy293xx6odsYZuXiaHO0PL+bnDoXOc47sGDF5ffIKdKQGRPFl2NMlCF4L0NqN4Ynbgnaip+pPF0s7pQ==} - engines: {node: '>=18.14.1'} - - '@astrojs/ts-plugin@1.6.0': - resolution: {integrity: sha512-4ChbUPhMCQFajE7FmDQTZigtq8JM4cD8Z0m++po0QKUS0OgWYPBUo5wPhMPJgbIot8tf+e26xKWWcJqkGNl9gA==} - - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.23.5': - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.24.0': - resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.23.6': - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.24.0': - resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.5.0': - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-define-polyfill-provider@0.6.1': - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.22.20': - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.24.0': - resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.0': - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-class-properties@7.12.1': - resolution: {integrity: sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.23.3': - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.23.3': - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.23.3': - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.23.3': - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.23.3': - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.23.9': - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.23.3': - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.23.3': - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.23.4': - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.23.3': - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.23.4': - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.23.8': - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.23.3': - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.23.3': - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.23.3': - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.23.3': - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.23.4': - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.23.3': - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.23.4': - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.23.3': - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.23.6': - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.23.3': - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.23.4': - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.23.3': - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.23.4': - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.23.3': - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.23.3': - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.23.3': - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.23.9': - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.23.3': - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.23.3': - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.23.4': - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.0': - resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.23.3': - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.23.4': - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.23.4': - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.23.3': - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.23.3': - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.23.4': - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.23.3': - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.23.3': - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.22.5': - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.23.4': - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.23.3': - resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.23.3': - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.23.3': - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.23.3': - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.23.3': - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.23.3': - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.23.3': - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.23.3': - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.23.3': - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.23.3': - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.23.3': - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3': - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.24.0': - resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.24.0': - resolution: {integrity: sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.23.3': - resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime@7.24.0': - resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.24.0': - resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - - '@biomejs/biome@1.6.1': - resolution: {integrity: sha512-SILQvA2S0XeaOuu1bivv6fQmMo7zMfr2xqDEN+Sz78pGbAKZnGmg0emsXjQWoBY/RVm9kPCgX+aGEpZZTYaM7w==} - engines: {node: '>=14.*'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.6.1': - resolution: {integrity: sha512-KlvY00iB9T/vFi4m/GXxEyYkYnYy6aw06uapzUIIdiMMj7I/pmZu7CsZlzWdekVD0j+SsQbxdZMsb0wPhnRSsg==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.6.1': - resolution: {integrity: sha512-jP4E8TXaQX5e3nvRJSzB+qicZrdIDCrjR0sSb1DaDTx4JPZH5WXq/BlTqAyWi3IijM+IYMjWqAAK4kOHsSCzxw==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.6.1': - resolution: {integrity: sha512-YdkDgFecdHJg7PJxAMaZIixVWGB6St4yH08BHagO0fEhNNiY8cAKEVo2mcXlsnEiTMpeSEAY9VxLUrVT3IVxpw==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.6.1': - resolution: {integrity: sha512-nxD1UyX3bWSl/RSKlib/JsOmt+652/9yieogdSC/UTLgVCZYOF7u8L/LK7kAa0Y4nA8zSPavAQTgko7mHC2ObA==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.6.1': - resolution: {integrity: sha512-aSISIDmxq04NNy7tm4x9rBk2vH0ub2VDIE4outEmdC2LBtEJoINiphlZagx/FvjbsqUfygent9QUSn0oREnAXg==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.6.1': - resolution: {integrity: sha512-BYAzenlMF3QdngjNFw9QVBXKGNzeecqwF3pwDgUGEvU7OJpn1/lyVkJVxYPtVGRNdjQ9e6l/s8NjKuBpW/ZR4Q==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.6.1': - resolution: {integrity: sha512-/eCHQKZ1kEawUpkSuXq4urtxMsD1P1678OPG3zNKt3ru16AqqspLdO3jzBe3k74xCPYnQ36e9Yqc97Mo0qgPtg==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.6.1': - resolution: {integrity: sha512-5TUZbzBwnDLFxLVGEPsorNi6eC2Gt+z4Oei9Qvq0M/4c4/mjZ96ABgwao/tMxf4ZBr/qyy2YdvF+gX9Rc+xC0A==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [win32] - - '@emmetio/abbreviation@2.3.3': - resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} - - '@emmetio/css-abbreviation@2.1.8': - resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - - '@emmetio/scanner@1.0.4': - resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - - '@emnapi/runtime@0.45.0': - resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@fontsource-variable/jetbrains-mono@5.0.20': - resolution: {integrity: sha512-IWJnmY9vT5Olcac1vzA7FMdnojCrZWMq+g7SqC2jsFpY0LQTjIgp9gBjjw9kUOkNbLw37/evZO4w6rdPeMA68A==} - - '@fontsource/roboto@5.0.12': - resolution: {integrity: sha512-x0o17jvgoSSbS9OZnUX2+xJmVRvVCfeaYJjkS7w62iN7CuJWtMf5vJj8LqgC7ibqIkitOHVW+XssRjgrcHn62g==} - - '@iconify-json/fa6-brands@1.1.18': - resolution: {integrity: sha512-vmeJP06Xbj0XbVGiBHg0q8H3M894d4bGXKCmiHt6JqUdpiGcIV7r96N+BOU4ZS1+hvpV57fTfXlFPiUfxAIfkg==} - - '@iconify-json/fa6-regular@1.1.18': - resolution: {integrity: sha512-+lLtiTHf02rxeC/9R6vzJi9eGcuubzeHfTt/HWvDnovz2Kt5NEntW8foUSLeLo7kPU7RNvea68lt7QM9HYFloQ==} - - '@iconify-json/fa6-solid@1.1.20': - resolution: {integrity: sha512-99P9zOacNS56MNNT7Mzih2Loe3jzwNFKFBOiVh+kF+4D+AHW5zyksyvMizIgGu2cizFz6npaATlCtl3E5Zfjbw==} - - '@iconify-json/material-symbols@1.1.75': - resolution: {integrity: sha512-YMLagGENDw9QNoo4sPDoMX9wO20YptQ2FuTDCf/H/uRH4lGmD08C+z+kYwR4A90qyyo6hYG7yccPEiMOuLow5A==} - - '@iconify/tools@3.0.7': - resolution: {integrity: sha512-DxfhFLMnooS34dHelpGUnnYrxLZHs0czC1CgrBhAbuL8ddVzBb2VEQm8kh9qGh7A34qeXAB5iSHH3A72rAaFrg==} - - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - - '@iconify/utils@2.1.22': - resolution: {integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA==} - - '@img/sharp-darwin-arm64@0.33.2': - resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.2': - resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.1': - resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.1': - resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.1': - resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.1': - resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.1': - resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.1': - resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.1': - resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.1': - resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.2': - resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.2': - resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.2': - resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.2': - resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.2': - resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.2': - resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.2': - resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.2': - resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.2': - resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@medv/finder@3.2.0': - resolution: {integrity: sha512-JmU7JIBwyL8RAzefvzALT4sP2M0biGk8i2invAgpQmma/QgfsaqoHIvJ7S0YC8n9hUVG8X3Leul2nGa06PvhbQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@pagefind/darwin-arm64@1.0.4': - resolution: {integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ==} - cpu: [arm64] - os: [darwin] - - '@pagefind/darwin-x64@1.0.4': - resolution: {integrity: sha512-xkdvp0D9Ld/ZKsjo/y1bgfhTEU72ITimd2PMMQtts7jf6JPIOJbsiErCvm37m/qMFuPGEq/8d+fZ4pydOj08HQ==} - cpu: [x64] - os: [darwin] - - '@pagefind/linux-arm64@1.0.4': - resolution: {integrity: sha512-jGBrcCzIrMnNxLKVtogaQyajVfTAXM59KlBEwg6vTn8NW4fQ6nuFbbhlG4dTIsaamjEM5e8ZBEAKZfTB/qd9xw==} - cpu: [arm64] - os: [linux] - - '@pagefind/linux-x64@1.0.4': - resolution: {integrity: sha512-LIn/QcvcEtLEBqKe5vpSbSC2O3fvqbRCWOTIklslqSORisCsvzsWbP6j+LYxE9q0oWIfkdMoWV1vrE/oCKRxHg==} - cpu: [x64] - os: [linux] - - '@pagefind/windows-x64@1.0.4': - resolution: {integrity: sha512-QlBCVeZfj9fc9sbUgdOz76ZDbeK4xZihOBAFqGuRJeChfM8pnVeH9iqSnXgO3+m9oITugTf7PicyRUFAG76xeQ==} - cpu: [x64] - os: [win32] - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@rollup/plugin-alias@3.1.9': - resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} - engines: {node: '>=8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-babel@5.3.1': - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - - '@rollup/plugin-commonjs@17.1.0': - resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^2.30.0 - - '@rollup/plugin-json@4.1.0': - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/plugin-node-resolve@11.2.1': - resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-yaml@4.1.2': - resolution: {integrity: sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.13.0': - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.13.0': - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.13.0': - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.13.0': - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.13.0': - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.13.0': - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.13.0': - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.13.0': - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.13.0': - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.13.0': - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.13.0': - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} - cpu: [x64] - os: [win32] - - '@surma/rollup-plugin-off-main-thread@2.2.3': - resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - - '@sveltejs/vite-plugin-svelte-inspector@2.0.0': - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte@3.0.2': - resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@swup/a11y-plugin@4.5.0': - resolution: {integrity: sha512-oT3tEr6dsPXIYh5zNIZ5EQIZBMwVaVAojjMcYYOEn3PzfG3I7zsY/qaCjZCg28bsBGVuDf4BNC7nPqotU+COVw==} - peerDependencies: - swup: ^4.0.0 - - '@swup/astro@1.4.0': - resolution: {integrity: sha512-Ryp+0uZRtqyF1N3SGwtpaD9+9OFFm3L1Ldud3DIT+Gp68O3RLq4RHYVxMkMbeT3bIiCnUME0W6Pi2YfcaDnQZA==} - - '@swup/body-class-plugin@3.2.0': - resolution: {integrity: sha512-v8SOTeaCp+MfJHzg9T0kavBv2H+jk/6YM9ORKJnp8Ax5LIMdAfUNQa5/URurzHtJ8nGFJodVS5Lk/TXD9YaF3Q==} - peerDependencies: - swup: ^4.6.0 - - '@swup/browserslist-config@1.0.1': - resolution: {integrity: sha512-/3nBqG7LqmK1uqaCSTA6s2NwQBDQXNyLAFBzlX6uaxqjIQcAZyq6K+sgcQ40oj02Vn/2mLSkeL9DOfP7BPOwVA==} - - '@swup/debug-plugin@4.0.4': - resolution: {integrity: sha512-NOUt3hZa7wzB/Jh40YJyCHgrkK9dz+NmkF6SmZTSlH9CogY+TMm9aVGSRxctqqgYHNz0L5lcSnSFqM/JWXWzWg==} - peerDependencies: - swup: ^4.0.0 - - '@swup/fade-theme@2.0.0': - resolution: {integrity: sha512-gMbrGZyKwkuBop69Ih/GQmQXFw4PxWIOzzIumij7KSH6n4HflgqhEk7RcdCELl4lpAiGJJYGsdVlVVtIRBvcQA==} - peerDependencies: - swup: ^4.0.0 - - '@swup/forms-plugin@3.4.2': - resolution: {integrity: sha512-rfPKHIdYCgz5kUx0+dKmJzy2fbDN8LxbMAzw0mX9PlWpz7JiZJje47/3mvHyYd8bMNP9qB026lUqDzJwVh74lw==} - peerDependencies: - swup: ^4.0.0 - - '@swup/head-plugin@2.2.0': - resolution: {integrity: sha512-8/p86H6Ypu+peAAnRZEugOdot3IHhWRMoP/19f9ZEOqErDnIpSWHOkiTI/dWAcHZ6Gbia67fu67cgD2Rag1eKQ==} - peerDependencies: - swup: ^4.6.0 - - '@swup/overlay-theme@2.0.0': - resolution: {integrity: sha512-rYim0K5vkih3YeRrZQ1NIM2h9Moo6ajbxRYoCMR4/q8Q25N0BZioK5RJFrQz8CiOvKTBy4Sh3WePsOViteGrNg==} - peerDependencies: - swup: ^4.0.0 - - '@swup/parallel-plugin@0.3.1': - resolution: {integrity: sha512-4n0X+TFc2XnDbyokHTJE8WNdoU0VYctz//5AOaqkb/ELMT7iQXfxMM6r61hFTlT3S4Qg6TkN0EZjEWleLQo7Ow==} - peerDependencies: - swup: ^4.0.0 - - '@swup/plugin@3.0.1': - resolution: {integrity: sha512-A9yiJeKTmQ9kac2Eo3MbMWW+Tiw23W5OSzAHVTCfW6n5zze6dexY3FLEUSDTcvRgciknvXfMZ9JTnebbvCKKWw==} - hasBin: true - - '@swup/plugin@4.0.0': - resolution: {integrity: sha512-3Kq31BJxnzoPg643YxGoWQggoU6VPKZpdE5CqqmP7wwkpCYTzkRmrfcQ29mGhsSS7xfS7D33iZoBiwY+wPoo2A==} - - '@swup/preload-plugin@3.2.10': - resolution: {integrity: sha512-ukIbFDiWgF6p5UneoMnnpSQaUM28VgasFhKDpI/5CMMdLYjncLpCF53OEDEhjbo5q6xnNgcll7uBRojYfD4xdg==} - peerDependencies: - swup: ^4.0.0 - - '@swup/prettier-config@1.1.0': - resolution: {integrity: sha512-EF4DMdIGieEsuY2XK0PuLf7Uw7yUQOMbA6IdCMvvRvKXj03WLLpnNIFfFp+6hmMtXRSUE88VBpRyp6Giiu1Pbg==} - - '@swup/progress-plugin@3.1.2': - resolution: {integrity: sha512-cYLY5cPP9xIBzlf4X/KpjerZmzKfje3y9r/b4/bqwMsPLmViu0v94icXmIFte55GkhPWEuP1v1stooMLxgkDrg==} - peerDependencies: - swup: ^4.0.0 - - '@swup/route-name-plugin@4.1.0': - resolution: {integrity: sha512-1tw3WeExEKwI3pVMXTptCGxFUDOSEpc63D741eeUCjjGW/f9q7ekuqEaPQd5YJ6POpzDjdt1jjuC9yv54CbeXA==} - peerDependencies: - swup: ^4.0.0 - - '@swup/scripts-plugin@2.1.0': - resolution: {integrity: sha512-JSMFsFCN9gn4q3m1Ccv0gq3gwRoZl6UGALOQO3OeQ8wOIq9vPC5dcUD3CMBuaPanksjR4GC8ZoukIjHrlT52fg==} - peerDependencies: - swup: ^4.2.0 - - '@swup/scroll-plugin@3.3.2': - resolution: {integrity: sha512-jwngTz8LZza8p7ZWqaqQIzkH8x4hwyPh8RbrJSwTKussx24YUQuV9sgjDCzvJ16k/aYk9NCCvqLbb+4TcT3jqA==} - peerDependencies: - swup: ^4.2.0 - - '@swup/slide-theme@2.0.0': - resolution: {integrity: sha512-TFIHLY1uVjzHQ6BMKyroTkxNck3z4t38VSzK/3HZRHXblAraL/h+Sb+Omszsloe+5j0w2oWo7Ca/UsXNwec53A==} - peerDependencies: - swup: ^4.0.0 - - '@swup/theme@2.1.0': - resolution: {integrity: sha512-nwAzx+GYySIYs6uSCFYGNdpLWv2z/mEryRD1gvmIqsaSP2N7sVd4mKAboraJAzIzbasRhTsTQzyN1LfLeti3AA==} - peerDependencies: - swup: ^4.0.0 - - '@tailwindcss/typography@0.5.10': - resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - - '@types/cheerio@0.22.35': - resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} - - '@types/css-tree@2.3.7': - resolution: {integrity: sha512-LUlutQBpR2TgqZJdvXCPOx9EME7a4PHSEo2Y2c8POFpj1E9a6V94PUZNwjVdfHWyb8RQZoNHTYOKs980+sOi+g==} - - '@types/csso@5.0.4': - resolution: {integrity: sha512-W/FsRkm/9c04x9ON+bj+HQ0cSgNkG1LvcfuBCpkP7cpikM7+RkrNFLGtiofb++xBG6KGMUycLoDbi9/K621ZCw==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree@0.0.39': - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/html-minifier-terser@7.0.2': - resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} - - '@types/katex@0.16.7': - resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} - - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/nlcst@1.0.4': - resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} - - '@types/node@20.11.28': - resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/resolve@1.17.1': - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - - '@types/tar@6.1.11': - resolution: {integrity: sha512-ThA1WD8aDdVU4VLuyq5NEqriwXErF5gEIJeyT6gHBWU7JtSmW2a5qjNv3/vR82O20mW+1vhmeZJfBQPT3HCugg==} - - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@volar/kit@2.1.2': - resolution: {integrity: sha512-u20R1lCWCgFYBCHC+FR/e9J+P61vUNQpyWt4keAY+zpVHEHsSXVA2xWMJV1l1Iq5Dd0jBUSqrb1zsEya455AzA==} - peerDependencies: - typescript: '*' - - '@volar/language-core@2.1.2': - resolution: {integrity: sha512-5qsDp0Gf6fE09UWCeK7bkVn6NxMwC9OqFWQkMMkeej8h8XjyABPdRygC2RCrqDrfVdGijqlMQeXs6yRS+vfZYA==} - - '@volar/language-server@2.1.2': - resolution: {integrity: sha512-5NR5Ztg+OxvDI4oRrjS0/4ZVPumWwhVq5acuK2BJbakG1kJXViYI9NOWiWITMjnliPvf12TEcSrVDBmIq54DOg==} - - '@volar/language-service@2.1.2': - resolution: {integrity: sha512-CmVbbKdqzVq+0FT67hfELdHpboqXhKXh6EjypypuFX5ptIRftHZdkaq3/lCCa46EHxS5tvE44jn+s7faN4iRDA==} - - '@volar/snapshot-document@2.1.2': - resolution: {integrity: sha512-ZpJIBZrdm/Gx4jC/zn8H+O6H5vZZwY7B5CMTxl9y8HvcqlePOyDi+VkX8pjQz1VFG9Z5Z+Bau/RL6exqkoVDDA==} - - '@volar/source-map@2.1.2': - resolution: {integrity: sha512-yFJqsuLm1OaWrsz9E3yd3bJcYIlHqdZ8MbmIoZLrAzMYQDcoF26/INIhgziEXSdyHc8xd7rd/tJdSnUyh0gH4Q==} - - '@volar/typescript@2.1.2': - resolution: {integrity: sha512-lhTancZqamvaLvoz0u/uth8dpudENNt2LFZOWCw9JZiX14xRFhdhfzmphiCRb7am9E6qAJSbdS/gMt1utXAoHQ==} - - '@vscode/emmet-helper@2.9.2': - resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} - - '@vscode/l10n@0.0.16': - resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} - - '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-iterate@2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - astro-compress@2.2.15: - resolution: {integrity: sha512-ZiN+DanwGu/LbLdJ9Y7YAMxW0jTetFjmgjn34EVpDFwI8te+m4d4bOGY+mjGa58kyUC6YsmEW7YNx3HdWyfX5A==} - - astro-icon@1.1.0: - resolution: {integrity: sha512-Nksc09p7UuHeMcPNS9w1pKqRw3+wEmmh0A3FJW+FNXvqaeWI4RLvD1MCWErpY3Z5Cvad317rvLdik/Hg8GEk8Q==} - - astro@4.4.15: - resolution: {integrity: sha512-RTiAnlO8hDp6GqMVvaeJxyuCJhHNEho09lHshMNQBqgRabYPOJGW0HZZrbLRGNOqN9I14ivhZIunYGgAaGQpWw==} - engines: {node: '>=18.14.1', npm: '>=6.14.0'} - hasBin: true - - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - - asyncro@3.0.0: - resolution: {integrity: sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==} - - autoprefixer@10.4.18: - resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - babel-plugin-polyfill-corejs2@0.4.10: - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.9.0: - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.5.5: - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-transform-async-to-promises@0.8.18: - resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} - - babel-plugin-transform-replace-expressions@0.2.0: - resolution: {integrity: sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bare-events@2.2.1: - resolution: {integrity: sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==} - - bare-fs@2.2.2: - resolution: {integrity: sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==} - - bare-os@2.2.1: - resolution: {integrity: sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==} - - bare-path@2.1.0: - resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} - - base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - brotli-size@4.0.0: - resolution: {integrity: sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==} - engines: {node: '>= 10.16.0'} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001597: - resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} - - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorjs.io@0.5.0: - resolution: {integrity: sha512-qekjTiBLM3F/sXKks/ih5aWaHIGu+Ftel0yKEvmpbKvmxpNOhojKgha5uiWEUOqEpRjC1Tq3nJRT7WgdBOxIGg==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: ^8.0.9 - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent-js@1.0.1: - resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deepmerge-ts@5.1.0: - resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} - engines: {node: '>=16.0.0'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delegate-it@6.0.1: - resolution: {integrity: sha512-ZS2hRm/SaoPzaeWcWyYjzVVF4/PgALZqma9FXsunFt4XQGVAtQ79Vx7v57vNQNaI75Rl12C+x6TkLqHS5PNKLg==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - - deterministic-object-hash@2.0.2: - resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} - engines: {node: '>=18'} - - devalue@4.3.2: - resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} - - duplexer@0.1.1: - resolution: {integrity: sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.4.707: - resolution: {integrity: sha512-qRq74Mo7ChePOU6GHdfAJ0NREXU8vQTlVlfWz3wNygFay6xrd/fY2J7oGHwrhFeU30OVctGLdTh/FcnokTWpng==} - - emmet@2.4.7: - resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} - - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - - estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - - figures@1.7.0: - resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} - engines: {node: '>=0.10.0'} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - files-pipe@2.1.14: - resolution: {integrity: sha512-6wykVgJsW4W/Dyb8roW08db3ZyiqYVLd/aD7K8O9YF+QtqzwaTL2smenmskY1KXCar22GH08CpOnwvCJusn2ug==} - - filesize@6.4.0: - resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} - engines: {node: '>= 0.4.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - - flattie@1.1.1: - resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} - engines: {node: '>=8'} - - focus-options-polyfill@1.6.0: - resolution: {integrity: sha512-uyrAmLZrPnUItQY5wTdg31TO9GGZRGsh/jmohUg9oLmLi/sw5y7LlTV/mwyd6rvbxIOGwmRiv6LcTS8w7Bk9NQ==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - generic-names@4.0.0: - resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - gzip-size@3.0.0: - resolution: {integrity: sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w==} - engines: {node: '>=0.12.0'} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-dom@5.0.0: - resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} - - hast-util-from-html-isomorphic@2.0.0: - resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.0.2: - resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} - - hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - hast-util-to-text@4.0.0: - resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - html-escaper@3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - - html-minifier-terser@7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - import-cwd@3.0.0: - resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} - engines: {node: '>=8'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-from@3.0.0: - resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} - engines: {node: '>=8'} - - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true - - jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - katex@0.16.9: - resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} - hasBin: true - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - - lightningcss-darwin-arm64@1.24.1: - resolution: {integrity: sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.24.1: - resolution: {integrity: sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.24.1: - resolution: {integrity: sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.24.1: - resolution: {integrity: sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.24.1: - resolution: {integrity: sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.24.1: - resolution: {integrity: sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-x64-gnu@1.24.1: - resolution: {integrity: sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.24.1: - resolution: {integrity: sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-win32-x64-msvc@1.24.1: - resolution: {integrity: sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.24.1: - resolution: {integrity: sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==} - engines: {node: '>= 12.0.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - - loader-utils@3.2.1: - resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} - engines: {node: '>= 12.13.0'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - - magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - maxmin@2.1.0: - resolution: {integrity: sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw==} - engines: {node: '>=0.12'} - - mdast-util-definitions@6.0.0: - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-math@3.0.0: - resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} - - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - microbundle@0.15.1: - resolution: {integrity: sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q==} - hasBin: true - - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} - - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-math@3.0.0: - resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - - morphdom@2.7.2: - resolution: {integrity: sha512-Dqb/lHFyTi7SZpY0a5R4I/0Edo+iPMbaUexsHHsLAByyixCDiLHPHyVoKVmrpL0THcT7V9Cgev9y21TQYq6wQg==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - - nlcst-to-string@3.1.1: - resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-abi@3.56.0: - resolution: {integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==} - engines: {node: '>=10'} - - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - on-demand-live-region@0.1.3: - resolution: {integrity: sha512-5IYdl43bMtB9Sz4B+Tvg3tkCZzsIEcgJ9xrH2Ge+4Z+t6uK+uAHHygopoyVxWFZd2N839jqOzd+kZLRr9bwOCg==} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - opencollective-postinstall@2.0.3: - resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} - hasBin: true - - ora@7.0.1: - resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} - engines: {node: '>=16'} - - overlayscrollbars@2.6.1: - resolution: {integrity: sha512-V+ZAqWMYMyGBJNRDEcdRC7Ch+WT9RBx9hY8bfJSMyFObQeJoecs1Vqg7ZAzBVcpN6sCUXFAZldCbeySwmmD0RA==} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} - engines: {node: '>=18'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - pagefind@1.0.4: - resolution: {integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w==} - hasBin: true - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-latin@5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} - - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: ^8.2.2 - - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-modules-extract-imports@3.0.0: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.0.4: - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.1.1: - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@4.3.1: - resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} - peerDependencies: - postcss: ^8.0.0 - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} - - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - - preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} - engines: {node: '>=10'} - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - pretty-bytes@3.0.1: - resolution: {integrity: sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow==} - engines: {node: '>=0.10.0'} - - pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - promise.series@0.2.0: - resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} - engines: {node: '>=0.12'} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - property-information@6.4.1: - resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - reading-time@1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - - rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - - rehype-katex@7.0.0: - resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - - rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-math@6.0.0: - resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - - remark-smartypants@2.1.0: - resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - request-light@0.7.0: - resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retext-latin@3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} - - retext-smartypants@5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} - - retext-stringify@3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} - - retext@8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rollup-plugin-bundle-size@1.0.3: - resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} - - rollup-plugin-postcss@4.0.2: - resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} - engines: {node: '>=10'} - peerDependencies: - postcss: 8.x - - rollup-plugin-terser@7.0.2: - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 - - rollup-plugin-typescript2@0.32.1: - resolution: {integrity: sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - - rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true - - rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-identifier@0.4.2: - resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - - scrl@2.0.0: - resolution: {integrity: sha512-BbbVXxrOn58Ge4wjOORIRVZamssQu08ISLL/AC2z9aATIsKqZLESwZVW5YR0Yz0C7qqDRHb4yNXJlQ8yW0SGHw==} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} - - sharp@0.33.2: - resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} - engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shelljs-live@0.0.5: - resolution: {integrity: sha512-IR5+gA7f+v/V8ao7ZKE4TQpbG6ABeGxQhwL0seIbOXvHdoFAHw3MEiUICrhUfuroRREKL0n7HDA5b/R5it8KHg==} - peerDependencies: - shelljs: ^0.8.4 - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shikiji-core@0.9.19: - resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} - - shikiji@0.9.19: - resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - streamx@2.16.1: - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} - - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - - string-width@7.1.0: - resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} - engines: {node: '>=18'} - - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} - - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - style-inject@0.3.0: - resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} - - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - stylus@0.63.0: - resolution: {integrity: sha512-OMlgrTCPzE/ibtRMoeLVhOY0RcNuNWh0rhAVqeKnk/QwcuUKQbnqhZ1kg2vzD8VU/6h3FoPTq4RJPHgLBvX6Bw==} - hasBin: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svelte-hmr@0.15.3: - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - - svelte2tsx@0.6.27: - resolution: {integrity: sha512-E1uPW1o6VsbRz+nUk3fznZ2lSmCITAJoNu8AYefWSvIwE2pSB01i5sId4RMbWNzfcwCQl1DcgGShCPcldl4rvg==} - peerDependencies: - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 - typescript: ^4.9.4 || ^5.0.0 - - svelte@4.2.12: - resolution: {integrity: sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==} - engines: {node: '>=16'} - - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - - svgo@3.0.3: - resolution: {integrity: sha512-X4UZvLhOglD5Xrp834HzGHf8RKUW0Ahigg/08yRO1no9t2NxffOkMiQ0WmaMIbaGlVTlSst2zWANsdhz5ybXgA==} - engines: {node: '>=14.0.0'} - hasBin: true - - svgo@3.2.0: - resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} - engines: {node: '>=14.0.0'} - hasBin: true - - swup-morph-plugin@1.3.0: - resolution: {integrity: sha512-vTqWYA5ZFkWMo54K8jlol5OCvboqRsELLfM1PUkS2IiL+1dDDChzMHa4ZBI5+yfl7bZUCWgd8EmuhMd/i/o+Qg==} - peerDependencies: - swup: ^4.6.0 - - swup@4.6.0: - resolution: {integrity: sha512-OO1KMaKasxTkRbJYLdwqQlkp2ivqCzreY5bQcelTtq4BXGmH1gjephd3EAcQF1KxUoPiLuoOUHN4t690nyu7Jg==} - - tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} - hasBin: true - - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} - - terser@5.29.2: - resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} - engines: {node: '>=10'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tosource@2.0.0-alpha.3: - resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==} - engines: {node: '>=10'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tsconfck@3.0.3: - resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} - engines: {node: '>= 0.4'} - - typed-query-selector@2.11.1: - resolution: {integrity: sha512-/ETnbg+mXwdtSc8FmotqzGJsFn1frnREGNi9ki/Gd9MFDyUbSu2i0WvU+29Wfspd+9awvk6DQbcWwZAASghl8g==} - - typesafe-path@0.2.2: - resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} - - typescript-auto-import-cache@0.3.2: - resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.0: - resolution: {integrity: sha512-c7SxU8XB0LTO7hALl6CcE1Q92ZrLzr1iE0IVIsUa9SlFfkn2B2p6YLO6dLxOj7qCWY98PB3Q3EZbN6bEu8p7jA==} - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unherit@3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} - - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - - unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-modify-children@3.1.1: - resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-children@2.0.2: - resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} - - unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - - vite@5.1.6: - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - - volar-service-css@0.0.33: - resolution: {integrity: sha512-CQt4s/3ltH8clGD+GNkztKLLsifHDO9/2VTibgyj/os90uHJ/b4uiY0F0XbyEj493M9c10xhl+It6quLt2Vz1w==} - peerDependencies: - '@volar/language-service': ~2.1.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-emmet@0.0.33: - resolution: {integrity: sha512-wPsqD7YXArQo7IIEfZJ2kbKWBtqsIUsF0Hjqm9xwQnsuOzahGRNw/VxCJggLt+AjiK0c/ucCvaNTb8j0SPTiOQ==} - peerDependencies: - '@volar/language-service': ~2.1.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-html@0.0.33: - resolution: {integrity: sha512-kthyHYcjOjREqTXg/rEPT8AascgjX+cuImHuu+IbHCTM0FnXGRT/vUfSp+f2l+k0tJkQHsx5NIv+xOxrrNv9Yg==} - peerDependencies: - '@volar/language-service': ~2.1.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-prettier@0.0.33: - resolution: {integrity: sha512-G4i4ugev284B0/sbfggxE6BQugbz8aWBrFbgMbihz9jZ5vC8HEYXT42Dm/8PITjsJTxQM6QtHzyqa6+Adb7VHQ==} - peerDependencies: - '@volar/language-service': ~2.1.0 - prettier: ^2.2 || ^3.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - prettier: - optional: true - - volar-service-typescript-twoslash-queries@0.0.33: - resolution: {integrity: sha512-wJXrLYzh8OmUe3qP9s6tnNFFieUk2ELdH+8pzBZLCvZM2hjMTr9TejAoYFpZbxLKeKi7ZtJbvkEsYsOJkLyiSA==} - peerDependencies: - '@volar/language-service': ~2.1.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-typescript@0.0.33: - resolution: {integrity: sha512-ZHk4DXQAcYUMWMkpYzN6Aver2SahOGQ2KsEZDZKaKm2WWKaAP3TWAnDLa+t2rr1HlUz95n7liUW5qE0cDo/cuw==} - peerDependencies: - '@volar/language-service': ~2.1.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - vscode-css-languageservice@6.2.12: - resolution: {integrity: sha512-PS9r7HgNjqzRl3v91sXpCyZPc8UDotNo6gntFNtGCKPhGA9Frk7g/VjX1Mbv3F00pn56D+rxrFzR9ep4cawOgA==} - - vscode-html-languageservice@5.1.2: - resolution: {integrity: sha512-wkWfEx/IIR3s2P5yD4aTGHiOb8IAzFxgkSt1uSC3itJ4oDAm23yG7o0L29JljUdnXDDgLafPAvhv8A2I/8riHw==} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - - vscode-uri@2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - - which-pm@2.1.1: - resolution: {integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==} - engines: {node: '>=8.15'} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@adobe/css-tools@4.3.3': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@antfu/install-pkg@0.1.1': - dependencies: - execa: 5.1.1 - find-up: 5.0.0 - - '@antfu/utils@0.7.7': {} - - '@astrojs/check@0.5.9(prettier@2.8.8)(typescript@5.4.2)': - dependencies: - '@astrojs/language-server': 2.8.2(prettier@2.8.8)(typescript@5.4.2) - chokidar: 3.6.0 - fast-glob: 3.3.2 - kleur: 4.1.5 - typescript: 5.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - prettier - - prettier-plugin-astro - - '@astrojs/compiler@2.7.0': {} - - '@astrojs/internal-helpers@0.2.1': {} - - '@astrojs/language-server@2.8.2(prettier@2.8.8)(typescript@5.4.2)': - dependencies: - '@astrojs/compiler': 2.7.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 2.1.2(typescript@5.4.2) - '@volar/language-core': 2.1.2 - '@volar/language-server': 2.1.2 - '@volar/language-service': 2.1.2 - '@volar/typescript': 2.1.2 - fast-glob: 3.3.2 - volar-service-css: 0.0.33(@volar/language-service@2.1.2) - volar-service-emmet: 0.0.33(@volar/language-service@2.1.2) - volar-service-html: 0.0.33(@volar/language-service@2.1.2) - volar-service-prettier: 0.0.33(@volar/language-service@2.1.2)(prettier@2.8.8) - volar-service-typescript: 0.0.33(@volar/language-service@2.1.2) - volar-service-typescript-twoslash-queries: 0.0.33(@volar/language-service@2.1.2) - vscode-html-languageservice: 5.1.2 - vscode-uri: 3.0.8 - optionalDependencies: - prettier: 2.8.8 - transitivePeerDependencies: - - typescript - - '@astrojs/markdown-remark@4.2.1': - dependencies: - '@astrojs/prism': 3.0.0 - github-slugger: 2.0.0 - import-meta-resolve: 4.0.0 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.0 - remark-gfm: 4.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - remark-smartypants: 2.1.0 - shikiji: 0.9.19 - unified: 11.0.4 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - - '@astrojs/prism@3.0.0': - dependencies: - prismjs: 1.29.0 - - '@astrojs/svelte@5.2.0(astro@4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2))(svelte@4.2.12)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - astro: 4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2) - svelte: 4.2.12 - svelte2tsx: 0.6.27(svelte@4.2.12)(typescript@5.4.2) - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - vite - - '@astrojs/tailwind@5.1.0(astro@4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2))(tailwindcss@3.4.1)': - dependencies: - astro: 4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2) - autoprefixer: 10.4.18(postcss@8.4.35) - postcss: 8.4.35 - postcss-load-config: 4.0.2(postcss@8.4.35) - tailwindcss: 3.4.1 - transitivePeerDependencies: - - ts-node - - '@astrojs/telemetry@3.0.4': - dependencies: - ci-info: 3.9.0 - debug: 4.3.4 - dlv: 1.1.3 - dset: 3.1.3 - is-docker: 3.0.0 - is-wsl: 3.1.0 - which-pm-runs: 1.1.0 - transitivePeerDependencies: - - supports-color - - '@astrojs/ts-plugin@1.6.0': - dependencies: - '@astrojs/compiler': 2.7.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/language-core': 2.1.2 - '@volar/typescript': 2.1.2 - semver: 7.6.0 - vscode-languageserver-textdocument: 1.0.11 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/compat-data@7.23.5': {} - - '@babel/core@7.24.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.0 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-plugin-utils@7.24.0': {} - - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - - '@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-string-parser@7.23.4': {} - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helper-wrap-function@7.22.20': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helpers@7.24.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.24.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-proposal-class-properties@7.12.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 - - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.0 - - '@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/preset-env@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.24.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.24.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) - core-js-compat: 3.36.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.0 - esutils: 2.0.3 - - '@babel/preset-react@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.24.0) - - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime@7.24.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/traverse@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@biomejs/biome@1.6.1': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.6.1 - '@biomejs/cli-darwin-x64': 1.6.1 - '@biomejs/cli-linux-arm64': 1.6.1 - '@biomejs/cli-linux-arm64-musl': 1.6.1 - '@biomejs/cli-linux-x64': 1.6.1 - '@biomejs/cli-linux-x64-musl': 1.6.1 - '@biomejs/cli-win32-arm64': 1.6.1 - '@biomejs/cli-win32-x64': 1.6.1 - - '@biomejs/cli-darwin-arm64@1.6.1': - optional: true - - '@biomejs/cli-darwin-x64@1.6.1': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.6.1': - optional: true - - '@biomejs/cli-linux-arm64@1.6.1': - optional: true - - '@biomejs/cli-linux-x64-musl@1.6.1': - optional: true - - '@biomejs/cli-linux-x64@1.6.1': - optional: true - - '@biomejs/cli-win32-arm64@1.6.1': - optional: true - - '@biomejs/cli-win32-x64@1.6.1': - optional: true - - '@emmetio/abbreviation@2.3.3': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/css-abbreviation@2.1.8': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/scanner@1.0.4': {} - - '@emnapi/runtime@0.45.0': - dependencies: - tslib: 2.6.2 - optional: true - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@fontsource-variable/jetbrains-mono@5.0.20': {} - - '@fontsource/roboto@5.0.12': {} - - '@iconify-json/fa6-brands@1.1.18': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/fa6-regular@1.1.18': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/fa6-solid@1.1.20': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/material-symbols@1.1.75': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify/tools@3.0.7': - dependencies: - '@iconify/types': 2.0.0 - '@iconify/utils': 2.1.22 - '@types/cheerio': 0.22.35 - '@types/tar': 6.1.11 - cheerio: 1.0.0-rc.12 - extract-zip: 2.0.1 - local-pkg: 0.4.3 - pathe: 1.1.2 - svgo: 3.0.3 - tar: 6.2.0 - transitivePeerDependencies: - - supports-color - - '@iconify/types@2.0.0': {} - - '@iconify/utils@2.1.22': - dependencies: - '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.7 - '@iconify/types': 2.0.0 - debug: 4.3.4 - kolorist: 1.8.0 - local-pkg: 0.5.0 - mlly: 1.6.1 - transitivePeerDependencies: - - supports-color - - '@img/sharp-darwin-arm64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.1 - optional: true - - '@img/sharp-darwin-x64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.1 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.1': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.1': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.1': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.1': - optional: true - - '@img/sharp-libvips-linux-s390x@1.0.1': - optional: true - - '@img/sharp-libvips-linux-x64@1.0.1': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.0.1': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.0.1': - optional: true - - '@img/sharp-linux-arm64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.1 - optional: true - - '@img/sharp-linux-arm@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.1 - optional: true - - '@img/sharp-linux-s390x@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.1 - optional: true - - '@img/sharp-linux-x64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.1 - optional: true - - '@img/sharp-linuxmusl-arm64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 - optional: true - - '@img/sharp-linuxmusl-x64@0.33.2': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 - optional: true - - '@img/sharp-wasm32@0.33.2': - dependencies: - '@emnapi/runtime': 0.45.0 - optional: true - - '@img/sharp-win32-ia32@0.33.2': - optional: true - - '@img/sharp-win32-x64@0.33.2': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@medv/finder@3.2.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pagefind/darwin-arm64@1.0.4': - optional: true - - '@pagefind/darwin-x64@1.0.4': - optional: true - - '@pagefind/linux-arm64@1.0.4': - optional: true - - '@pagefind/linux-x64@1.0.4': - optional: true - - '@pagefind/windows-x64@1.0.4': - optional: true - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@rollup/plugin-alias@3.1.9(rollup@2.79.1)': - dependencies: - rollup: 2.79.1 - slash: 3.0.0 - - '@rollup/plugin-babel@5.3.1(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@2.79.1)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.22.15 - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 - optionalDependencies: - '@types/babel__core': 7.20.5 - - '@rollup/plugin-commonjs@17.1.0(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.8 - rollup: 2.79.1 - - '@rollup/plugin-json@4.1.0(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 - - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - rollup: 2.79.1 - - '@rollup/plugin-yaml@4.1.2(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - js-yaml: 4.1.0 - tosource: 2.0.0-alpha.3 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 - - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - '@rollup/pluginutils@5.1.0(rollup@2.79.1)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/rollup-android-arm-eabi@4.13.0': - optional: true - - '@rollup/rollup-android-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-x64@4.13.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.13.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.13.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.13.0': - optional: true - - '@surma/rollup-plugin-off-main-thread@2.2.3': - dependencies: - ejs: 3.1.9 - json5: 2.2.3 - magic-string: 0.25.9 - string.prototype.matchall: 4.0.10 - - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)))(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - debug: 4.3.4 - svelte: 4.2.12 - vite: 5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)))(svelte@4.2.12)(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.8 - svelte: 4.2.12 - svelte-hmr: 0.15.3(svelte@4.2.12) - vite: 5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2) - vitefu: 0.2.5(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - transitivePeerDependencies: - - supports-color - - '@swup/a11y-plugin@4.5.0(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - focus-options-polyfill: 1.6.0 - on-demand-live-region: 0.1.3 - swup: 4.6.0 - - '@swup/astro@1.4.0(@types/babel__core@7.20.5)': - dependencies: - '@swup/a11y-plugin': 4.5.0(swup@4.6.0) - '@swup/body-class-plugin': 3.2.0(swup@4.6.0) - '@swup/debug-plugin': 4.0.4(swup@4.6.0) - '@swup/fade-theme': 2.0.0(@types/babel__core@7.20.5)(swup@4.6.0) - '@swup/forms-plugin': 3.4.2(swup@4.6.0) - '@swup/head-plugin': 2.2.0(swup@4.6.0) - '@swup/overlay-theme': 2.0.0(@types/babel__core@7.20.5)(swup@4.6.0) - '@swup/parallel-plugin': 0.3.1(@types/babel__core@7.20.5)(swup@4.6.0) - '@swup/preload-plugin': 3.2.10(swup@4.6.0) - '@swup/progress-plugin': 3.1.2(swup@4.6.0) - '@swup/route-name-plugin': 4.1.0(@types/babel__core@7.20.5)(swup@4.6.0) - '@swup/scripts-plugin': 2.1.0(swup@4.6.0) - '@swup/scroll-plugin': 3.3.2(swup@4.6.0) - '@swup/slide-theme': 2.0.0(@types/babel__core@7.20.5)(swup@4.6.0) - swup: 4.6.0 - swup-morph-plugin: 1.3.0(swup@4.6.0) - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/body-class-plugin@3.2.0(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/browserslist-config@1.0.1': {} - - '@swup/debug-plugin@4.0.4(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/fade-theme@2.0.0(@types/babel__core@7.20.5)(swup@4.6.0)': - dependencies: - '@swup/plugin': 3.0.1(@types/babel__core@7.20.5) - '@swup/theme': 2.1.0(swup@4.6.0) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/forms-plugin@3.4.2(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/head-plugin@2.2.0(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/overlay-theme@2.0.0(@types/babel__core@7.20.5)(swup@4.6.0)': - dependencies: - '@swup/plugin': 3.0.1(@types/babel__core@7.20.5) - '@swup/theme': 2.1.0(swup@4.6.0) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/parallel-plugin@0.3.1(@types/babel__core@7.20.5)(swup@4.6.0)': - dependencies: - '@swup/plugin': 3.0.1(@types/babel__core@7.20.5) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/plugin@3.0.1(@types/babel__core@7.20.5)': - dependencies: - '@swup/browserslist-config': 1.0.1 - '@swup/prettier-config': 1.1.0 - chalk: 5.3.0 - microbundle: 0.15.1(@types/babel__core@7.20.5) - prettier: 2.8.8 - shelljs: 0.8.5 - shelljs-live: 0.0.5(shelljs@0.8.5) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/plugin@4.0.0': - dependencies: - swup: 4.6.0 - - '@swup/preload-plugin@3.2.10(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/prettier-config@1.1.0': {} - - '@swup/progress-plugin@3.1.2(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/route-name-plugin@4.1.0(@types/babel__core@7.20.5)(swup@4.6.0)': - dependencies: - '@swup/plugin': 3.0.1(@types/babel__core@7.20.5) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/scripts-plugin@2.1.0(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@swup/scroll-plugin@3.3.2(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - scrl: 2.0.0 - swup: 4.6.0 - - '@swup/slide-theme@2.0.0(@types/babel__core@7.20.5)(swup@4.6.0)': - dependencies: - '@swup/plugin': 3.0.1(@types/babel__core@7.20.5) - '@swup/theme': 2.1.0(swup@4.6.0) - swup: 4.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - '@swup/theme@2.1.0(swup@4.6.0)': - dependencies: - '@swup/plugin': 4.0.0 - swup: 4.6.0 - - '@tailwindcss/typography@0.5.10(tailwindcss@3.4.1)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1 - - '@trysound/sax@0.2.0': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.24.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@types/babel__traverse@7.20.5': - dependencies: - '@babel/types': 7.24.0 - - '@types/cheerio@0.22.35': - dependencies: - '@types/node': 20.11.28 - - '@types/css-tree@2.3.7': {} - - '@types/csso@5.0.4': - dependencies: - '@types/css-tree': 2.3.7 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree@0.0.39': {} - - '@types/estree@1.0.5': {} - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.2 - - '@types/html-minifier-terser@7.0.2': {} - - '@types/katex@0.16.7': {} - - '@types/mdast@4.0.3': - dependencies: - '@types/unist': 3.0.2 - - '@types/ms@0.7.34': {} - - '@types/nlcst@1.0.4': - dependencies: - '@types/unist': 2.0.10 - - '@types/node@20.11.28': - dependencies: - undici-types: 5.26.5 - - '@types/parse-json@4.0.2': {} - - '@types/resolve@1.17.1': - dependencies: - '@types/node': 20.11.28 - - '@types/tar@6.1.11': - dependencies: - '@types/node': 20.11.28 - minipass: 4.2.8 - - '@types/unist@2.0.10': {} - - '@types/unist@3.0.2': {} - - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 20.11.28 - optional: true - - '@ungap/structured-clone@1.2.0': {} - - '@volar/kit@2.1.2(typescript@5.4.2)': - dependencies: - '@volar/language-service': 2.1.2 - '@volar/typescript': 2.1.2 - typesafe-path: 0.2.2 - typescript: 5.4.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - - '@volar/language-core@2.1.2': - dependencies: - '@volar/source-map': 2.1.2 - - '@volar/language-server@2.1.2': - dependencies: - '@volar/language-core': 2.1.2 - '@volar/language-service': 2.1.2 - '@volar/snapshot-document': 2.1.2 - '@volar/typescript': 2.1.2 - '@vscode/l10n': 0.0.16 - path-browserify: 1.0.1 - request-light: 0.7.0 - vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - - '@volar/language-service@2.1.2': - dependencies: - '@volar/language-core': 2.1.2 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - - '@volar/snapshot-document@2.1.2': - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - - '@volar/source-map@2.1.2': - dependencies: - muggle-string: 0.4.1 - - '@volar/typescript@2.1.2': - dependencies: - '@volar/language-core': 2.1.2 - path-browserify: 1.0.1 - - '@vscode/emmet-helper@2.9.2': - dependencies: - emmet: 2.4.7 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 2.1.2 - - '@vscode/l10n@0.0.16': {} - - '@vscode/l10n@0.0.18': {} - - acorn@8.11.3: {} - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-regex@2.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-iterate@2.0.1: {} - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - astro-compress@2.2.15: - dependencies: - '@types/csso': 5.0.4 - '@types/html-minifier-terser': 7.0.2 - csso: 5.0.5 - files-pipe: 2.1.14 - html-minifier-terser: 7.2.0 - kleur: 4.1.5 - lightningcss: 1.24.1 - sharp: 0.33.2 - svgo: 3.2.0 - terser: 5.29.2 - - astro-icon@1.1.0: - dependencies: - '@iconify/tools': 3.0.7 - '@iconify/types': 2.0.0 - '@iconify/utils': 2.1.22 - transitivePeerDependencies: - - supports-color - - astro@4.4.15(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)(typescript@5.4.2): - dependencies: - '@astrojs/compiler': 2.7.0 - '@astrojs/internal-helpers': 0.2.1 - '@astrojs/markdown-remark': 4.2.1 - '@astrojs/telemetry': 3.0.4 - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - '@medv/finder': 3.2.0 - '@types/babel__core': 7.20.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - boxen: 7.1.1 - chokidar: 3.6.0 - ci-info: 4.0.0 - clsx: 2.1.0 - common-ancestor-path: 1.0.1 - cookie: 0.6.0 - cssesc: 3.0.0 - debug: 4.3.4 - deterministic-object-hash: 2.0.2 - devalue: 4.3.2 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.3 - es-module-lexer: 1.4.1 - esbuild: 0.19.12 - estree-walker: 3.0.3 - execa: 8.0.1 - fast-glob: 3.3.2 - flattie: 1.1.1 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.8 - mdast-util-to-hast: 13.0.2 - mime: 3.0.0 - ora: 7.0.1 - p-limit: 5.0.0 - p-queue: 8.0.1 - path-to-regexp: 6.2.1 - preferred-pm: 3.1.3 - prompts: 2.4.2 - rehype: 13.0.1 - resolve: 1.22.8 - semver: 7.6.0 - shikiji: 0.9.19 - shikiji-core: 0.9.19 - string-width: 7.1.0 - strip-ansi: 7.1.0 - tsconfck: 3.0.3(typescript@5.4.2) - unist-util-visit: 5.0.0 - vfile: 6.0.1 - vite: 5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2) - vitefu: 0.2.5(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)) - which-pm: 2.1.1 - yargs-parser: 21.1.1 - zod: 3.22.4 - optionalDependencies: - sharp: 0.32.6 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - - async@3.2.5: {} - - asyncro@3.0.0: {} - - autoprefixer@10.4.18(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 - - b4a@1.6.6: - optional: true - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.24.0 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.0): - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) - core-js-compat: 3.36.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-async-to-promises@0.8.18: {} - - babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/parser': 7.24.0 - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - bare-events@2.2.1: - optional: true - - bare-fs@2.2.2: - dependencies: - bare-events: 2.2.1 - bare-os: 2.2.1 - bare-path: 2.1.0 - streamx: 2.16.1 - optional: true - - bare-os@2.2.1: - optional: true - - bare-path@2.1.0: - dependencies: - bare-os: 2.2.1 - optional: true - - base-64@1.0.0: {} - - base64-js@1.5.1: {} - - binary-extensions@2.3.0: {} - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - bl@5.1.0: - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 - - boolbase@1.0.0: {} - - boxen@7.1.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - brotli-size@4.0.0: - dependencies: - duplexer: 0.1.1 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001597 - electron-to-chromium: 1.4.707 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - buffer-crc32@0.2.13: {} - - buffer-from@1.1.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - optional: true - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - builtin-modules@3.3.0: {} - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - callsites@3.1.0: {} - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - - camelcase-css@2.0.1: {} - - camelcase@6.3.0: {} - - camelcase@7.0.1: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001597: {} - - ccount@2.0.1: {} - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chownr@1.1.4: - optional: true - - chownr@2.0.0: {} - - ci-info@3.9.0: {} - - ci-info@4.0.0: {} - - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - - cli-boxes@3.0.0: {} - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clsx@2.1.0: {} - - code-red@1.0.4: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.5 - acorn: 8.11.3 - estree-walker: 3.0.3 - periscopic: 3.1.0 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - colord@2.9.3: {} - - colorjs.io@0.5.0: {} - - comma-separated-tokens@2.0.3: {} - - commander@10.0.1: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@7.2.0: {} - - commander@8.3.0: {} - - common-ancestor-path@1.0.1: {} - - commondir@1.0.1: {} - - concat-map@0.0.1: {} - - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - - convert-source-map@2.0.0: {} - - cookie@0.6.0: {} - - core-js-compat@3.36.0: - dependencies: - browserslist: 4.23.0 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-declaration-sorter@6.4.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.0.2 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.0.2 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@5.2.14(postcss@8.4.35): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.35) - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-calc: 8.2.4(postcss@8.4.35) - postcss-colormin: 5.3.1(postcss@8.4.35) - postcss-convert-values: 5.1.3(postcss@8.4.35) - postcss-discard-comments: 5.1.2(postcss@8.4.35) - postcss-discard-duplicates: 5.1.0(postcss@8.4.35) - postcss-discard-empty: 5.1.1(postcss@8.4.35) - postcss-discard-overridden: 5.1.0(postcss@8.4.35) - postcss-merge-longhand: 5.1.7(postcss@8.4.35) - postcss-merge-rules: 5.1.4(postcss@8.4.35) - postcss-minify-font-values: 5.1.0(postcss@8.4.35) - postcss-minify-gradients: 5.1.1(postcss@8.4.35) - postcss-minify-params: 5.1.4(postcss@8.4.35) - postcss-minify-selectors: 5.2.1(postcss@8.4.35) - postcss-normalize-charset: 5.1.0(postcss@8.4.35) - postcss-normalize-display-values: 5.1.0(postcss@8.4.35) - postcss-normalize-positions: 5.1.1(postcss@8.4.35) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.35) - postcss-normalize-string: 5.1.0(postcss@8.4.35) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.35) - postcss-normalize-unicode: 5.1.1(postcss@8.4.35) - postcss-normalize-url: 5.1.0(postcss@8.4.35) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.35) - postcss-ordered-values: 5.1.3(postcss@8.4.35) - postcss-reduce-initial: 5.1.2(postcss@8.4.35) - postcss-reduce-transforms: 5.1.0(postcss@8.4.35) - postcss-svgo: 5.1.0(postcss@8.4.35) - postcss-unique-selectors: 5.1.1(postcss@8.4.35) - - cssnano-utils@3.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - cssnano@5.1.15(postcss@8.4.35): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.35) - lilconfig: 2.1.0 - postcss: 8.4.35 - yaml: 1.10.2 - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - optional: true - - dedent-js@1.0.1: {} - - deep-extend@0.6.0: - optional: true - - deepmerge-ts@5.1.0: {} - - deepmerge@4.3.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-lazy-prop@2.0.0: {} - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delegate-it@6.0.1: - dependencies: - typed-query-selector: 2.11.1 - - dequal@2.0.3: {} - - detect-libc@1.0.3: {} - - detect-libc@2.0.2: {} - - deterministic-object-hash@2.0.2: - dependencies: - base-64: 1.0.0 - - devalue@4.3.2: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - didyoumean@1.2.2: {} - - diff@5.2.0: {} - - dlv@1.1.3: {} - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - - dset@3.1.3: {} - - duplexer@0.1.1: {} - - duplexer@0.1.2: {} - - eastasianwidth@0.2.0: {} - - ejs@3.1.9: - dependencies: - jake: 10.8.7 - - electron-to-chromium@1.4.707: {} - - emmet@2.4.7: - dependencies: - '@emmetio/abbreviation': 2.3.3 - '@emmetio/css-abbreviation': 2.1.8 - - emoji-regex@10.3.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - entities@2.2.0: {} - - entities@4.5.0: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.22.5: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-module-lexer@1.4.1: {} - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - escalade@3.1.2: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - esprima@4.0.1: {} - - estree-walker@0.6.1: {} - - estree-walker@1.0.1: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - - esutils@2.0.3: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - expand-template@2.0.3: - optional: true - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend@3.0.2: {} - - extract-zip@2.0.1: - dependencies: - debug: 4.3.4 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - fast-fifo@1.3.2: - optional: true - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - figures@1.7.0: - dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - files-pipe@2.1.14: - dependencies: - '@types/node': 20.11.28 - deepmerge-ts: 5.1.0 - fast-glob: 3.3.2 - - filesize@6.4.0: {} - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - - flattie@1.1.1: {} - - focus-options-polyfill@1.6.0: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - - fs-constants@1.0.0: - optional: true - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - functions-have-names: 1.2.3 - - functions-have-names@1.2.3: {} - - generic-names@4.0.0: - dependencies: - loader-utils: 3.2.1 - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.2.0: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - - get-stream@6.0.1: {} - - get-stream@8.0.1: {} - - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - github-from-package@0.0.0: - optional: true - - github-slugger@2.0.0: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@11.12.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 - - globalyzer@0.1.0: {} - - globrex@0.1.2: {} - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - graceful-fs@4.2.11: {} - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - gzip-size@3.0.0: - dependencies: - duplexer: 0.1.2 - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.0.2: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-from-dom@5.0.0: - dependencies: - '@types/hast': 3.0.4 - hastscript: 8.0.0 - web-namespaces: 2.0.1 - - hast-util-from-html-isomorphic@2.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-from-dom: 5.0.0 - hast-util-from-html: 2.0.1 - unist-util-remove-position: 5.0.0 - - hast-util-from-html@2.0.1: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.1 - vfile-message: 4.0.2 - - hast-util-from-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.4.1 - vfile: 6.0.1 - vfile-location: 5.0.2 - web-namespaces: 2.0.1 - - hast-util-heading-rank@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-raw@9.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - parse5: 7.1.2 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-html@9.0.0: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.2 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-string@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-to-text@4.0.0: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - - html-escaper@3.0.3: {} - - html-minifier-terser@7.2.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 10.0.1 - entities: 4.5.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.29.2 - - html-void-elements@3.0.0: {} - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} - - human-signals@2.1.0: {} - - human-signals@5.0.0: {} - - icss-replace-symbols@1.1.0: {} - - icss-utils@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - ieee754@1.2.1: {} - - import-cwd@3.0.0: - dependencies: - import-from: 3.0.0 - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-from@3.0.0: - dependencies: - resolve-from: 5.0.0 - - import-meta-resolve@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: - optional: true - - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - - interpret@1.4.0: {} - - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-arrayish@0.2.1: {} - - is-arrayish@0.3.2: {} - - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-buffer@2.0.5: {} - - is-callable@1.2.7: {} - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - - is-docker@2.2.1: {} - - is-docker@3.0.0: {} - - is-extendable@0.1.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-interactive@2.0.0: {} - - is-module@1.0.0: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-plain-obj@4.1.0: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.5 - - is-reference@3.0.2: - dependencies: - '@types/estree': 1.0.5 - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@1.3.0: {} - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jake@10.8.7: - dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-worker@26.6.2: - dependencies: - '@types/node': 20.11.28 - merge-stream: 2.0.0 - supports-color: 7.2.0 - - jiti@1.21.0: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsesc@0.5.0: {} - - jsesc@2.5.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json5@2.2.3: {} - - jsonc-parser@2.3.1: {} - - jsonc-parser@3.2.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - katex@0.16.9: - dependencies: - commander: 8.3.0 - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - kleur@4.1.5: {} - - kolorist@1.8.0: {} - - lightningcss-darwin-arm64@1.24.1: - optional: true - - lightningcss-darwin-x64@1.24.1: - optional: true - - lightningcss-freebsd-x64@1.24.1: - optional: true - - lightningcss-linux-arm-gnueabihf@1.24.1: - optional: true - - lightningcss-linux-arm64-gnu@1.24.1: - optional: true - - lightningcss-linux-arm64-musl@1.24.1: - optional: true - - lightningcss-linux-x64-gnu@1.24.1: - optional: true - - lightningcss-linux-x64-musl@1.24.1: - optional: true - - lightningcss-win32-x64-msvc@1.24.1: - optional: true - - lightningcss@1.24.1: - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.24.1 - lightningcss-darwin-x64: 1.24.1 - lightningcss-freebsd-x64: 1.24.1 - lightningcss-linux-arm-gnueabihf: 1.24.1 - lightningcss-linux-arm64-gnu: 1.24.1 - lightningcss-linux-arm64-musl: 1.24.1 - lightningcss-linux-x64-gnu: 1.24.1 - lightningcss-linux-x64-musl: 1.24.1 - lightningcss-win32-x64-msvc: 1.24.1 - - lilconfig@2.1.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - - loader-utils@3.2.1: {} - - local-pkg@0.4.3: {} - - local-pkg@0.5.0: - dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 - - locate-character@3.0.0: {} - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.castarray@4.4.0: {} - - lodash.debounce@4.0.8: {} - - lodash.isplainobject@4.0.6: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.uniq@4.5.0: {} - - log-symbols@5.1.0: - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - - longest-streak@3.1.0: {} - - lower-case@2.0.2: - dependencies: - tslib: 2.6.2 - - lru-cache@10.2.0: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - - magic-string@0.30.8: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - markdown-table@3.0.3: {} - - maxmin@2.1.0: - dependencies: - chalk: 1.1.3 - figures: 1.7.0 - gzip-size: 3.0.0 - pretty-bytes: 3.0.1 - - mdast-util-definitions@6.0.0: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - unist-util-visit: 5.0.0 - - mdast-util-find-and-replace@3.0.1: - dependencies: - '@types/mdast': 4.0.3 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 - - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-math@3.0.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - devlop: 1.1.0 - longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - unist-util-remove-position: 5.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.3 - unist-util-is: 6.0.0 - - mdast-util-to-hast@13.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - - mdast-util-to-hast@13.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - - mdast-util-to-markdown@2.1.0: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.3 - - mdn-data@2.0.14: {} - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - microbundle@0.15.1(@types/babel__core@7.20.5): - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.12.1(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-flow': 7.24.0(@babel/core@7.24.0) - '@babel/preset-react': 7.23.3(@babel/core@7.24.0) - '@rollup/plugin-alias': 3.1.9(rollup@2.79.1) - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@2.79.1) - '@rollup/plugin-commonjs': 17.1.0(rollup@2.79.1) - '@rollup/plugin-json': 4.1.0(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@surma/rollup-plugin-off-main-thread': 2.2.3 - asyncro: 3.0.0 - autoprefixer: 10.4.18(postcss@8.4.35) - babel-plugin-macros: 3.1.0 - babel-plugin-transform-async-to-promises: 0.8.18 - babel-plugin-transform-replace-expressions: 0.2.0(@babel/core@7.24.0) - brotli-size: 4.0.0 - builtin-modules: 3.3.0 - camelcase: 6.3.0 - escape-string-regexp: 4.0.0 - filesize: 6.4.0 - gzip-size: 6.0.0 - kleur: 4.1.5 - lodash.merge: 4.6.2 - postcss: 8.4.35 - pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-bundle-size: 1.0.3 - rollup-plugin-postcss: 4.0.2(postcss@8.4.35) - rollup-plugin-terser: 7.0.2(rollup@2.79.1) - rollup-plugin-typescript2: 0.32.1(rollup@2.79.1)(typescript@4.9.5) - rollup-plugin-visualizer: 5.12.0(rollup@2.79.1) - sade: 1.8.1 - terser: 5.29.2 - tiny-glob: 0.2.9 - tslib: 2.6.2 - typescript: 4.9.5 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - ts-node - - micromark-core-commonmark@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-strikethrough@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-table@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-gfm-task-list-item@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-math@3.0.0: - dependencies: - '@types/katex': 0.16.7 - devlop: 1.1.0 - katex: 0.16.9 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-destination@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-label@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-space@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - - micromark-factory-title@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-whitespace@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-chunked@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-classify-character@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-combine-extensions@2.0.0: - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-decode-numeric-character-reference@2.0.1: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-decode-string@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - - micromark-util-encode@2.0.0: {} - - micromark-util-html-tag-name@2.0.0: {} - - micromark-util-normalize-identifier@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-resolve-all@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-subtokenize@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@2.0.0: {} - - micromark@4.0.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime@3.0.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-response@3.1.0: - optional: true - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: - optional: true - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@4.2.8: {} - - minipass@5.0.0: {} - - minipass@7.0.4: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mkdirp-classic@0.5.3: - optional: true - - mkdirp@1.0.4: {} - - mlly@1.6.1: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.0 - - morphdom@2.7.2: {} - - mri@1.2.0: {} - - ms@2.1.2: {} - - muggle-string@0.4.1: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - napi-build-utils@1.0.2: - optional: true - - nlcst-to-string@3.1.1: - dependencies: - '@types/nlcst': 1.0.4 - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - - node-abi@3.56.0: - dependencies: - semver: 7.6.0 - optional: true - - node-addon-api@6.1.0: - optional: true - - node-releases@2.0.14: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-url@6.1.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - number-is-nan@1.0.1: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.1: {} - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - on-demand-live-region@0.1.3: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - opencollective-postinstall@2.0.3: {} - - ora@7.0.1: - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - string-width: 6.1.0 - strip-ansi: 7.1.0 - - overlayscrollbars@2.6.1: {} - - p-finally@1.0.0: {} - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-queue@8.0.1: - dependencies: - eventemitter3: 5.0.1 - p-timeout: 6.1.2 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-timeout@6.1.2: {} - - p-try@2.2.0: {} - - pagefind@1.0.4: - optionalDependencies: - '@pagefind/darwin-arm64': 1.0.4 - '@pagefind/darwin-x64': 1.0.4 - '@pagefind/linux-arm64': 1.0.4 - '@pagefind/linux-x64': 1.0.4 - '@pagefind/windows-x64': 1.0.4 - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-latin@5.0.1: - dependencies: - nlcst-to-string: 3.1.1 - unist-util-modify-children: 3.1.1 - unist-util-visit-children: 2.0.2 - - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - - parse5@7.1.2: - dependencies: - entities: 4.5.0 - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.10.1: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - path-to-regexp@6.2.1: {} - - path-type@4.0.0: {} - - pathe@1.1.2: {} - - pend@1.2.0: {} - - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pify@4.0.1: {} - - pify@5.0.0: {} - - pirates@4.0.6: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-types@1.0.3: - dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 - pathe: 1.1.2 - - possible-typed-array-names@1.0.0: {} - - postcss-calc@8.2.4(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - postcss-colormin@5.3.1(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-convert-values@5.1.3(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@5.1.2(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-discard-duplicates@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-discard-empty@5.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-discard-overridden@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-import@15.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.35): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.35 - - postcss-load-config@3.1.4(postcss@8.4.35): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.35 - - postcss-load-config@4.0.2(postcss@8.4.35): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.1 - optionalDependencies: - postcss: 8.4.35 - - postcss-merge-longhand@5.1.7(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.35) - - postcss-merge-rules@5.1.4(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - postcss-minify-font-values@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@5.1.1(postcss@8.4.35): - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-minify-params@5.1.4(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@5.2.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - postcss-modules-extract-imports@3.0.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-modules-local-by-default@4.0.4(postcss@8.4.35): - dependencies: - icss-utils: 5.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - postcss-modules-values@4.0.0(postcss@8.4.35): - dependencies: - icss-utils: 5.1.0(postcss@8.4.35) - postcss: 8.4.35 - - postcss-modules@4.3.1(postcss@8.4.35): - dependencies: - generic-names: 4.0.0 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - postcss: 8.4.35 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) - postcss-modules-scope: 3.1.1(postcss@8.4.35) - postcss-modules-values: 4.0.0(postcss@8.4.35) - string-hash: 1.1.3 - - postcss-nested@6.0.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - postcss-normalize-charset@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - - postcss-normalize-display-values@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@5.1.1(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@5.1.0(postcss@8.4.35): - dependencies: - normalize-url: 6.1.0 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@5.1.3(postcss@8.4.35): - dependencies: - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@5.1.2(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.35 - - postcss-reduce-transforms@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@5.1.0(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - - postcss-unique-selectors@5.1.1(postcss@8.4.35): - dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.35: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.56.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - optional: true - - preferred-pm@3.1.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - - prettier@2.8.8: {} - - pretty-bytes@3.0.1: - dependencies: - number-is-nan: 1.0.1 - - pretty-bytes@5.6.0: {} - - prismjs@1.29.0: {} - - promise.series@0.2.0: {} - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - property-information@6.4.1: {} - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: - optional: true - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - optional: true - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - reading-time@1.5.0: {} - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - regenerate-unicode-properties@10.1.1: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.24.0 - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpu-core@5.3.2: - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - - rehype-autolink-headings@7.1.0: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-heading-rank: 3.0.0 - hast-util-is-element: 3.0.0 - unified: 11.0.4 - unist-util-visit: 5.0.0 - - rehype-katex@7.0.0: - dependencies: - '@types/hast': 3.0.4 - '@types/katex': 0.16.7 - hast-util-from-html-isomorphic: 2.0.0 - hast-util-to-text: 4.0.0 - katex: 0.16.9 - unist-util-visit-parents: 6.0.1 - vfile: 6.0.1 - - rehype-parse@9.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-from-html: 2.0.1 - unified: 11.0.4 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 - vfile: 6.0.1 - - rehype-slug@6.0.0: - dependencies: - '@types/hast': 3.0.4 - github-slugger: 2.0.0 - hast-util-heading-rank: 3.0.0 - hast-util-to-string: 3.0.0 - unist-util-visit: 5.0.0 - - rehype-stringify@10.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.0 - unified: 11.0.4 - - rehype@13.0.1: - dependencies: - '@types/hast': 3.0.4 - rehype-parse: 9.0.0 - rehype-stringify: 10.0.0 - unified: 11.0.4 - - relateurl@0.2.7: {} - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.4 - transitivePeerDependencies: - - supports-color - - remark-math@6.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-math: 3.0.0 - micromark-extension-math: 3.0.0 - unified: 11.0.4 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - micromark-util-types: 2.0.0 - unified: 11.0.4 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 - unified: 11.0.4 - vfile: 6.0.1 - - remark-smartypants@2.1.0: - dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 - unist-util-visit: 5.0.0 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 - - request-light@0.7.0: {} - - require-directory@2.1.1: {} - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - retext-latin@3.1.0: - dependencies: - '@types/nlcst': 1.0.4 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 - - retext-smartypants@5.2.0: - dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 - - retext-stringify@3.1.0: - dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - - retext@8.1.0: - dependencies: - '@types/nlcst': 1.0.4 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 - - reusify@1.0.4: {} - - rollup-plugin-bundle-size@1.0.3: - dependencies: - chalk: 1.1.3 - maxmin: 2.1.0 - - rollup-plugin-postcss@4.0.2(postcss@8.4.35): - dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.4.35) - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 8.4.35 - postcss-load-config: 3.1.4(postcss@8.4.35) - postcss-modules: 4.3.1(postcss@8.4.35) - promise.series: 0.2.0 - resolve: 1.22.8 - rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - transitivePeerDependencies: - - ts-node - - rollup-plugin-terser@7.0.2(rollup@2.79.1): - dependencies: - '@babel/code-frame': 7.23.5 - jest-worker: 26.6.2 - rollup: 2.79.1 - serialize-javascript: 4.0.0 - terser: 5.29.2 - - rollup-plugin-typescript2@0.32.1(rollup@2.79.1)(typescript@4.9.5): - dependencies: - '@rollup/pluginutils': 4.2.1 - find-cache-dir: 3.3.2 - fs-extra: 10.1.0 - resolve: 1.22.8 - rollup: 2.79.1 - tslib: 2.6.2 - typescript: 4.9.5 - - rollup-plugin-visualizer@5.12.0(rollup@2.79.1): - dependencies: - open: 8.4.2 - picomatch: 2.3.1 - source-map: 0.7.4 - yargs: 17.7.2 - optionalDependencies: - rollup: 2.79.1 - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - - rollup@2.79.1: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.13.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - sade@1.8.1: - dependencies: - mri: 1.2.0 - - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - - safe-buffer@5.2.1: {} - - safe-identifier@0.4.2: {} - - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - - sax@1.3.0: {} - - scrl@2.0.0: {} - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - semver@6.3.1: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - serialize-javascript@4.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - sharp@0.32.6: - dependencies: - color: 4.2.3 - detect-libc: 2.0.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 - semver: 7.6.0 - simple-get: 4.0.1 - tar-fs: 3.0.5 - tunnel-agent: 0.6.0 - optional: true - - sharp@0.33.2: - dependencies: - color: 4.2.3 - detect-libc: 2.0.2 - semver: 7.6.0 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.2 - '@img/sharp-darwin-x64': 0.33.2 - '@img/sharp-libvips-darwin-arm64': 1.0.1 - '@img/sharp-libvips-darwin-x64': 1.0.1 - '@img/sharp-libvips-linux-arm': 1.0.1 - '@img/sharp-libvips-linux-arm64': 1.0.1 - '@img/sharp-libvips-linux-s390x': 1.0.1 - '@img/sharp-libvips-linux-x64': 1.0.1 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 - '@img/sharp-linux-arm': 0.33.2 - '@img/sharp-linux-arm64': 0.33.2 - '@img/sharp-linux-s390x': 0.33.2 - '@img/sharp-linux-x64': 0.33.2 - '@img/sharp-linuxmusl-arm64': 0.33.2 - '@img/sharp-linuxmusl-x64': 0.33.2 - '@img/sharp-wasm32': 0.33.2 - '@img/sharp-win32-ia32': 0.33.2 - '@img/sharp-win32-x64': 0.33.2 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shelljs-live@0.0.5(shelljs@0.8.5): - dependencies: - cross-spawn: 7.0.3 - shelljs: 0.8.5 - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - shikiji-core@0.9.19: {} - - shikiji@0.9.19: - dependencies: - shikiji-core: 0.9.19 - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-concat@1.0.1: - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - sisteransi@1.0.5: {} - - slash@3.0.0: {} - - source-map-js@1.0.2: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - source-map@0.7.4: {} - - sourcemap-codec@1.4.8: {} - - space-separated-tokens@2.0.2: {} - - sprintf-js@1.0.3: {} - - stable@0.1.8: {} - - stdin-discarder@0.1.0: - dependencies: - bl: 5.1.0 - - streamx@2.16.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - optionalDependencies: - bare-events: 2.2.1 - optional: true - - string-hash@1.1.3: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@6.1.0: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.3.0 - strip-ansi: 7.1.0 - - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - string.prototype.matchall@4.0.10: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - - string.prototype.trim@1.2.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - string.prototype.trimend@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - string.prototype.trimstart@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.3: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-bom-string@1.0.0: {} - - strip-bom@3.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-json-comments@2.0.1: - optional: true - - style-inject@0.3.0: {} - - stylehacks@5.1.1(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 - postcss-selector-parser: 6.0.16 - - stylus@0.63.0: - dependencies: - '@adobe/css-tools': 4.3.3 - debug: 4.3.4 - glob: 7.2.3 - sax: 1.3.0 - source-map: 0.7.4 - transitivePeerDependencies: - - supports-color - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.10 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@2.0.0: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svelte-hmr@0.15.3(svelte@4.2.12): - dependencies: - svelte: 4.2.12 - - svelte2tsx@0.6.27(svelte@4.2.12)(typescript@5.4.2): - dependencies: - dedent-js: 1.0.1 - pascal-case: 3.1.2 - svelte: 4.2.12 - typescript: 5.4.2 - - svelte@4.2.12: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.8 - periscopic: 3.1.0 - - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - - svgo@3.0.3: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - csso: 5.0.5 - picocolors: 1.0.0 - - svgo@3.2.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.0.0 - - swup-morph-plugin@1.3.0(swup@4.6.0): - dependencies: - '@swup/plugin': 4.0.0 - morphdom: 2.7.2 - swup: 4.6.0 - - swup@4.6.0: - dependencies: - delegate-it: 6.0.1 - opencollective-postinstall: 2.0.3 - path-to-regexp: 6.2.1 - - tailwindcss@3.4.1: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.35 - postcss-import: 15.1.0(postcss@8.4.35) - postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35) - postcss-nested: 6.0.1(postcss@8.4.35) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - optional: true - - tar-fs@3.0.5: - dependencies: - pump: 3.0.0 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.2.2 - bare-path: 2.1.0 - optional: true - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.16.1 - optional: true - - tar@6.2.0: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - terser@5.29.2: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tosource@2.0.0-alpha.3: {} - - trim-lines@3.0.1: {} - - trough@2.2.0: {} - - ts-interface-checker@0.1.13: {} - - tsconfck@3.0.3(typescript@5.4.2): - optionalDependencies: - typescript: 5.4.2 - - tslib@2.6.2: {} - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - - type-fest@2.19.0: {} - - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.5: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typed-query-selector@2.11.1: {} - - typesafe-path@0.2.2: {} - - typescript-auto-import-cache@0.3.2: - dependencies: - semver: 7.6.0 - - typescript@4.9.5: {} - - typescript@5.4.2: {} - - ufo@1.5.0: {} - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - undici-types@5.26.5: {} - - unherit@3.0.1: {} - - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unified@10.1.2: - dependencies: - '@types/unist': 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - - unified@11.0.4: - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.1 - - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.10 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-modify-children@3.1.1: - dependencies: - '@types/unist': 2.0.10 - array-iterate: 2.0.1 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-remove-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-visit: 5.0.0 - - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.10 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-visit-children@2.0.2: - dependencies: - '@types/unist': 2.0.10 - - unist-util-visit-parents@5.1.3: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universalify@2.0.1: {} - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - util-deprecate@1.0.2: {} - - vfile-location@5.0.2: - dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 - - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 3.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - - vfile@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - - vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.13.0 - optionalDependencies: - '@types/node': 20.11.28 - fsevents: 2.3.3 - lightningcss: 1.24.1 - stylus: 0.63.0 - terser: 5.29.2 - - vitefu@0.2.5(vite@5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2)): - optionalDependencies: - vite: 5.1.6(@types/node@20.11.28)(lightningcss@1.24.1)(stylus@0.63.0)(terser@5.29.2) - - volar-service-css@0.0.33(@volar/language-service@2.1.2): - dependencies: - vscode-css-languageservice: 6.2.12 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.1.2 - - volar-service-emmet@0.0.33(@volar/language-service@2.1.2): - dependencies: - '@vscode/emmet-helper': 2.9.2 - vscode-html-languageservice: 5.1.2 - optionalDependencies: - '@volar/language-service': 2.1.2 - - volar-service-html@0.0.33(@volar/language-service@2.1.2): - dependencies: - vscode-html-languageservice: 5.1.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.1.2 - - volar-service-prettier@0.0.33(@volar/language-service@2.1.2)(prettier@2.8.8): - dependencies: - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.1.2 - prettier: 2.8.8 - - volar-service-typescript-twoslash-queries@0.0.33(@volar/language-service@2.1.2): - optionalDependencies: - '@volar/language-service': 2.1.2 - - volar-service-typescript@0.0.33(@volar/language-service@2.1.2): - dependencies: - path-browserify: 1.0.1 - semver: 7.6.0 - typescript-auto-import-cache: 0.3.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-nls: 5.2.0 - optionalDependencies: - '@volar/language-service': 2.1.2 - - vscode-css-languageservice@6.2.12: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-html-languageservice@5.1.2: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.11: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-nls@5.2.0: {} - - vscode-uri@2.1.2: {} - - vscode-uri@3.0.8: {} - - web-namespaces@2.0.1: {} - - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-pm-runs@1.1.0: {} - - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - which-pm@2.1.1: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - widest-line@4.0.1: - dependencies: - string-width: 5.1.2 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yaml@2.4.1: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} - - zod@3.22.4: {} - - zwitch@2.0.4: {} diff --git a/public/favicon/xz.svg b/public/favicon/xz.svg deleted file mode 100644 index bb3bde4..0000000 --- a/public/favicon/xz.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/redblackset.js b/redblackset.js new file mode 100644 index 0000000..d67e441 --- /dev/null +++ b/redblackset.js @@ -0,0 +1,22 @@ +'use strict';{const js_cols={};const RED=true;const BLACK=false;js_cols.RBnode=function(tree){this.tree=tree;this.right=this.tree.sentinel;this.left=this.tree.sentinel;this.parent=null;this.color=false;this.key=null};js_cols.RedBlackSet=function(compare_func){this.size=0;this.sentinel=new js_cols.RBnode(this);this.sentinel.color=BLACK;this.root=this.sentinel;this.root.parent=this.sentinel;this.compare=compare_func||this.default_compare};js_cols.RedBlackSet.prototype.default_compare=function(a,b){if(a< +b)return-1;else if(b0){var x=this.get_(key);if(x==this.sentinel)return null;if(x.right!=this.sentinel)return this.min(x.right).key;var y=x.parent;while(y!=this.sentinel&&x==y.right){x=y;y=y.parent}if(y!=this.sentinel)return y.key;else return null}else return null};js_cols.RedBlackSet.prototype.predecessor=function(key){if(this.size>0){var x= +this.get_(key);if(x==this.sentinel)return null;if(x.left!=this.sentinel)return this.max(x.left).key;var y=x.parent;while(y!=this.sentinel&&x==y.left){x=y;y=y.parent}if(y!=this.sentinel)return y.key;else return null}else return null};js_cols.RedBlackSet.prototype.getMin=function(){return this.min(this.root).key};js_cols.RedBlackSet.prototype.getMax=function(){return this.max(this.root).key};js_cols.RedBlackSet.prototype.get_=function(key){var x=this.root;while(x!=this.sentinel&&this.compare(x.key, +key)!=0)if(this.compare(key,x.key)<0)x=x.left;else x=x.right;return x};js_cols.RedBlackSet.prototype.contains=function(key){return this.get_(key).key!=null};js_cols.RedBlackSet.prototype.getValues=function(){var ret=[];this.forEach(function(x){ret.push(x)});return ret};js_cols.RedBlackSet.prototype.insertAll=function(col){if(js_cols.typeOf(col)=="array")for(var i=0;icolCount)return false;var i=0;if(this.isEmpty())return true;for(var n=this.min(this.root);n!=this.sentinel;n=this.successor_(n))if(js_cols.contains.call(col,col,n.key))i++;return i==this.getCount()};js_cols.RedBlackSet.prototype.intersection=function(col){var result=new js_cols.RedBlackSet(this.compare);if(this.isEmpty())return result;for(var n=this.min(this.root);n!=this.sentinel;n=this.successor_(n))if(col.contains.call(col,n.key,n.key,this))result.insert(n.key); +return result};self.RedBlackSet=class RedBlackSet{constructor(sortFunc){this._rbSet=new js_cols.RedBlackSet(sortFunc)}Add(item){this._rbSet.insert(item)}Remove(item){this._rbSet.remove(item)}Has(item){return this._rbSet.contains(item)}Clear(){this._rbSet.clear()}toArray(){return this._rbSet.getValues()}GetSize(){return this._rbSet.getCount()}IsEmpty(){return this._rbSet.isEmpty()}ForEach(func){this._rbSet.forEach(func)}Front(){if(this.IsEmpty())throw new Error("empty set");const rbSet=this._rbSet; +const n=rbSet.min(rbSet.root);return n.key}Shift(){if(this.IsEmpty())throw new Error("empty set");const item=this.Front();this.Remove(item);return item}*values(){if(this.IsEmpty())return;const rbSet=this._rbSet;for(let n=rbSet.min(rbSet.root);n!=rbSet.sentinel;n=rbSet.successor_(n))yield n.key}[Symbol.iterator](){return this.values()}}}; diff --git a/scripts/c3main.js b/scripts/c3main.js new file mode 100644 index 0000000..6fef491 --- /dev/null +++ b/scripts/c3main.js @@ -0,0 +1,2 @@ +import "./c3runtime.js"; +import "./objRefTable.js"; diff --git a/scripts/c3runtime.js b/scripts/c3runtime.js new file mode 100644 index 0000000..f92e9e8 --- /dev/null +++ b/scripts/c3runtime.js @@ -0,0 +1,6330 @@ +// Generated by Construct, the game and animation creation tool +// Visit: https://www.construct.net + +// ../3rdparty/glmatrix.js +{ +/* + @fileoverview gl-matrix - High performance matrix and vector operations +@author Brandon Jones +@author Colin MacKenzie IV +@version 3.4.1 + +Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +'use strict';var EPSILON=1E-6;var ARRAY_TYPE=typeof Float32Array!=="undefined"?Float32Array:Array;var RANDOM=Math.random;var ANGLE_ORDER="zyx";function setMatrixArrayType(type){ARRAY_TYPE=type}var degree=Math.PI/180;function toRadian(a){return a*degree}function equals$9(a,b){return Math.abs(a-b)<=EPSILON*Math.max(1,Math.abs(a),Math.abs(b))}if(!Math.hypot)Math.hypot=function(){var y=0,i=arguments.length;while(i--)y+=arguments[i]*arguments[i];return Math.sqrt(y)}; +var common={__proto__:null,EPSILON:EPSILON,get ARRAY_TYPE(){return ARRAY_TYPE},RANDOM:RANDOM,ANGLE_ORDER:ANGLE_ORDER,setMatrixArrayType:setMatrixArrayType,toRadian:toRadian,equals:equals$9};function create$8(){var out=new ARRAY_TYPE(4);if(ARRAY_TYPE!=Float32Array){out[1]=0;out[2]=0}out[0]=1;out[3]=1;return out}function clone$8(a){var out=new ARRAY_TYPE(4);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out}function copy$8(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out} +function identity$5(out){out[0]=1;out[1]=0;out[2]=0;out[3]=1;return out}function fromValues$8(m00,m01,m10,m11){var out=new ARRAY_TYPE(4);out[0]=m00;out[1]=m01;out[2]=m10;out[3]=m11;return out}function set$8(out,m00,m01,m10,m11){out[0]=m00;out[1]=m01;out[2]=m10;out[3]=m11;return out}function transpose$2(out,a){if(out===a){var a1=a[1];out[1]=a[2];out[2]=a1}else{out[0]=a[0];out[1]=a[2];out[2]=a[1];out[3]=a[3]}return out} +function invert$5(out,a){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var det=a0*a3-a2*a1;if(!det)return null;det=1/det;out[0]=a3*det;out[1]=-a1*det;out[2]=-a2*det;out[3]=a0*det;return out}function adjoint$2(out,a){var a0=a[0];out[0]=a[3];out[1]=-a[1];out[2]=-a[2];out[3]=a0;return out}function determinant$3(a){return a[0]*a[3]-a[2]*a[1]} +function multiply$8(out,a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var b0=b[0],b1=b[1],b2=b[2],b3=b[3];out[0]=a0*b0+a2*b1;out[1]=a1*b0+a3*b1;out[2]=a0*b2+a2*b3;out[3]=a1*b2+a3*b3;return out}function rotate$4(out,a,rad){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var s=Math.sin(rad);var c=Math.cos(rad);out[0]=a0*c+a2*s;out[1]=a1*c+a3*s;out[2]=a0*-s+a2*c;out[3]=a1*-s+a3*c;return out} +function scale$8(out,a,v){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var v0=v[0],v1=v[1];out[0]=a0*v0;out[1]=a1*v0;out[2]=a2*v1;out[3]=a3*v1;return out}function fromRotation$4(out,rad){var s=Math.sin(rad);var c=Math.cos(rad);out[0]=c;out[1]=s;out[2]=-s;out[3]=c;return out}function fromScaling$3(out,v){out[0]=v[0];out[1]=0;out[2]=0;out[3]=v[1];return out}function str$8(a){return"mat2("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"}function frob$3(a){return Math.hypot(a[0],a[1],a[2],a[3])} +function LDU(L,D,U,a){L[2]=a[2]/a[0];U[0]=a[0];U[1]=a[1];U[3]=a[3]-L[2]*U[1];return[L,D,U]}function add$8(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];return out}function subtract$6(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];return out}function exactEquals$8(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]} +function equals$8(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var b0=b[0],b1=b[1],b2=b[2],b3=b[3];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))}function multiplyScalar$3(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;return out} +function multiplyScalarAndAdd$3(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;return out}var mul$8=multiply$8;var sub$6=subtract$6; +var mat2=Object.freeze({__proto__:null,create:create$8,clone:clone$8,copy:copy$8,identity:identity$5,fromValues:fromValues$8,set:set$8,transpose:transpose$2,invert:invert$5,adjoint:adjoint$2,determinant:determinant$3,multiply:multiply$8,rotate:rotate$4,scale:scale$8,fromRotation:fromRotation$4,fromScaling:fromScaling$3,str:str$8,frob:frob$3,LDU:LDU,add:add$8,subtract:subtract$6,exactEquals:exactEquals$8,equals:equals$8,multiplyScalar:multiplyScalar$3,multiplyScalarAndAdd:multiplyScalarAndAdd$3,mul:mul$8, +sub:sub$6});function create$7(){var out=new ARRAY_TYPE(6);if(ARRAY_TYPE!=Float32Array){out[1]=0;out[2]=0;out[4]=0;out[5]=0}out[0]=1;out[3]=1;return out}function clone$7(a){var out=new ARRAY_TYPE(6);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];return out}function copy$7(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];return out}function identity$4(out){out[0]=1;out[1]=0;out[2]=0;out[3]=1;out[4]=0;out[5]=0;return out} +function fromValues$7(a,b,c,d,tx,ty){var out=new ARRAY_TYPE(6);out[0]=a;out[1]=b;out[2]=c;out[3]=d;out[4]=tx;out[5]=ty;return out}function set$7(out,a,b,c,d,tx,ty){out[0]=a;out[1]=b;out[2]=c;out[3]=d;out[4]=tx;out[5]=ty;return out}function invert$4(out,a){var aa=a[0],ab=a[1],ac=a[2],ad=a[3];var atx=a[4],aty=a[5];var det=aa*ad-ab*ac;if(!det)return null;det=1/det;out[0]=ad*det;out[1]=-ab*det;out[2]=-ac*det;out[3]=aa*det;out[4]=(ac*aty-ad*atx)*det;out[5]=(ab*atx-aa*aty)*det;return out} +function determinant$2(a){return a[0]*a[3]-a[1]*a[2]}function multiply$7(out,a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5];var b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5];out[0]=a0*b0+a2*b1;out[1]=a1*b0+a3*b1;out[2]=a0*b2+a2*b3;out[3]=a1*b2+a3*b3;out[4]=a0*b4+a2*b5+a4;out[5]=a1*b4+a3*b5+a5;return out} +function rotate$3(out,a,rad){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5];var s=Math.sin(rad);var c=Math.cos(rad);out[0]=a0*c+a2*s;out[1]=a1*c+a3*s;out[2]=a0*-s+a2*c;out[3]=a1*-s+a3*c;out[4]=a4;out[5]=a5;return out}function scale$7(out,a,v){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5];var v0=v[0],v1=v[1];out[0]=a0*v0;out[1]=a1*v0;out[2]=a2*v1;out[3]=a3*v1;out[4]=a4;out[5]=a5;return out} +function translate$3(out,a,v){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5];var v0=v[0],v1=v[1];out[0]=a0;out[1]=a1;out[2]=a2;out[3]=a3;out[4]=a0*v0+a2*v1+a4;out[5]=a1*v0+a3*v1+a5;return out}function fromRotation$3(out,rad){var s=Math.sin(rad),c=Math.cos(rad);out[0]=c;out[1]=s;out[2]=-s;out[3]=c;out[4]=0;out[5]=0;return out}function fromScaling$2(out,v){out[0]=v[0];out[1]=0;out[2]=0;out[3]=v[1];out[4]=0;out[5]=0;return out} +function fromTranslation$3(out,v){out[0]=1;out[1]=0;out[2]=0;out[3]=1;out[4]=v[0];out[5]=v[1];return out}function str$7(a){return"mat2d("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+")"}function frob$2(a){return Math.hypot(a[0],a[1],a[2],a[3],a[4],a[5],1)}function add$7(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];out[4]=a[4]+b[4];out[5]=a[5]+b[5];return out} +function subtract$5(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];out[4]=a[4]-b[4];out[5]=a[5]-b[5];return out}function multiplyScalar$2(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;out[4]=a[4]*b;out[5]=a[5]*b;return out}function multiplyScalarAndAdd$2(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;out[4]=a[4]+b[4]*scale;out[5]=a[5]+b[5]*scale;return out} +function exactEquals$7(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]} +function equals$7(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5];var b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))&&Math.abs(a4-b4)<=EPSILON*Math.max(1,Math.abs(a4),Math.abs(b4))&&Math.abs(a5-b5)<=EPSILON*Math.max(1,Math.abs(a5), +Math.abs(b5))}var mul$7=multiply$7;var sub$5=subtract$5; +var mat2d=Object.freeze({__proto__:null,create:create$7,clone:clone$7,copy:copy$7,identity:identity$4,fromValues:fromValues$7,set:set$7,invert:invert$4,determinant:determinant$2,multiply:multiply$7,rotate:rotate$3,scale:scale$7,translate:translate$3,fromRotation:fromRotation$3,fromScaling:fromScaling$2,fromTranslation:fromTranslation$3,str:str$7,frob:frob$2,add:add$7,subtract:subtract$5,multiplyScalar:multiplyScalar$2,multiplyScalarAndAdd:multiplyScalarAndAdd$2,exactEquals:exactEquals$7,equals:equals$7, +mul:mul$7,sub:sub$5});function create$6(){var out=new ARRAY_TYPE(9);if(ARRAY_TYPE!=Float32Array){out[1]=0;out[2]=0;out[3]=0;out[5]=0;out[6]=0;out[7]=0}out[0]=1;out[4]=1;out[8]=1;return out}function fromMat4$1(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[4];out[4]=a[5];out[5]=a[6];out[6]=a[8];out[7]=a[9];out[8]=a[10];return out} +function clone$6(a){var out=new ARRAY_TYPE(9);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];return out}function copy$6(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];return out} +function fromValues$6(m00,m01,m02,m10,m11,m12,m20,m21,m22){var out=new ARRAY_TYPE(9);out[0]=m00;out[1]=m01;out[2]=m02;out[3]=m10;out[4]=m11;out[5]=m12;out[6]=m20;out[7]=m21;out[8]=m22;return out}function set$6(out,m00,m01,m02,m10,m11,m12,m20,m21,m22){out[0]=m00;out[1]=m01;out[2]=m02;out[3]=m10;out[4]=m11;out[5]=m12;out[6]=m20;out[7]=m21;out[8]=m22;return out}function identity$3(out){out[0]=1;out[1]=0;out[2]=0;out[3]=0;out[4]=1;out[5]=0;out[6]=0;out[7]=0;out[8]=1;return out} +function transpose$1(out,a){if(out===a){var a01=a[1],a02=a[2],a12=a[5];out[1]=a[3];out[2]=a[6];out[3]=a01;out[5]=a[7];out[6]=a02;out[7]=a12}else{out[0]=a[0];out[1]=a[3];out[2]=a[6];out[3]=a[1];out[4]=a[4];out[5]=a[7];out[6]=a[2];out[7]=a[5];out[8]=a[8]}return out} +function invert$3(out,a){var a00=a[0],a01=a[1],a02=a[2];var a10=a[3],a11=a[4],a12=a[5];var a20=a[6],a21=a[7],a22=a[8];var b01=a22*a11-a12*a21;var b11=-a22*a10+a12*a20;var b21=a21*a10-a11*a20;var det=a00*b01+a01*b11+a02*b21;if(!det)return null;det=1/det;out[0]=b01*det;out[1]=(-a22*a01+a02*a21)*det;out[2]=(a12*a01-a02*a11)*det;out[3]=b11*det;out[4]=(a22*a00-a02*a20)*det;out[5]=(-a12*a00+a02*a10)*det;out[6]=b21*det;out[7]=(-a21*a00+a01*a20)*det;out[8]=(a11*a00-a01*a10)*det;return out} +function adjoint$1(out,a){var a00=a[0],a01=a[1],a02=a[2];var a10=a[3],a11=a[4],a12=a[5];var a20=a[6],a21=a[7],a22=a[8];out[0]=a11*a22-a12*a21;out[1]=a02*a21-a01*a22;out[2]=a01*a12-a02*a11;out[3]=a12*a20-a10*a22;out[4]=a00*a22-a02*a20;out[5]=a02*a10-a00*a12;out[6]=a10*a21-a11*a20;out[7]=a01*a20-a00*a21;out[8]=a00*a11-a01*a10;return out} +function determinant$1(a){var a00=a[0],a01=a[1],a02=a[2];var a10=a[3],a11=a[4],a12=a[5];var a20=a[6],a21=a[7],a22=a[8];return a00*(a22*a11-a12*a21)+a01*(-a22*a10+a12*a20)+a02*(a21*a10-a11*a20)} +function multiply$6(out,a,b){var a00=a[0],a01=a[1],a02=a[2];var a10=a[3],a11=a[4],a12=a[5];var a20=a[6],a21=a[7],a22=a[8];var b00=b[0],b01=b[1],b02=b[2];var b10=b[3],b11=b[4],b12=b[5];var b20=b[6],b21=b[7],b22=b[8];out[0]=b00*a00+b01*a10+b02*a20;out[1]=b00*a01+b01*a11+b02*a21;out[2]=b00*a02+b01*a12+b02*a22;out[3]=b10*a00+b11*a10+b12*a20;out[4]=b10*a01+b11*a11+b12*a21;out[5]=b10*a02+b11*a12+b12*a22;out[6]=b20*a00+b21*a10+b22*a20;out[7]=b20*a01+b21*a11+b22*a21;out[8]=b20*a02+b21*a12+b22*a22;return out} +function translate$2(out,a,v){var a00=a[0],a01=a[1],a02=a[2],a10=a[3],a11=a[4],a12=a[5],a20=a[6],a21=a[7],a22=a[8],x=v[0],y=v[1];out[0]=a00;out[1]=a01;out[2]=a02;out[3]=a10;out[4]=a11;out[5]=a12;out[6]=x*a00+y*a10+a20;out[7]=x*a01+y*a11+a21;out[8]=x*a02+y*a12+a22;return out} +function rotate$2(out,a,rad){var a00=a[0],a01=a[1],a02=a[2],a10=a[3],a11=a[4],a12=a[5],a20=a[6],a21=a[7],a22=a[8],s=Math.sin(rad),c=Math.cos(rad);out[0]=c*a00+s*a10;out[1]=c*a01+s*a11;out[2]=c*a02+s*a12;out[3]=c*a10-s*a00;out[4]=c*a11-s*a01;out[5]=c*a12-s*a02;out[6]=a20;out[7]=a21;out[8]=a22;return out}function scale$6(out,a,v){var x=v[0],y=v[1];out[0]=x*a[0];out[1]=x*a[1];out[2]=x*a[2];out[3]=y*a[3];out[4]=y*a[4];out[5]=y*a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];return out} +function fromTranslation$2(out,v){out[0]=1;out[1]=0;out[2]=0;out[3]=0;out[4]=1;out[5]=0;out[6]=v[0];out[7]=v[1];out[8]=1;return out}function fromRotation$2(out,rad){var s=Math.sin(rad),c=Math.cos(rad);out[0]=c;out[1]=s;out[2]=0;out[3]=-s;out[4]=c;out[5]=0;out[6]=0;out[7]=0;out[8]=1;return out}function fromScaling$1(out,v){out[0]=v[0];out[1]=0;out[2]=0;out[3]=0;out[4]=v[1];out[5]=0;out[6]=0;out[7]=0;out[8]=1;return out} +function fromMat2d(out,a){out[0]=a[0];out[1]=a[1];out[2]=0;out[3]=a[2];out[4]=a[3];out[5]=0;out[6]=a[4];out[7]=a[5];out[8]=1;return out}function fromQuat$1(out,q){var x=q[0],y=q[1],z=q[2],w=q[3];var x2=x+x;var y2=y+y;var z2=z+z;var xx=x*x2;var yx=y*x2;var yy=y*y2;var zx=z*x2;var zy=z*y2;var zz=z*z2;var wx=w*x2;var wy=w*y2;var wz=w*z2;out[0]=1-yy-zz;out[3]=yx-wz;out[6]=zx+wy;out[1]=yx+wz;out[4]=1-xx-zz;out[7]=zy-wx;out[2]=zx-wy;out[5]=zy+wx;out[8]=1-xx-yy;return out} +function normalFromMat4(out,a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3];var a10=a[4],a11=a[5],a12=a[6],a13=a[7];var a20=a[8],a21=a[9],a22=a[10],a23=a[11];var a30=a[12],a31=a[13],a32=a[14],a33=a[15];var b00=a00*a11-a01*a10;var b01=a00*a12-a02*a10;var b02=a00*a13-a03*a10;var b03=a01*a12-a02*a11;var b04=a01*a13-a03*a11;var b05=a02*a13-a03*a12;var b06=a20*a31-a21*a30;var b07=a20*a32-a22*a30;var b08=a20*a33-a23*a30;var b09=a21*a32-a22*a31;var b10=a21*a33-a23*a31;var b11=a22*a33-a23*a32;var det=b00*b11- +b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;if(!det)return null;det=1/det;out[0]=(a11*b11-a12*b10+a13*b09)*det;out[1]=(a12*b08-a10*b11-a13*b07)*det;out[2]=(a10*b10-a11*b08+a13*b06)*det;out[3]=(a02*b10-a01*b11-a03*b09)*det;out[4]=(a00*b11-a02*b08+a03*b07)*det;out[5]=(a01*b08-a00*b10-a03*b06)*det;out[6]=(a31*b05-a32*b04+a33*b03)*det;out[7]=(a32*b02-a30*b05-a33*b01)*det;out[8]=(a30*b04-a31*b02+a33*b00)*det;return out} +function projection(out,width,height){out[0]=2/width;out[1]=0;out[2]=0;out[3]=0;out[4]=-2/height;out[5]=0;out[6]=-1;out[7]=1;out[8]=1;return out}function str$6(a){return"mat3("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+")"}function frob$1(a){return Math.hypot(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8])} +function add$6(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];out[4]=a[4]+b[4];out[5]=a[5]+b[5];out[6]=a[6]+b[6];out[7]=a[7]+b[7];out[8]=a[8]+b[8];return out}function subtract$4(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];out[4]=a[4]-b[4];out[5]=a[5]-b[5];out[6]=a[6]-b[6];out[7]=a[7]-b[7];out[8]=a[8]-b[8];return out} +function multiplyScalar$1(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;out[4]=a[4]*b;out[5]=a[5]*b;out[6]=a[6]*b;out[7]=a[7]*b;out[8]=a[8]*b;return out}function multiplyScalarAndAdd$1(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;out[4]=a[4]+b[4]*scale;out[5]=a[5]+b[5]*scale;out[6]=a[6]+b[6]*scale;out[7]=a[7]+b[7]*scale;out[8]=a[8]+b[8]*scale;return out} +function exactEquals$6(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]&&a[6]===b[6]&&a[7]===b[7]&&a[8]===b[8]} +function equals$6(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5],a6=a[6],a7=a[7],a8=a[8];var b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7],b8=b[8];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))&&Math.abs(a4-b4)<=EPSILON*Math.max(1,Math.abs(a4),Math.abs(b4))&& +Math.abs(a5-b5)<=EPSILON*Math.max(1,Math.abs(a5),Math.abs(b5))&&Math.abs(a6-b6)<=EPSILON*Math.max(1,Math.abs(a6),Math.abs(b6))&&Math.abs(a7-b7)<=EPSILON*Math.max(1,Math.abs(a7),Math.abs(b7))&&Math.abs(a8-b8)<=EPSILON*Math.max(1,Math.abs(a8),Math.abs(b8))}var mul$6=multiply$6;var sub$4=subtract$4; +var mat3=Object.freeze({__proto__:null,create:create$6,fromMat4:fromMat4$1,clone:clone$6,copy:copy$6,fromValues:fromValues$6,set:set$6,identity:identity$3,transpose:transpose$1,invert:invert$3,adjoint:adjoint$1,determinant:determinant$1,multiply:multiply$6,translate:translate$2,rotate:rotate$2,scale:scale$6,fromTranslation:fromTranslation$2,fromRotation:fromRotation$2,fromScaling:fromScaling$1,fromMat2d:fromMat2d,fromQuat:fromQuat$1,normalFromMat4:normalFromMat4,projection:projection,str:str$6,frob:frob$1, +add:add$6,subtract:subtract$4,multiplyScalar:multiplyScalar$1,multiplyScalarAndAdd:multiplyScalarAndAdd$1,exactEquals:exactEquals$6,equals:equals$6,mul:mul$6,sub:sub$4});function create$5(){var out=new ARRAY_TYPE(16);if(ARRAY_TYPE!=Float32Array){out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[11]=0;out[12]=0;out[13]=0;out[14]=0}out[0]=1;out[5]=1;out[10]=1;out[15]=1;return out} +function clone$5(a){var out=new ARRAY_TYPE(16);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];out[9]=a[9];out[10]=a[10];out[11]=a[11];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];return out}function copy$5(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];out[8]=a[8];out[9]=a[9];out[10]=a[10];out[11]=a[11];out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];return out} +function fromValues$5(m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,m23,m30,m31,m32,m33){var out=new ARRAY_TYPE(16);out[0]=m00;out[1]=m01;out[2]=m02;out[3]=m03;out[4]=m10;out[5]=m11;out[6]=m12;out[7]=m13;out[8]=m20;out[9]=m21;out[10]=m22;out[11]=m23;out[12]=m30;out[13]=m31;out[14]=m32;out[15]=m33;return out} +function set$5(out,m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,m23,m30,m31,m32,m33){out[0]=m00;out[1]=m01;out[2]=m02;out[3]=m03;out[4]=m10;out[5]=m11;out[6]=m12;out[7]=m13;out[8]=m20;out[9]=m21;out[10]=m22;out[11]=m23;out[12]=m30;out[13]=m31;out[14]=m32;out[15]=m33;return out}function identity$2(out){out[0]=1;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=1;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=1;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out} +function transpose(out,a){if(out===a){var a01=a[1],a02=a[2],a03=a[3];var a12=a[6],a13=a[7];var a23=a[11];out[1]=a[4];out[2]=a[8];out[3]=a[12];out[4]=a01;out[6]=a[9];out[7]=a[13];out[8]=a02;out[9]=a12;out[11]=a[14];out[12]=a03;out[13]=a13;out[14]=a23}else{out[0]=a[0];out[1]=a[4];out[2]=a[8];out[3]=a[12];out[4]=a[1];out[5]=a[5];out[6]=a[9];out[7]=a[13];out[8]=a[2];out[9]=a[6];out[10]=a[10];out[11]=a[14];out[12]=a[3];out[13]=a[7];out[14]=a[11];out[15]=a[15]}return out} +function invert$2(out,a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3];var a10=a[4],a11=a[5],a12=a[6],a13=a[7];var a20=a[8],a21=a[9],a22=a[10],a23=a[11];var a30=a[12],a31=a[13],a32=a[14],a33=a[15];var b00=a00*a11-a01*a10;var b01=a00*a12-a02*a10;var b02=a00*a13-a03*a10;var b03=a01*a12-a02*a11;var b04=a01*a13-a03*a11;var b05=a02*a13-a03*a12;var b06=a20*a31-a21*a30;var b07=a20*a32-a22*a30;var b08=a20*a33-a23*a30;var b09=a21*a32-a22*a31;var b10=a21*a33-a23*a31;var b11=a22*a33-a23*a32;var det=b00*b11-b01*b10+ +b02*b09+b03*b08-b04*b07+b05*b06;if(!det)return null;det=1/det;out[0]=(a11*b11-a12*b10+a13*b09)*det;out[1]=(a02*b10-a01*b11-a03*b09)*det;out[2]=(a31*b05-a32*b04+a33*b03)*det;out[3]=(a22*b04-a21*b05-a23*b03)*det;out[4]=(a12*b08-a10*b11-a13*b07)*det;out[5]=(a00*b11-a02*b08+a03*b07)*det;out[6]=(a32*b02-a30*b05-a33*b01)*det;out[7]=(a20*b05-a22*b02+a23*b01)*det;out[8]=(a10*b10-a11*b08+a13*b06)*det;out[9]=(a01*b08-a00*b10-a03*b06)*det;out[10]=(a30*b04-a31*b02+a33*b00)*det;out[11]=(a21*b02-a20*b04-a23*b00)* +det;out[12]=(a11*b07-a10*b09-a12*b06)*det;out[13]=(a00*b09-a01*b07+a02*b06)*det;out[14]=(a31*b01-a30*b03-a32*b00)*det;out[15]=(a20*b03-a21*b01+a22*b00)*det;return out} +function adjoint(out,a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3];var a10=a[4],a11=a[5],a12=a[6],a13=a[7];var a20=a[8],a21=a[9],a22=a[10],a23=a[11];var a30=a[12],a31=a[13],a32=a[14],a33=a[15];var b00=a00*a11-a01*a10;var b01=a00*a12-a02*a10;var b02=a00*a13-a03*a10;var b03=a01*a12-a02*a11;var b04=a01*a13-a03*a11;var b05=a02*a13-a03*a12;var b06=a20*a31-a21*a30;var b07=a20*a32-a22*a30;var b08=a20*a33-a23*a30;var b09=a21*a32-a22*a31;var b10=a21*a33-a23*a31;var b11=a22*a33-a23*a32;out[0]=a11*b11-a12*b10+ +a13*b09;out[1]=a02*b10-a01*b11-a03*b09;out[2]=a31*b05-a32*b04+a33*b03;out[3]=a22*b04-a21*b05-a23*b03;out[4]=a12*b08-a10*b11-a13*b07;out[5]=a00*b11-a02*b08+a03*b07;out[6]=a32*b02-a30*b05-a33*b01;out[7]=a20*b05-a22*b02+a23*b01;out[8]=a10*b10-a11*b08+a13*b06;out[9]=a01*b08-a00*b10-a03*b06;out[10]=a30*b04-a31*b02+a33*b00;out[11]=a21*b02-a20*b04-a23*b00;out[12]=a11*b07-a10*b09-a12*b06;out[13]=a00*b09-a01*b07+a02*b06;out[14]=a31*b01-a30*b03-a32*b00;out[15]=a20*b03-a21*b01+a22*b00;return out} +function determinant(a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3];var a10=a[4],a11=a[5],a12=a[6],a13=a[7];var a20=a[8],a21=a[9],a22=a[10],a23=a[11];var a30=a[12],a31=a[13],a32=a[14],a33=a[15];var b0=a00*a11-a01*a10;var b1=a00*a12-a02*a10;var b2=a01*a12-a02*a11;var b3=a20*a31-a21*a30;var b4=a20*a32-a22*a30;var b5=a21*a32-a22*a31;var b6=a00*b5-a01*b4+a02*b3;var b7=a10*b5-a11*b4+a12*b3;var b8=a20*b2-a21*b1+a22*b0;var b9=a30*b2-a31*b1+a32*b0;return a13*b6-a03*b7+a33*b8-a23*b9} +function multiply$5(out,a,b){var a00=a[0],a01=a[1],a02=a[2],a03=a[3];var a10=a[4],a11=a[5],a12=a[6],a13=a[7];var a20=a[8],a21=a[9],a22=a[10],a23=a[11];var a30=a[12],a31=a[13],a32=a[14],a33=a[15];var b0=b[0],b1=b[1],b2=b[2],b3=b[3];out[0]=b0*a00+b1*a10+b2*a20+b3*a30;out[1]=b0*a01+b1*a11+b2*a21+b3*a31;out[2]=b0*a02+b1*a12+b2*a22+b3*a32;out[3]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[4];b1=b[5];b2=b[6];b3=b[7];out[4]=b0*a00+b1*a10+b2*a20+b3*a30;out[5]=b0*a01+b1*a11+b2*a21+b3*a31;out[6]=b0*a02+b1*a12+b2*a22+ +b3*a32;out[7]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[8];b1=b[9];b2=b[10];b3=b[11];out[8]=b0*a00+b1*a10+b2*a20+b3*a30;out[9]=b0*a01+b1*a11+b2*a21+b3*a31;out[10]=b0*a02+b1*a12+b2*a22+b3*a32;out[11]=b0*a03+b1*a13+b2*a23+b3*a33;b0=b[12];b1=b[13];b2=b[14];b3=b[15];out[12]=b0*a00+b1*a10+b2*a20+b3*a30;out[13]=b0*a01+b1*a11+b2*a21+b3*a31;out[14]=b0*a02+b1*a12+b2*a22+b3*a32;out[15]=b0*a03+b1*a13+b2*a23+b3*a33;return out} +function translate$1(out,a,v){var x=v[0],y=v[1],z=v[2];var a00,a01,a02,a03;var a10,a11,a12,a13;var a20,a21,a22,a23;if(a===out){out[12]=a[0]*x+a[4]*y+a[8]*z+a[12];out[13]=a[1]*x+a[5]*y+a[9]*z+a[13];out[14]=a[2]*x+a[6]*y+a[10]*z+a[14];out[15]=a[3]*x+a[7]*y+a[11]*z+a[15]}else{a00=a[0];a01=a[1];a02=a[2];a03=a[3];a10=a[4];a11=a[5];a12=a[6];a13=a[7];a20=a[8];a21=a[9];a22=a[10];a23=a[11];out[0]=a00;out[1]=a01;out[2]=a02;out[3]=a03;out[4]=a10;out[5]=a11;out[6]=a12;out[7]=a13;out[8]=a20;out[9]=a21;out[10]= +a22;out[11]=a23;out[12]=a00*x+a10*y+a20*z+a[12];out[13]=a01*x+a11*y+a21*z+a[13];out[14]=a02*x+a12*y+a22*z+a[14];out[15]=a03*x+a13*y+a23*z+a[15]}return out}function scale$5(out,a,v){var x=v[0],y=v[1],z=v[2];out[0]=a[0]*x;out[1]=a[1]*x;out[2]=a[2]*x;out[3]=a[3]*x;out[4]=a[4]*y;out[5]=a[5]*y;out[6]=a[6]*y;out[7]=a[7]*y;out[8]=a[8]*z;out[9]=a[9]*z;out[10]=a[10]*z;out[11]=a[11]*z;out[12]=a[12];out[13]=a[13];out[14]=a[14];out[15]=a[15];return out} +function rotate$1(out,a,rad,axis){var x=axis[0],y=axis[1],z=axis[2];var len=Math.hypot(x,y,z);var s,c,t;var a00,a01,a02,a03;var a10,a11,a12,a13;var a20,a21,a22,a23;var b00,b01,b02;var b10,b11,b12;var b20,b21,b22;if(len0){translation[0]=(ax*bw+aw*bx+ay*bz-az*by)*2/magnitude;translation[1]=(ay*bw+aw*by+az*bx-ax*bz)*2/magnitude;translation[2]=(az*bw+aw*bz+ax*by-ay*bx)*2/magnitude}else{translation[0]=(ax*bw+aw*bx+ay*bz-az*by)*2;translation[1]=(ay*bw+aw*by+az*bx-ax*bz)*2;translation[2]=(az*bw+aw*bz+ax*by-ay*bx)*2}fromRotationTranslation$1(out, +a,translation);return out}function getTranslation$1(out,mat){out[0]=mat[12];out[1]=mat[13];out[2]=mat[14];return out}function getScaling(out,mat){var m11=mat[0];var m12=mat[1];var m13=mat[2];var m21=mat[4];var m22=mat[5];var m23=mat[6];var m31=mat[8];var m32=mat[9];var m33=mat[10];out[0]=Math.hypot(m11,m12,m13);out[1]=Math.hypot(m21,m22,m23);out[2]=Math.hypot(m31,m32,m33);return out} +function getRotation(out,mat){var scaling=new ARRAY_TYPE(3);getScaling(scaling,mat);var is1=1/scaling[0];var is2=1/scaling[1];var is3=1/scaling[2];var sm11=mat[0]*is1;var sm12=mat[1]*is2;var sm13=mat[2]*is3;var sm21=mat[4]*is1;var sm22=mat[5]*is2;var sm23=mat[6]*is3;var sm31=mat[8]*is1;var sm32=mat[9]*is2;var sm33=mat[10]*is3;var trace=sm11+sm22+sm33;var S=0;if(trace>0){S=Math.sqrt(trace+1)*2;out[3]=.25*S;out[0]=(sm23-sm32)/S;out[1]=(sm31-sm13)/S;out[2]=(sm12-sm21)/S}else if(sm11>sm22&&sm11>sm33){S= +Math.sqrt(1+sm11-sm22-sm33)*2;out[3]=(sm23-sm32)/S;out[0]=.25*S;out[1]=(sm12+sm21)/S;out[2]=(sm31+sm13)/S}else if(sm22>sm33){S=Math.sqrt(1+sm22-sm11-sm33)*2;out[3]=(sm31-sm13)/S;out[0]=(sm12+sm21)/S;out[1]=.25*S;out[2]=(sm23+sm32)/S}else{S=Math.sqrt(1+sm33-sm11-sm22)*2;out[3]=(sm12-sm21)/S;out[0]=(sm31+sm13)/S;out[1]=(sm23+sm32)/S;out[2]=.25*S}return out} +function decompose(out_r,out_t,out_s,mat){out_t[0]=mat[12];out_t[1]=mat[13];out_t[2]=mat[14];var m11=mat[0];var m12=mat[1];var m13=mat[2];var m21=mat[4];var m22=mat[5];var m23=mat[6];var m31=mat[8];var m32=mat[9];var m33=mat[10];out_s[0]=Math.hypot(m11,m12,m13);out_s[1]=Math.hypot(m21,m22,m23);out_s[2]=Math.hypot(m31,m32,m33);var is1=1/out_s[0];var is2=1/out_s[1];var is3=1/out_s[2];var sm11=m11*is1;var sm12=m12*is2;var sm13=m13*is3;var sm21=m21*is1;var sm22=m22*is2;var sm23=m23*is3;var sm31=m31*is1; +var sm32=m32*is2;var sm33=m33*is3;var trace=sm11+sm22+sm33;var S=0;if(trace>0){S=Math.sqrt(trace+1)*2;out_r[3]=.25*S;out_r[0]=(sm23-sm32)/S;out_r[1]=(sm31-sm13)/S;out_r[2]=(sm12-sm21)/S}else if(sm11>sm22&&sm11>sm33){S=Math.sqrt(1+sm11-sm22-sm33)*2;out_r[3]=(sm23-sm32)/S;out_r[0]=.25*S;out_r[1]=(sm12+sm21)/S;out_r[2]=(sm31+sm13)/S}else if(sm22>sm33){S=Math.sqrt(1+sm22-sm11-sm33)*2;out_r[3]=(sm31-sm13)/S;out_r[0]=(sm12+sm21)/S;out_r[1]=.25*S;out_r[2]=(sm23+sm32)/S}else{S=Math.sqrt(1+sm33-sm11-sm22)* +2;out_r[3]=(sm12-sm21)/S;out_r[0]=(sm31+sm13)/S;out_r[1]=(sm23+sm32)/S;out_r[2]=.25*S}return out_r} +function fromRotationTranslationScale(out,q,v,s){var x=q[0],y=q[1],z=q[2],w=q[3];var x2=x+x;var y2=y+y;var z2=z+z;var xx=x*x2;var xy=x*y2;var xz=x*z2;var yy=y*y2;var yz=y*z2;var zz=z*z2;var wx=w*x2;var wy=w*y2;var wz=w*z2;var sx=s[0];var sy=s[1];var sz=s[2];out[0]=(1-(yy+zz))*sx;out[1]=(xy+wz)*sx;out[2]=(xz-wy)*sx;out[3]=0;out[4]=(xy-wz)*sy;out[5]=(1-(xx+zz))*sy;out[6]=(yz+wx)*sy;out[7]=0;out[8]=(xz+wy)*sz;out[9]=(yz-wx)*sz;out[10]=(1-(xx+yy))*sz;out[11]=0;out[12]=v[0];out[13]=v[1];out[14]=v[2];out[15]= +1;return out} +function fromRotationTranslationScaleOrigin(out,q,v,s,o){var x=q[0],y=q[1],z=q[2],w=q[3];var x2=x+x;var y2=y+y;var z2=z+z;var xx=x*x2;var xy=x*y2;var xz=x*z2;var yy=y*y2;var yz=y*z2;var zz=z*z2;var wx=w*x2;var wy=w*y2;var wz=w*z2;var sx=s[0];var sy=s[1];var sz=s[2];var ox=o[0];var oy=o[1];var oz=o[2];var out0=(1-(yy+zz))*sx;var out1=(xy+wz)*sx;var out2=(xz-wy)*sx;var out4=(xy-wz)*sy;var out5=(1-(xx+zz))*sy;var out6=(yz+wx)*sy;var out8=(xz+wy)*sz;var out9=(yz-wx)*sz;var out10=(1-(xx+yy))*sz;out[0]= +out0;out[1]=out1;out[2]=out2;out[3]=0;out[4]=out4;out[5]=out5;out[6]=out6;out[7]=0;out[8]=out8;out[9]=out9;out[10]=out10;out[11]=0;out[12]=v[0]+ox-(out0*ox+out4*oy+out8*oz);out[13]=v[1]+oy-(out1*ox+out5*oy+out9*oz);out[14]=v[2]+oz-(out2*ox+out6*oy+out10*oz);out[15]=1;return out} +function fromQuat(out,q){var x=q[0],y=q[1],z=q[2],w=q[3];var x2=x+x;var y2=y+y;var z2=z+z;var xx=x*x2;var yx=y*x2;var yy=y*y2;var zx=z*x2;var zy=z*y2;var zz=z*z2;var wx=w*x2;var wy=w*y2;var wz=w*z2;out[0]=1-yy-zz;out[1]=yx+wz;out[2]=zx-wy;out[3]=0;out[4]=yx-wz;out[5]=1-xx-zz;out[6]=zy+wx;out[7]=0;out[8]=zx+wy;out[9]=zy-wx;out[10]=1-xx-yy;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out} +function frustum(out,left,right,bottom,top,near,far){var rl=1/(right-left);var tb=1/(top-bottom);var nf=1/(near-far);out[0]=near*2*rl;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=near*2*tb;out[6]=0;out[7]=0;out[8]=(right+left)*rl;out[9]=(top+bottom)*tb;out[10]=(far+near)*nf;out[11]=-1;out[12]=0;out[13]=0;out[14]=far*near*2*nf;out[15]=0;return out} +function perspectiveNO(out,fovy,aspect,near,far){var f=1/Math.tan(fovy/2);out[0]=f/aspect;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=f;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[11]=-1;out[12]=0;out[13]=0;out[15]=0;if(far!=null&&far!==Infinity){var nf=1/(near-far);out[10]=(far+near)*nf;out[14]=2*far*near*nf}else{out[10]=-1;out[14]=-2*near}return out}var perspective=perspectiveNO; +function perspectiveZO(out,fovy,aspect,near,far){var f=1/Math.tan(fovy/2);out[0]=f/aspect;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=f;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[11]=-1;out[12]=0;out[13]=0;out[15]=0;if(far!=null&&far!==Infinity){var nf=1/(near-far);out[10]=far*nf;out[14]=far*near*nf}else{out[10]=-1;out[14]=-near}return out} +function perspectiveFromFieldOfView(out,fov,near,far){var upTan=Math.tan(fov.upDegrees*Math.PI/180);var downTan=Math.tan(fov.downDegrees*Math.PI/180);var leftTan=Math.tan(fov.leftDegrees*Math.PI/180);var rightTan=Math.tan(fov.rightDegrees*Math.PI/180);var xScale=2/(leftTan+rightTan);var yScale=2/(upTan+downTan);out[0]=xScale;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=yScale;out[6]=0;out[7]=0;out[8]=-((leftTan-rightTan)*xScale*.5);out[9]=(upTan-downTan)*yScale*.5;out[10]=far/(near-far);out[11]=-1; +out[12]=0;out[13]=0;out[14]=far*near/(near-far);out[15]=0;return out}function orthoNO(out,left,right,bottom,top,near,far){var lr=1/(left-right);var bt=1/(bottom-top);var nf=1/(near-far);out[0]=-2*lr;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=-2*bt;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=2*nf;out[11]=0;out[12]=(left+right)*lr;out[13]=(top+bottom)*bt;out[14]=(far+near)*nf;out[15]=1;return out}var ortho=orthoNO; +function orthoZO(out,left,right,bottom,top,near,far){var lr=1/(left-right);var bt=1/(bottom-top);var nf=1/(near-far);out[0]=-2*lr;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=-2*bt;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=nf;out[11]=0;out[12]=(left+right)*lr;out[13]=(top+bottom)*bt;out[14]=near*nf;out[15]=1;return out} +function lookAt(out,eye,center,up){var x0,x1,x2,y0,y1,y2,z0,z1,z2,len;var eyex=eye[0];var eyey=eye[1];var eyez=eye[2];var upx=up[0];var upy=up[1];var upz=up[2];var centerx=center[0];var centery=center[1];var centerz=center[2];if(Math.abs(eyex-centerx)0){len=1/Math.sqrt(len);z0*=len;z1*=len;z2*=len}var x0=upy*z2-upz*z1,x1=upz*z0-upx*z2,x2=upx*z1-upy*z0;len=x0*x0+x1*x1+x2*x2;if(len>0){len=1/Math.sqrt(len);x0*=len;x1*=len;x2*=len}out[0]=x0;out[1]=x1;out[2]=x2;out[3]=0;out[4]=z1*x2-z2*x1;out[5]=z2*x0-z0*x2;out[6]=z0*x1-z1*x0;out[7]=0;out[8]=z0;out[9]=z1; +out[10]=z2;out[11]=0;out[12]=eyex;out[13]=eyey;out[14]=eyez;out[15]=1;return out}function str$5(a){return"mat4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+")"}function frob(a){return Math.hypot(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15])} +function add$5(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];out[4]=a[4]+b[4];out[5]=a[5]+b[5];out[6]=a[6]+b[6];out[7]=a[7]+b[7];out[8]=a[8]+b[8];out[9]=a[9]+b[9];out[10]=a[10]+b[10];out[11]=a[11]+b[11];out[12]=a[12]+b[12];out[13]=a[13]+b[13];out[14]=a[14]+b[14];out[15]=a[15]+b[15];return out} +function subtract$3(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];out[4]=a[4]-b[4];out[5]=a[5]-b[5];out[6]=a[6]-b[6];out[7]=a[7]-b[7];out[8]=a[8]-b[8];out[9]=a[9]-b[9];out[10]=a[10]-b[10];out[11]=a[11]-b[11];out[12]=a[12]-b[12];out[13]=a[13]-b[13];out[14]=a[14]-b[14];out[15]=a[15]-b[15];return out} +function multiplyScalar(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;out[4]=a[4]*b;out[5]=a[5]*b;out[6]=a[6]*b;out[7]=a[7]*b;out[8]=a[8]*b;out[9]=a[9]*b;out[10]=a[10]*b;out[11]=a[11]*b;out[12]=a[12]*b;out[13]=a[13]*b;out[14]=a[14]*b;out[15]=a[15]*b;return out} +function multiplyScalarAndAdd(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;out[4]=a[4]+b[4]*scale;out[5]=a[5]+b[5]*scale;out[6]=a[6]+b[6]*scale;out[7]=a[7]+b[7]*scale;out[8]=a[8]+b[8]*scale;out[9]=a[9]+b[9]*scale;out[10]=a[10]+b[10]*scale;out[11]=a[11]+b[11]*scale;out[12]=a[12]+b[12]*scale;out[13]=a[13]+b[13]*scale;out[14]=a[14]+b[14]*scale;out[15]=a[15]+b[15]*scale;return out} +function exactEquals$5(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]&&a[6]===b[6]&&a[7]===b[7]&&a[8]===b[8]&&a[9]===b[9]&&a[10]===b[10]&&a[11]===b[11]&&a[12]===b[12]&&a[13]===b[13]&&a[14]===b[14]&&a[15]===b[15]} +function equals$5(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var a4=a[4],a5=a[5],a6=a[6],a7=a[7];var a8=a[8],a9=a[9],a10=a[10],a11=a[11];var a12=a[12],a13=a[13],a14=a[14],a15=a[15];var b0=b[0],b1=b[1],b2=b[2],b3=b[3];var b4=b[4],b5=b[5],b6=b[6],b7=b[7];var b8=b[8],b9=b[9],b10=b[10],b11=b[11];var b12=b[12],b13=b[13],b14=b[14],b15=b[15];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1, +Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))&&Math.abs(a4-b4)<=EPSILON*Math.max(1,Math.abs(a4),Math.abs(b4))&&Math.abs(a5-b5)<=EPSILON*Math.max(1,Math.abs(a5),Math.abs(b5))&&Math.abs(a6-b6)<=EPSILON*Math.max(1,Math.abs(a6),Math.abs(b6))&&Math.abs(a7-b7)<=EPSILON*Math.max(1,Math.abs(a7),Math.abs(b7))&&Math.abs(a8-b8)<=EPSILON*Math.max(1,Math.abs(a8),Math.abs(b8))&&Math.abs(a9-b9)<=EPSILON*Math.max(1,Math.abs(a9),Math.abs(b9))&&Math.abs(a10-b10)<=EPSILON* +Math.max(1,Math.abs(a10),Math.abs(b10))&&Math.abs(a11-b11)<=EPSILON*Math.max(1,Math.abs(a11),Math.abs(b11))&&Math.abs(a12-b12)<=EPSILON*Math.max(1,Math.abs(a12),Math.abs(b12))&&Math.abs(a13-b13)<=EPSILON*Math.max(1,Math.abs(a13),Math.abs(b13))&&Math.abs(a14-b14)<=EPSILON*Math.max(1,Math.abs(a14),Math.abs(b14))&&Math.abs(a15-b15)<=EPSILON*Math.max(1,Math.abs(a15),Math.abs(b15))}var mul$5=multiply$5;var sub$3=subtract$3; +var mat4=Object.freeze({__proto__:null,create:create$5,clone:clone$5,copy:copy$5,fromValues:fromValues$5,set:set$5,identity:identity$2,transpose:transpose,invert:invert$2,adjoint:adjoint,determinant:determinant,multiply:multiply$5,translate:translate$1,scale:scale$5,rotate:rotate$1,rotateX:rotateX$3,rotateY:rotateY$3,rotateZ:rotateZ$3,fromTranslation:fromTranslation$1,fromScaling:fromScaling,fromRotation:fromRotation$1,fromXRotation:fromXRotation,fromYRotation:fromYRotation,fromZRotation:fromZRotation, +fromRotationTranslation:fromRotationTranslation$1,fromQuat2:fromQuat2,getTranslation:getTranslation$1,getScaling:getScaling,getRotation:getRotation,decompose:decompose,fromRotationTranslationScale:fromRotationTranslationScale,fromRotationTranslationScaleOrigin:fromRotationTranslationScaleOrigin,fromQuat:fromQuat,frustum:frustum,perspectiveNO:perspectiveNO,perspective:perspective,perspectiveZO:perspectiveZO,perspectiveFromFieldOfView:perspectiveFromFieldOfView,orthoNO:orthoNO,ortho:ortho,orthoZO:orthoZO, +lookAt:lookAt,targetTo:targetTo,str:str$5,frob:frob,add:add$5,subtract:subtract$3,multiplyScalar:multiplyScalar,multiplyScalarAndAdd:multiplyScalarAndAdd,exactEquals:exactEquals$5,equals:equals$5,mul:mul$5,sub:sub$3});function create$4(){var out=new ARRAY_TYPE(3);if(ARRAY_TYPE!=Float32Array){out[0]=0;out[1]=0;out[2]=0}return out}function clone$4(a){var out=new ARRAY_TYPE(3);out[0]=a[0];out[1]=a[1];out[2]=a[2];return out} +function length$4(a){var x=a[0];var y=a[1];var z=a[2];return Math.hypot(x,y,z)}function fromValues$4(x,y,z){var out=new ARRAY_TYPE(3);out[0]=x;out[1]=y;out[2]=z;return out}function copy$4(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];return out}function set$4(out,x,y,z){out[0]=x;out[1]=y;out[2]=z;return out}function add$4(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];return out}function subtract$2(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];return out} +function multiply$4(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];out[2]=a[2]*b[2];return out}function divide$2(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];out[2]=a[2]/b[2];return out}function ceil$2(out,a){out[0]=Math.ceil(a[0]);out[1]=Math.ceil(a[1]);out[2]=Math.ceil(a[2]);return out}function floor$2(out,a){out[0]=Math.floor(a[0]);out[1]=Math.floor(a[1]);out[2]=Math.floor(a[2]);return out} +function min$2(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);out[2]=Math.min(a[2],b[2]);return out}function max$2(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);out[2]=Math.max(a[2],b[2]);return out}function round$2(out,a){out[0]=Math.round(a[0]);out[1]=Math.round(a[1]);out[2]=Math.round(a[2]);return out}function scale$4(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;return out} +function scaleAndAdd$2(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;return out}function distance$2(a,b){var x=b[0]-a[0];var y=b[1]-a[1];var z=b[2]-a[2];return Math.hypot(x,y,z)}function squaredDistance$2(a,b){var x=b[0]-a[0];var y=b[1]-a[1];var z=b[2]-a[2];return x*x+y*y+z*z}function squaredLength$4(a){var x=a[0];var y=a[1];var z=a[2];return x*x+y*y+z*z}function negate$2(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];return out} +function inverse$2(out,a){out[0]=1/a[0];out[1]=1/a[1];out[2]=1/a[2];return out}function normalize$4(out,a){var x=a[0];var y=a[1];var z=a[2];var len=x*x+y*y+z*z;if(len>0)len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;out[2]=a[2]*len;return out}function dot$4(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function cross$2(out,a,b){var ax=a[0],ay=a[1],az=a[2];var bx=b[0],by=b[1],bz=b[2];out[0]=ay*bz-az*by;out[1]=az*bx-ax*bz;out[2]=ax*by-ay*bx;return out} +function lerp$4(out,a,b,t){var ax=a[0];var ay=a[1];var az=a[2];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);return out}function slerp$1(out,a,b,t){var angle=Math.acos(Math.min(Math.max(dot$4(a,b),-1),1));var sinTotal=Math.sin(angle);var ratioA=Math.sin((1-t)*angle)/sinTotal;var ratioB=Math.sin(t*angle)/sinTotal;out[0]=ratioA*a[0]+ratioB*b[0];out[1]=ratioA*a[1]+ratioB*b[1];out[2]=ratioA*a[2]+ratioB*b[2];return out} +function hermite(out,a,b,c,d,t){var factorTimes2=t*t;var factor1=factorTimes2*(2*t-3)+1;var factor2=factorTimes2*(t-2)+t;var factor3=factorTimes2*(t-1);var factor4=factorTimes2*(3-2*t);out[0]=a[0]*factor1+b[0]*factor2+c[0]*factor3+d[0]*factor4;out[1]=a[1]*factor1+b[1]*factor2+c[1]*factor3+d[1]*factor4;out[2]=a[2]*factor1+b[2]*factor2+c[2]*factor3+d[2]*factor4;return out} +function bezier(out,a,b,c,d,t){var inverseFactor=1-t;var inverseFactorTimesTwo=inverseFactor*inverseFactor;var factorTimes2=t*t;var factor1=inverseFactorTimesTwo*inverseFactor;var factor2=3*t*inverseFactorTimesTwo;var factor3=3*factorTimes2*inverseFactor;var factor4=factorTimes2*t;out[0]=a[0]*factor1+b[0]*factor2+c[0]*factor3+d[0]*factor4;out[1]=a[1]*factor1+b[1]*factor2+c[1]*factor3+d[1]*factor4;out[2]=a[2]*factor1+b[2]*factor2+c[2]*factor3+d[2]*factor4;return out} +function random$3(out,scale){scale=scale||1;var r=RANDOM()*2*Math.PI;var z=RANDOM()*2-1;var zScale=Math.sqrt(1-z*z)*scale;out[0]=Math.cos(r)*zScale;out[1]=Math.sin(r)*zScale;out[2]=z*scale;return out}function transformMat4$2(out,a,m){var x=a[0],y=a[1],z=a[2];var w=m[3]*x+m[7]*y+m[11]*z+m[15];w=w||1;out[0]=(m[0]*x+m[4]*y+m[8]*z+m[12])/w;out[1]=(m[1]*x+m[5]*y+m[9]*z+m[13])/w;out[2]=(m[2]*x+m[6]*y+m[10]*z+m[14])/w;return out} +function transformMat3$1(out,a,m){var x=a[0],y=a[1],z=a[2];out[0]=x*m[0]+y*m[3]+z*m[6];out[1]=x*m[1]+y*m[4]+z*m[7];out[2]=x*m[2]+y*m[5]+z*m[8];return out}function transformQuat$1(out,a,q){var qx=q[0],qy=q[1],qz=q[2],qw=q[3];var x=a[0],y=a[1],z=a[2];var uvx=qy*z-qz*y,uvy=qz*x-qx*z,uvz=qx*y-qy*x;var uuvx=qy*uvz-qz*uvy,uuvy=qz*uvx-qx*uvz,uuvz=qx*uvy-qy*uvx;var w2=qw*2;uvx*=w2;uvy*=w2;uvz*=w2;uuvx*=2;uuvy*=2;uuvz*=2;out[0]=x+uvx+uuvx;out[1]=y+uvy+uuvy;out[2]=z+uvz+uuvz;return out} +function rotateX$2(out,a,b,rad){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[0];r[1]=p[1]*Math.cos(rad)-p[2]*Math.sin(rad);r[2]=p[1]*Math.sin(rad)+p[2]*Math.cos(rad);out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out}function rotateY$2(out,a,b,rad){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[2]*Math.sin(rad)+p[0]*Math.cos(rad);r[1]=p[1];r[2]=p[2]*Math.cos(rad)-p[0]*Math.sin(rad);out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out} +function rotateZ$2(out,a,b,rad){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[0]*Math.cos(rad)-p[1]*Math.sin(rad);r[1]=p[0]*Math.sin(rad)+p[1]*Math.cos(rad);r[2]=p[2];out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out}function angle$1(a,b){var ax=a[0],ay=a[1],az=a[2],bx=b[0],by=b[1],bz=b[2],mag=Math.sqrt((ax*ax+ay*ay+az*az)*(bx*bx+by*by+bz*bz)),cosine=mag&&dot$4(a,b)/mag;return Math.acos(Math.min(Math.max(cosine,-1),1))} +function zero$2(out){out[0]=0;out[1]=0;out[2]=0;return out}function str$4(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"}function exactEquals$4(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]}function equals$4(a,b){var a0=a[0],a1=a[1],a2=a[2];var b0=b[0],b1=b[1],b2=b[2];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))}var sub$2=subtract$2; +var mul$4=multiply$4;var div$2=divide$2;var dist$2=distance$2;var sqrDist$2=squaredDistance$2;var len$4=length$4;var sqrLen$4=squaredLength$4;var forEach$2=function(){var vec=create$4();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride)stride=3;if(!offset)offset=0;if(count)l=Math.min(count*stride+offset,a.length);else l=a.length;for(i=offset;i0)len=1/Math.sqrt(len);out[0]=x*len;out[1]=y*len;out[2]=z*len;out[3]=w*len;return out}function dot$3(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]} +function cross$1(out,u,v,w){var A=v[0]*w[1]-v[1]*w[0],B=v[0]*w[2]-v[2]*w[0],C=v[0]*w[3]-v[3]*w[0],D=v[1]*w[2]-v[2]*w[1],E=v[1]*w[3]-v[3]*w[1],F=v[2]*w[3]-v[3]*w[2];var G=u[0];var H=u[1];var I=u[2];var J=u[3];out[0]=H*F-I*E+J*D;out[1]=-(G*F)+I*C-J*B;out[2]=G*E-H*C+J*A;out[3]=-(G*D)+H*B-I*A;return out}function lerp$3(out,a,b,t){var ax=a[0];var ay=a[1];var az=a[2];var aw=a[3];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);out[3]=aw+t*(b[3]-aw);return out} +function random$2(out,scale){scale=scale||1;var v1,v2,v3,v4;var s1,s2;do{v1=RANDOM()*2-1;v2=RANDOM()*2-1;s1=v1*v1+v2*v2}while(s1>=1);do{v3=RANDOM()*2-1;v4=RANDOM()*2-1;s2=v3*v3+v4*v4}while(s2>=1);var d=Math.sqrt((1-s1)/s2);out[0]=scale*v1;out[1]=scale*v2;out[2]=scale*v3*d;out[3]=scale*v4*d;return out} +function transformMat4$1(out,a,m){var x=a[0],y=a[1],z=a[2],w=a[3];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12]*w;out[1]=m[1]*x+m[5]*y+m[9]*z+m[13]*w;out[2]=m[2]*x+m[6]*y+m[10]*z+m[14]*w;out[3]=m[3]*x+m[7]*y+m[11]*z+m[15]*w;return out} +function transformQuat(out,a,q){var x=a[0],y=a[1],z=a[2];var qx=q[0],qy=q[1],qz=q[2],qw=q[3];var ix=qw*x+qy*z-qz*y;var iy=qw*y+qz*x-qx*z;var iz=qw*z+qx*y-qy*x;var iw=-qx*x-qy*y-qz*z;out[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;out[3]=a[3];return out}function zero$1(out){out[0]=0;out[1]=0;out[2]=0;out[3]=0;return out}function str$3(a){return"vec4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"} +function exactEquals$3(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]}function equals$3(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var b0=b[0],b1=b[1],b2=b[2],b3=b[3];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))}var sub$1=subtract$1;var mul$3=multiply$3;var div$1=divide$1; +var dist$1=distance$1;var sqrDist$1=squaredDistance$1;var len$3=length$3;var sqrLen$3=squaredLength$3;var forEach$1=function(){var vec=create$3();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride)stride=4;if(!offset)offset=0;if(count)l=Math.min(count*stride+offset,a.length);else l=a.length;for(i=offset;iEPSILON){out_axis[0]=q[0]/s;out_axis[1]=q[1]/s;out_axis[2]=q[2]/s}else{out_axis[0]=1;out_axis[1]=0;out_axis[2]=0}return rad}function getAngle(a,b){var dotproduct=dot$2(a,b);return Math.acos(2*dotproduct*dotproduct-1)} +function multiply$2(out,a,b){var ax=a[0],ay=a[1],az=a[2],aw=a[3];var bx=b[0],by=b[1],bz=b[2],bw=b[3];out[0]=ax*bw+aw*bx+ay*bz-az*by;out[1]=ay*bw+aw*by+az*bx-ax*bz;out[2]=az*bw+aw*bz+ax*by-ay*bx;out[3]=aw*bw-ax*bx-ay*by-az*bz;return out}function rotateX$1(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3];var bx=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw+aw*bx;out[1]=ay*bw+az*bx;out[2]=az*bw-ay*bx;out[3]=aw*bw-ax*bx;return out} +function rotateY$1(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3];var by=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw-az*by;out[1]=ay*bw+aw*by;out[2]=az*bw+ax*by;out[3]=aw*bw-ay*by;return out}function rotateZ$1(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3];var bz=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw+ay*bz;out[1]=ay*bw-ax*bz;out[2]=az*bw+aw*bz;out[3]=aw*bw-az*bz;return out} +function calculateW(out,a){var x=a[0],y=a[1],z=a[2];out[0]=x;out[1]=y;out[2]=z;out[3]=Math.sqrt(Math.abs(1-x*x-y*y-z*z));return out}function exp(out,a){var x=a[0],y=a[1],z=a[2],w=a[3];var r=Math.sqrt(x*x+y*y+z*z);var et=Math.exp(w);var s=r>0?et*Math.sin(r)/r:0;out[0]=x*s;out[1]=y*s;out[2]=z*s;out[3]=et*Math.cos(r);return out} +function ln(out,a){var x=a[0],y=a[1],z=a[2],w=a[3];var r=Math.sqrt(x*x+y*y+z*z);var t=r>0?Math.atan2(r,w)/r:0;out[0]=x*t;out[1]=y*t;out[2]=z*t;out[3]=.5*Math.log(x*x+y*y+z*z+w*w);return out}function pow(out,a,b){ln(out,a);scale$2(out,out,b);exp(out,out);return out} +function slerp(out,a,b,t){var ax=a[0],ay=a[1],az=a[2],aw=a[3];var bx=b[0],by=b[1],bz=b[2],bw=b[3];var omega,cosom,sinom,scale0,scale1;cosom=ax*bx+ay*by+az*bz+aw*bw;if(cosom<0){cosom=-cosom;bx=-bx;by=-by;bz=-bz;bw=-bw}if(1-cosom>EPSILON){omega=Math.acos(cosom);sinom=Math.sin(omega);scale0=Math.sin((1-t)*omega)/sinom;scale1=Math.sin(t*omega)/sinom}else{scale0=1-t;scale1=t}out[0]=scale0*ax+scale1*bx;out[1]=scale0*ay+scale1*by;out[2]=scale0*az+scale1*bz;out[3]=scale0*aw+scale1*bw;return out} +function random$1(out){var u1=RANDOM();var u2=RANDOM();var u3=RANDOM();var sqrt1MinusU1=Math.sqrt(1-u1);var sqrtU1=Math.sqrt(u1);out[0]=sqrt1MinusU1*Math.sin(2*Math.PI*u2);out[1]=sqrt1MinusU1*Math.cos(2*Math.PI*u2);out[2]=sqrtU1*Math.sin(2*Math.PI*u3);out[3]=sqrtU1*Math.cos(2*Math.PI*u3);return out}function invert$1(out,a){var a0=a[0],a1=a[1],a2=a[2],a3=a[3];var dot=a0*a0+a1*a1+a2*a2+a3*a3;var invDot=dot?1/dot:0;out[0]=-a0*invDot;out[1]=-a1*invDot;out[2]=-a2*invDot;out[3]=a3*invDot;return out} +function conjugate$1(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];out[3]=a[3];return out} +function fromMat3(out,m){var fTrace=m[0]+m[4]+m[8];var fRoot;if(fTrace>0){fRoot=Math.sqrt(fTrace+1);out[3]=.5*fRoot;fRoot=.5/fRoot;out[0]=(m[5]-m[7])*fRoot;out[1]=(m[6]-m[2])*fRoot;out[2]=(m[1]-m[3])*fRoot}else{var i=0;if(m[4]>m[0])i=1;if(m[8]>m[i*3+i])i=2;var j=(i+1)%3;var k=(i+2)%3;fRoot=Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k]+1);out[i]=.5*fRoot;fRoot=.5/fRoot;out[3]=(m[j*3+k]-m[k*3+j])*fRoot;out[j]=(m[j*3+i]+m[i*3+j])*fRoot;out[k]=(m[k*3+i]+m[i*3+k])*fRoot}return out} +function fromEuler(out,x,y,z){var order=arguments.length>4&&arguments[4]!==undefined?arguments[4]:ANGLE_ORDER;var halfToRad=Math.PI/360;x*=halfToRad;z*=halfToRad;y*=halfToRad;var sx=Math.sin(x);var cx=Math.cos(x);var sy=Math.sin(y);var cy=Math.cos(y);var sz=Math.sin(z);var cz=Math.cos(z);switch(order){case "xyz":out[0]=sx*cy*cz+cx*sy*sz;out[1]=cx*sy*cz-sx*cy*sz;out[2]=cx*cy*sz+sx*sy*cz;out[3]=cx*cy*cz-sx*sy*sz;break;case "xzy":out[0]=sx*cy*cz-cx*sy*sz;out[1]=cx*sy*cz-sx*cy*sz;out[2]=cx*cy*sz+sx*sy* +cz;out[3]=cx*cy*cz+sx*sy*sz;break;case "yxz":out[0]=sx*cy*cz+cx*sy*sz;out[1]=cx*sy*cz-sx*cy*sz;out[2]=cx*cy*sz-sx*sy*cz;out[3]=cx*cy*cz+sx*sy*sz;break;case "yzx":out[0]=sx*cy*cz+cx*sy*sz;out[1]=cx*sy*cz+sx*cy*sz;out[2]=cx*cy*sz-sx*sy*cz;out[3]=cx*cy*cz-sx*sy*sz;break;case "zxy":out[0]=sx*cy*cz-cx*sy*sz;out[1]=cx*sy*cz+sx*cy*sz;out[2]=cx*cy*sz+sx*sy*cz;out[3]=cx*cy*cz-sx*sy*sz;break;case "zyx":out[0]=sx*cy*cz-cx*sy*sz;out[1]=cx*sy*cz+sx*cy*sz;out[2]=cx*cy*sz-sx*sy*cz;out[3]=cx*cy*cz+sx*sy*sz;break; +default:throw new Error("Unknown angle order "+order);}return out}function str$2(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"}var clone$2=clone$3;var fromValues$2=fromValues$3;var copy$2=copy$3;var set$2=set$3;var add$2=add$3;var mul$2=multiply$2;var scale$2=scale$3;var dot$2=dot$3;var lerp$2=lerp$3;var length$2=length$3;var len$2=length$2;var squaredLength$2=squaredLength$3;var sqrLen$2=squaredLength$2;var normalize$2=normalize$3;var exactEquals$2=exactEquals$3; +function equals$2(a,b){return Math.abs(dot$3(a,b))>=1-EPSILON} +var rotationTo=function(){var tmpvec3=create$4();var xUnitVec3=fromValues$4(1,0,0);var yUnitVec3=fromValues$4(0,1,0);return function(out,a,b){var dot=dot$4(a,b);if(dot<-.999999){cross$2(tmpvec3,xUnitVec3,a);if(len$4(tmpvec3)<1E-6)cross$2(tmpvec3,yUnitVec3,a);normalize$4(tmpvec3,tmpvec3);setAxisAngle(out,tmpvec3,Math.PI);return out}else if(dot>.999999){out[0]=0;out[1]=0;out[2]=0;out[3]=1;return out}else{cross$2(tmpvec3,a,b);out[0]=tmpvec3[0];out[1]=tmpvec3[1];out[2]=tmpvec3[2];out[3]=1+dot;return normalize$2(out, +out)}}}();var sqlerp=function(){var temp1=create$2();var temp2=create$2();return function(out,a,b,c,d,t){slerp(temp1,a,d,t);slerp(temp2,b,c,t);slerp(out,temp1,temp2,2*t*(1-t));return out}}();var setAxes=function(){var matr=create$6();return function(out,view,right,up){matr[0]=right[0];matr[3]=right[1];matr[6]=right[2];matr[1]=up[0];matr[4]=up[1];matr[7]=up[2];matr[2]=-view[0];matr[5]=-view[1];matr[8]=-view[2];return normalize$2(out,fromMat3(out,matr))}}(); +var quat=Object.freeze({__proto__:null,create:create$2,identity:identity$1,setAxisAngle:setAxisAngle,getAxisAngle:getAxisAngle,getAngle:getAngle,multiply:multiply$2,rotateX:rotateX$1,rotateY:rotateY$1,rotateZ:rotateZ$1,calculateW:calculateW,exp:exp,ln:ln,pow:pow,slerp:slerp,random:random$1,invert:invert$1,conjugate:conjugate$1,fromMat3:fromMat3,fromEuler:fromEuler,str:str$2,clone:clone$2,fromValues:fromValues$2,copy:copy$2,set:set$2,add:add$2,mul:mul$2,scale:scale$2,dot:dot$2,lerp:lerp$2,length:length$2, +len:len$2,squaredLength:squaredLength$2,sqrLen:sqrLen$2,normalize:normalize$2,exactEquals:exactEquals$2,equals:equals$2,rotationTo:rotationTo,sqlerp:sqlerp,setAxes:setAxes});function create$1(){var dq=new ARRAY_TYPE(8);if(ARRAY_TYPE!=Float32Array){dq[0]=0;dq[1]=0;dq[2]=0;dq[4]=0;dq[5]=0;dq[6]=0;dq[7]=0}dq[3]=1;return dq}function clone$1(a){var dq=new ARRAY_TYPE(8);dq[0]=a[0];dq[1]=a[1];dq[2]=a[2];dq[3]=a[3];dq[4]=a[4];dq[5]=a[5];dq[6]=a[6];dq[7]=a[7];return dq} +function fromValues$1(x1,y1,z1,w1,x2,y2,z2,w2){var dq=new ARRAY_TYPE(8);dq[0]=x1;dq[1]=y1;dq[2]=z1;dq[3]=w1;dq[4]=x2;dq[5]=y2;dq[6]=z2;dq[7]=w2;return dq}function fromRotationTranslationValues(x1,y1,z1,w1,x2,y2,z2){var dq=new ARRAY_TYPE(8);dq[0]=x1;dq[1]=y1;dq[2]=z1;dq[3]=w1;var ax=x2*.5,ay=y2*.5,az=z2*.5;dq[4]=ax*w1+ay*z1-az*y1;dq[5]=ay*w1+az*x1-ax*z1;dq[6]=az*w1+ax*y1-ay*x1;dq[7]=-ax*x1-ay*y1-az*z1;return dq} +function fromRotationTranslation(out,q,t){var ax=t[0]*.5,ay=t[1]*.5,az=t[2]*.5,bx=q[0],by=q[1],bz=q[2],bw=q[3];out[0]=bx;out[1]=by;out[2]=bz;out[3]=bw;out[4]=ax*bw+ay*bz-az*by;out[5]=ay*bw+az*bx-ax*bz;out[6]=az*bw+ax*by-ay*bx;out[7]=-ax*bx-ay*by-az*bz;return out}function fromTranslation(out,t){out[0]=0;out[1]=0;out[2]=0;out[3]=1;out[4]=t[0]*.5;out[5]=t[1]*.5;out[6]=t[2]*.5;out[7]=0;return out} +function fromRotation(out,q){out[0]=q[0];out[1]=q[1];out[2]=q[2];out[3]=q[3];out[4]=0;out[5]=0;out[6]=0;out[7]=0;return out}function fromMat4(out,a){var outer=create$2();getRotation(outer,a);var t=new ARRAY_TYPE(3);getTranslation$1(t,a);fromRotationTranslation(out,outer,t);return out}function copy$1(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];out[4]=a[4];out[5]=a[5];out[6]=a[6];out[7]=a[7];return out} +function identity(out){out[0]=0;out[1]=0;out[2]=0;out[3]=1;out[4]=0;out[5]=0;out[6]=0;out[7]=0;return out}function set$1(out,x1,y1,z1,w1,x2,y2,z2,w2){out[0]=x1;out[1]=y1;out[2]=z1;out[3]=w1;out[4]=x2;out[5]=y2;out[6]=z2;out[7]=w2;return out}var getReal=copy$2;function getDual(out,a){out[0]=a[4];out[1]=a[5];out[2]=a[6];out[3]=a[7];return out}var setReal=copy$2;function setDual(out,q){out[4]=q[0];out[5]=q[1];out[6]=q[2];out[7]=q[3];return out} +function getTranslation(out,a){var ax=a[4],ay=a[5],az=a[6],aw=a[7],bx=-a[0],by=-a[1],bz=-a[2],bw=a[3];out[0]=(ax*bw+aw*bx+ay*bz-az*by)*2;out[1]=(ay*bw+aw*by+az*bx-ax*bz)*2;out[2]=(az*bw+aw*bz+ax*by-ay*bx)*2;return out} +function translate(out,a,v){var ax1=a[0],ay1=a[1],az1=a[2],aw1=a[3],bx1=v[0]*.5,by1=v[1]*.5,bz1=v[2]*.5,ax2=a[4],ay2=a[5],az2=a[6],aw2=a[7];out[0]=ax1;out[1]=ay1;out[2]=az1;out[3]=aw1;out[4]=aw1*bx1+ay1*bz1-az1*by1+ax2;out[5]=aw1*by1+az1*bx1-ax1*bz1+ay2;out[6]=aw1*bz1+ax1*by1-ay1*bx1+az2;out[7]=-ax1*bx1-ay1*by1-az1*bz1+aw2;return out} +function rotateX(out,a,rad){var bx=-a[0],by=-a[1],bz=-a[2],bw=a[3],ax=a[4],ay=a[5],az=a[6],aw=a[7],ax1=ax*bw+aw*bx+ay*bz-az*by,ay1=ay*bw+aw*by+az*bx-ax*bz,az1=az*bw+aw*bz+ax*by-ay*bx,aw1=aw*bw-ax*bx-ay*by-az*bz;rotateX$1(out,a,rad);bx=out[0];by=out[1];bz=out[2];bw=out[3];out[4]=ax1*bw+aw1*bx+ay1*bz-az1*by;out[5]=ay1*bw+aw1*by+az1*bx-ax1*bz;out[6]=az1*bw+aw1*bz+ax1*by-ay1*bx;out[7]=aw1*bw-ax1*bx-ay1*by-az1*bz;return out} +function rotateY(out,a,rad){var bx=-a[0],by=-a[1],bz=-a[2],bw=a[3],ax=a[4],ay=a[5],az=a[6],aw=a[7],ax1=ax*bw+aw*bx+ay*bz-az*by,ay1=ay*bw+aw*by+az*bx-ax*bz,az1=az*bw+aw*bz+ax*by-ay*bx,aw1=aw*bw-ax*bx-ay*by-az*bz;rotateY$1(out,a,rad);bx=out[0];by=out[1];bz=out[2];bw=out[3];out[4]=ax1*bw+aw1*bx+ay1*bz-az1*by;out[5]=ay1*bw+aw1*by+az1*bx-ax1*bz;out[6]=az1*bw+aw1*bz+ax1*by-ay1*bx;out[7]=aw1*bw-ax1*bx-ay1*by-az1*bz;return out} +function rotateZ(out,a,rad){var bx=-a[0],by=-a[1],bz=-a[2],bw=a[3],ax=a[4],ay=a[5],az=a[6],aw=a[7],ax1=ax*bw+aw*bx+ay*bz-az*by,ay1=ay*bw+aw*by+az*bx-ax*bz,az1=az*bw+aw*bz+ax*by-ay*bx,aw1=aw*bw-ax*bx-ay*by-az*bz;rotateZ$1(out,a,rad);bx=out[0];by=out[1];bz=out[2];bw=out[3];out[4]=ax1*bw+aw1*bx+ay1*bz-az1*by;out[5]=ay1*bw+aw1*by+az1*bx-ax1*bz;out[6]=az1*bw+aw1*bz+ax1*by-ay1*bx;out[7]=aw1*bw-ax1*bx-ay1*by-az1*bz;return out} +function rotateByQuatAppend(out,a,q){var qx=q[0],qy=q[1],qz=q[2],qw=q[3],ax=a[0],ay=a[1],az=a[2],aw=a[3];out[0]=ax*qw+aw*qx+ay*qz-az*qy;out[1]=ay*qw+aw*qy+az*qx-ax*qz;out[2]=az*qw+aw*qz+ax*qy-ay*qx;out[3]=aw*qw-ax*qx-ay*qy-az*qz;ax=a[4];ay=a[5];az=a[6];aw=a[7];out[4]=ax*qw+aw*qx+ay*qz-az*qy;out[5]=ay*qw+aw*qy+az*qx-ax*qz;out[6]=az*qw+aw*qz+ax*qy-ay*qx;out[7]=aw*qw-ax*qx-ay*qy-az*qz;return out} +function rotateByQuatPrepend(out,q,a){var qx=q[0],qy=q[1],qz=q[2],qw=q[3],bx=a[0],by=a[1],bz=a[2],bw=a[3];out[0]=qx*bw+qw*bx+qy*bz-qz*by;out[1]=qy*bw+qw*by+qz*bx-qx*bz;out[2]=qz*bw+qw*bz+qx*by-qy*bx;out[3]=qw*bw-qx*bx-qy*by-qz*bz;bx=a[4];by=a[5];bz=a[6];bw=a[7];out[4]=qx*bw+qw*bx+qy*bz-qz*by;out[5]=qy*bw+qw*by+qz*bx-qx*bz;out[6]=qz*bw+qw*bz+qx*by-qy*bx;out[7]=qw*bw-qx*bx-qy*by-qz*bz;return out} +function rotateAroundAxis(out,a,axis,rad){if(Math.abs(rad)0){magnitude=Math.sqrt(magnitude);var a0=a[0]/magnitude;var a1=a[1]/magnitude;var a2=a[2]/magnitude;var a3=a[3]/magnitude;var b0=a[4];var b1=a[5];var b2=a[6];var b3=a[7];var a_dot_b=a0*b0+a1*b1+a2*b2+a3*b3;out[0]=a0;out[1]=a1;out[2]=a2;out[3]=a3;out[4]=(b0-a0*a_dot_b)/magnitude;out[5]=(b1-a1*a_dot_b)/magnitude;out[6]=(b2-a2*a_dot_b)/magnitude;out[7]=(b3-a3*a_dot_b)/magnitude}return out} +function str$1(a){return"quat2("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+")"}function exactEquals$1(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]&&a[6]===b[6]&&a[7]===b[7]} +function equals$1(a,b){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5],a6=a[6],a7=a[7];var b0=b[0],b1=b[1],b2=b[2],b3=b[3],b4=b[4],b5=b[5],b6=b[6],b7=b[7];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))&&Math.abs(a3-b3)<=EPSILON*Math.max(1,Math.abs(a3),Math.abs(b3))&&Math.abs(a4-b4)<=EPSILON*Math.max(1,Math.abs(a4),Math.abs(b4))&&Math.abs(a5-b5)<= +EPSILON*Math.max(1,Math.abs(a5),Math.abs(b5))&&Math.abs(a6-b6)<=EPSILON*Math.max(1,Math.abs(a6),Math.abs(b6))&&Math.abs(a7-b7)<=EPSILON*Math.max(1,Math.abs(a7),Math.abs(b7))} +var quat2=Object.freeze({__proto__:null,create:create$1,clone:clone$1,fromValues:fromValues$1,fromRotationTranslationValues:fromRotationTranslationValues,fromRotationTranslation:fromRotationTranslation,fromTranslation:fromTranslation,fromRotation:fromRotation,fromMat4:fromMat4,copy:copy$1,identity:identity,set:set$1,getReal:getReal,getDual:getDual,setReal:setReal,setDual:setDual,getTranslation:getTranslation,translate:translate,rotateX:rotateX,rotateY:rotateY,rotateZ:rotateZ,rotateByQuatAppend:rotateByQuatAppend, +rotateByQuatPrepend:rotateByQuatPrepend,rotateAroundAxis:rotateAroundAxis,add:add$1,multiply:multiply$1,mul:mul$1,scale:scale$1,dot:dot$1,lerp:lerp$1,invert:invert,conjugate:conjugate,length:length$1,len:len$1,squaredLength:squaredLength$1,sqrLen:sqrLen$1,normalize:normalize$1,str:str$1,exactEquals:exactEquals$1,equals:equals$1});function create(){var out=new ARRAY_TYPE(2);if(ARRAY_TYPE!=Float32Array){out[0]=0;out[1]=0}return out} +function clone(a){var out=new ARRAY_TYPE(2);out[0]=a[0];out[1]=a[1];return out}function fromValues(x,y){var out=new ARRAY_TYPE(2);out[0]=x;out[1]=y;return out}function copy(out,a){out[0]=a[0];out[1]=a[1];return out}function set(out,x,y){out[0]=x;out[1]=y;return out}function add(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];return out}function subtract(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];return out}function multiply(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];return out} +function divide(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];return out}function ceil(out,a){out[0]=Math.ceil(a[0]);out[1]=Math.ceil(a[1]);return out}function floor(out,a){out[0]=Math.floor(a[0]);out[1]=Math.floor(a[1]);return out}function min(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);return out}function max(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);return out}function round(out,a){out[0]=Math.round(a[0]);out[1]=Math.round(a[1]);return out} +function scale(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;return out}function scaleAndAdd(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;return out}function distance(a,b){var x=b[0]-a[0],y=b[1]-a[1];return Math.hypot(x,y)}function squaredDistance(a,b){var x=b[0]-a[0],y=b[1]-a[1];return x*x+y*y}function length(a){var x=a[0],y=a[1];return Math.hypot(x,y)}function squaredLength(a){var x=a[0],y=a[1];return x*x+y*y}function negate(out,a){out[0]=-a[0];out[1]=-a[1];return out} +function inverse(out,a){out[0]=1/a[0];out[1]=1/a[1];return out}function normalize(out,a){var x=a[0],y=a[1];var len=x*x+y*y;if(len>0)len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;return out}function dot(a,b){return a[0]*b[0]+a[1]*b[1]}function cross(out,a,b){var z=a[0]*b[1]-a[1]*b[0];out[0]=out[1]=0;out[2]=z;return out}function lerp(out,a,b,t){var ax=a[0],ay=a[1];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);return out} +function random(out,scale){scale=scale||1;var r=RANDOM()*2*Math.PI;out[0]=Math.cos(r)*scale;out[1]=Math.sin(r)*scale;return out}function transformMat2(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[2]*y;out[1]=m[1]*x+m[3]*y;return out}function transformMat2d(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[2]*y+m[4];out[1]=m[1]*x+m[3]*y+m[5];return out}function transformMat3(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[3]*y+m[6];out[1]=m[1]*x+m[4]*y+m[7];return out} +function transformMat4(out,a,m){var x=a[0];var y=a[1];out[0]=m[0]*x+m[4]*y+m[12];out[1]=m[1]*x+m[5]*y+m[13];return out}function rotate(out,a,b,rad){var p0=a[0]-b[0],p1=a[1]-b[1],sinC=Math.sin(rad),cosC=Math.cos(rad);out[0]=p0*cosC-p1*sinC+b[0];out[1]=p0*sinC+p1*cosC+b[1];return out}function angle(a,b){var x1=a[0],y1=a[1],x2=b[0],y2=b[1],mag=Math.sqrt((x1*x1+y1*y1)*(x2*x2+y2*y2)),cosine=mag&&(x1*x2+y1*y2)/mag;return Math.acos(Math.min(Math.max(cosine,-1),1))} +function zero(out){out[0]=0;out[1]=0;return out}function str(a){return"vec2("+a[0]+", "+a[1]+")"}function exactEquals(a,b){return a[0]===b[0]&&a[1]===b[1]}function equals(a,b){var a0=a[0],a1=a[1];var b0=b[0],b1=b[1];return Math.abs(a0-b0)<=EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))}var len=length;var sub=subtract;var mul=multiply;var div=divide;var dist=distance;var sqrDist=squaredDistance;var sqrLen=squaredLength; +var forEach=function(){var vec=create();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride)stride=2;if(!offset)offset=0;if(count)l=Math.min(count*stride+offset,a.length);else l=a.length;for(i=offset;i=b&&c=a?1024*(d-55296)+(a-56320)+65536:d}return 56320<=b&&57343>=b&&1<=c?(d=a.charCodeAt(c-1),a=b,55296<=d&&56319>=d?1024*(d-55296)+(a-56320)+65536:a):b}function l(a,c,b){var d=[a].concat(c).concat([b]),e=d[d.length-2],g=d.lastIndexOf(14);if(1=a||1757==a||1807==a||2274==a||3406==a||69821==a||70082<=a&&70083>=a||72250==a||72326<=a&&72329>=a||73030==a?12:13==a?0:10==a?1:0<=a&&9>=a||11<=a&&12>=a||14<=a&&31>=a||127<=a&&159>=a||173==a||1564==a||6158==a||8203==a||8206<=a&&8207>=a||8232==a||8233==a||8234<=a&&8238>=a||8288<=a&&8292>=a||8293==a||8294<=a&&8303>=a||55296<=a&&57343>=a||65279==a||65520<= +a&&65528>=a||65529<=a&&65531>=a||113824<=a&&113827>=a||119155<=a&&119162>=a||917504==a||917505==a||917506<=a&&917535>=a||917632<=a&&917759>=a||918E3<=a&&921599>=a?2:768<=a&&879>=a||1155<=a&&1159>=a||1160<=a&&1161>=a||1425<=a&&1469>=a||1471==a||1473<=a&&1474>=a||1476<=a&&1477>=a||1479==a||1552<=a&&1562>=a||1611<=a&&1631>=a||1648==a||1750<=a&&1756>=a||1759<=a&&1764>=a||1767<=a&&1768>=a||1770<=a&&1773>=a||1809==a||1840<=a&&1866>=a||1958<=a&&1968>=a||2027<=a&&2035>=a||2070<=a&&2073>=a||2075<=a&&2083>= +a||2085<=a&&2087>=a||2089<=a&&2093>=a||2137<=a&&2139>=a||2260<=a&&2273>=a||2275<=a&&2306>=a||2362==a||2364==a||2369<=a&&2376>=a||2381==a||2385<=a&&2391>=a||2402<=a&&2403>=a||2433==a||2492==a||2494==a||2497<=a&&2500>=a||2509==a||2519==a||2530<=a&&2531>=a||2561<=a&&2562>=a||2620==a||2625<=a&&2626>=a||2631<=a&&2632>=a||2635<=a&&2637>=a||2641==a||2672<=a&&2673>=a||2677==a||2689<=a&&2690>=a||2748==a||2753<=a&&2757>=a||2759<=a&&2760>=a||2765==a||2786<=a&&2787>=a||2810<=a&&2815>=a||2817==a||2876==a||2878== +a||2879==a||2881<=a&&2884>=a||2893==a||2902==a||2903==a||2914<=a&&2915>=a||2946==a||3006==a||3008==a||3021==a||3031==a||3072==a||3134<=a&&3136>=a||3142<=a&&3144>=a||3146<=a&&3149>=a||3157<=a&&3158>=a||3170<=a&&3171>=a||3201==a||3260==a||3263==a||3266==a||3270==a||3276<=a&&3277>=a||3285<=a&&3286>=a||3298<=a&&3299>=a||3328<=a&&3329>=a||3387<=a&&3388>=a||3390==a||3393<=a&&3396>=a||3405==a||3415==a||3426<=a&&3427>=a||3530==a||3535==a||3538<=a&&3540>=a||3542==a||3551==a||3633==a||3636<=a&&3642>=a||3655<= +a&&3662>=a||3761==a||3764<=a&&3769>=a||3771<=a&&3772>=a||3784<=a&&3789>=a||3864<=a&&3865>=a||3893==a||3895==a||3897==a||3953<=a&&3966>=a||3968<=a&&3972>=a||3974<=a&&3975>=a||3981<=a&&3991>=a||3993<=a&&4028>=a||4038==a||4141<=a&&4144>=a||4146<=a&&4151>=a||4153<=a&&4154>=a||4157<=a&&4158>=a||4184<=a&&4185>=a||4190<=a&&4192>=a||4209<=a&&4212>=a||4226==a||4229<=a&&4230>=a||4237==a||4253==a||4957<=a&&4959>=a||5906<=a&&5908>=a||5938<=a&&5940>=a||5970<=a&&5971>=a||6002<=a&&6003>=a||6068<=a&&6069>=a||6071<= +a&&6077>=a||6086==a||6089<=a&&6099>=a||6109==a||6155<=a&&6157>=a||6277<=a&&6278>=a||6313==a||6432<=a&&6434>=a||6439<=a&&6440>=a||6450==a||6457<=a&&6459>=a||6679<=a&&6680>=a||6683==a||6742==a||6744<=a&&6750>=a||6752==a||6754==a||6757<=a&&6764>=a||6771<=a&&6780>=a||6783==a||6832<=a&&6845>=a||6846==a||6912<=a&&6915>=a||6964==a||6966<=a&&6970>=a||6972==a||6978==a||7019<=a&&7027>=a||7040<=a&&7041>=a||7074<=a&&7077>=a||7080<=a&&7081>=a||7083<=a&&7085>=a||7142==a||7144<=a&&7145>=a||7149==a||7151<=a&&7153>= +a||7212<=a&&7219>=a||7222<=a&&7223>=a||7376<=a&&7378>=a||7380<=a&&7392>=a||7394<=a&&7400>=a||7405==a||7412==a||7416<=a&&7417>=a||7616<=a&&7673>=a||7675<=a&&7679>=a||8204==a||8400<=a&&8412>=a||8413<=a&&8416>=a||8417==a||8418<=a&&8420>=a||8421<=a&&8432>=a||11503<=a&&11505>=a||11647==a||11744<=a&&11775>=a||12330<=a&&12333>=a||12334<=a&&12335>=a||12441<=a&&12442>=a||42607==a||42608<=a&&42610>=a||42612<=a&&42621>=a||42654<=a&&42655>=a||42736<=a&&42737>=a||43010==a||43014==a||43019==a||43045<=a&&43046>= +a||43204<=a&&43205>=a||43232<=a&&43249>=a||43302<=a&&43309>=a||43335<=a&&43345>=a||43392<=a&&43394>=a||43443==a||43446<=a&&43449>=a||43452==a||43493==a||43561<=a&&43566>=a||43569<=a&&43570>=a||43573<=a&&43574>=a||43587==a||43596==a||43644==a||43696==a||43698<=a&&43700>=a||43703<=a&&43704>=a||43710<=a&&43711>=a||43713==a||43756<=a&&43757>=a||43766==a||44005==a||44008==a||44013==a||64286==a||65024<=a&&65039>=a||65056<=a&&65071>=a||65438<=a&&65439>=a||66045==a||66272==a||66422<=a&&66426>=a||68097<=a&& +68099>=a||68101<=a&&68102>=a||68108<=a&&68111>=a||68152<=a&&68154>=a||68159==a||68325<=a&&68326>=a||69633==a||69688<=a&&69702>=a||69759<=a&&69761>=a||69811<=a&&69814>=a||69817<=a&&69818>=a||69888<=a&&69890>=a||69927<=a&&69931>=a||69933<=a&&69940>=a||70003==a||70016<=a&&70017>=a||70070<=a&&70078>=a||70090<=a&&70092>=a||70191<=a&&70193>=a||70196==a||70198<=a&&70199>=a||70206==a||70367==a||70371<=a&&70378>=a||70400<=a&&70401>=a||70460==a||70462==a||70464==a||70487==a||70502<=a&&70508>=a||70512<=a&&70516>= +a||70712<=a&&70719>=a||70722<=a&&70724>=a||70726==a||70832==a||70835<=a&&70840>=a||70842==a||70845==a||70847<=a&&70848>=a||70850<=a&&70851>=a||71087==a||71090<=a&&71093>=a||71100<=a&&71101>=a||71103<=a&&71104>=a||71132<=a&&71133>=a||71219<=a&&71226>=a||71229==a||71231<=a&&71232>=a||71339==a||71341==a||71344<=a&&71349>=a||71351==a||71453<=a&&71455>=a||71458<=a&&71461>=a||71463<=a&&71467>=a||72193<=a&&72198>=a||72201<=a&&72202>=a||72243<=a&&72248>=a||72251<=a&&72254>=a||72263==a||72273<=a&&72278>=a|| +72281<=a&&72283>=a||72330<=a&&72342>=a||72344<=a&&72345>=a||72752<=a&&72758>=a||72760<=a&&72765>=a||72767==a||72850<=a&&72871>=a||72874<=a&&72880>=a||72882<=a&&72883>=a||72885<=a&&72886>=a||73009<=a&&73014>=a||73018==a||73020<=a&&73021>=a||73023<=a&&73029>=a||73031==a||92912<=a&&92916>=a||92976<=a&&92982>=a||94095<=a&&94098>=a||113821<=a&&113822>=a||119141==a||119143<=a&&119145>=a||119150<=a&&119154>=a||119163<=a&&119170>=a||119173<=a&&119179>=a||119210<=a&&119213>=a||119362<=a&&119364>=a||121344<= +a&&121398>=a||121403<=a&&121452>=a||121461==a||121476==a||121499<=a&&121503>=a||121505<=a&&121519>=a||122880<=a&&122886>=a||122888<=a&&122904>=a||122907<=a&&122913>=a||122915<=a&&122916>=a||122918<=a&&122922>=a||125136<=a&&125142>=a||125252<=a&&125258>=a||917536<=a&&917631>=a||917760<=a&&917999>=a?3:127462<=a&&127487>=a?4:2307==a||2363==a||2366<=a&&2368>=a||2377<=a&&2380>=a||2382<=a&&2383>=a||2434<=a&&2435>=a||2495<=a&&2496>=a||2503<=a&&2504>=a||2507<=a&&2508>=a||2563==a||2622<=a&&2624>=a||2691== +a||2750<=a&&2752>=a||2761==a||2763<=a&&2764>=a||2818<=a&&2819>=a||2880==a||2887<=a&&2888>=a||2891<=a&&2892>=a||3007==a||3009<=a&&3010>=a||3014<=a&&3016>=a||3018<=a&&3020>=a||3073<=a&&3075>=a||3137<=a&&3140>=a||3202<=a&&3203>=a||3262==a||3264<=a&&3265>=a||3267<=a&&3268>=a||3271<=a&&3272>=a||3274<=a&&3275>=a||3330<=a&&3331>=a||3391<=a&&3392>=a||3398<=a&&3400>=a||3402<=a&&3404>=a||3458<=a&&3459>=a||3536<=a&&3537>=a||3544<=a&&3550>=a||3570<=a&&3571>=a||3635==a||3763==a||3902<=a&&3903>=a||3967==a||4145== +a||4155<=a&&4156>=a||4182<=a&&4183>=a||4228==a||6070==a||6078<=a&&6085>=a||6087<=a&&6088>=a||6435<=a&&6438>=a||6441<=a&&6443>=a||6448<=a&&6449>=a||6451<=a&&6456>=a||6681<=a&&6682>=a||6741==a||6743==a||6765<=a&&6770>=a||6916==a||6965==a||6971==a||6973<=a&&6977>=a||6979<=a&&6980>=a||7042==a||7073==a||7078<=a&&7079>=a||7082==a||7143==a||7146<=a&&7148>=a||7150==a||7154<=a&&7155>=a||7204<=a&&7211>=a||7220<=a&&7221>=a||7393==a||7410<=a&&7411>=a||7415==a||43043<=a&&43044>=a||43047==a||43136<=a&&43137>=a|| +43188<=a&&43203>=a||43346<=a&&43347>=a||43395==a||43444<=a&&43445>=a||43450<=a&&43451>=a||43453<=a&&43456>=a||43567<=a&&43568>=a||43571<=a&&43572>=a||43597==a||43755==a||43758<=a&&43759>=a||43765==a||44003<=a&&44004>=a||44006<=a&&44007>=a||44009<=a&&44010>=a||44012==a||69632==a||69634==a||69762==a||69808<=a&&69810>=a||69815<=a&&69816>=a||69932==a||70018==a||70067<=a&&70069>=a||70079<=a&&70080>=a||70188<=a&&70190>=a||70194<=a&&70195>=a||70197==a||70368<=a&&70370>=a||70402<=a&&70403>=a||70463==a||70465<= +a&&70468>=a||70471<=a&&70472>=a||70475<=a&&70477>=a||70498<=a&&70499>=a||70709<=a&&70711>=a||70720<=a&&70721>=a||70725==a||70833<=a&&70834>=a||70841==a||70843<=a&&70844>=a||70846==a||70849==a||71088<=a&&71089>=a||71096<=a&&71099>=a||71102==a||71216<=a&&71218>=a||71227<=a&&71228>=a||71230==a||71340==a||71342<=a&&71343>=a||71350==a||71456<=a&&71457>=a||71462==a||72199<=a&&72200>=a||72249==a||72279<=a&&72280>=a||72343==a||72751==a||72766==a||72873==a||72881==a||72884==a||94033<=a&&94078>=a||119142== +a||119149==a?5:4352<=a&&4447>=a||43360<=a&&43388>=a?6:4448<=a&&4519>=a||55216<=a&&55238>=a?7:4520<=a&&4607>=a||55243<=a&&55291>=a?8:44032==a||44060==a||44088==a||44116==a||44144==a||44172==a||44200==a||44228==a||44256==a||44284==a||44312==a||44340==a||44368==a||44396==a||44424==a||44452==a||44480==a||44508==a||44536==a||44564==a||44592==a||44620==a||44648==a||44676==a||44704==a||44732==a||44760==a||44788==a||44816==a||44844==a||44872==a||44900==a||44928==a||44956==a||44984==a||45012==a||45040==a|| +45068==a||45096==a||45124==a||45152==a||45180==a||45208==a||45236==a||45264==a||45292==a||45320==a||45348==a||45376==a||45404==a||45432==a||45460==a||45488==a||45516==a||45544==a||45572==a||45600==a||45628==a||45656==a||45684==a||45712==a||45740==a||45768==a||45796==a||45824==a||45852==a||45880==a||45908==a||45936==a||45964==a||45992==a||46020==a||46048==a||46076==a||46104==a||46132==a||46160==a||46188==a||46216==a||46244==a||46272==a||46300==a||46328==a||46356==a||46384==a||46412==a||46440==a||46468== +a||46496==a||46524==a||46552==a||46580==a||46608==a||46636==a||46664==a||46692==a||46720==a||46748==a||46776==a||46804==a||46832==a||46860==a||46888==a||46916==a||46944==a||46972==a||47E3==a||47028==a||47056==a||47084==a||47112==a||47140==a||47168==a||47196==a||47224==a||47252==a||47280==a||47308==a||47336==a||47364==a||47392==a||47420==a||47448==a||47476==a||47504==a||47532==a||47560==a||47588==a||47616==a||47644==a||47672==a||47700==a||47728==a||47756==a||47784==a||47812==a||47840==a||47868==a|| +47896==a||47924==a||47952==a||47980==a||48008==a||48036==a||48064==a||48092==a||48120==a||48148==a||48176==a||48204==a||48232==a||48260==a||48288==a||48316==a||48344==a||48372==a||48400==a||48428==a||48456==a||48484==a||48512==a||48540==a||48568==a||48596==a||48624==a||48652==a||48680==a||48708==a||48736==a||48764==a||48792==a||48820==a||48848==a||48876==a||48904==a||48932==a||48960==a||48988==a||49016==a||49044==a||49072==a||49100==a||49128==a||49156==a||49184==a||49212==a||49240==a||49268==a||49296== +a||49324==a||49352==a||49380==a||49408==a||49436==a||49464==a||49492==a||49520==a||49548==a||49576==a||49604==a||49632==a||49660==a||49688==a||49716==a||49744==a||49772==a||49800==a||49828==a||49856==a||49884==a||49912==a||49940==a||49968==a||49996==a||50024==a||50052==a||50080==a||50108==a||50136==a||50164==a||50192==a||50220==a||50248==a||50276==a||50304==a||50332==a||50360==a||50388==a||50416==a||50444==a||50472==a||50500==a||50528==a||50556==a||50584==a||50612==a||50640==a||50668==a||50696==a|| +50724==a||50752==a||50780==a||50808==a||50836==a||50864==a||50892==a||50920==a||50948==a||50976==a||51004==a||51032==a||51060==a||51088==a||51116==a||51144==a||51172==a||51200==a||51228==a||51256==a||51284==a||51312==a||51340==a||51368==a||51396==a||51424==a||51452==a||51480==a||51508==a||51536==a||51564==a||51592==a||51620==a||51648==a||51676==a||51704==a||51732==a||51760==a||51788==a||51816==a||51844==a||51872==a||51900==a||51928==a||51956==a||51984==a||52012==a||52040==a||52068==a||52096==a||52124== +a||52152==a||52180==a||52208==a||52236==a||52264==a||52292==a||52320==a||52348==a||52376==a||52404==a||52432==a||52460==a||52488==a||52516==a||52544==a||52572==a||52600==a||52628==a||52656==a||52684==a||52712==a||52740==a||52768==a||52796==a||52824==a||52852==a||52880==a||52908==a||52936==a||52964==a||52992==a||53020==a||53048==a||53076==a||53104==a||53132==a||53160==a||53188==a||53216==a||53244==a||53272==a||53300==a||53328==a||53356==a||53384==a||53412==a||53440==a||53468==a||53496==a||53524==a|| +53552==a||53580==a||53608==a||53636==a||53664==a||53692==a||53720==a||53748==a||53776==a||53804==a||53832==a||53860==a||53888==a||53916==a||53944==a||53972==a||54E3==a||54028==a||54056==a||54084==a||54112==a||54140==a||54168==a||54196==a||54224==a||54252==a||54280==a||54308==a||54336==a||54364==a||54392==a||54420==a||54448==a||54476==a||54504==a||54532==a||54560==a||54588==a||54616==a||54644==a||54672==a||54700==a||54728==a||54756==a||54784==a||54812==a||54840==a||54868==a||54896==a||54924==a||54952== +a||54980==a||55008==a||55036==a||55064==a||55092==a||55120==a||55148==a||55176==a?9:44033<=a&&44059>=a||44061<=a&&44087>=a||44089<=a&&44115>=a||44117<=a&&44143>=a||44145<=a&&44171>=a||44173<=a&&44199>=a||44201<=a&&44227>=a||44229<=a&&44255>=a||44257<=a&&44283>=a||44285<=a&&44311>=a||44313<=a&&44339>=a||44341<=a&&44367>=a||44369<=a&&44395>=a||44397<=a&&44423>=a||44425<=a&&44451>=a||44453<=a&&44479>=a||44481<=a&&44507>=a||44509<=a&&44535>=a||44537<=a&&44563>=a||44565<=a&&44591>=a||44593<=a&&44619>= +a||44621<=a&&44647>=a||44649<=a&&44675>=a||44677<=a&&44703>=a||44705<=a&&44731>=a||44733<=a&&44759>=a||44761<=a&&44787>=a||44789<=a&&44815>=a||44817<=a&&44843>=a||44845<=a&&44871>=a||44873<=a&&44899>=a||44901<=a&&44927>=a||44929<=a&&44955>=a||44957<=a&&44983>=a||44985<=a&&45011>=a||45013<=a&&45039>=a||45041<=a&&45067>=a||45069<=a&&45095>=a||45097<=a&&45123>=a||45125<=a&&45151>=a||45153<=a&&45179>=a||45181<=a&&45207>=a||45209<=a&&45235>=a||45237<=a&&45263>=a||45265<=a&&45291>=a||45293<=a&&45319>=a|| +45321<=a&&45347>=a||45349<=a&&45375>=a||45377<=a&&45403>=a||45405<=a&&45431>=a||45433<=a&&45459>=a||45461<=a&&45487>=a||45489<=a&&45515>=a||45517<=a&&45543>=a||45545<=a&&45571>=a||45573<=a&&45599>=a||45601<=a&&45627>=a||45629<=a&&45655>=a||45657<=a&&45683>=a||45685<=a&&45711>=a||45713<=a&&45739>=a||45741<=a&&45767>=a||45769<=a&&45795>=a||45797<=a&&45823>=a||45825<=a&&45851>=a||45853<=a&&45879>=a||45881<=a&&45907>=a||45909<=a&&45935>=a||45937<=a&&45963>=a||45965<=a&&45991>=a||45993<=a&&46019>=a||46021<= +a&&46047>=a||46049<=a&&46075>=a||46077<=a&&46103>=a||46105<=a&&46131>=a||46133<=a&&46159>=a||46161<=a&&46187>=a||46189<=a&&46215>=a||46217<=a&&46243>=a||46245<=a&&46271>=a||46273<=a&&46299>=a||46301<=a&&46327>=a||46329<=a&&46355>=a||46357<=a&&46383>=a||46385<=a&&46411>=a||46413<=a&&46439>=a||46441<=a&&46467>=a||46469<=a&&46495>=a||46497<=a&&46523>=a||46525<=a&&46551>=a||46553<=a&&46579>=a||46581<=a&&46607>=a||46609<=a&&46635>=a||46637<=a&&46663>=a||46665<=a&&46691>=a||46693<=a&&46719>=a||46721<=a&& +46747>=a||46749<=a&&46775>=a||46777<=a&&46803>=a||46805<=a&&46831>=a||46833<=a&&46859>=a||46861<=a&&46887>=a||46889<=a&&46915>=a||46917<=a&&46943>=a||46945<=a&&46971>=a||46973<=a&&46999>=a||47001<=a&&47027>=a||47029<=a&&47055>=a||47057<=a&&47083>=a||47085<=a&&47111>=a||47113<=a&&47139>=a||47141<=a&&47167>=a||47169<=a&&47195>=a||47197<=a&&47223>=a||47225<=a&&47251>=a||47253<=a&&47279>=a||47281<=a&&47307>=a||47309<=a&&47335>=a||47337<=a&&47363>=a||47365<=a&&47391>=a||47393<=a&&47419>=a||47421<=a&&47447>= +a||47449<=a&&47475>=a||47477<=a&&47503>=a||47505<=a&&47531>=a||47533<=a&&47559>=a||47561<=a&&47587>=a||47589<=a&&47615>=a||47617<=a&&47643>=a||47645<=a&&47671>=a||47673<=a&&47699>=a||47701<=a&&47727>=a||47729<=a&&47755>=a||47757<=a&&47783>=a||47785<=a&&47811>=a||47813<=a&&47839>=a||47841<=a&&47867>=a||47869<=a&&47895>=a||47897<=a&&47923>=a||47925<=a&&47951>=a||47953<=a&&47979>=a||47981<=a&&48007>=a||48009<=a&&48035>=a||48037<=a&&48063>=a||48065<=a&&48091>=a||48093<=a&&48119>=a||48121<=a&&48147>=a|| +48149<=a&&48175>=a||48177<=a&&48203>=a||48205<=a&&48231>=a||48233<=a&&48259>=a||48261<=a&&48287>=a||48289<=a&&48315>=a||48317<=a&&48343>=a||48345<=a&&48371>=a||48373<=a&&48399>=a||48401<=a&&48427>=a||48429<=a&&48455>=a||48457<=a&&48483>=a||48485<=a&&48511>=a||48513<=a&&48539>=a||48541<=a&&48567>=a||48569<=a&&48595>=a||48597<=a&&48623>=a||48625<=a&&48651>=a||48653<=a&&48679>=a||48681<=a&&48707>=a||48709<=a&&48735>=a||48737<=a&&48763>=a||48765<=a&&48791>=a||48793<=a&&48819>=a||48821<=a&&48847>=a||48849<= +a&&48875>=a||48877<=a&&48903>=a||48905<=a&&48931>=a||48933<=a&&48959>=a||48961<=a&&48987>=a||48989<=a&&49015>=a||49017<=a&&49043>=a||49045<=a&&49071>=a||49073<=a&&49099>=a||49101<=a&&49127>=a||49129<=a&&49155>=a||49157<=a&&49183>=a||49185<=a&&49211>=a||49213<=a&&49239>=a||49241<=a&&49267>=a||49269<=a&&49295>=a||49297<=a&&49323>=a||49325<=a&&49351>=a||49353<=a&&49379>=a||49381<=a&&49407>=a||49409<=a&&49435>=a||49437<=a&&49463>=a||49465<=a&&49491>=a||49493<=a&&49519>=a||49521<=a&&49547>=a||49549<=a&& +49575>=a||49577<=a&&49603>=a||49605<=a&&49631>=a||49633<=a&&49659>=a||49661<=a&&49687>=a||49689<=a&&49715>=a||49717<=a&&49743>=a||49745<=a&&49771>=a||49773<=a&&49799>=a||49801<=a&&49827>=a||49829<=a&&49855>=a||49857<=a&&49883>=a||49885<=a&&49911>=a||49913<=a&&49939>=a||49941<=a&&49967>=a||49969<=a&&49995>=a||49997<=a&&50023>=a||50025<=a&&50051>=a||50053<=a&&50079>=a||50081<=a&&50107>=a||50109<=a&&50135>=a||50137<=a&&50163>=a||50165<=a&&50191>=a||50193<=a&&50219>=a||50221<=a&&50247>=a||50249<=a&&50275>= +a||50277<=a&&50303>=a||50305<=a&&50331>=a||50333<=a&&50359>=a||50361<=a&&50387>=a||50389<=a&&50415>=a||50417<=a&&50443>=a||50445<=a&&50471>=a||50473<=a&&50499>=a||50501<=a&&50527>=a||50529<=a&&50555>=a||50557<=a&&50583>=a||50585<=a&&50611>=a||50613<=a&&50639>=a||50641<=a&&50667>=a||50669<=a&&50695>=a||50697<=a&&50723>=a||50725<=a&&50751>=a||50753<=a&&50779>=a||50781<=a&&50807>=a||50809<=a&&50835>=a||50837<=a&&50863>=a||50865<=a&&50891>=a||50893<=a&&50919>=a||50921<=a&&50947>=a||50949<=a&&50975>=a|| +50977<=a&&51003>=a||51005<=a&&51031>=a||51033<=a&&51059>=a||51061<=a&&51087>=a||51089<=a&&51115>=a||51117<=a&&51143>=a||51145<=a&&51171>=a||51173<=a&&51199>=a||51201<=a&&51227>=a||51229<=a&&51255>=a||51257<=a&&51283>=a||51285<=a&&51311>=a||51313<=a&&51339>=a||51341<=a&&51367>=a||51369<=a&&51395>=a||51397<=a&&51423>=a||51425<=a&&51451>=a||51453<=a&&51479>=a||51481<=a&&51507>=a||51509<=a&&51535>=a||51537<=a&&51563>=a||51565<=a&&51591>=a||51593<=a&&51619>=a||51621<=a&&51647>=a||51649<=a&&51675>=a||51677<= +a&&51703>=a||51705<=a&&51731>=a||51733<=a&&51759>=a||51761<=a&&51787>=a||51789<=a&&51815>=a||51817<=a&&51843>=a||51845<=a&&51871>=a||51873<=a&&51899>=a||51901<=a&&51927>=a||51929<=a&&51955>=a||51957<=a&&51983>=a||51985<=a&&52011>=a||52013<=a&&52039>=a||52041<=a&&52067>=a||52069<=a&&52095>=a||52097<=a&&52123>=a||52125<=a&&52151>=a||52153<=a&&52179>=a||52181<=a&&52207>=a||52209<=a&&52235>=a||52237<=a&&52263>=a||52265<=a&&52291>=a||52293<=a&&52319>=a||52321<=a&&52347>=a||52349<=a&&52375>=a||52377<=a&& +52403>=a||52405<=a&&52431>=a||52433<=a&&52459>=a||52461<=a&&52487>=a||52489<=a&&52515>=a||52517<=a&&52543>=a||52545<=a&&52571>=a||52573<=a&&52599>=a||52601<=a&&52627>=a||52629<=a&&52655>=a||52657<=a&&52683>=a||52685<=a&&52711>=a||52713<=a&&52739>=a||52741<=a&&52767>=a||52769<=a&&52795>=a||52797<=a&&52823>=a||52825<=a&&52851>=a||52853<=a&&52879>=a||52881<=a&&52907>=a||52909<=a&&52935>=a||52937<=a&&52963>=a||52965<=a&&52991>=a||52993<=a&&53019>=a||53021<=a&&53047>=a||53049<=a&&53075>=a||53077<=a&&53103>= +a||53105<=a&&53131>=a||53133<=a&&53159>=a||53161<=a&&53187>=a||53189<=a&&53215>=a||53217<=a&&53243>=a||53245<=a&&53271>=a||53273<=a&&53299>=a||53301<=a&&53327>=a||53329<=a&&53355>=a||53357<=a&&53383>=a||53385<=a&&53411>=a||53413<=a&&53439>=a||53441<=a&&53467>=a||53469<=a&&53495>=a||53497<=a&&53523>=a||53525<=a&&53551>=a||53553<=a&&53579>=a||53581<=a&&53607>=a||53609<=a&&53635>=a||53637<=a&&53663>=a||53665<=a&&53691>=a||53693<=a&&53719>=a||53721<=a&&53747>=a||53749<=a&&53775>=a||53777<=a&&53803>=a|| +53805<=a&&53831>=a||53833<=a&&53859>=a||53861<=a&&53887>=a||53889<=a&&53915>=a||53917<=a&&53943>=a||53945<=a&&53971>=a||53973<=a&&53999>=a||54001<=a&&54027>=a||54029<=a&&54055>=a||54057<=a&&54083>=a||54085<=a&&54111>=a||54113<=a&&54139>=a||54141<=a&&54167>=a||54169<=a&&54195>=a||54197<=a&&54223>=a||54225<=a&&54251>=a||54253<=a&&54279>=a||54281<=a&&54307>=a||54309<=a&&54335>=a||54337<=a&&54363>=a||54365<=a&&54391>=a||54393<=a&&54419>=a||54421<=a&&54447>=a||54449<=a&&54475>=a||54477<=a&&54503>=a||54505<= +a&&54531>=a||54533<=a&&54559>=a||54561<=a&&54587>=a||54589<=a&&54615>=a||54617<=a&&54643>=a||54645<=a&&54671>=a||54673<=a&&54699>=a||54701<=a&&54727>=a||54729<=a&&54755>=a||54757<=a&&54783>=a||54785<=a&&54811>=a||54813<=a&&54839>=a||54841<=a&&54867>=a||54869<=a&&54895>=a||54897<=a&&54923>=a||54925<=a&&54951>=a||54953<=a&&54979>=a||54981<=a&&55007>=a||55009<=a&&55035>=a||55037<=a&&55063>=a||55065<=a&&55091>=a||55093<=a&&55119>=a||55121<=a&&55147>=a||55149<=a&&55175>=a||55177<=a&&55203>=a?10:9757== +a||9977==a||9994<=a&&9997>=a||127877==a||127938<=a&&127940>=a||127943==a||127946<=a&&127948>=a||128066<=a&&128067>=a||128070<=a&&128080>=a||128110==a||128112<=a&&128120>=a||128124==a||128129<=a&&128131>=a||128133<=a&&128135>=a||128170==a||128372<=a&&128373>=a||128378==a||128400==a||128405<=a&&128406>=a||128581<=a&&128583>=a||128587<=a&&128591>=a||128675==a||128692<=a&&128694>=a||128704==a||128716==a||129304<=a&&129308>=a||129310<=a&&129311>=a||129318==a||129328<=a&&129337>=a||129341<=a&&129342>=a|| +129489<=a&&129501>=a?13:127995<=a&&127999>=a?14:8205==a?15:9792==a||9794==a||9877<=a&&9878>=a||9992==a||10084==a||127752==a||127806==a||127859==a||127891==a||127908==a||127912==a||127979==a||127981==a||128139==a||128187<=a&&128188>=a||128295==a||128300==a||128488==a||128640==a||128658==a?16:128102<=a&&128105>=a?17:11}this.nextBreak=function(a,c){void 0===c&&(c=0);if(0>c)return 0;if(c>=a.length-1)return a.length;var b=k(h(a,c)),d=[];for(c+=1;c=e.charCodeAt(g)&&56320<=e.charCodeAt(g+1)&&57343>=e.charCodeAt(g+1))){e=k(h(a,c));if(l(b,d,e))return c;d.push(e)}}return a.length};this.splitGraphemes=function(a){for(var c=[],b=0,d;(d=this.nextBreak(a,b))=0&&s<=1&&t>=0&&t<=1}function triangleArea(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])}function isLeft(a,b,c){return triangleArea(a,b,c)>0}function isLeftOn(a,b,c){return triangleArea(a,b,c)>=0} +function isRight(a,b,c){return triangleArea(a,b,c)<0}function isRightOn(a,b,c){return triangleArea(a,b,c)<=0}var tmpPoint1=[],tmpPoint2=[]; +function collinear(a,b,c,thresholdAngle){if(!thresholdAngle)return triangleArea(a,b,c)===0;else{var ab=tmpPoint1,bc=tmpPoint2;ab[0]=b[0]-a[0];ab[1]=b[1]-a[1];bc[0]=c[0]-b[0];bc[1]=c[1]-b[1];var dot=ab[0]*bc[0]+ab[1]*bc[1],magA=Math.sqrt(ab[0]*ab[0]+ab[1]*ab[1]),magB=Math.sqrt(bc[0]*bc[0]+bc[1]*bc[1]),angle=Math.acos(dot/(magA*magB));return anglev[br][0])br=i;if(!isLeft(polygonAt(polygon,br-1),polygonAt(polygon,br),polygonAt(polygon,br+1))){polygonReverse(polygon);return true}else return false}function polygonReverse(polygon){var tmp=[];var N=polygon.length;for(var i=0;i!==N;i++)tmp.push(polygon.pop());for(var i=0;i!==N;i++)polygon[i]=tmp[i]} +function polygonIsReflex(polygon,i){return isRight(polygonAt(polygon,i-1),polygonAt(polygon,i),polygonAt(polygon,i+1))}var tmpLine1=[],tmpLine2=[]; +function polygonCanSee(polygon,a,b){var p,dist,l1=tmpLine1,l2=tmpLine2;if(isLeftOn(polygonAt(polygon,a+1),polygonAt(polygon,a),polygonAt(polygon,b))&&isRightOn(polygonAt(polygon,a-1),polygonAt(polygon,a),polygonAt(polygon,b)))return false;dist=sqdist(polygonAt(polygon,a),polygonAt(polygon,b));for(var i=0;i!==polygon.length;++i){if((i+1)%polygon.length===a||i===a)continue;if(isLeftOn(polygonAt(polygon,a),polygonAt(polygon,b),polygonAt(polygon,i+1))&&isRightOn(polygonAt(polygon,a),polygonAt(polygon, +b),polygonAt(polygon,i))){l1[0]=polygonAt(polygon,a);l1[1]=polygonAt(polygon,b);l2[0]=polygonAt(polygon,i);l2[1]=polygonAt(polygon,i+1);p=lineInt(l1,l2);if(sqdist(polygonAt(polygon,a),p)0)return polygonSlice(polygon,edges);else return[polygon]} +function polygonSlice(polygon,cutEdges){if(cutEdges.length===0)return[polygon];if(cutEdges instanceof Array&&cutEdges.length&&cutEdges[0]instanceof Array&&cutEdges[0].length===2&&cutEdges[0][0]instanceof Array){var polys=[polygon];for(var i=0;imaxlevel){console.warn("quickDecomp: max level ("+ +maxlevel+") reached.");return result}for(var i=0;iupperIndex)upperIndex+=polygon.length; +closestDist=Number.MAX_VALUE;if(upperIndex3&&i>=0;--i)if(collinear(polygonAt(polygon,i-1),polygonAt(polygon,i),polygonAt(polygon,i+1),precision)){polygon.splice(i%polygon.length,1);num++}return num} +function polygonRemoveDuplicatePoints(polygon,precision){for(var i=polygon.length-1;i>=1;--i){var pi=polygon[i];for(var j=i-1;j>=0;--j)if(points_eq(pi,polygon[j],precision)){polygon.splice(i,1);continue}}}function scalar_eq(a,b,precision){precision=precision||0;return Math.abs(a-b)<=precision}function points_eq(a,b,precision){return scalar_eq(a[0],b[0],precision)&&scalar_eq(a[1],b[1],precision)} +self.polyDecomp={decomp:polygonDecomp,quickDecomp:polygonQuickDecomp,isSimple:polygonIsSimple,removeCollinearPoints:polygonRemoveCollinearPoints,removeDuplicatePoints:polygonRemoveDuplicatePoints,makeCCW:polygonMakeCCW}; + +} + +// lib/c3.js +{ +'use strict';let isReady=false;let hasAppStarted=false;let buildMode="dev";const internalApiToken=Symbol("Construct internal API token");let internalApiTokenAccessesRemaining=14; +const C3=self.C3=class C3{constructor(){throw TypeError("static class can't be instantiated");}static _GetInternalAPIToken(){if(internalApiTokenAccessesRemaining<=0)throw new Error("cannot obtain internal API token");--internalApiTokenAccessesRemaining;return internalApiToken}static SetReady(){isReady=true}static IsReady(){return isReady}static SetAppStarted(){hasAppStarted=true}static HasAppStarted(){return hasAppStarted}static SetBuildMode(m){buildMode=m}static GetBuildMode(){return buildMode}static IsReleaseBuild(){return buildMode=== +"final"}};C3.isDebug=false;C3.isDebugDefend=false;C3.hardwareConcurrency=navigator.hardwareConcurrency||2;self.C3X={}; + +} + +// ../lib/queryParser.js +{ +'use strict';const C3=self.C3; +C3.QueryParser=class QueryParser{constructor(queryString){this._queryString=queryString;this._parameters=new Map;this._Parse()}_Parse(){let str=this._queryString;if(str.startsWith("?")||str.startsWith("#"))str=str.substr(1);const arr=str.split("&");for(const p of arr)this._ParseParameter(p)}_ParseParameter(p){if(!p)return;if(!p.includes("=")){this._parameters.set(p,null);return}const i=p.indexOf("=");const parameterName=decodeURIComponent(p.substring(0,i));const parameterValue=decodeURIComponent(p.substring(i+ +1));this._parameters.set(parameterName,parameterValue)}LogAll(){for(const e of this._parameters)console.log("[QueryParser] Parameter '"+e[0]+"' = "+(e[1]===null?"null":"'"+e[1]+"'"))}Has(name){return this._parameters.has(name)}Get(name){const ret=this._parameters.get(name);if(typeof ret==="undefined")return null;else return ret}ClearHash(){history.replaceState("",document.title,location.pathname+location.search)}Reparse(str){this._queryString=str;this._parameters.clear();this._Parse()}}; +C3.QueryString=new C3.QueryParser(location.search);C3.LocationHashString=new C3.QueryParser(location.hash);if(C3.QueryString.Has("perf"))C3.isPerformanceProfiling=true;if(C3.QueryString.Get("mode")!=="dev")C3.SetBuildMode("final"); + +} + +// ../lib/detect/detect.js +{ +'use strict';const C3=self.C3;const UNKNOWN="(unknown)";C3.Platform={OS:UNKNOWN,OSVersion:UNKNOWN,Browser:UNKNOWN,BrowserVersion:UNKNOWN,BrowserVersionNumber:NaN,BrowserEngine:UNKNOWN,Context:"browser",IsDesktop:true,IsMobile:false,IsAppleOS:false,IsIpadOS:false,GetDetailedInfo:async()=>{}};const windowsNTVerMap=new Map([[5,"2000"],[5.1,"XP"],[5.2,"XP"],[6,"Vista"],[6.1,"7"],[6.2,"8"],[6.3,"8.1"],[10,"10"]]); +function GetWindowsNTVersionName(ntVer){const num=parseFloat(ntVer);const ret=windowsNTVerMap.get(num);if(ret)return ret;if(num>=13)return"11";return"NT "+ntVer}const uaStr=navigator.userAgent;const uaData=navigator["userAgentData"]; +if(uaData&&uaData["brands"].length>0){C3.Platform.OS=uaData["platform"];C3.Platform.IsMobile=uaData["mobile"];C3.Platform.IsDesktop=!C3.Platform.IsMobile;const RECOGNIZED_BROWSERS=new Map([["Google Chrome","Chrome"],["Microsoft Edge","Edge"],["Opera","Opera"],["Opera GX","Opera GX"],["Mozilla Firefox","Firefox"],["Apple Safari","Safari"],["NW.js","NW.js"]]);const RECOGNIZED_ENGINES=new Map([["Chromium","Chromium"],["Gecko","Gecko"],["WebKit","WebKit"]]);function ReadBrandList(brands){let browser= +"";let browser_version="";let engine="";let engine_version="";for(const o of brands){const recognizedBrowser=RECOGNIZED_BROWSERS.get(o["brand"]);if(!browser&&recognizedBrowser){browser=recognizedBrowser;browser_version=o["version"]}const recognizedEngine=RECOGNIZED_ENGINES.get(o["brand"]);if(!engine&&recognizedEngine){engine=recognizedEngine;engine_version=o["version"]}}if(!browser&&engine==="Chromium"){C3.Platform.Browser="Chromium";C3.Platform.BrowserVersion=engine_version}C3.Platform.Browser=browser|| +UNKNOWN;C3.Platform.BrowserVersion=browser_version||UNKNOWN;C3.Platform.BrowserEngine=engine||UNKNOWN}ReadBrandList(uaData["brands"]);let didGetDetailedInfo=false;C3.Platform.GetDetailedInfo=async()=>{if(didGetDetailedInfo)return;try{const details=await navigator["userAgentData"]["getHighEntropyValues"](["platformVersion","fullVersionList"]);ReadBrandList(details["fullVersionList"]);if(C3.Platform.OS==="Windows")C3.Platform.OSVersion=GetWindowsNTVersionName(details["platformVersion"]);else C3.Platform.OSVersion= +details["platformVersion"];didGetDetailedInfo=true}catch(err){console.warn("Failed to get detailed user agent information: ",err)}}}else{function RunTest(regex_or_arr,handler){const arr=Array.isArray(regex_or_arr)?regex_or_arr:[regex_or_arr];for(const regex of arr){const result=regex.exec(uaStr);if(result){handler(result);break}}}RunTest(/windows\s+nt\s+([\d\.]+)/i,result=>{C3.Platform.OS="Windows";const ntVer=result[1];C3.Platform.OSVersion=GetWindowsNTVersionName(ntVer)});RunTest(/mac\s+os\s+x\s+([\d\._]+)/i, +result=>{C3.Platform.OS="macOS";C3.Platform.OSVersion=result[1].replace(/_/g,".")});RunTest(/CrOS/,()=>{C3.Platform.OS="Chrome OS"});RunTest(/linux|openbsd|freebsd|netbsd/i,()=>{C3.Platform.OS="Linux"});RunTest(/android/i,()=>{C3.Platform.OS="Android"});RunTest(/android\s+([\d\.]+)/i,result=>{C3.Platform.OS="Android";C3.Platform.OSVersion=result[1]});if(C3.Platform.OS===UNKNOWN){RunTest(/(iphone|ipod|ipad)/i,result=>{C3.Platform.OS="iOS"});RunTest([/iphone\s+os\s+([\d\._]+)/i,/ipad[^)]*os\s+([\d\._]+)/i], +result=>{C3.Platform.OS="iOS";C3.Platform.OSVersion=result[1].replace(/_/g,".")})}const hasChrome=/chrome\//i.test(uaStr);const hasChromium=/chromium\//i.test(uaStr);const hasEdge=/edg\//i.test(uaStr);const hasOpera=/OPR\//.test(uaStr);const hasNWjs=/nwjs/i.test(uaStr);const hasSafari=/safari\//i.test(uaStr);const hasWebKit=/webkit/i.test(uaStr);if(!hasEdge&&!hasOpera)RunTest(/chrome\/([\d\.]+)/i,result=>{C3.Platform.Browser="Chrome";C3.Platform.BrowserVersion=result[1];C3.Platform.BrowserEngine= +"Chromium"});RunTest(/edg\/([\d\.]+)/i,result=>{C3.Platform.Browser="Edge";C3.Platform.BrowserVersion=result[1];C3.Platform.BrowserEngine="Chromium"});RunTest(/OPR\/([\d\.]+)/,result=>{C3.Platform.Browser="Opera";C3.Platform.BrowserVersion=result[1];C3.Platform.BrowserEngine="Chromium"});RunTest(/chromium\/([\d\.]+)/i,result=>{C3.Platform.Browser="Chromium";C3.Platform.BrowserVersion=result[1];C3.Platform.BrowserEngine="Chromium"});RunTest(/nwjs\/[0-9.]+/i,result=>{C3.Platform.Browser="NW.js";C3.Platform.BrowserVersion= +result[1];C3.Platform.BrowserEngine="Chromium";C3.Platform.Context="nwjs"});RunTest(/firefox\/([\d\.]+)/i,result=>{C3.Platform.Browser="Firefox";C3.Platform.BrowserVersion=result[1];C3.Platform.BrowserEngine="Gecko"});if(hasSafari&&!hasChrome&&!hasChromium&&!hasEdge&&!hasOpera&&!hasNWjs){C3.Platform.Browser="Safari";C3.Platform.BrowserEngine="WebKit";RunTest(/version\/([\d\.]+)/i,result=>{C3.Platform.BrowserVersion=result[1]});RunTest(/crios\/([\d\.]+)/i,result=>{C3.Platform.Browser="Chrome for iOS"; +C3.Platform.BrowserVersion=result[1]});RunTest(/fxios\/([\d\.]+)/i,result=>{C3.Platform.Browser="Firefox for iOS";C3.Platform.BrowserVersion=result[1]});RunTest(/edgios\/([\d\.]+)/i,result=>{C3.Platform.Browser="Edge for iOS";C3.Platform.BrowserVersion=result[1]})}if(C3.Platform.BrowserEngine===UNKNOWN&&hasWebKit)C3.Platform.BrowserEngine="WebKit";if(C3.Platform.OS==="Android"&&C3.Platform.Browser==="Safari")C3.Platform.Browser="Stock";const desktopOSs=new Set(["Windows","macOS","Linux","Chrome OS"]); +const isDesktop=desktopOSs.has(C3.Platform.OS)||C3.Platform.Context==="nwjs";C3.Platform.IsDesktop=isDesktop;C3.Platform.IsMobile=!isDesktop}if(C3.Platform.Browser==="Chrome"&&C3.Platform.Context==="browser"&&/wv\)/.test(uaStr))C3.Platform.Context="webview";if(C3.Platform.Context!=="nwjs"&&typeof window!=="undefined"&&(window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches||navigator["standalone"]))C3.Platform.Context="webapp";C3.Platform.BrowserVersionNumber=parseFloat(C3.Platform.BrowserVersion); +const looksLikeIPadOS=C3.Platform.OS==="macOS"&&navigator["maxTouchPoints"]&&navigator["maxTouchPoints"]>2;if(looksLikeIPadOS){C3.Platform.OS="iOS";C3.Platform.OSVersion=C3.Platform.BrowserVersion;C3.Platform.IsDesktop=false;C3.Platform.IsMobile=true;C3.Platform.IsIpadOS=true}C3.Platform.IsAppleOS=C3.Platform.OS==="macOS"||C3.Platform.OS==="iOS"; + +} + +// ../lib/storage/kvStorage.js +{ +'use strict';{const VERSION=2;const STORE_NAME="keyvaluepairs";const DATABASE_PROMISE_MAP=new Map;const SUPPORTS_GETALL=typeof IDBObjectStore!=="undefined"&&typeof IDBObjectStore.prototype.getAll==="function";const SUPPORTS_GETALLKEYS=typeof IDBObjectStore!=="undefined"&&typeof IDBObjectStore.prototype.getAllKeys==="function";function asyncifyRequest(request){return new Promise((res,rej)=>{request.onsuccess=()=>res(request.result);request.onerror=()=>rej(request.error)})}function asyncifyTransaction(tx){return new Promise((res, +rej)=>{tx.oncomplete=()=>res();tx.onerror=()=>rej(tx.error);tx.onabort=()=>rej(tx.error)})}function openReadOnlyTransaction(name,method){return openTransaction(name,method)}function openWriteTransaction(name,method){return openTransaction(name,method,true)}async function openTransaction(name,method,write=false,allowRetry=true){const db=await lazyOpenDatabase(name);try{const tx=db.transaction([STORE_NAME],write?"readwrite":"readonly");return method(tx)}catch(err){if(allowRetry&&err["name"]==="InvalidStateError"){DATABASE_PROMISE_MAP.delete(name); +return openTransaction(name,method,write,false)}else throw err;}}function lazyOpenDatabase(name){RequireString(name);let dbPromise=DATABASE_PROMISE_MAP.get(name);if(!(dbPromise instanceof Promise)){dbPromise=openDatabase(name);DATABASE_PROMISE_MAP.set(name,dbPromise);dbPromise.catch(err=>DATABASE_PROMISE_MAP.delete(name))}return dbPromise}async function openDatabase(name){RequireString(name);const openRequest=indexedDB.open(name,VERSION);openRequest.addEventListener("upgradeneeded",e=>{try{const db= +e.target.result;db.createObjectStore(STORE_NAME)}catch(err){console.error(`Failed to create objectstore for database ${name}`,err)}});return asyncifyRequest(openRequest)}function RequireString(x){if(typeof x!=="string")throw new TypeError("expected string");}function getEntriesFromCursor(tx,type){const request=tx.objectStore(STORE_NAME).openCursor();return new Promise(resolve=>{const results=[];request.onsuccess=event=>{const cursor=event.target.result;if(cursor){switch(type){case "entries":results.push([cursor.key, +cursor.value]);break;case "keys":results.push(cursor.key);break;case "values":results.push(cursor.value);break}cursor.continue()}else resolve(results)}})}class KVStorageContainer{constructor(name){RequireString(name);this.name=name}async ready(){await lazyOpenDatabase(this.name)}set(key,value){RequireString(key);return openWriteTransaction(this.name,async tx=>{const request=tx.objectStore(STORE_NAME).put(value,key);const requestPromise=asyncifyRequest(request);const txPromise=asyncifyTransaction(tx); +await Promise.all([txPromise,requestPromise])})}get(key){RequireString(key);return openReadOnlyTransaction(this.name,async tx=>{const request=tx.objectStore(STORE_NAME).get(key);const requestPromise=asyncifyRequest(request);const txPromise=asyncifyTransaction(tx);const [_,value]=await Promise.all([txPromise,requestPromise]);return value})}delete(key){RequireString(key);return openWriteTransaction(this.name,async tx=>{const request=tx.objectStore(STORE_NAME).delete(key);const requestPromise=asyncifyRequest(request); +const txPromise=asyncifyTransaction(tx);await Promise.all([txPromise,requestPromise])})}clear(){return openWriteTransaction(this.name,async tx=>{const request=tx.objectStore(STORE_NAME).clear();const requestPromise=asyncifyRequest(request);const txPromise=asyncifyTransaction(tx);await Promise.all([txPromise,requestPromise])})}keys(){return openReadOnlyTransaction(this.name,async tx=>{let requestPromise;if(SUPPORTS_GETALLKEYS){const request=tx.objectStore(STORE_NAME).getAllKeys();requestPromise=asyncifyRequest(request)}else requestPromise= +getEntriesFromCursor(tx,"keys");const txPromise=asyncifyTransaction(tx);const [_,value]=await Promise.all([txPromise,requestPromise]);return value})}values(){return openReadOnlyTransaction(this.name,async tx=>{let requestPromise;if(SUPPORTS_GETALL){const request=tx.objectStore(STORE_NAME).getAll();requestPromise=asyncifyRequest(request)}else requestPromise=getEntriesFromCursor(tx,"values");const txPromise=asyncifyTransaction(tx);const [_,value]=await Promise.all([txPromise,requestPromise]);return value})}entries(){return openReadOnlyTransaction(this.name, +async tx=>{const requestPromise=getEntriesFromCursor(tx,"entries");const txPromise=asyncifyTransaction(tx);const [_,value]=await Promise.all([txPromise,requestPromise]);return value})}}self.KVStorageContainer=KVStorageContainer}; + +} + +// ../lib/storage/localForageAdaptor.js +{ +'use strict';{const KVStorageContainer=self.KVStorageContainer;const CRITICAL_ERRORS=[/no available storage method found/i,/an attempt was made to break through the security policy of the user agent/i,/the user denied permission to access the database/i,/a mutation operation was attempted on a database that did not allow mutations/i,/idbfactory\.open\(\) called in an invalid security context/i];const memoryStorage=new WeakMap;let isInMemory=false;if(typeof indexedDB==="undefined"){isInMemory=true; +console.warn("Unable to use local storage because indexedDB is not defined")}function NOT_IMPLEMENTED(name){throw new Error(`"${name}" is not implemented`);}function DISALLOW_CALLBACK(fn){if(typeof fn==="function")throw new Error(`localforage callback API is not implemented; please use the promise API instead`);}function StructuredClone(value){if(typeof value==="object")return new Promise(resolve=>{const {port1,port2}=new MessageChannel;port2.onmessage=ev=>resolve(ev.data);port1.postMessage(value)}); +else return Promise.resolve(value)}class ForageAdaptor{constructor(inst){this._inst=inst;memoryStorage.set(this,new Map)}_MaybeSwitchToMemoryFallback(err){if(isInMemory)return;for(const regex of CRITICAL_ERRORS)if(err&®ex.test(err.message)){console.error("Unable to use local storage, reverting to in-memory store: ",err,err.message);isInMemory=true;break}}async _getItemFallback(name){const value=memoryStorage.get(this).get(name);const ret=await StructuredClone(value);return typeof ret==="undefined"? +null:ret}async _setItemFallback(name,value){value=await StructuredClone(value);memoryStorage.get(this).set(name,value)}_removeItemFallback(name){memoryStorage.get(this).delete(name)}_clearFallback(){memoryStorage.get(this).clear()}_keysFallback(){return Array.from(memoryStorage.get(this).keys())}IsUsingFallback(){return isInMemory}async getItem(key,successCallback){DISALLOW_CALLBACK(successCallback);if(isInMemory)return await this._getItemFallback(key);let result;try{result=await this._inst.get(key)}catch(err){this._MaybeSwitchToMemoryFallback(err); +if(isInMemory)return await this._getItemFallback(key);else{console.error(`Error reading '${key}' from storage, returning null: `,err);return null}}return typeof result==="undefined"?null:result}async setItem(key,value,successCallback){DISALLOW_CALLBACK(successCallback);if(typeof value==="undefined")value=null;if(isInMemory){await this._setItemFallback(key,value);return}try{await this._inst.set(key,value)}catch(err){this._MaybeSwitchToMemoryFallback(err);if(isInMemory)await this._setItemFallback(key, +value);else throw err;}}async removeItem(key,successCallback){DISALLOW_CALLBACK(successCallback);if(isInMemory){this._removeItemFallback(key);return}try{await this._inst.delete(key)}catch(err){this._MaybeSwitchToMemoryFallback(err);if(isInMemory)this._removeItemFallback(key);else console.error(`Error removing '${key}' from storage: `,err)}}async clear(successCallback){DISALLOW_CALLBACK(successCallback);if(isInMemory){this._clearFallback();return}try{await this._inst.clear()}catch(err){this._MaybeSwitchToMemoryFallback(err); +if(isInMemory)this._clearFallback();else console.error(`Error clearing storage: `,err)}}async keys(successCallback){DISALLOW_CALLBACK(successCallback);if(isInMemory)return this._keysFallback();let result=[];try{result=await this._inst.keys()}catch(err){this._MaybeSwitchToMemoryFallback(err);if(isInMemory)return this._keysFallback();else console.error(`Error getting storage keys: `,err)}return result}ready(successCallback){DISALLOW_CALLBACK(successCallback);if(isInMemory)return Promise.resolve(true); +else return this._inst.ready()}createInstance(options){if(typeof options!=="object")throw new TypeError("invalid options object");const name=options["name"];if(typeof name!=="string")throw new TypeError("invalid store name");const inst=new KVStorageContainer(name);return new ForageAdaptor(inst)}length(successCallback){NOT_IMPLEMENTED("localforage.length()")}key(index,successCallback){NOT_IMPLEMENTED("localforage.key()")}iterate(iteratorCallback,successCallback){NOT_IMPLEMENTED("localforage.iterate()")}setDriver(driverName){NOT_IMPLEMENTED("localforage.setDriver()")}config(options){NOT_IMPLEMENTED("localforage.config()")}defineDriver(customDriver){NOT_IMPLEMENTED("localforage.defineDriver()")}driver(){NOT_IMPLEMENTED("localforage.driver()")}supports(driverName){NOT_IMPLEMENTED("localforage.supports()")}dropInstance(){NOT_IMPLEMENTED("localforage.dropInstance()")}disableMemoryMode(){isInMemory= +false}}self["localforage"]=new ForageAdaptor(new KVStorageContainer("localforage"))}; + +} + +// ../lib/misc/supports.js +{ +'use strict';const C3=self.C3;C3.Supports={};C3.Supports.WebAnimations=(()=>{try{if(typeof document==="undefined")return false;const e=document.createElement("div");if(typeof e.animate==="undefined")return false;const player=e.animate([{opacity:"0"},{opacity:"1"}],1E3);return typeof player.reverse!=="undefined"}catch(e){return false}})();C3.Supports.DialogElement=typeof HTMLDialogElement!=="undefined";C3.Supports.RequestIdleCallback=!!self.requestIdleCallback;C3.Supports.ImageBitmap=!!self.createImageBitmap; +C3.Supports.ImageBitmapOptions=false;C3.Supports.ImageBitmapOptionsResize=false; +if(C3.Supports.ImageBitmap){try{self.createImageBitmap(new ImageData(32,32),{"premultiplyAlpha":"none"}).then(()=>{C3.Supports.ImageBitmapOptions=true}).catch(()=>{C3.Supports.ImageBitmapOptions=false})}catch(err){C3.Supports.ImageBitmapOptions=false}try{self.createImageBitmap(new ImageData(32,32),{"resizeWidth":10,"resizeHeight":10}).then(imageBitmap=>{C3.Supports.ImageBitmapOptionsResize=imageBitmap.width===10&&imageBitmap.height===10}).catch(()=>{C3.Supports.ImageBitmapOptionsResize=false})}catch(err){C3.Supports.ImageBitmapOptionsResize= +false}}C3.Supports.ClipboardReadText=!!(navigator["clipboard"]&&navigator["clipboard"]["readText"]);C3.Supports.PermissionsQuery=!!(navigator["permissions"]&&navigator["permissions"]["query"]);C3.Supports.ClipboardPermissionsQuery=false;if(C3.Supports.PermissionsQuery){const permission={"name":"clipboard-read"};navigator["permissions"]["query"](permission).then(()=>{C3.Supports.ClipboardPermissionsQuery=true}).catch(()=>{C3.Supports.ClipboardPermissionsQuery=false})} +C3.Supports.AsyncClipboardApi=!!(navigator["permissions"]&&navigator["clipboard"]&&self["ClipboardItem"]);C3.Supports.Proxies=typeof Proxy!=="undefined";C3.Supports.DownloadAttribute=(()=>{if(typeof document==="undefined")return false;const a=document.createElement("a");return typeof a.download!=="undefined"})();C3.Supports.Fetch=typeof fetch==="function";C3.Supports.PersistentStorage=!!(self.isSecureContext&&C3.Platform.Browser!=="Opera"&&(navigator["storage"]&&navigator["storage"]["persist"])); +C3.Supports.StorageQuotaEstimate=!!(self.isSecureContext&&(navigator["storage"]&&navigator["storage"]["estimate"]));C3.Supports.Fullscreen=(()=>{if(typeof document==="undefined")return false;if(C3.Platform.OS==="iOS")return false;const elem=document.documentElement;return!!(elem.requestFullscreen||elem.msRequestFullscreen||elem.mozRequestFullScreen||elem.webkitRequestFullscreen)})();C3.Supports.ImageDecoder=typeof self["ImageDecoder"]!=="undefined";C3.Supports.WebCodecs=!!self["VideoEncoder"]; +C3.Supports.NativeFileSystemAPI=!!self["showOpenFilePicker"];C3.Supports.QueryLocalFonts=!!self["queryLocalFonts"];C3.Supports.UserActivation=!!navigator["userActivation"];C3.Supports.CanvasToBlobWebP=false; +(async()=>{let canvas;if(typeof document==="undefined")canvas=new OffscreenCanvas(32,32);else{canvas=document.createElement("canvas");canvas.width=32;canvas.height=32}const ctx=canvas.getContext("2d");ctx.fillStyle="blue";ctx.fillRect(0,0,32,32);let blob=null;try{if(canvas["convertToBlob"])blob=await canvas["convertToBlob"]({"type":"image/webp","quality":1});else if(canvas.toBlob)blob=await new Promise(resolve=>canvas.toBlob(resolve,"image/webp",1));C3.Supports.CanvasToBlobWebP=blob&&blob.type=== +"image/webp"}catch(err){C3.Supports.CanvasToBlobWebP=false}})(); + +} + +// ../lib/misc/polyfills.js +{ +'use strict';const C3=self.C3;if(!String.prototype.trimStart){const startWhitespace=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*/;String.prototype.trimStart=function trimStart(){return this.replace(startWhitespace,"")}} +if(!String.prototype.trimEnd){const endWhitespace=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*$/;String.prototype.trimEnd=function trimEnd(){return this.replace(endWhitespace,"")}}if(!String.prototype.replaceAll)String.prototype.replaceAll=function replaceAll(find,replace){return this.replace(new RegExp(C3.EscapeRegex(find),"g"),replace)};if(!Array.prototype.values)Array.prototype.values=function*(){for(const i of this)yield i}; +if(!Array.prototype.flat){function arrayFlat(arr,depth){return arr.reduce((acc,val)=>{if(depth>0&&Array.isArray(val)){Array.prototype.push.apply(acc,arrayFlat(val,depth-1));return acc}else{acc.push(val);return acc}},[])}Array.prototype.flat=function(depth=1){return arrayFlat(this,depth)}}if(!Array.prototype.at)Array.prototype.at=function at(n){n=Math.trunc(n)||0;if(n<0)n+=this.length;if(n<0||n>=this.length)return undefined;return this[n]}; +if(!String.prototype.at)String.prototype.at=function at(n){n=Math.trunc(n)||0;if(n<0)n+=this.length;if(n<0||n>=this.length)return undefined;return this[n]};if(!RegExp.escape)RegExp.escape=function(s){return String(s).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&")};if(!Set.prototype.isSubsetOf)Set.prototype.isSubsetOf=function(other){if(!(other instanceof Set))throw new TypeError("argument must be a Set");for(const e of this)if(!other.has(e))return false;return true}; +if(navigator["storage"]&&!navigator["storage"]["estimate"]&&navigator["webkitTemporaryStorage"]&&navigator["webkitTemporaryStorage"]["queryUsageAndQuota"])navigator["storage"]["estimate"]=function(){return new Promise((resolve,reject)=>{return navigator["webkitTemporaryStorage"]["queryUsageAndQuota"]((usage,quota)=>resolve({"usage":usage,"quota":quota}),reject)})};if(typeof self.isSecureContext==="undefined")self.isSecureContext=location.protocol==="https:"; +if(typeof self["globalThis"]==="undefined")self["globalThis"]=self; + +} + +// lib/misc/assert.js +{ +'use strict';const C3=self.C3;function assertFail(msg_){let stack=C3.GetCallStack();let msg="Assertion failure: "+msg_+"\n\nStack trace:\n"+stack;console.error(msg)}self.assert=function assert(cnd_,msg_){if(!cnd_)assertFail(msg_)}; + +} + +// ../lib/misc/typeChecks.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;C3.IsNumber=function IsNumber(x){return typeof x==="number"};C3.IsFiniteNumber=function IsFiniteNumber(x){return C3.IsNumber(x)&&isFinite(x)};C3.RequireNumber=function RequireNumber(x){if(!C3.IsNumber(x))throw new TypeError("expected number");};C3.RequireOptionalNumber=function RequireOptionalNumber(x){if(C3.IsNullOrUndefined(x))return}; +C3.RequireNumberInRange=function RequireNumberInRange(x,low,high){if(!C3.IsNumber(x)||isNaN(x)||low>x||high{console.log(`%c${name}`,"font-weight: bold",...args);logRafIds.set(name,-1)}))};let measures; +C3.StartMeasure=function StartMeasure(name){performance.mark(name);if(!measures)measures=new Map;if(!measures.has(name))measures.set(name,{current:0,total:0,average:0,calls:1,toString:function(){return`${name} :: current => ${this.current.toPrecision(3)} :: average => ${this.average.toPrecision(3)} :: calls => ${this.calls}`}})}; +C3.EndMeasure=function EndMeasure(name){performance.measure(`measure-${name}`,name);const entry=performance.getEntriesByName(`measure-${name}`)[0];const m=measures.get(name);m.current=entry.duration;m.total+=m.current;m.average=m.total/m.calls;console.log(m.toString());m.calls++;performance.clearMarks(name);performance.clearMeasures(`measure-${name}`)};C3.GetCallStack=function GetCallStack(){return(new Error).stack};C3.Debugger=function Debugger(){debugger}; +C3.cast=function cast(o,T){if(o&&o instanceof T)return o;else return null}; +C3.getName=function getName(o){if(typeof o==="undefined")return"undefined";if(o===null)return"null";if(typeof o==="boolean")return"";if(C3.IsNumber(o))return"";if(C3.IsString(o))return"";if(C3.IsArray(o))return"";if(typeof o==="symbol")return"<"+o.toString()+">";if(C3.IsFunction(o)){if(o.name&&o.name!=="Function")return o.name;return""}if(typeof o==="object"){if(o.constructor&&o.constructor.name&&o.constructor.name!=="Object")return o.constructor.name; +return""}return""};C3.getType=function getType(o){if(o===null)return"null";if(Array.isArray(o))return"array";return typeof o};C3.range=function*range(a,b){if(!isFinite(Math.abs(a-b)))throw new Error("Invalid parameters");if(a>b)for(let i=a-1;i>=b;i--)yield i;else for(let i=a;i0||ctorProxyToObject.size>0){let uniqueNames=new Set([...ctorObjectToProxy.keys()].map(o=>C3.getName(o)));let leftoverNames=[...uniqueNames].join(",");console.warn(`An object derived from DefendedBase was not protected with debugDefend(). This will disable some checks. See the coding guidelines! Possible affected class names: ${leftoverNames}`);ctorObjectToProxy.clear();ctorProxyToObject.clear()}} +C3.DefendedBase=class DefendedBase{constructor(){if(!C3.isDebugDefend||!C3.Supports.Proxies)return;let newTarget=new.target;let realObject=Object.create(newTarget.prototype);let proxy=new Proxy(realObject,C3.DefendHandler);ctorObjectToProxy.set(realObject,proxy);ctorProxyToObject.set(proxy,realObject);proxyToObject.set(proxy,realObject);if(checkRafId===-1)checkRafId=requestAnimationFrame(CheckDefendedObjectsUsedCorrectly);return proxy}}; +C3.debugDefend=function debugDefend(o){if(C3.isDebugDefend&&C3.Supports.Proxies&&o instanceof C3.DefendedBase){if(!ctorProxyToObject.has(o))return o;let realObject=ctorProxyToObject.get(o);ctorProxyToObject.delete(o);ctorObjectToProxy.delete(realObject);return o}else if(C3.isDebug)return Object.seal(o);else return o}; +C3.New=function New(Type,...args){let o;try{o=new Type(...args)}catch(e){ctorProxyToObject.clear();ctorObjectToProxy.clear();throw e;}if(C3.isDebugDefend)VerifyObjectPropertiesConsistent(Type,o);return C3.debugDefend(o)};C3.Release=function Release(o){let realObject=proxyToObject.get(o);if(realObject)releasedObjects.set(realObject,C3.GetCallStack())};C3.WasReleased=function(o){let realObject=proxyToObject.get(o);if(!realObject)return false;return!!releasedObjects.get(realObject)}; +let typeProperties=new Map;function getObjectPropertySet(o){let ret=new Set;for(let k in o)ret.add(k);return ret} +function VerifyObjectPropertiesConsistent(Type,o){let properties=getObjectPropertySet(o);let existingProperties=typeProperties.get(Type);if(existingProperties){let inconsistentProperties=[];for(let k of existingProperties.values())if(properties.has(k))properties.delete(k);else inconsistentProperties.push(k);C3.appendArray(inconsistentProperties,[...properties]);if(inconsistentProperties.length)console.warn(`[Defence] '${C3.getName(Type)}' constructor creates inconsistent properties: ${inconsistentProperties.join(", ")}`)}else typeProperties.set(Type,properties)} +C3.PerfMark=class PerfMark{constructor(name){this._name="";if(name)this.start(name)}start(name){if(!C3.isPerformanceProfiling)return;this._name=name;performance.mark(this._name+"-Start")}end(){if(!C3.isPerformanceProfiling)return;performance.mark(this._name+"-End");performance.measure(this._name,this._name+"-Start",this._name+"-End")}next(name){if(!C3.isPerformanceProfiling)return;this.end();this._name=name;performance.mark(this._name+"-Start")}}; + +} + +// ../lib/misc/mathutil.js +{ +'use strict';const C3=self.C3;const TWO_PI=Math.PI*2;const D_TO_R=Math.PI/180;const R_TO_D=180/Math.PI;C3.wrap=function wrap(x,min,max){x=Math.floor(x);min=Math.floor(min);max=Math.floor(max);const diff=max-min;if(diff===0)return max;if(xb)return b;else return x};C3.clampAngle=function clampAngle(a){a%=TWO_PI;if(a<0)a+=TWO_PI;return a}; +C3.toRadians=function toRadians(x){return x*D_TO_R};C3.toDegrees=function toDegrees(x){return x*R_TO_D};C3.distanceTo=function distanceTo(x1,y1,x2,y2){return Math.hypot(x2-x1,y2-y1)};C3.distanceSquared=function distanceSquared(x1,y1,x2,y2){const dx=x2-x1;const dy=y2-y1;return dx*dx+dy*dy};C3.angleTo=function angleTo(x1,y1,x2,y2){return Math.atan2(y2-y1,x2-x1)}; +C3.angleDiff=function angleDiff(a1,a2){if(a1===a2)return 0;let s1=Math.sin(a1);let c1=Math.cos(a1);let s2=Math.sin(a2);let c2=Math.cos(a2);let n=s1*s2+c1*c2;if(n>=1)return 0;if(n<=-1)return Math.PI;return Math.acos(n)};C3.angleRotate=function angleRotate(start,end,step){let ss=Math.sin(start);let cs=Math.cos(start);let se=Math.sin(end);let ce=Math.cos(end);if(Math.acos(ss*se+cs*ce)>step)if(cs*se-ss*ce>0)return C3.clampAngle(start+step);else return C3.clampAngle(start-step);else return C3.clampAngle(end)}; +C3.angleClockwise=function angleClockwise(a1,a2){let s1=Math.sin(a1);let c1=Math.cos(a1);let s2=Math.sin(a2);let c2=Math.cos(a2);return c1*s2-s1*c2<=0};C3.angleLerp=function angleLerp(a,b,x,r=0){let diff=C3.angleDiff(a,b);const revs=TWO_PI*r;if(C3.angleClockwise(b,a))return C3.clampAngle(a+(diff+revs)*x);else return C3.clampAngle(a-(diff+revs)*x)}; +C3.angleLerpClockwise=function angleLerpClockwise(a,b,x,r=0){const diff=C3.angleDiff(a,b);const revs=TWO_PI*r;if(C3.angleClockwise(b,a))return C3.clampAngle(a+(diff+revs)*x);return C3.clampAngle(a+(TWO_PI-diff+revs)*x)};C3.angleLerpAntiClockwise=function angleLerpAntiClockwise(a,b,x,r=0){const diff=C3.angleDiff(a,b);const revs=TWO_PI*r;if(C3.angleClockwise(b,a))return C3.clampAngle(a-(-TWO_PI+diff-revs)*x);return C3.clampAngle(a-(diff+revs)*x)}; +C3.angleReflect=function angleReflect(a,b){const diff=C3.angleDiff(a,b);if(C3.angleClockwise(a,b))return C3.clampAngle(b-diff);else return C3.clampAngle(b+diff)};C3.lerp=function lerp(a,b,x){return a+x*(b-a)};C3.unlerp=function unlerp(a,b,x){if(a===b)return 0;return(x-a)/(b-a)};C3.relerp=function relerp(a,b,x,c,d){return C3.lerp(c,d,C3.unlerp(a,b,x))};C3.qarp=function qarp(a,b,c,x){return C3.lerp(C3.lerp(a,b,x),C3.lerp(b,c,x),x)}; +C3.cubic=function cubic(a,b,c,d,x){return C3.lerp(C3.qarp(a,b,c,x),C3.qarp(b,c,d,x),x)};C3.cosp=function cosp(a,b,x){return(a+b+(a-b)*Math.cos(x*Math.PI))/2};C3.isPOT=function isPOT(x){return x>0&&(x-1&x)===0};C3.nextHighestPowerOfTwo=function nextHighestPowerOfTwo(x){--x;for(let i=1;i<32;i<<=1)x=x|x>>i;return x+1};C3.roundToNearestFraction=function roundToNearestFraction(x,n){return Math.round(x*n)/n};C3.floorToNearestFraction=function floorToNearestFraction(x,n){return Math.floor(x*n)/n}; +C3.roundToDp=function roundToDp(x,dp){dp=Math.max(Math.floor(dp),0);const m=Math.pow(10,dp);return Math.round(x*m)/m};C3.countDecimals=function countDecimals(value){if(Math.floor(value)!==value)return value.toString().split(".")[1].length||0;return 0};C3.toFixed=function toFixed(n,dp){let ret=n.toFixed(dp);let last=ret.length-1;for(;last>=0&&ret.charAt(last)==="0";--last);if(last>=0&&ret.charAt(last)===".")--last;if(last<0)return ret;return ret.substr(0,last+1)}; +C3.PackRGB=function PackRGB(red,green,blue){return C3.clamp(red,0,255)|C3.clamp(green,0,255)<<8|C3.clamp(blue,0,255)<<16};const ALPHAEX_SHIFT=1024;const ALPHAEX_MAX=1023;const RGBEX_SHIFT=16384;const RGBEX_MAX=8191;const RGBEX_MIN=-8192; +C3.PackRGBAEx=function PackRGBAEx(red,green,blue,alpha){red=C3.clamp(Math.floor(red*1024),RGBEX_MIN,RGBEX_MAX);green=C3.clamp(Math.floor(green*1024),RGBEX_MIN,RGBEX_MAX);blue=C3.clamp(Math.floor(blue*1024),RGBEX_MIN,RGBEX_MAX);alpha=C3.clamp(Math.floor(alpha*ALPHAEX_MAX),0,ALPHAEX_MAX);if(red<0)red+=RGBEX_SHIFT;if(green<0)green+=RGBEX_SHIFT;if(blue<0)blue+=RGBEX_SHIFT;return-(red*RGBEX_SHIFT*RGBEX_SHIFT*ALPHAEX_SHIFT+green*RGBEX_SHIFT*ALPHAEX_SHIFT+blue*ALPHAEX_SHIFT+alpha)}; +C3.PackRGBEx=function PackRGBEx(red,green,blue){return C3.PackRGBAEx(red,green,blue,1)};function isNegativeZero(x){return x===0&&1/x<0}C3.GetRValue=function GetRValue(rgb){if(rgb>=0)return(rgb&255)/255;else{let v=Math.floor(-rgb/(RGBEX_SHIFT*RGBEX_SHIFT*ALPHAEX_SHIFT));if(v>RGBEX_MAX)v-=RGBEX_SHIFT;return v/1024}}; +C3.GetGValue=function GetGValue(rgb){if(rgb>=0)return((rgb&65280)>>8)/255;else{let v=Math.floor(-rgb%(RGBEX_SHIFT*RGBEX_SHIFT*ALPHAEX_SHIFT)/(RGBEX_SHIFT*ALPHAEX_SHIFT));if(v>RGBEX_MAX)v-=RGBEX_SHIFT;return v/1024}};C3.GetBValue=function GetBValue(rgb){if(rgb>=0)return((rgb&16711680)>>16)/255;else{let v=Math.floor(-rgb%(RGBEX_SHIFT*ALPHAEX_SHIFT)/ALPHAEX_SHIFT);if(v>RGBEX_MAX)v-=RGBEX_SHIFT;return v/1024}}; +C3.GetAValue=function GetAValue(rgb){if(isNegativeZero(rgb))return 0;else if(rgb>=0)return 1;else{const v=Math.floor(-rgb%ALPHAEX_SHIFT);return v/ALPHAEX_MAX}};C3.greatestCommonDivisor=function greatestCommonDivisor(a,b){a=Math.floor(a);b=Math.floor(b);while(b!==0){let t=b;b=a%b;a=t}return a};const COMMON_ASPECT_RATIOS=[[3,2],[4,3],[5,4],[5,3],[6,5],[14,9],[16,9],[16,10],[21,9]]; +C3.getAspectRatio=function getAspectRatio(w,h){w=Math.floor(w);h=Math.floor(h);if(w===h)return[1,1];for(let aspect of COMMON_ASPECT_RATIOS){let approxH=w/aspect[0]*aspect[1];if(Math.abs(h-approxH)<1)return aspect.slice(0);approxH=w/aspect[1]*aspect[0];if(Math.abs(h-approxH)<1)return[aspect[1],aspect[0]]}let gcd=C3.greatestCommonDivisor(w,h);return[w/gcd,h/gcd]}; +C3.segmentsIntersect=function segmentsIntersect(a1x,a1y,a2x,a2y,b1x,b1y,b2x,b2y){const min_ax=Math.min(a1x,a2x);const max_ax=Math.max(a1x,a2x);const min_bx=Math.min(b1x,b2x);const max_bx=Math.max(b1x,b2x);if(max_axmax_bx)return false;const min_ay=Math.min(a1y,a2y);const max_ay=Math.max(a1y,a2y);const min_by=Math.min(b1y,b2y);const max_by=Math.max(b1y,b2y);if(max_aymax_by)return false;const dpx=b1x-a1x+b2x-a2x;const dpy=b1y-a1y+b2y-a2y;const qax=a2x-a1x;const qay=a2y- +a1y;const qbx=b2x-b1x;const qby=b2y-b1y;const d=Math.abs(qay*qbx-qby*qax);const la=qbx*dpy-qby*dpx;if(Math.abs(la)>d)return false;const lb=qax*dpy-qay*dpx;return Math.abs(lb)<=d}; +C3.segmentsIntersectPreCalc=function segmentsIntersectPreCalc(a1x,a1y,a2x,a2y,min_ax,max_ax,min_ay,max_ay,b1x,b1y,b2x,b2y){const min_bx=Math.min(b1x,b2x);const max_bx=Math.max(b1x,b2x);if(max_axmax_bx)return false;const min_by=Math.min(b1y,b2y);const max_by=Math.max(b1y,b2y);if(max_aymax_by)return false;const dpx=b1x-a1x+b2x-a2x;const dpy=b1y-a1y+b2y-a2y;const qax=a2x-a1x;const qay=a2y-a1y;const qbx=b2x-b1x;const qby=b2y-b1y;const d=Math.abs(qay*qbx-qby*qax);const la= +qbx*dpy-qby*dpx;if(Math.abs(la)>d)return false;const lb=qax*dpy-qay*dpx;return Math.abs(lb)<=d}; +C3.segmentIntersectsQuad=function segmentIntersectsQuad(x1,y1,x2,y2,q){const min_x=Math.min(x1,x2);const max_x=Math.max(x1,x2);const min_y=Math.min(y1,y2);const max_y=Math.max(y1,y2);const tlx=q.getTlx(),tly=q.getTly(),trx=q.getTrx(),try_=q.getTry(),brx=q.getBrx(),bry=q.getBry(),blx=q.getBlx(),bly=q.getBly();return C3.segmentsIntersectPreCalc(x1,y1,x2,y2,min_x,max_x,min_y,max_y,tlx,tly,trx,try_)||C3.segmentsIntersectPreCalc(x1,y1,x2,y2,min_x,max_x,min_y,max_y,trx,try_,brx,bry)||C3.segmentsIntersectPreCalc(x1, +y1,x2,y2,min_x,max_x,min_y,max_y,brx,bry,blx,bly)||C3.segmentsIntersectPreCalc(x1,y1,x2,y2,min_x,max_x,min_y,max_y,blx,bly,tlx,tly)}; +C3.segmentIntersectsAnyN=function segmentIntersectsAnyN(x1,y1,x2,y2,points){const min_x=Math.min(x1,x2);const max_x=Math.max(x1,x2);const min_y=Math.min(y1,y2);const max_y=Math.max(y1,y2);let i=0;for(let last=points.length-4;i<=last;i+=2)if(C3.segmentsIntersectPreCalc(x1,y1,x2,y2,min_x,max_x,min_y,max_y,points[i],points[i+1],points[i+2],points[i+3]))return true;return C3.segmentsIntersectPreCalc(x1,y1,x2,y2,min_x,max_x,min_y,max_y,points[i],points[i+1],points[0],points[1])};const NO_HIT=2; +const PADDING=1E-6;C3.rayIntersect=function rayIntersect(rx1,ry1,rx2,ry2,sx1,sy1,sx2,sy2){const rdx=rx2-rx1;const rdy=ry2-ry1;const sdx=sx2-sx1;const sdy=sy2-sy1;const det=rdx*sdy-rdy*sdx;if(det===0)return NO_HIT;const gamma=((ry1-ry2)*(sx2-rx1)+rdx*(sy2-ry1))/det;if(0=0&&v>=0&&u+v<=1}; +C3.triangleCartesianToBarycentric=function triangleCartesianToBarycentric(px,py,tx1,ty1,tx2,ty2,tx3,ty3){const v0x=tx2-tx1;const v0y=ty2-ty1;const v1x=tx3-tx1;const v1y=ty3-ty1;const v2x=px-tx1;const v2y=py-ty1;const dot00=v0x*v0x+v0y*v0y;const dot01=v0x*v1x+v0y*v1y;const dot11=v1x*v1x+v1y*v1y;const dot20=v2x*v0x+v2y*v0y;const dot21=v2x*v1x+v2y*v1y;const denom=dot00*dot11-dot01*dot01;const v=(dot11*dot20-dot01*dot21)/denom;const w=(dot00*dot21-dot01*dot20)/denom;const u=1-v-w;return[u,v,w]}; +C3.triangleBarycentricToCartesian3d=function triangleBarycentricToCartesian3d(u,v,w,tx1,ty1,tz1,tx2,ty2,tz2,tx3,ty3,tz3){return[u*tx1+v*tx2+w*tx3,u*ty1+v*ty2+w*ty3,u*tz1+v*tz2+w*tz3]}; + +} + +// ../lib/misc/miscutil.js +{ +'use strict';const C3=self.C3;let mainDocument=null;let baseHref="";if(typeof document!=="undefined"){mainDocument=document;const baseElem=document.querySelector("base");baseHref=baseElem&&baseElem.hasAttribute("href")?baseElem.getAttribute("href"):"";if(baseHref){if(baseHref.startsWith("/"))baseHref=baseHref.substr(1);if(!baseHref.endsWith("/"))baseHref+="/"}}C3.GetBaseHref=function GetBaseHref(){return baseHref}; +C3.GetBaseURL=function GetBaseURL(){if(!mainDocument)return"";const loc=mainDocument.location;return C3.GetPathFromURL(loc.origin+loc.pathname)+baseHref};C3.GetPathFromURL=function GetPathFromURL(url){if(!url.length)return url;if(url.endsWith("/")||url.endsWith("\\"))return url;const lastSlash=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));if(lastSlash===-1)return"";return url.substr(0,lastSlash+1)}; +C3.GetFilenameFromURL=function GetFilenameFromURL(url){if(!url.length)return url;if(url.endsWith("/")||url.endsWith("\\"))return"";const lastSlash=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));if(lastSlash===-1)return url;return url.substr(lastSlash+1)};C3.GetFileExtension=function GetFileExtension(filename){let i=filename.lastIndexOf(".");if(i<1)return"";else return filename.substr(i)}; +C3.SetFileExtension=function SetFileExtension(filename,newExt){const i=filename.lastIndexOf(".");if(i===-1)return filename+"."+newExt;else return filename.substr(0,i+1)+newExt};C3.GetFileNamePart=function GetFileNamePart(filename){let i=filename.lastIndexOf(".");if(i<1)return filename;else return filename.substr(0,i)};C3.NormalizeFileSeparator=function NormalizeFileSeparator(path){return path.replace(/\\/g,"/")}; +C3.IsFileExtension=function IsFileExtension(filename,extension){const ext=filename?C3.GetFileExtension(filename).slice(1):"";return extension===ext}; +C3.FileNameEquals=function FileNameEquals(file_or_filename,other_file_or_filename){let firstName;let secondName;if(C3.IsFileLike(file_or_filename))firstName=C3.GetFileNamePart(file_or_filename["name"]);if(C3.IsString(file_or_filename))firstName=C3.GetFileNamePart(file_or_filename);if(C3.IsFileLike(other_file_or_filename))secondName=C3.GetFileNamePart(other_file_or_filename["name"]);if(C3.IsString(other_file_or_filename))secondName=C3.GetFileNamePart(other_file_or_filename);return firstName===secondName}; +C3.ParseFilePath=function ParseFilePath(path){path=C3.NormalizeFileSeparator(path);let root=/^\w:\//.exec(path);if(root){root=root[0];path=path.slice(3);if(path[0]!=="/")path="/"+path}else root="";path=path.replace(/\/{2,}/g,"/");if(path.length>1&&path.slice(-1)==="/")path=path.slice(0,-1);const start=path.lastIndexOf("/")+1;let dir="",base=path,name,ext="";if(start>0){dir=path.slice(0,start);base=path.slice(start)}name=base;const end=base.lastIndexOf(".");if(end>0){ext=base.slice(end);name=base.slice(0, +-ext.length)}const full=root+dir+base;return{dir,base,name,root,ext,full}};C3.Wait=function Wait(delay,argument){return new Promise((resolve,reject)=>{self.setTimeout(resolve,delay,argument)})};C3.swallowException=function swallowException(f){try{f()}catch(e){if(C3.isDebug)console.warn("Swallowed exception: ",e)}};C3.noop=function noop(){};C3.equalsNoCase=function equalsNoCase(a,b){if(typeof a!=="string"||typeof b!=="string")return false;return a===b||a.normalize().toLowerCase()===b.normalize().toLowerCase()}; +C3.equalsCase=function equalsCase(a,b){if(typeof a!=="string"||typeof b!=="string")return false;if(a===b)return true;return a.normalize()===b.normalize()};C3.typedArraySet16=function typedArraySet16(dest,src,i){dest[i++]=src[0];dest[i++]=src[1];dest[i++]=src[2];dest[i++]=src[3];dest[i++]=src[4];dest[i++]=src[5];dest[i++]=src[6];dest[i++]=src[7];dest[i++]=src[8];dest[i++]=src[9];dest[i++]=src[10];dest[i++]=src[11];dest[i++]=src[12];dest[i++]=src[13];dest[i++]=src[14];dest[i]=src[15]}; +C3.truncateArray=function truncateArray(arr,index){arr.length=index};C3.clearArray=function clearArray(arr){if(!arr)return;if(arr.length===0)return;C3.truncateArray(arr,0)};C3.clear2DArray=function clear2DArray(arr){if(!arr)return;for(let i=0;iarrayLength)C3.extendArray(arr,len,filler)};C3.shallowAssignArray=function shallowAssignArray(dest,src){C3.clearArray(dest);C3.appendArray(dest,src)};C3.appendArray=function appendArray(a,b){if(b.length<1E4)a.push(...b);else for(let i=0,len=b.length;i=arr.length)return;let len=arr.length-1;for(let i=index;i=0)a.splice(i,1)};C3.arraysEqual=function arraysEqual(a,b){let len=a.length;if(b.length!==len)return false;for(let i=0;i=0&&indext.trim()).filter(t=>!!t)};C3.filterSet=function filterSet(s,filter,transform){const ret=new Set;for(const i of s.values()){if(!filter(i))continue;transform?ret.add(transform(i)):ret.add(i)}return ret};C3.mergeSets=function mergeSets(set1,set2){if(set1["union"])return set1["union"](set2);else return new Set([...set1,...set2])}; +C3.mergeSetsInPlace=function mergeSetsInPlace(set1,set2){for(const item of set2)set1.add(item);return set1};C3.first=function first(iterable){for(let i of iterable)return i;return null};C3.xor=function(x,y){return!x!==!y};C3.compare=function compare(x,cmp,y){switch(cmp){case 0:return x===y;case 1:return x!==y;case 2:return xy;case 5:return x>=y;default:return false}}; +C3.hasAnyOwnProperty=function hasAnyOwnProperty(o){for(let p in o)if(o.hasOwnProperty(p))return true;return false}; +C3.PromiseAllWithProgress=function PromiseAllWithProgress(arr,progressCallback){if(!arr.length)return Promise.resolve([]);return new Promise((resolve,reject)=>{const results=[];let numberCompleted=0;let cancelled=false;for(let i=0,len=arr.length;i{if(cancelled)return;results[i]=result;++numberCompleted;if(numberCompleted===arr.length)resolve(results);else progressCallback(numberCompleted,arr.length)}).catch(err=>{cancelled=true;reject(err)})}})}; +let memoryCallbacks=[];C3.AddLibraryMemoryCallback=function AddLibraryMemoryCallback(f){memoryCallbacks.push(f)};C3.GetEstimatedLibraryMemoryUsage=function GetEstimatedLibraryMemoryUsage(){let ret=0;for(let f of memoryCallbacks){let m=f();ret+=m}return Math.floor(ret)};let nextTaskId=1;const activeTaskIds=new Map;const taskMessageChannel=new MessageChannel;taskMessageChannel.port2.onmessage=function OnTask(e){const id=e.data;const callback=activeTaskIds.get(id);activeTaskIds.delete(id);if(callback)callback(performance.now())}; +C3.RequestUnlimitedAnimationFrame=function RequestUnlimitedAnimationFrame(callback){const id=nextTaskId++;activeTaskIds.set(id,callback);taskMessageChannel.port1.postMessage(id);return id};C3.CancelUnlimitedAnimationFrame=function CancelUnlimitedAnimationFrame(id){activeTaskIds.delete(id)};C3.PostTask=C3.RequestUnlimitedAnimationFrame;C3.WaitForNextTask=function WaitForNextTask(){return new Promise(resolve=>C3.PostTask(resolve))};const activeRPAFids=new Set; +C3.RequestPostAnimationFrame=function RequestPostAnimationFrame(callback){const id=self.requestAnimationFrame(async timestamp=>{await C3.WaitForNextTask();if(!activeRPAFids.has(id))return;activeRPAFids.delete(id);callback(timestamp)});activeRPAFids.add(id);return id};C3.CancelPostAnimationFrame=function CancelPostAnimationFrame(id){if(!activeRPAFids.has(id))return;self.cancelAnimationFrame(id);activeRPAFids.delete(id)}; + +} + +// lib/misc/runtimeutil.js +{ +'use strict';const C3=self.C3;C3.IsAbsoluteURL=function IsAbsoluteURL(url){return/^(?:[a-z\-]+:)?\/\//.test(url)||url.substr(0,5)==="data:"||url.substr(0,5)==="blob:"};C3.IsRelativeURL=function IsRelativeURL(url){return!C3.IsAbsoluteURL(url)};C3.ThrowIfNotOk=function ThrowIfNotOk(response){if(!response.ok)throw new Error(`fetch '${response.url}' response returned ${response.status} ${response.statusText}`);}; +C3.FetchOk=function FetchOk(url,init){return fetch(url,init).then(response=>{C3.ThrowIfNotOk(response);return response})};C3.FetchText=function FetchText(url){return C3.FetchOk(url).then(response=>response.text())};C3.FetchJson=function FetchJson(url){return C3.FetchOk(url).then(response=>response.json())};C3.FetchBlob=function FetchBlob(url){return C3.FetchOk(url).then(response=>response.blob())};C3.FetchArrayBuffer=function FetchArrayBuffer(url){return C3.FetchOk(url).then(response=>response.arrayBuffer())}; +C3.FetchImage=function FetchImage(url){return new Promise((resolve,reject)=>{const img=new Image;img.onload=()=>resolve(img);img.onerror=err=>reject(err);img.src=url})};C3.BlobToArrayBuffer=function BlobToArrayBuffer(blob){if(typeof blob["arrayBuffer"]==="function")return blob["arrayBuffer"]();else return new Promise((resolve,reject)=>{const fileReader=new FileReader;fileReader.onload=()=>resolve(fileReader.result);fileReader.onerror=()=>reject(fileReader.error);fileReader.readAsArrayBuffer(blob)})}; +C3.BlobToString=function BlobToString(blob){if(typeof blob["text"]==="function")return blob["text"]();else return new Promise((resolve,reject)=>{const fileReader=new FileReader;fileReader.onload=()=>resolve(fileReader.result);fileReader.onerror=()=>reject(fileReader.error);fileReader.readAsText(blob)})};C3.BlobToJson=function BlobToJson(blob){return C3.BlobToString(blob).then(text=>JSON.parse(text))}; +C3.BlobToImage=async function BlobToImage(blob,decodeImage){let blobUrl=URL.createObjectURL(blob);try{const img=await C3.FetchImage(blobUrl);URL.revokeObjectURL(blobUrl);blobUrl="";if(decodeImage&&typeof img["decode"]==="function")await img["decode"]();return img}finally{if(blobUrl)URL.revokeObjectURL(blobUrl)}}; +C3.CreateCanvas=function CreateCanvas(width,height){if(typeof document!=="undefined"&&typeof document.createElement==="function"){const canvas=document.createElement("canvas");canvas.width=width;canvas.height=height;return canvas}else return new OffscreenCanvas(width,height)}; +C3.CanvasToBlob=function CanvasToBlob(canvas,type,quality){if(typeof quality!=="number")quality=1;type=type||"image/png";quality=C3.clamp(quality,0,1);if(canvas["convertToBlob"])return canvas["convertToBlob"]({"type":type,"quality":quality});else if(canvas.toBlob)return new Promise(resolve=>canvas.toBlob(resolve,type,quality));else throw new Error("could not convert canvas to blob");}; +C3.DrawableToBlob=function DrawableToBlob(drawable,type,quality){const canvas=C3.CreateCanvas(drawable.width,drawable.height);const ctx=canvas.getContext("2d");ctx.drawImage(drawable,0,0);return C3.CanvasToBlob(canvas,type,quality)}; +C3.ImageDataToBlob=function ImageDataToBlob(imageData,type,quality){if(C3.Supports.ImageBitmapOptions)return createImageBitmap(imageData,{"premultiplyAlpha":"none"}).then(imageBitmap=>C3.DrawableToBlob(imageBitmap,type,quality));else if(C3.Supports.ImageBitmap)return createImageBitmap(imageData).then(imageBitmap=>C3.DrawableToBlob(imageBitmap,type,quality));else{const canvas=C3.CreateCanvas(imageData.width,imageData.height);const ctx=canvas.getContext("2d");ctx.putImageData(imageData,0,0);return C3.CanvasToBlob(canvas, +type,quality)}};C3.CopySet=function CopySet(dest,src){dest.clear();for(const x of src)dest.add(x)};C3.MapToObject=function MapToObject(map){const ret=Object.create(null);for(const [k,v]of map.entries())ret[k]=v;return ret};C3.ObjectToMap=function ObjectToMap(o,map){map.clear();for(const [k,v]of Object.entries(o))map.set(k,v)}; +C3.ToSuperJSON=function ToSuperJSON(v){if(typeof v==="object"&&v!==null)if(v instanceof Set)return{"_c3type_":"set","data":[...v].map(o=>ToSuperJSON(o))};else if(v instanceof Map)return{"_c3type_":"map","data":[...v].map(pair=>[pair[0],ToSuperJSON(pair[1])])};else{const ret=Object.create(null);for(const [key,value]of Object.entries(v))ret[key]=ToSuperJSON(value);return ret}return v}; +C3.FromSuperJSON=function FromSuperJSON(v){if(typeof v==="object"&v!==null)if(v["_c3type_"]==="set")return new Set(v["data"].map(o=>FromSuperJSON(o)));else if(v["_c3type_"]==="map")return new Map(v["data"].map(pair=>[pair[0],FromSuperJSON(pair[1])]));else{const ret=Object.create(null);for(const [key,value]of Object.entries(v))ret[key]=FromSuperJSON(value);return ret}return v}; +C3.CSSToCamelCase=function(str){if(str.startsWith("--"))return str;let ret="";let isAfterHyphen=false;let index=0;for(const ch of str){if(ch==="-"){if(index>0)isAfterHyphen=true}else if(isAfterHyphen){ret+=ch.toUpperCase();isAfterHyphen=false}else ret+=ch;++index}return ret};C3.IsIterator=function(o){return typeof o==="object"&&typeof o.next==="function"}; +C3.MakeFilledArray=function MakeFilledArray(len,data){const ret=[];if(typeof data==="function")for(let i=0;i1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p} +C3.Color=class Color{constructor(r,g,b,a){this._r=NaN;this._g=NaN;this._b=NaN;this._a=NaN;this._r=0;this._g=0;this._b=0;this._a=0;if(r instanceof C3.Color)this.set(r);else this.setRgba(r||0,g||0,b||0,a||0)}setRgb(r,g,b){this._r=+r;this._g=+g;this._b=+b;this.clamp();return this}setRgba(r,g,b,a){this._r=+r;this._g=+g;this._b=+b;this._a=+a;this.clamp();return this}set(c){this._r=c._r;this._g=c._g;this._b=c._b;this._a=c._a;return this}copy(c){return this.set(c)}add(c){this._r+=c._r;this._g+=c._g;this._b+= +c._b;this._a+=c._a;this.clamp()}addRgb(r,g,b,a=0){this._r+=+r;this._g+=+g;this._b+=+b;this._a+=+a;this.clamp()}diff(c){this.setR(Math.max(this._r,c._r)-Math.min(this._r,c._r));this.setG(Math.max(this._g,c._g)-Math.min(this._g,c._g));this.setB(Math.max(this._b,c._b)-Math.min(this._b,c._b));this.setA(Math.max(this._a,c._a)-Math.min(this._a,c._a));this.clamp()}copyRgb(c){this._r=c._r;this._g=c._g;this._b=c._b}setR(r){this._r=C3.clamp(+r,0,1)}getR(){return this._r}setG(g){this._g=C3.clamp(+g,0,1)}getG(){return this._g}setB(b){this._b= +C3.clamp(+b,0,1)}getB(){return this._b}setA(a){this._a=C3.clamp(+a,0,1)}getA(){return this._a}clone(){return C3.New(C3.Color,this._r,this._g,this._b,this._a)}toArray(){return[this._r,this._g,this._b,this._a]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(ta,i){ta[i++]=this._r;ta[i++]=this._g;ta[i++]=this._b;ta[i]=this._a}writeRGBToTypedArray(ta,i){ta[i++]=this._r;ta[i++]=this._g;ta[i]=this._b}equals(c){return this._r===c._r&&this._g===c._g&&this._b===c._b&&this._a===c._a}equalsIgnoringAlpha(c){return this._r=== +c._r&&this._g===c._g&&this._b===c._b}equalsRgb(r,g,b){return this._r===r&&this._g===g&&this._b===b}equalsRgba(r,g,b,a){return this._r===r&&this._g===g&&this._b===b&&this._a===a}equalsF32Array(arr,offset){return arr[offset]===Math.fround(this._r)&&arr[offset+1]===Math.fround(this._g)&&arr[offset+2]===Math.fround(this._b)&&arr[offset+3]===Math.fround(this._a)}equalsRGBF32Array(arr,offset){return arr[offset]===Math.fround(this._r)&&arr[offset+1]===Math.fround(this._g)&&arr[offset+2]===Math.fround(this._b)}multiply(c){this._r*= +c._r;this._g*=c._g;this._b*=c._b;this._a*=c._a}multiplyAlpha(a){this._r*=a;this._g*=a;this._b*=a;this._a*=a}premultiply(){this._r*=this._a;this._g*=this._a;this._b*=this._a;return this}unpremultiply(){this._r/=this._a;this._g/=this._a;this._b/=this._a;return this}clamp(){this._r=C3.clamp(this._r,0,1);this._g=C3.clamp(this._g,0,1);this._b=C3.clamp(this._b,0,1);this._a=C3.clamp(this._a,0,1);return this}setFromRgbValue(rgb){this._r=C3.GetRValue(rgb);this._g=C3.GetGValue(rgb);this._b=C3.GetBValue(rgb); +this._a=C3.GetAValue(rgb)}getCssRgb(_r,_g,_b){const r=C3.IsFiniteNumber(_r)?_r:this.getR();const g=C3.IsFiniteNumber(_g)?_g:this.getG();const b=C3.IsFiniteNumber(_b)?_b:this.getB();return`rgb(${r*100}%, ${g*100}%, ${b*100}%)`}getCssRgba(_r,_g,_b,_a){const r=C3.IsFiniteNumber(_r)?_r:this.getR();const g=C3.IsFiniteNumber(_g)?_g:this.getG();const b=C3.IsFiniteNumber(_b)?_b:this.getB();const a=C3.IsFiniteNumber(_a)?_a:this.getA();return`rgba(${r*100}%, ${g*100}%, ${b*100}%, ${a})`}toHexString(){const rh= +Math.round(this.getR()*255);const gh=Math.round(this.getG()*255);const bh=Math.round(this.getB()*255);return"#"+padTwoDigits(rh.toString(16))+padTwoDigits(gh.toString(16))+padTwoDigits(bh.toString(16))}parseHexString(str){if(typeof str!=="string")return false;str=str.trim();if(str.charAt(0)==="#")str=str.substr(1);let rv;let gv;let bv;if(str.length===3){rv=parseInt(str[0],16)/15;gv=parseInt(str[1],16)/15;bv=parseInt(str[2],16)/15}else if(str.length===6){rv=parseInt(str.substr(0,2),16)/255;gv=parseInt(str.substr(2, +2),16)/255;bv=parseInt(str.substr(4,2),16)/255}else return false;if(isFinite(rv))this.setR(rv);if(isFinite(gv))this.setG(gv);if(isFinite(bv))this.setB(bv);this.setA(1);return true}toCommaSeparatedRgb(){const rv=Math.round(this.getR()*255);const gv=Math.round(this.getG()*255);const bv=Math.round(this.getB()*255);return`${rv}, ${gv}, ${bv}`}toRgbArray(){const rv=Math.round(this.getR()*255);const gv=Math.round(this.getG()*255);const bv=Math.round(this.getB()*255);return[rv,gv,bv]}parseCommaSeparatedRgb(str){if(typeof str!== +"string")return false;str=str.replace(/^rgb\(|\)|%/,"");const arr=str.split(",");if(arr.length<3)return false;const rv=parseInt(arr[0].trim(),10)/255;const gv=parseInt(arr[1].trim(),10)/255;const bv=parseInt(arr[2].trim(),10)/255;if(isFinite(rv))this.setR(rv);if(isFinite(gv))this.setG(gv);if(isFinite(bv))this.setB(bv);this.setA(1);return true}parseCommaSeparatedPercentageRgb(str){if(typeof str!=="string")return false;str=str.replace(/^rgb\(|\)|%/,"");const arr=str.split(",");if(arr.length<3)return false; +const rv=parseInt(arr[0].trim(),10)/100;const gv=parseInt(arr[1].trim(),10)/100;const bv=parseInt(arr[2].trim(),10)/100;if(isFinite(rv))this.setR(rv);if(isFinite(gv))this.setG(gv);if(isFinite(bv))this.setB(bv);this.setA(1);return true}parseCommaSeparatedRgba(str){if(typeof str!=="string")return false;str=str.replace(/^rgba\(|\)|%/,"");const arr=str.split(",");if(arr.length<4)return false;const rv=parseInt(arr[0].trim(),10)/255;const gv=parseInt(arr[1].trim(),10)/255;const bv=parseInt(arr[2].trim(), +10)/255;const av=parseFloat(arr[3].trim());if(isFinite(rv))this.setR(rv);if(isFinite(gv))this.setG(gv);if(isFinite(bv))this.setB(bv);if(isFinite(av))this.setA(av);return true}parseCommaSeparatedPercentageRgba(str){if(typeof str!=="string")return false;str=str.replace(/^rgba\(|\)|%/,"");const arr=str.split(",");if(arr.length<4)return false;const rv=parseInt(arr[0].trim(),10)/100;const gv=parseInt(arr[1].trim(),10)/100;const bv=parseInt(arr[2].trim(),10)/100;const av=parseFloat(arr[3].trim());if(isFinite(rv))this.setR(rv); +if(isFinite(gv))this.setG(gv);if(isFinite(bv))this.setB(bv);if(isFinite(av))this.setA(av);return true}parseString(str){if(typeof str!=="string")return false;str=str.replace(/\s+/,"");if(str.includes(","))if(str.startsWith("rgb("))if(str.includes("%"))return this.parseCommaSeparatedPercentageRgb(str);else return this.parseCommaSeparatedRgb(str);else if(str.startsWith("rgba("))if(str.includes("%"))return this.parseCommaSeparatedPercentageRgba(str);else return this.parseCommaSeparatedRgba(str);else if(str.startsWith("hsl(")|| +str.startsWith("hsla("))return this.parseHSLString(str);else{const components=str.split(",");if(str.includes("%")){if(components.length===3)return this.parseCommaSeparatedPercentageRgb(str);else if(components.length===4)return this.parseCommaSeparatedPercentageRgba(str);return false}else{if(components.length===3)return this.parseCommaSeparatedRgb(str);else if(components.length===4)return this.parseCommaSeparatedRgba(str);return false}}else return this.parseHexString(str)}toJSON(){return[this._r,this._g, +this._b,this._a]}setFromHSLA(h,s,l,a){let r;let g;let b;h%=360;s=C3.clamp(s,0,100);l=C3.clamp(l,0,100);a=C3.clamp(a,0,1);h/=360;s/=100;l/=100;if(s===0)r=g=b=l;else{const q=l<.5?l*(1+s):l+s-l*s;const p=2*l-q;r=hueToRGB(p,q,h+1/3);g=hueToRGB(p,q,h);b=hueToRGB(p,q,h-1/3)}this.setR(r);this.setG(g);this.setB(b);this.setA(a);return this}parseHSLString(str){const cleanString=str.replace(/ |hsl|hsla|\(|\)|;/gi,"");const hsl=HSL_TEST.exec(cleanString);const hsla=HSLA_TEST.exec(cleanString);if(hsl&&hsl.length=== +4){this.setFromHSLA(+hsl[1],+hsl[2],+hsl[3],1);return true}else if(hsla&&hsla.length===5){this.setFromHSLA(+hsl[1],+hsl[2],+hsl[3],+hsl[4]);return true}return false}toHSLAString(){const r=this._r;const g=this._g;const b=this._b;const a=this._a;const h=C3.Color.GetHue(r,g,b);const s=C3.Color.GetSaturation(r,g,b);const l=C3.Color.GetLuminosity(r,g,b);return`hsla(${h}, ${s}%, ${l}%, ${a})`}toHSLAArray(){const r=this._r;const g=this._g;const b=this._b;return[C3.Color.GetHue(r,g,b),C3.Color.GetSaturation(r, +g,b),C3.Color.GetLuminosity(r,g,b),this._a]}setFromJSON(arr){if(!Array.isArray(arr))return;if(arr.length<3)return;this._r=arr[0];this._g=arr[1];this._b=arr[2];if(arr.length>=4)this._a=arr[3];else this._a=1}set r(r){this.setR(r)}get r(){return this.getR()}set g(g){this.setG(g)}get g(){return this.getG()}set b(b){this.setB(b)}get b(){return this.getB()}set a(a){this.setA(a)}get a(){return this.getA()}setAtIndex(i,v){switch(i){case 0:this.setR(v);break;case 1:this.setG(v);break;case 2:this.setB(v);break; +case 3:this.setA(v);break;default:throw new RangeError("invalid color index");}}getAtIndex(i){switch(i){case 0:return this.getR();case 1:return this.getG();case 2:return this.getB();case 3:return this.getA();default:throw new RangeError("invalid color index");}}static Equals(color_or_json_1,color_or_json_2){let c1;let c2;if(Array.isArray(color_or_json_1)){c1=new C3.Color;c1.setFromJSON(color_or_json_1)}else if(color_or_json_1 instanceof C3.Color)c1=color_or_json_1;else throw new Error("unexpected type"); +if(Array.isArray(color_or_json_2)){c2=new C3.Color;c2.setFromJSON(color_or_json_2)}else if(color_or_json_2 instanceof C3.Color)c2=color_or_json_2;else throw new Error("unexpected type");return c1.equals(c2)}static DiffChannel(channel1,channel2){return C3.clamp(Math.max(channel1,channel2)-Math.min(channel1,channel2),0,1)}static Diff(c1,c2){const ret=new C3.Color;ret.setR(Math.max(c1._r,c2._r)-Math.min(c1._r,c2._r));ret.setG(Math.max(c1._g,c2._g)-Math.min(c1._g,c2._g));ret.setB(Math.max(c1._b,c2._b)- +Math.min(c1._b,c2._b));ret.setA(Math.max(c1._a,c2._a)-Math.min(c1._a,c2._a));return ret}static DiffNoAlpha(c1,c2){const ret=new C3.Color(0,0,0,1);ret.setR(Math.max(c1._r,c2._r)-Math.min(c1._r,c2._r));ret.setG(Math.max(c1._g,c2._g)-Math.min(c1._g,c2._g));ret.setB(Math.max(c1._b,c2._b)-Math.min(c1._b,c2._b));return ret}static GetHue(r,g,b){const max=Math.max(r,g,b);const min=Math.min(r,g,b);if(max===min)return 0;let h=0;switch(max){case r:h=(g-b)/(max-min)+(g.5?d/(2-max-min):d/(max+min);return Math.round(s*100)}static GetLuminosity(r,g,b){const max=Math.max(r,g,b);const min=Math.min(r,g,b);const l=(max+min)/2;if(!max)return 0;return Math.round(l*100)}};C3.Color.White=Object.freeze(C3.New(C3.Color,1,1,1,1)); +C3.Color.Black=Object.freeze(C3.New(C3.Color,0,0,0,1));C3.Color.TransparentBlack=Object.freeze(C3.New(C3.Color,0,0,0,0)); + +} + +// ../lib/misc/vector2.js +{ +'use strict';const C3=self.C3; +C3.Vector2=class Vector2{constructor(x,y){this._x=0;this._y=0;if(x instanceof C3.Vector2)this.copy(x);else this.set(x||0,y||0)}set(x,y){this._x=+x;this._y=+y}copy(v){this._x=v._x;this._y=v._y}equals(v){return this._x===v._x&&this._y===v._y}equalsValues(x,y){return this._x===x&&this._y===y}equalsF32Array(arr,offset){return arr[offset]===Math.fround(this._x)&&arr[offset+1]===Math.fround(this._y)}setX(x){this._x=+x}getX(){return this._x}setY(y){this._y=+y}getY(){return this._y}toArray(){return[this._x,this._y]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(ta, +i){ta[i++]=this._x;ta[i]=this._y}offset(x,y){this._x+=+x;this._y+=+y}scale(x,y){this._x*=x;this._y*=y}divide(x,y){this._x/=x;this._y/=y}round(){this._x=Math.round(this._x);this._y=Math.round(this._y)}floor(){this._x=Math.floor(this._x);this._y=Math.floor(this._y)}ceil(){this._x=Math.ceil(this._x);this._y=Math.ceil(this._y)}angle(){return C3.angleTo(0,0,this._x,this._y)}lengthSquared(){return this._x*this._x+this._y*this._y}length(){return Math.hypot(this._x,this._y)}rotatePrecalc(sin_a,cos_a){const temp= +this._x*cos_a-this._y*sin_a;this._y=this._y*cos_a+this._x*sin_a;this._x=temp}rotate(a){if(a===0)return;this.rotatePrecalc(Math.sin(a),Math.cos(a))}rotateAbout(a,x,y){if(a===0||x===this._x&&y===this._y)return;this._x-=x;this._y-=y;this.rotatePrecalc(Math.sin(a),Math.cos(a));this._x+=+x;this._y+=+y}move(a,dist){if(dist===0)return;this._x+=Math.cos(a)*dist;this._y+=Math.sin(a)*dist}normalize(){const m=this.length();if(m!==0&&m!==1){this._x/=m;this._y/=m}}clamp(lower,upper){this._x=C3.clamp(this._x,lower, +upper);this._y=C3.clamp(this._y,lower,upper)}dot(other){return this._x*other._x+this._y*other._y}reverse(){this._x=-this._x;this._y=-this._y}perp(){let x=this._x;this._x=this._y;this._y=-x;return this}}; + +} + +// ../lib/misc/rect.js +{ +'use strict';const C3=self.C3; +C3.Rect=class Rect{constructor(left,top,right,bottom){this._left=NaN;this._top=NaN;this._right=NaN;this._bottom=NaN;this._left=0;this._top=0;this._right=0;this._bottom=0;if(left instanceof C3.Rect)this.copy(left);else this.set(left||0,top||0,right||0,bottom||0)}set(left,top,right,bottom){this._left=+left;this._top=+top;this._right=+right;this._bottom=+bottom}setWH(left,top,width,height){left=+left;top=+top;this._left=left;this._top=top;this._right=left+ +width;this._bottom=top+ +height}copy(rect){this._left= ++rect._left;this._top=+rect._top;this._right=+rect._right;this._bottom=+rect._bottom}clone(){return new C3.Rect(this._left,this._top,this._right,this._bottom)}static Merge(first,second){const ret=new C3.Rect;ret.setLeft(Math.min(first._left,second._left));ret.setTop(Math.min(first._top,second._top));ret.setRight(Math.max(first._right,second._right));ret.setBottom(Math.max(first._bottom,second._bottom));return ret}static FromObject(o){return new C3.Rect(o.left,o.top,o.right,o.bottom)}equals(rect){return this._left=== +rect._left&&this._top===rect._top&&this._right===rect._right&&this._bottom===rect._bottom}equalsWH(x,y,w,h){return this._left===x&&this._top===y&&this.width()===w&&this.height()===h}equalsF32Array(arr,offset){return arr[offset]===Math.fround(this._left)&&arr[offset+1]===Math.fround(this._top)&&arr[offset+2]===Math.fround(this._right)&&arr[offset+3]===Math.fround(this._bottom)}setLeft(l){this._left=+l}getLeft(){return this._left}setTop(t){this._top=+t}getTop(){return this._top}setRight(r){this._right= ++r}getRight(){return this._right}setBottom(b){this._bottom=+b}getBottom(){return this._bottom}toArray(){return[this._left,this._top,this._right,this._bottom]}toTypedArray(){return new Float64Array(this.toArray())}toDOMRect(){return new DOMRect(this._left,this._top,this.width(),this.height())}static fromDOMRect(domRect){return C3.New(C3.Rect,domRect.left,domRect.top,domRect.right,domRect.bottom)}writeToTypedArray(ta,i){ta[i++]=this._left;ta[i++]=this._top;ta[i++]=this._right;ta[i]=this._bottom}writeAsQuadToTypedArray(ta, +i){ta[i++]=this._left;ta[i++]=this._top;ta[i++]=this._right;ta[i++]=this._top;ta[i++]=this._right;ta[i++]=this._bottom;ta[i++]=this._left;ta[i]=this._bottom}writeAsQuadToTypedArray3D(ta,i,z){ta[i++]=this._left;ta[i++]=this._top;ta[i++]=z;ta[i++]=this._right;ta[i++]=this._top;ta[i++]=z;ta[i++]=this._right;ta[i++]=this._bottom;ta[i++]=z;ta[i++]=this._left;ta[i++]=this._bottom;ta[i]=z}width(){return this._right-this._left}height(){return this._bottom-this._top}midX(){return(this._left+this._right)/2}midY(){return(this._top+ +this._bottom)/2}offset(x,y){x=+x;y=+y;this._left+=x;this._top+=y;this._right+=x;this._bottom+=y}offsetLeft(x){this._left+=+x}offsetTop(y){this._top+=+y}offsetRight(x){this._right+=+x}offsetBottom(y){this._bottom+=+y}toSquare(axis){if(axis!=="x")throw new Error("invalid axis, only 'x' supported");if(this._topthis._right)this.swapLeftRight(); +if(this._top>this._bottom)this.swapTopBottom()}intersectsRect(rect){return!(rect._rightthis._right||rect._top>this._bottom)}intersectsRectOffset(rect,x,y){return!(rect._right+xthis._right||rect._top+y>this._bottom)}containsPoint(x,y){return x>=this._left&&x<=this._right&&y>=this._top&&y<=this._bottom}containsRect(rect){return rect._left>=this._left&&rect._top>=this._top&&rect._right<=this._right&&rect._bottom<= +this._bottom}expandToContain(rect){if(rect._leftthis._right)this._right=+rect._right;if(rect._bottom>this._bottom)this._bottom=+rect._bottom}lerpInto(rect){this._left=C3.lerp(rect._left,rect._right,this._left);this._top=C3.lerp(rect._top,rect._bottom,this._top);this._right=C3.lerp(rect._left,rect._right,this._right);this._bottom=C3.lerp(rect._top,rect._bottom,this._bottom)}}; + +} + +// ../lib/misc/quad.js +{ +'use strict';const C3=self.C3; +C3.Quad=class Quad{constructor(tlx,tly,trx,try_,brx,bry,blx,bly){this._tlx=NaN;this._tly=NaN;this._trx=NaN;this._try=NaN;this._brx=NaN;this._bry=NaN;this._blx=NaN;this._bly=NaN;this._tlx=0;this._tly=0;this._trx=0;this._try=0;this._brx=0;this._bry=0;this._blx=0;this._bly=0;if(tlx instanceof C3.Quad)this.copy(tlx);else this.set(tlx||0,tly||0,trx||0,try_||0,brx||0,bry||0,blx||0,bly||0)}set(tlx,tly,trx,try_,brx,bry,blx,bly){this._tlx=+tlx;this._tly=+tly;this._trx=+trx;this._try=+try_;this._brx=+brx;this._bry= ++bry;this._blx=+blx;this._bly=+bly}setRect(left,top,right,bottom){this.set(left,top,right,top,right,bottom,left,bottom)}copy(q){this._tlx=q._tlx;this._tly=q._tly;this._trx=q._trx;this._try=q._try;this._brx=q._brx;this._bry=q._bry;this._blx=q._blx;this._bly=q._bly}equals(q){return this._tlx===q._tlx&&this._tly===q._tly&&this._trx===q._trx&&this._try===q._try&&this._brx===q._brx&&this._bry===q._bry&&this._blx===q._blx&&this._bly===q._bly}setTlx(v){this._tlx=+v}getTlx(){return this._tlx}setTly(v){this._tly= ++v}getTly(){return this._tly}setTrx(v){this._trx=+v}getTrx(){return this._trx}setTry(v){this._try=+v}getTry(){return this._try}setBrx(v){this._brx=+v}getBrx(){return this._brx}setBry(v){this._bry=+v}getBry(){return this._bry}setBlx(v){this._blx=+v}getBlx(){return this._blx}setBly(v){this._bly=+v}getBly(){return this._bly}toDOMQuad(){return new DOMQuad(new DOMPoint(this._tlx,this._tly),new DOMPoint(this._trx,this._try),new DOMPoint(this._brx,this._bry),new DOMPoint(this._blx,this._bly))}static fromDOMQuad(domQuad){return C3.New(C3.Quad, +domQuad.p1.x,domQuad.p1.y,domQuad.p2.x,domQuad.p2.y,domQuad.p3.x,domQuad.p3.y,domQuad.p4.x,domQuad.p4.y)}toArray(){return[this._tlx,this._tly,this._trx,this._try,this._brx,this._bry,this._blx,this._bly]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(ta,i){ta[i++]=this._tlx;ta[i++]=this._tly;ta[i++]=this._trx;ta[i++]=this._try;ta[i++]=this._brx;ta[i++]=this._bry;ta[i++]=this._blx;ta[i]=this._bly}writeToTypedArray3D(ta,i,z){ta[i++]=this._tlx;ta[i++]=this._tly;ta[i++]=z;ta[i++]= +this._trx;ta[i++]=this._try;ta[i++]=z;ta[i++]=this._brx;ta[i++]=this._bry;ta[i++]=z;ta[i++]=this._blx;ta[i++]=this._bly;ta[i]=z}offset(x,y){x=+x;y=+y;this._tlx+=x;this._tly+=y;this._trx+=x;this._try+=y;this._brx+=x;this._bry+=y;this._blx+=x;this._bly+=y}round(){this._tlx=Math.round(this._tlx);this._tly=Math.round(this._tly);this._trx=Math.round(this._trx);this._try=Math.round(this._try);this._brx=Math.round(this._brx);this._bry=Math.round(this._bry);this._blx=Math.round(this._blx);this._bly=Math.round(this._bly)}floor(){this._tlx= +Math.floor(this._tlx);this._tly=Math.floor(this._tly);this._trx=Math.floor(this._trx);this._try=Math.floor(this._try);this._brx=Math.floor(this._brx);this._bry=Math.floor(this._bry);this._blx=Math.floor(this._blx);this._bly=Math.floor(this._bly)}ceil(){this._tlx=Math.ceil(this._tlx);this._tly=Math.ceil(this._tly);this._trx=Math.ceil(this._trx);this._try=Math.ceil(this._try);this._brx=Math.ceil(this._brx);this._bry=Math.ceil(this._bry);this._blx=Math.ceil(this._blx);this._bly=Math.ceil(this._bly)}setFromRect(rect){this._tlx= +rect._left;this._tly=rect._top;this._trx=rect._right;this._try=rect._top;this._brx=rect._right;this._bry=rect._bottom;this._blx=rect._left;this._bly=rect._bottom}setFromRotatedRect(rect,a){if(a===0)this.setFromRect(rect);else this.setFromRotatedRectPrecalc(rect,Math.sin(a),Math.cos(a))}setFromRotatedRectPrecalc(rect,sin_a,cos_a){const left_sin_a=rect._left*sin_a;const top_sin_a=rect._top*sin_a;const right_sin_a=rect._right*sin_a;const bottom_sin_a=rect._bottom*sin_a;const left_cos_a=rect._left*cos_a; +const top_cos_a=rect._top*cos_a;const right_cos_a=rect._right*cos_a;const bottom_cos_a=rect._bottom*cos_a;this._tlx=left_cos_a-top_sin_a;this._tly=top_cos_a+left_sin_a;this._trx=right_cos_a-top_sin_a;this._try=top_cos_a+right_sin_a;this._brx=right_cos_a-bottom_sin_a;this._bry=bottom_cos_a+right_sin_a;this._blx=left_cos_a-bottom_sin_a;this._bly=bottom_cos_a+left_sin_a}getBoundingBox(rect){rect.set(Math.min(this._tlx,this._trx,this._brx,this._blx),Math.min(this._tly,this._try,this._bry,this._bly),Math.max(this._tlx, +this._trx,this._brx,this._blx),Math.max(this._tly,this._try,this._bry,this._bly))}containsPoint(x,y){let v0x=this._trx-this._tlx;let v0y=this._try-this._tly;const v1x=this._brx-this._tlx;const v1y=this._bry-this._tly;const v2x=x-this._tlx;const v2y=y-this._tly;let dot00=v0x*v0x+v0y*v0y;let dot01=v0x*v1x+v0y*v1y;let dot02=v0x*v2x+v0y*v2y;const dot11=v1x*v1x+v1y*v1y;const dot12=v1x*v2x+v1y*v2y;let invDenom=1/(dot00*dot11-dot01*dot01);let u=(dot11*dot02-dot01*dot12)*invDenom;let v=(dot00*dot12-dot01* +dot02)*invDenom;if(u>=0&&v>0&&u+v<1)return true;v0x=this._blx-this._tlx;v0y=this._bly-this._tly;dot00=v0x*v0x+v0y*v0y;dot01=v0x*v1x+v0y*v1y;dot02=v0x*v2x+v0y*v2y;invDenom=1/(dot00*dot11-dot01*dot01);u=(dot11*dot02-dot01*dot12)*invDenom;v=(dot00*dot12-dot01*dot02)*invDenom;return u>=0&&v>0&&u+v<1}midX(){return(this._tlx+this._trx+this._brx+this._blx)/4}midY(){return(this._tly+this._try+this._bry+this._bly)/4}intersectsSegment(x1,y1,x2,y2){if(this.containsPoint(x1,y1)||this.containsPoint(x2,y2))return true; +return C3.segmentIntersectsQuad(x1,y1,x2,y2,this)}intersectsQuad(rhs){let midX=rhs.midX();let midY=rhs.midY();if(this.containsPoint(midX,midY))return true;midX=this.midX();midY=this.midY();if(rhs.containsPoint(midX,midY))return true;const tlx=this._tlx,tly=this._tly,trx=this._trx,try_=this._try,brx=this._brx,bry=this._bry,blx=this._blx,bly=this._bly;return C3.segmentIntersectsQuad(tlx,tly,trx,try_,rhs)||C3.segmentIntersectsQuad(trx,try_,brx,bry,rhs)||C3.segmentIntersectsQuad(brx,bry,blx,bly,rhs)|| +C3.segmentIntersectsQuad(blx,bly,tlx,tly,rhs)}rotatePointsAnticlockwise(){const tlx=this._tlx;const tly=this._tly;this._tlx=this._trx;this._tly=this._try;this._trx=this._brx;this._try=this._bry;this._brx=this._blx;this._bry=this._bly;this._blx=tlx;this._bly=tly}mirror(){this._swap(0,2);this._swap(1,3);this._swap(6,4);this._swap(7,5)}flip(){this._swap(0,6);this._swap(1,7);this._swap(2,4);this._swap(3,5)}diag(){this._swap(2,6);this._swap(3,7)}_swap(i,j){const tmp=this._getAtIndex(i);this._setAtIndex(i, +this._getAtIndex(j));this._setAtIndex(j,tmp)}_getAtIndex(i){switch(i){case 0:return this._tlx;case 1:return this._tly;case 2:return this._trx;case 3:return this._try;case 4:return this._brx;case 5:return this._bry;case 6:return this._blx;case 7:return this._bly;default:throw new RangeError("invalid quad point index");}}_setAtIndex(i,v){v=+v;switch(i){case 0:this._tlx=v;break;case 1:this._tly=v;break;case 2:this._trx=v;break;case 3:this._try=v;break;case 4:this._brx=v;break;case 5:this._bry=v;break; +case 6:this._blx=v;break;case 7:this._bly=v;break;default:throw new RangeError("invalid quad point index");}}}; + +} + +// lib/misc/collisionPoly.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const DEFAULT_POLY_POINTS=[0,0,1,0,1,1,0,1];const tempQuad=C3.New(C3.Quad); +C3.CollisionPoly=class CollisionPoly extends C3.DefendedBase{constructor(pointsArr,enabled=true){super();if(!pointsArr)pointsArr=DEFAULT_POLY_POINTS;this._ptsArr=Float64Array.from(pointsArr);this._bbox=new C3.Rect;this._isBboxChanged=true;this._enabled=enabled}Release(){}pointsArr(){return this._ptsArr}pointCount(){return this._ptsArr.length/2}setPoints(pointsArr){if(this._ptsArr.length===pointsArr.length)this._ptsArr.set(pointsArr);else this._ptsArr=Float64Array.from(pointsArr);this._isBboxChanged= +true}setDefaultPoints(){this.setPoints(DEFAULT_POLY_POINTS)}copy(poly){this.setPoints(poly._ptsArr)}setBboxChanged(){this._isBboxChanged=true}_updateBbox(){if(!this._isBboxChanged)return;const ptsArr=this._ptsArr;let left=ptsArr[0];let top=ptsArr[1];let right=left;let bottom=top;for(let i=0,len=ptsArr.length;iright)right=x;if(ybottom)bottom=y}this._bbox.set(left,top,right,bottom);this._isBboxChanged=false}setFromRect(rc, +offX,offY){let ptsArr=this._ptsArr;if(ptsArr.length!==8){ptsArr=new Float64Array(8);this._ptsArr=ptsArr}ptsArr[0]=rc.getLeft()-offX;ptsArr[1]=rc.getTop()-offY;ptsArr[2]=rc.getRight()-offX;ptsArr[3]=rc.getTop()-offY;ptsArr[4]=rc.getRight()-offX;ptsArr[5]=rc.getBottom()-offY;ptsArr[6]=rc.getLeft()-offX;ptsArr[7]=rc.getBottom()-offY;this._bbox.copy(rc);if(offX!==0||offY!==0)this._bbox.offset(-offX,-offY);this._isBboxChanged=false}setFromQuad(q,offX,offY){tempQuad.copy(q);tempQuad.offset(offX,offY);this.setPoints(tempQuad.toArray()); +this._isBboxChanged=true}transform(w,h,a){let sina=0;let cosa=1;if(a!==0){sina=Math.sin(a);cosa=Math.cos(a)}this.transformPrecalc(w,h,sina,cosa)}transformPrecalc(w,h,sina,cosa){const ptsArr=this._ptsArr;for(let i=0,len=ptsArr.length;i{if(Ease.GetEditorEaseData(ease, +project))return Ease.GetEditorEaseData(ease,project).transition.IsForAnyPurpose();return true})}else{customEaseMap=CUSTOM_EASE_RUNTIME_MAP;customEases=[...customEaseMap.keys()]}const sortedCustomEases=customEases.sort();return[...PREDEFINED_EASE_MAP.keys()].concat(sortedCustomEases).filter(ease=>!filter.includes(ease))}static GetRuntimeEaseNames(){this._CreateEaseMap();const sortedCustomEases=[...CUSTOM_EASE_RUNTIME_MAP.keys()];sortedCustomEases.sort();return[...PREDEFINED_EASE_MAP.keys()].concat(sortedCustomEases)}static GetCustomRuntimeEaseNames(){this._CreateEaseMap(); +const sortedCustomEases=[...CUSTOM_EASE_RUNTIME_MAP.keys()];sortedCustomEases.sort();return sortedCustomEases}static IsPredefinedTranslatedName(easeName){for(const k of EASE_TRANSLATION_KEYS){const translatedName=self.lang(`ui.bars.timeline.eases.${k}`);if(translatedName===easeName)return true}for(const k of SHORT_EASE_TRANSLATION_KEYS){const translatedName=self.lang(`ui.bars.timeline.short-eases.${k}`);if(translatedName===easeName)return true}}static IsNamePredefined(easeName){this._CreateEaseMap(); +return[...PREDEFINED_EASE_MAP.keys()].includes(easeName)}static _GetEase(easeName){const realEaseName=ALIAS_MAP.get(easeName);if(realEaseName)return EASE_MAP.get(realEaseName);if(Ease.IsNamePredefined(easeName))return EASE_MAP.get(easeName);if(PRIVATE_EASE_MAP.has(easeName))return PRIVATE_EASE_MAP.get(easeName)}static GetBuiltInTransition(builtInTransitionName){this._CreateEaseMap();return BUILT_IN_TRANSITION_MAP.get(builtInTransitionName)}static GetEditorEase(easeName,project){this._CreateEaseMap(); +const ease=Ease._GetEase(easeName);if(ease)return ease;if(!project)throw new Error("missing ease function");return CUSTOM_EASE_EDITOR_MAP.get(project).get(easeName)}static GetEditorEaseData(easeName,project){this._CreateEaseMap();const customEaseDataMap=CUSTOM_EASE_DATA_EDITOR_MAP.get(project);if(customEaseDataMap)return customEaseDataMap.get(easeName)}static HasEditorEase(easeName,project){this._CreateEaseMap();const ease=Ease._GetEase(easeName);if(ease)return true;return!!CUSTOM_EASE_EDITOR_MAP.get(project).get(easeName)}static GetRuntimeEase(easeName){this._CreateEaseMap(); +const ease=Ease._GetEase(easeName);if(ease)return ease;return CUSTOM_EASE_RUNTIME_MAP.get(easeName)}static GetRuntimeEaseData(easeName){this._CreateEaseMap();return CUSTOM_EASE_DATA_RUNTIME_MAP.get(easeName)}static GetEaseFromIndex(index){this._CreateEaseMap();const names=this.GetRuntimeEaseNames();return names[index]}static GetIndexForEase(name,project){this._CreateEaseMap();const names=this.GetEditorEaseNames(project);return names.indexOf(name)}static GetIndexForEaseAtRuntime(name){return this.GetIndexForEase(name)}static _CreateEaseMap(){if(EASE_MAP.size!== +0)return;this._AddPredifinedEase("default",()=>{});this._AddPredifinedEase("noease",[{"x":0,"y":0,"sax":.336,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.336,"eay":0,"se":false,"ee":true}],true);this._AddPredifinedEase("easeinsine",[{"x":0,"y":0,"sax":.485,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.038,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutsine",[{"x":0,"y":0,"sax":.038,"say":0,"eax":0,"eay":0, +"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.485,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutsine",[{"x":0,"y":0,"sax":.336,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.336,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinelastic",[{"x":0,"y":0,"sax":.018,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.116,"y":.002,"sax":.025,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.266,"y":-.005,"sax":.024,"say":0, +"eax":-.021,"eay":0,"se":true,"ee":true},{"x":.416,"y":.016,"sax":.024,"say":0,"eax":-.026,"eay":0,"se":true,"ee":true},{"x":.566,"y":-.045,"sax":.061,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.716,"y":.132,"sax":.072,"say":-.004,"eax":-.045,"eay":0,"se":true,"ee":true},{"x":.866,"y":-.373,"sax":.06,"say":0,"eax":-.049,"eay":-.002,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.038,"eay":-.263,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutelastic",[{"x":0,"y":0,"sax":.038, +"say":.263,"eax":0,"eay":0,"se":true,"ee":false},{"x":.136,"y":1.373,"sax":.049,"say":.002,"eax":-.06,"eay":0,"se":true,"ee":true},{"x":.286,"y":.868,"sax":.045,"say":0,"eax":-.072,"eay":.004,"se":true,"ee":true},{"x":.436,"y":1.045,"sax":.025,"say":0,"eax":-.061,"eay":0,"se":true,"ee":true},{"x":.586,"y":.984,"sax":.026,"say":0,"eax":-.024,"eay":0,"se":true,"ee":true},{"x":.736,"y":1.005,"sax":.021,"say":0,"eax":-.024,"eay":0,"se":true,"ee":true},{"x":.886,"y":.998,"sax":.025,"say":0,"eax":-.025, +"eay":0,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.018,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutelastic",[{"x":0,"y":0,"sax":.025,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.067,"y":.001,"sax":.025,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.18,"y":-.005,"sax":.025,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.292,"y":.025,"sax":.053,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.405,"y":-.118,"sax":.069,"say":0,"eax":-.027, +"eay":0,"se":true,"ee":true},{"x":.597,"y":1.118,"sax":.027,"say":0,"eax":-.069,"eay":0,"se":true,"ee":true},{"x":.71,"y":.975,"sax":.025,"say":0,"eax":-.053,"eay":0,"se":true,"ee":true},{"x":.822,"y":1.005,"sax":.025,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.935,"y":.999,"sax":.025,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.025,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinback",[{"x":0,"y":0,"sax":.35,"say":0,"eax":0,"eay":0, +"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.34,"eay":-1.579,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutback",[{"x":0,"y":0,"sax":.34,"say":1.579,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.35,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutback",[{"x":0,"y":0,"sax":.035,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.242,"y":-.1,"sax":.258,"say":0,"eax":-.025,"eay":0,"se":true,"ee":true},{"x":.76,"y":1.1,"sax":.025,"say":0, +"eax":-.26,"eay":0,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.035,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinbounce",[{"x":0,"y":0,"sax":.033,"say":.025,"eax":0,"eay":0,"se":true,"ee":false},{"x":.092,"y":0,"sax":.026,"say":.078,"eax":-.033,"eay":.025,"se":true,"ee":true},{"x":.274,"y":0,"sax":.097,"say":.319,"eax":-.026,"eay":.078,"se":true,"ee":true},{"x":.637,"y":0,"sax":.105,"say":.625,"eax":-.097,"eay":.319,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0, +"eax":-.125,"eay":-.004,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutbounce",[{"x":0,"y":0,"sax":.125,"say":.004,"eax":0,"eay":0,"se":true,"ee":false},{"x":.365,"y":1,"sax":.097,"say":-.319,"eax":-.105,"eay":-.625,"se":true,"ee":true},{"x":.728,"y":1,"sax":.026,"say":-.078,"eax":-.097,"eay":-.319,"se":true,"ee":true},{"x":.91,"y":1,"sax":.033,"say":-.025,"eax":-.026,"eay":-.078,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.033,"eay":-.025,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutbounce", +[{"x":0,"y":0,"sax":.01,"say":.006,"eax":0,"eay":0,"se":true,"ee":false},{"x":.046,"y":0,"sax":.021,"say":.038,"eax":-.01,"eay":.006,"se":true,"ee":true},{"x":.137,"y":0,"sax":.059,"say":.158,"eax":-.021,"eay":.038,"se":true,"ee":true},{"x":.319,"y":0,"sax":.117,"say":.744,"eax":-.059,"eay":.158,"se":true,"ee":true},{"x":.683,"y":1,"sax":.059,"say":-.158,"eax":-.117,"eay":-.744,"se":true,"ee":true},{"x":.865,"y":1,"sax":.021,"say":-.038,"eax":-.059,"eay":-.158,"se":true,"ee":true},{"x":.956,"y":1, +"sax":.01,"say":-.006,"eax":-.021,"eay":-.038,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.01,"eay":-.006,"se":false,"ee":true}]);this._AddPredifinedEase("easeincubic",[{"x":0,"y":0,"sax":.75,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.138,"eay":-.321,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutcubic",[{"x":0,"y":0,"sax":.138,"say":.321,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.75,"eay":0,"se":false,"ee":true}]); +this._AddPredifinedEase("easeinoutcubic",[{"x":0,"y":0,"sax":.285,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.5,"y":.5,"sax":.081,"say":.272,"eax":-.081,"eay":-.272,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.285,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinquad",[{"x":0,"y":0,"sax":.4,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.178,"eay":-.392,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutquad",[{"x":0,"y":0, +"sax":.178,"say":.392,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.4,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutquad",[{"x":0,"y":0,"sax":.25,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.5,"y":.5,"sax":.03,"say":.065,"eax":-.03,"eay":-.065,"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.25,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinquart",[{"x":0,"y":0,"sax":.25,"say":1,"eax":0,"eay":0,"se":true,"ee":false}, +{"x":1,"y":1,"sax":0,"say":0,"eax":-.5,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutquart",[{"x":0,"y":0,"sax":.5,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.25,"eay":-1,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutquart",[{"x":0,"y":0,"sax":.765,"say":.03,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.765,"eay":-.03,"se":false,"ee":true}]);this._AddPredifinedEase("easeinquint",[{"x":0,"y":0,"sax":.6, +"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.2,"eay":-1,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutquint",[{"x":0,"y":0,"sax":.2,"say":1,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.6,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutquint",[{"eax":0,"eay":0,"ee":false,"sax":.84,"say":0,"se":true,"x":0,"y":0},{"eax":-.84,"eay":0,"ee":true,"sax":0,"say":0,"se":false,"x":1,"y":1}]);this._AddPredifinedEase("easeincirc", +[{"x":0,"y":0,"sax":.25,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.024,"eay":-.808,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutcirc",[{"x":0,"y":0,"sax":.024,"say":.808,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.25,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutcirc",[{"x":0,"y":0,"sax":.125,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":.5,"y":.5,"sax":.02,"say":.428,"eax":-.02,"eay":-.428, +"se":true,"ee":true},{"x":1,"y":1,"sax":0,"say":0,"eax":-.125,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinexpo",[{"x":0,"y":0,"sax":.66,"say":0,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.14,"eay":-1,"se":false,"ee":true}]);this._AddPredifinedEase("easeoutexpo",[{"x":0,"y":0,"sax":.14,"say":1,"eax":0,"eay":0,"se":true,"ee":false},{"x":1,"y":1,"sax":0,"say":0,"eax":-.66,"eay":0,"se":false,"ee":true}]);this._AddPredifinedEase("easeinoutexpo",[{"eax":0, +"eay":0,"ee":false,"sax":.345,"say":0,"se":true,"x":0,"y":0},{"eax":-.06,"eay":-.5,"ee":true,"sax":.06,"say":.5,"se":true,"x":.5,"y":.5},{"eax":-.335,"eay":0,"ee":true,"sax":0,"say":0,"se":false,"x":1,"y":1}]);this._AddPrivateCustomEase("cubicbezier",this.EaseCubicBezier);this._AddPrivateCustomEase("spline",this.EaseSpline)}static _AddPredifinedEase(name,dataArray_or_function,linear=false){if(typeof dataArray_or_function==="function")Ease._AddEase(name,dataArray_or_function,"predefined");else if(C3.IsArray(dataArray_or_function))if(self.BuiltInTransition){const builtInTransition= +C3.New(self.BuiltInTransition,name,linear);builtInTransition.SetFromJson(dataArray_or_function);Ease._AddEase(name,(t,sv,dv,tt)=>builtInTransition.Interpolate(t,sv,dv,tt),"predefined");BUILT_IN_TRANSITION_MAP.set(name,builtInTransition)}else{const builtInTransition=C3.New(C3.Transition,[name,dataArray_or_function.map(data=>{return[data["x"],data["y"],data["sax"],data["say"],data["eax"],data["eay"],data["se"],data["ee"]]})],false);builtInTransition.MakeLinear(linear);Ease._AddEase(name,(t,sv,dv,tt)=> +builtInTransition.Interpolate(t,sv,dv,tt),"predefined")}else throw new Error("unexpected arguments");}static _AddPrivateCustomEase(name,func){Ease._AddEase(name,func,"private")}static AddCustomEase(name,func,project,data){this._CreateEaseMap();Ease._AddEase(name,func,"custom",project,data)}static RemoveCustomEase(name,project){if(this.IsNamePredefined(name))return;if([...PRIVATE_EASE_MAP.keys()].includes(name))return;const customEaseMap=CUSTOM_EASE_EDITOR_MAP.get(project);if(customEaseMap)customEaseMap.delete(name); +const customEaseDataMap=CUSTOM_EASE_DATA_EDITOR_MAP.get(project);if(customEaseDataMap)customEaseDataMap.delete(name)}static _AddEase(name,func,mode,project,data){switch(mode){case "predefined":{EASE_MAP.set(name,func);PREDEFINED_EASE_MAP.set(name,func);break}case "custom":{if(project){if(!CUSTOM_EASE_EDITOR_MAP.has(project))CUSTOM_EASE_EDITOR_MAP.set(project,new Map);if(!CUSTOM_EASE_DATA_EDITOR_MAP.has(project))CUSTOM_EASE_DATA_EDITOR_MAP.set(project,new Map);const customEaseMap=CUSTOM_EASE_EDITOR_MAP.get(project); +customEaseMap.set(name,func);const customEaseDataMap=CUSTOM_EASE_DATA_EDITOR_MAP.get(project);customEaseDataMap.set(name,data)}else{CUSTOM_EASE_RUNTIME_MAP.set(name,func);CUSTOM_EASE_DATA_RUNTIME_MAP.set(name,data)}break}case "private":{EASE_MAP.set(name,func);PRIVATE_EASE_MAP.set(name,func);break}default:throw new Error("unexpected ease mode");}}static NoEase(t,b,c,d){if(d===0)return b;return c*t/d+b}static EaseCubicBezier(t,p0,p1,p2,p3){const _0=p0;const _1=3*t*(p1-p0);const _2=3*t**2*(p0+p2-2* +p1);const _3=t**3*(p3-p0+3*p1-3*p2);return _0+_1+_2+_3}static EaseSpline(t,sx,sy,x1,y1,x2,y2,ex,ey,samples){if(x1===y1&&x2===y2)return t;const tx=get_t_for_x(t,sx,x1,x2,ex,samples);const va=a(sy,y1,y2,ey);const vb=b(sy,y1,y2,ey);const vc=c(sy,y1,y2,ey);return calc_bezier(tx,va,vb,vc)}static GetBezierSamples(startx,a1x,a2x,endx){const ret=[];const va=a(startx,a1x,a2x,endx);const vb=b(startx,a1x,a2x,endx);const vc=c(startx,a1x,a2x,endx);for(let i=0;i{return p3-3*p2+3*p1-p0};const b=(p0,p1,p2,p3)=>{return 3*p2-6*p1+3*p0};const c=(p0,p1,p2,p3)=>{return 3*(p1-p0)};const calc_bezier=(aT,a,b,c)=>{return((a*aT+b)*aT+c)*aT};const get_slope=(aT,a,b,c)=>{return 3*a*aT*aT+2*b*aT+c}; +const get_t_for_x=(aX,p0,p1,p2,p3,samples)=>{if(aX==1)return 1;let intervalStart=0;let currentSampleIndex=1;let currentSampleValue=samples[currentSampleIndex];let lastSampleIndex=SAMPLE_COUNT-1;let lastSampleValue=samples[SAMPLE_COUNT-1];while(currentSampleIndex!=lastSampleIndex&¤tSampleValue<=aX){currentSampleIndex++;currentSampleValue=samples[currentSampleIndex];intervalStart+=SAMPLE_STEP}currentSampleIndex--;currentSampleValue=samples[currentSampleIndex];const dist=(aX-currentSampleValue)/ +(samples[currentSampleIndex+1]-currentSampleValue);let guess=intervalStart+dist*SAMPLE_STEP;const va=a(p0,p1,p2,p3);const vb=b(p0,p1,p2,p3);const vc=c(p0,p1,p2,p3);const initSlope=get_slope(guess,va,vb,vc);if(initSlope===0)return guess;else if(initSlope>=NEWTON_RAPHSON_MIN_SLOPE){for(let i=0;i0)aB=guess;else aA=guess;precissionLimit=Math.abs(x)>SUBDIVISION_PRECISION;maxIterations=++i0)return;C3.clearArray(this._captureListeners);this._captureListenersSet.clear();C3.clearArray(this._listeners);this._listenersSet.clear();C3.clearArray(this._queueModifyListeners);C3.Release(this)}_AddListener(func, +capture){if(this._IsFiring()){this._queueModifyListeners.push({op:"add",func,capture});return}if(capture){if(this._captureListenersSet.has(func))return;this._captureListeners.push(func);this._captureListenersSet.add(func)}else{if(this._listenersSet.has(func))return;this._listeners.push(func);this._listenersSet.add(func)}}_RemoveListener(func,capture){if(this._IsFiring()){this._queueModifyListeners.push({op:"remove",func,capture});return}if(capture){if(this._captureListenersSet.has(func)){this._captureListenersSet.delete(func); +C3.arrayFindRemove(this._captureListeners,func)}}else if(this._listenersSet.has(func)){this._listenersSet.delete(func);C3.arrayFindRemove(this._listeners,func)}}_IsEmpty(){return!this._captureListeners.length&&!this._listeners.length}_IsFiring(){return this._fireDepth>0}_ProcessQueuedListeners(){const removeListenersSet=new Set;const removeCaptureListenersSet=new Set;for(const q of this._queueModifyListeners)if(q.op==="add"){this._AddListener(q.func,q.capture);if(q.capture)removeCaptureListenersSet.delete(q.func); +else removeListenersSet.delete(q.func)}else if(q.op==="remove")if(q.capture){this._captureListenersSet.delete(q.func);removeCaptureListenersSet.add(q.func)}else{this._listenersSet.delete(q.func);removeListenersSet.add(q.func)}else throw new Error("invalid op");C3.arrayRemoveAllInSet(this._listeners,removeListenersSet);C3.arrayRemoveAllInSet(this._captureListeners,removeCaptureListenersSet);C3.clearArray(this._queueModifyListeners)}_FireCancellable(event){this._IncreaseFireDepth();let isStopped=false; +for(let i=0,len=this._captureListeners.length;i0)this._ProcessQueuedListeners()}SetDelayRemoveEventsEnabled(e){if(e)this._IncreaseFireDepth();else this._DecreaseFireDepth()}_FireAsync(event){let callbackPromises=[];for(let i=0,len=this._captureListeners.length;i +func(event)))}for(let i=0,len=this._listeners.length;ifunc(event)))}return Promise.all(callbackPromises).then(()=>!event.defaultPrevented)}_FireAndWait_AsyncOptional(event){const results=[];this._IncreaseFireDepth();for(let i=0,len=this._captureListeners.length;i!event.defaultPrevented);else return!event.defaultPrevented}async _FireAndWaitAsync(event){return await this._FireAndWait_AsyncOptional(event)}async _FireAndWaitAsyncSequential(event){this._IncreaseFireDepth();for(let i=0,len=this._captureListeners.length;i0?1:timerTimeout)} +function DoAsyncifiedWork(deadline){callbackId=-1;if(!workQueue.length)return;let startTime=performance.now();let curTime=startTime;let jobCount=0;let estimatedNextJobDuration=0;do{DoNextAsyncifiedJob(workQueue.shift());curTime=performance.now();++jobCount;estimatedNextJobDuration=(curTime-startTime)/jobCount*1.1}while(workQueue.length&&(SUPPORTS_RIC&&highThroughputMode===0&&typeof deadline!=="undefined"?estimatedNextJobDuration{workQueue.push({func:func,resolve:resolve,reject:reject,stack:stack});if(asyncifyDisabled){DoNextAsyncifiedJob(workQueue.pop());return}if(callbackId===-1)SetNewCallback(SETTIMEOUT_INTERVAL)})}; +C3.Asyncify.SetHighThroughputMode=function SetHighThroughputMode(m){if(m)++highThroughputMode;else{--highThroughputMode;if(highThroughputMode<0)throw new Error("already turned off high throughput mode");}}; + +} + +// ../lib/util/idleTimeout.js +{ +'use strict';const C3=self.C3;const IDLE_CHECK_MIN_INTERVAL=1E3;const IDLE_CHECK_TIMER_OVERSHOOT=100;let cachedNowTime=-1;function ClearTimeCache(){cachedNowTime=-1}C3.FastGetDateNow=function FastGetDateNow(){if(cachedNowTime===-1){cachedNowTime=Date.now();self.setTimeout(ClearTimeCache,16)}return cachedNowTime};let timerId=-1;let nextDeadline=-1;let activeIdleTimeouts=new Set; +function CheckActiveIdleTimeouts(){timerId=-1;nextDeadline=-1;let nowTime=Date.now();for(let i of activeIdleTimeouts)if(i._CheckTimeout(nowTime)){let deadline=i._GetDeadline();if(nextDeadline===-1||deadlinenowTime+ +IDLE_CHECK_MIN_INTERVAL){self.clearTimeout(timerId);nextDeadline=this._deadline;timerId=self.setTimeout(CheckActiveIdleTimeouts,this._timeout+IDLE_CHECK_TIMER_OVERSHOOT)}}_CheckTimeout(nowTime){if(nowTime>=this._deadline){if(this._callback()){this._deadline=nowTime+this._timeout;return true}this._isActive=false;return false}return true}_GetDeadline(){return this._deadline}Cancel(){if(this._isActive){activeIdleTimeouts.delete(this);this._isActive=false;if(activeIdleTimeouts.size===0&&timerId!==-1){self.clearTimeout(timerId); +timerId=-1;nextDeadline=-1}}}Release(){this.Cancel();this._callback=null}}; + +} + +// ../lib/util/disposable.js +{ +'use strict';const C3=self.C3; +C3.Disposable=class Disposable{constructor(disposeAction){this._disposed=false;this._disposeAction=disposeAction}Dispose(){if(this._disposed)return;this._disposed=true;if(this._disposeAction){this._disposeAction();this._disposeAction=null}}IsDisposed(){return this._disposed}Release(){this.Dispose()}static Release(instance){return new Disposable(()=>instance.Release())}static From(eventDispatcher,eventNames,eventHandler,opts,scope){if(typeof opts==="undefined"||opts===null)opts=false;else if(typeof opts!== +"boolean"&&typeof opts!=="object")throw new TypeError("invalid event listener options");if(scope)eventHandler=eventHandler.bind(scope);if(eventNames.includes(" ")){eventNames=eventNames.split(" ");const disposable=new C3.CompositeDisposable;for(let eventName of eventNames){eventDispatcher.addEventListener(eventName,eventHandler,opts);disposable.Add(C3.New(C3.Disposable,()=>eventDispatcher.removeEventListener(eventName,eventHandler,opts)))}return disposable}else{eventDispatcher.addEventListener(eventNames, +eventHandler,opts);return C3.New(C3.Disposable,()=>eventDispatcher.removeEventListener(eventNames,eventHandler,opts))}}};C3.StubDisposable=class StubDisposable extends C3.Disposable{SetAction(disposeAction){this._disposeAction=disposeAction}}; +C3.CompositeDisposable=class CompositeDisposable extends C3.Disposable{constructor(...disposables){super();this._disposables=new Set;for(let disposable of disposables)this.Add(disposable)}Add(...disposables){if(this._disposed)throw new Error("already disposed");for(let disposable of disposables)this._disposables.add(disposable)}Remove(disposable){if(this._disposed)throw new Error("already disposed");this._disposables.delete(disposable)}RemoveAll(){if(this._disposed)throw new Error("already disposed"); +if(!this._disposables)return;for(let disposable of this._disposables)disposable.Dispose();this._disposables.clear()}IsDisposed(){return this._disposed}Dispose(){if(this._disposed)throw new Error("already disposed");this._disposed=true;for(let disposable of this._disposables)disposable.Dispose();this._disposables.clear();this._disposables=null}Release(){this.Dispose()}}; + +} + +// lib/util/kahanSum.js +{ +'use strict';const C3=self.C3;C3.KahanSum=class KahanSum extends C3.DefendedBase{constructor(){super();this._c=0;this._y=0;this._t=0;this._sum=0}Add(v){v=+v;this._y=v-this._c;this._t=this._sum+this._y;this._c=this._t-this._sum-this._y;this._sum=this._t}Subtract(v){this._sum-=+v}Get(){return this._sum}Reset(){this._c=0;this._y=0;this._t=0;this._sum=0}Set(s){this._c=0;this._y=0;this._t=0;this._sum=+s}Copy(ks){this._c=ks._c;this._y=ks._y;this._t=ks._t;this._sum=ks._sum}Release(){}}; + +} + +// lib/util/redblackset.js +{ +'use strict';const C3=self.C3;const js_cols={};const RED=true;const BLACK=false;js_cols.RBnode=function(tree){this.tree=tree;this.right=this.tree.sentinel;this.left=this.tree.sentinel;this.parent=null;this.color=false;this.key=null};js_cols.RedBlackSet=function(compare_func){this.size=0;this.sentinel=new js_cols.RBnode(this);this.sentinel.color=BLACK;this.root=this.sentinel;this.root.parent=this.sentinel;this.compare=compare_func||this.default_compare}; +js_cols.RedBlackSet.prototype.default_compare=function(a,b){if(a0){var x=this.get_(key);if(x==this.sentinel)return null;if(x.right!=this.sentinel)return this.min(x.right).key;var y=x.parent;while(y!=this.sentinel&&x==y.right){x=y;y=y.parent}if(y!=this.sentinel)return y.key;else return null}else return null}; +js_cols.RedBlackSet.prototype.predecessor=function(key){if(this.size>0){var x=this.get_(key);if(x==this.sentinel)return null;if(x.left!=this.sentinel)return this.max(x.left).key;var y=x.parent;while(y!=this.sentinel&&x==y.left){x=y;y=y.parent}if(y!=this.sentinel)return y.key;else return null}else return null};js_cols.RedBlackSet.prototype.getMin=function(){return this.min(this.root).key};js_cols.RedBlackSet.prototype.getMax=function(){return this.max(this.root).key}; +js_cols.RedBlackSet.prototype.get_=function(key){var x=this.root;while(x!=this.sentinel&&this.compare(x.key,key)!=0)if(this.compare(key,x.key)<0)x=x.left;else x=x.right;return x};js_cols.RedBlackSet.prototype.contains=function(key){return this.get_(key).key!=null};js_cols.RedBlackSet.prototype.getValues=function(){var ret=[];this.forEach(function(x){ret.push(x)});return ret}; +js_cols.RedBlackSet.prototype.insertAll=function(col){if(js_cols.typeOf(col)=="array")for(var i=0;icolCount)return false;var i=0;if(this.isEmpty())return true;for(var n=this.min(this.root);n!=this.sentinel;n=this.successor_(n))if(js_cols.contains.call(col,col,n.key))i++;return i==this.getCount()}; +js_cols.RedBlackSet.prototype.intersection=function(col){var result=new js_cols.RedBlackSet(this.compare);if(this.isEmpty())return result;for(var n=this.min(this.root);n!=this.sentinel;n=this.successor_(n))if(col.contains.call(col,n.key,n.key,this))result.insert(n.key);return result}; +C3.RedBlackSet=class RedBlackSet extends C3.DefendedBase{constructor(sortFunc){super();this._rbSet=new js_cols.RedBlackSet(sortFunc);this._enableQueue=false;this._queueInsert=new Set;this._queueRemove=new Set}Add(item){if(this._enableQueue)if(this._rbSet.contains(item))this._queueRemove.delete(item);else this._queueInsert.add(item);else this._rbSet.insert(item)}Remove(item){if(this._enableQueue)if(this._rbSet.contains(item))this._queueRemove.add(item);else this._queueInsert.delete(item);else this._rbSet.remove(item)}Has(item){if(this._enableQueue){if(this._queueInsert.has(item))return true; +return!this._queueRemove.has(item)&&this._rbSet.contains(item)}else return this._rbSet.contains(item)}Clear(){this._rbSet.clear();this._queueInsert.clear();this._queueRemove.clear()}toArray(){if(this._enableQueue)throw new Error("cannot be used in queueing mode");return this._rbSet.getValues()}GetSize(){return this._rbSet.getCount()+this._queueInsert.size-this._queueRemove.size}IsEmpty(){return this.GetSize()===0}Front(){if(this.IsEmpty())throw new Error("empty set");if(this._enableQueue)throw new Error("cannot be used in queueing mode"); +const rbSet=this._rbSet;const n=rbSet.min(rbSet.root);return n.key}Shift(){if(this.IsEmpty())throw new Error("empty set");if(this._enableQueue)throw new Error("cannot be used in queueing mode");const item=this.Front();this.Remove(item);return item}SetQueueingEnabled(q){q=!!q;if(this._enableQueue===q)return;this._enableQueue=q;if(!q){for(const item of this._queueRemove)this._rbSet.remove(item);this._queueRemove.clear();for(const item of this._queueInsert)this._rbSet.insert(item);this._queueInsert.clear()}}ForEach(func){this._rbSet.forEach(func)}*values(){if(this.IsEmpty())return; +const rbSet=this._rbSet;for(let n=rbSet.min(rbSet.root);n!=rbSet.sentinel;n=rbSet.successor_(n))yield n.key}[Symbol.iterator](){return this.values()}}; + +} + +// ../lib/util/promiseThrottle.js +{ +'use strict';const C3=self.C3; +C3.PromiseThrottle=class PromiseThrottle{constructor(maxParallel=C3.hardwareConcurrency){this._maxParallel=maxParallel;this._queue=[];this._activeCount=0}Add(func){return new Promise((resolve,reject)=>{this._queue.push({func,resolve,reject});this._MaybeStartNext()})}_FindInQueue(func){for(let i=0,len=this._queue.length;i=this._maxParallel)return;this._activeCount++;const job=this._queue.shift();try{const result=await job.func();job.resolve(result)}catch(err){job.reject(err)}this._activeCount--;this._MaybeStartNext()}static async Batch(concurrency, +methods){const results=[];let failed=false;const execute=async _=>{let fn;while(fn=methods.pop()){if(failed)return;try{results.push(await fn())}catch(e){failed=true;throw e;}}};const promises=[];while(concurrency--)promises.push(execute());await Promise.all(promises);return results}}; + +} + +// ../lib/util/rateLimiter.js +{ +'use strict';const C3=self.C3; +C3.RateLimiter=class RateLimiter{constructor(callback,interval,intervalOnBattery){this._callback=callback;this._interval=interval;this._intervalOnBattery=intervalOnBattery||interval*2;this._timerId=-1;this._lastCallTime=-Infinity;this._timerCallFunc=()=>this._OnTimer();this._ignoreReset=false;this._canRunImmediate=false;this._callbackArguments=null}SetCanRunImmediate(c){this._canRunImmediate=!!c}_GetInterval(){if(typeof C3.Battery!=="undefined"&&C3.Battery.IsOnBatteryPower())return this._intervalOnBattery;else return this._interval}Call(...args){if(this._timerId!== +-1)return;this._callbackArguments=args;let nowTime=C3.FastGetDateNow();let timeSinceLastCall=nowTime-this._lastCallTime;let interval=this._GetInterval();if(timeSinceLastCall>=interval&&this._canRunImmediate){this._lastCallTime=nowTime;this._RunCallback()}else this._timerId=self.setTimeout(this._timerCallFunc,Math.max(interval-timeSinceLastCall,4))}_RunCallback(){this._ignoreReset=true;const args=this._callbackArguments;this._callbackArguments=null;if(args)this._callback(...args);else this._callback(); +this._ignoreReset=false}Reset(){if(this._ignoreReset)return;this._CancelTimer();this._callbackArguments=null;this._lastCallTime=C3.FastGetDateNow()}_OnTimer(){this._timerId=-1;this._lastCallTime=C3.FastGetDateNow();this._RunCallback()}_CancelTimer(){if(this._timerId!==-1){self.clearTimeout(this._timerId);this._timerId=-1}}Release(){this._CancelTimer();this._callback=null;this._callbackArguments=null;this._timerCallFunc=null}}; + +} + +// ../lib/util/svgRaster/svgRasterManager.js +{ +'use strict';const C3=self.C3; +C3.SVGRasterManager=class SVGRasterManager{constructor(){this._images=new Map;this._allowNpotSurfaces=false;this._getBaseSizeCallback=null;this._rasterAtSizeCallback=null;this._releaseResultCallback=null;this._redrawCallback=null}SetNpotSurfaceAllowed(a){this._allowNpotSurfaces=!!a}IsNpotSurfaceAllowed(){return this._allowNpotSurfaces}SetGetBaseSizeCallback(f){this._getBaseSizeCallback=f}GetBaseSize(dataSource){if(!this._getBaseSizeCallback)throw new Error("no get base size callback set");return this._getBaseSizeCallback(dataSource)}SetRasterAtSizeCallback(f){this._rasterAtSizeCallback= +f}RasterAtSize(dataSource,context,surfaceWidth,surfaceHeight,imageWidth,imageHeight){if(!this._rasterAtSizeCallback)throw new Error("no raster at size callback set");return this._rasterAtSizeCallback(dataSource,context,surfaceWidth,surfaceHeight,imageWidth,imageHeight)}SetReleaseResultCallback(f){this._releaseResultCallback=f}ReleaseResult(rasterizedResult){if(!this._releaseResultCallback)throw new Error("no release result callback set");this._releaseResultCallback(rasterizedResult)}SetRedrawCallback(f){this._redrawCallback= +f}Redraw(){if(!this._redrawCallback)throw new Error("no redraw callback set");this._redrawCallback()}AddImage(dataSource){let ret=this._images.get(dataSource);if(!ret){ret=C3.New(C3.SVGRasterImage,this,dataSource);this._images.set(dataSource,ret)}ret.IncReference();return ret}_RemoveImage(ri){this._images.delete(ri.GetDataSource())}OnTexturesChanged(){for(const ri of this._images.values()){ri.ReleaseRasterizedResult();ri.ForceRasterAgain()}}}; + +} + +// ../lib/util/svgRaster/svgRasterImage.js +{ +'use strict';const C3=self.C3;const MAX_SURFACE_SIZE=4096; +C3.SVGRasterImage=class SVGRasterImage{constructor(manager,dataSource){this._manager=manager;this._dataSource=dataSource;this._refCount=0;this._baseWidth=0;this._baseHeight=0;this._getBaseSizePromise=this._manager.GetBaseSize(dataSource).then(baseSize=>{if(!this._manager)return;this._baseWidth=baseSize[0];this._baseHeight=baseSize[1];this._manager.Redraw()}).catch(err=>{console.error("[SVG] Error loading SVG: ",err);this._hadError=true;if(this._manager)this._manager.Redraw()});this._rasterSurfaceWidth= +0;this._rasterSurfaceHeight=0;this._rasterImageWidth=0;this._rasterImageHeight=0;this._isRasterizing=false;this._rasterizedResult=null;this._forceRaster=false;this._hadError=false}Release(){if(this._refCount<=0)throw new Error("already released");this._refCount--;if(this._refCount===0)this._Release()}ReleaseRasterizedResult(){if(this._rasterizedResult){this._manager.ReleaseResult(this._rasterizedResult);this._rasterizedResult=null}}_Release(){this.ReleaseRasterizedResult();this._manager._RemoveImage(this); +this._manager=null}GetDataSource(){return this._dataSource}IncReference(){this._refCount++}HasReferences(){return this._refCount>0}GetRasterizedResult(){return this._rasterizedResult}ForceRasterAgain(){this._forceRaster=true}async StartRasterForSize(context,width,height){if(width===0||height===0||this._hadError)return;if(this._isRasterizing)return;let rasterSurfaceWidth=C3.nextHighestPowerOfTwo(Math.ceil(width));let rasterSurfaceHeight=C3.nextHighestPowerOfTwo(Math.ceil(height));const maxDim=Math.max(rasterSurfaceWidth, +rasterSurfaceHeight);if(maxDim>MAX_SURFACE_SIZE){const scale=MAX_SURFACE_SIZE/maxDim;width*=scale;height*=scale;rasterSurfaceWidth=Math.min(Math.ceil(rasterSurfaceWidth*scale),MAX_SURFACE_SIZE);rasterSurfaceHeight=Math.min(Math.ceil(rasterSurfaceHeight*scale),MAX_SURFACE_SIZE)}if(widthimageAspectRatio){width=rasterSurfaceHeight* +imageAspectRatio;height=rasterSurfaceHeight}else{width=rasterSurfaceWidth;height=rasterSurfaceWidth/imageAspectRatio}}if(this._manager.IsNpotSurfaceAllowed()){rasterSurfaceWidth=Math.ceil(width);rasterSurfaceHeight=Math.ceil(height)}if(rasterSurfaceWidth<=this._rasterSurfaceWidth&&rasterSurfaceHeight<=this._rasterSurfaceHeight&&!this._forceRaster)return;this._isRasterizing=true;this._rasterSurfaceWidth=rasterSurfaceWidth;this._rasterSurfaceHeight=rasterSurfaceHeight;const newRasterizedResult=await this._manager.RasterAtSize(this._dataSource, +context,this._rasterSurfaceWidth,this._rasterSurfaceHeight,width,height);if(!this._manager)return;this.ReleaseRasterizedResult();this._rasterizedResult=newRasterizedResult;this._rasterImageWidth=width;this._rasterImageHeight=height;this._isRasterizing=false;this._forceRaster=false;this._manager.Redraw()}WhenBaseSizeReady(){return this._getBaseSizePromise}GetBaseWidth(){return this._baseWidth}GetBaseHeight(){return this._baseHeight}GetRasterWidth(){return this._rasterImageWidth}GetRasterHeight(){return this._rasterImageHeight}HadError(){return this._hadError}}; + +} + +// ../lib/str/str.js +{ +'use strict';const C3=self.C3;C3.UTF8_BOM="\ufeff";const NUMERIC_CHARS=new Set("0123456789");C3.IsNumericChar=function IsNumericChar(c){return NUMERIC_CHARS.has(c)};const WHITESPACE_CHARS=new Set(" \t\n\r\u00a0\u0085\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000");C3.IsWhitespaceChar=function IsWhitespaceChar(c){return WHITESPACE_CHARS.has(c)};C3.FilterWhitespace=function FilterWhitespace(str){return[...str].filter(ch=>!C3.IsWhitespaceChar(ch)).join("")}; +C3.IsStringAllWhitespace=function IsStringAllWhitespace(str){for(const ch of str)if(!C3.IsWhitespaceChar(ch))return false;return true};C3.IsCharArrayAllWhitespace=function IsStringAllWhitespace(chArr){for(const ch of chArr)if(!C3.IsWhitespaceChar(ch))return false;return true};C3.IsUnprintableChar=function IsUnprintableChar(c){return c.length===1&&c.charCodeAt(0)<32};C3.FilterUnprintableChars=function FilterUnprintableChars(str){return[...str].filter(ch=>!C3.IsUnprintableChar(ch)).join("")}; +const CJK_PUNCTUATION_REGEX=/\p{P}(?<=[\u3000-\u303F\uFF00-\uFFEF])/u;C3.IsCJKPunctuationChar=function IsCJKPunctuationChar(ch){return!C3.IsWhitespaceChar(ch)&&CJK_PUNCTUATION_REGEX.test(ch)};const NUMERIC_STRING_CHARS=new Set("0123456789.+-e");C3.IsStringNumber=function IsStringNumber(str){str=str.trim();if(!str.length)return false;let firstChar=str.charAt(0);if(firstChar!=="-"&&!NUMERIC_CHARS.has(firstChar))return false;for(let ch of str)if(!NUMERIC_STRING_CHARS.has(ch))return false;return true}; +C3.RemoveTrailingDigits=function RemoveTrailingDigits(str){let i=str.length;while(i>0){let prev_ch=str.charAt(i-1);if(!C3.IsNumericChar(prev_ch))break;--i}return str.substr(0,i)};C3.IncrementNumberAtEndOf=function IncrementNumberAtEndOf(str){let baseStr=C3.RemoveTrailingDigits(str);let numberStr=str.substr(baseStr.length);if(numberStr)numberStr=(parseInt(numberStr,10)+1).toString();else numberStr="2";return baseStr+numberStr}; +const HTML_ENTITY_MAP=new Map([["&","&"],["<","<"],[">",">"],['"',"""],["'","'"]]);function lookupHtmlEntity(s){return HTML_ENTITY_MAP.get(s)}const HTML_ENTITY_REGEX=/[&<>"']/g;C3.EscapeHTML=function EscapeHTML(str){return str.replace(HTML_ENTITY_REGEX,lookupHtmlEntity)};C3.EscapeJS=function EscapeJS(str){let ret=C3.ReplaceAll(str,"\\","\\\\");ret=C3.ReplaceAll(ret,'"','\\"');ret=C3.ReplaceAll(ret,"\t","\\t");ret=C3.ReplaceAll(ret,"\r","");return C3.ReplaceAll(ret,"\n","\\n")}; +C3.EscapeXML=function EscapeXML(str){let ret=C3.ReplaceAll(str,"&","&");ret=C3.ReplaceAll(ret,"<","<");ret=C3.ReplaceAll(ret,">",">");return C3.ReplaceAll(ret,'"',""")};const ESCAPE_REGEX=/[-[\]{}()*+?.,\\^$|#\s]/g;C3.EscapeRegex=function EscapeRegex(str){return str.replace(ESCAPE_REGEX,"\\$&")};C3.CountCharsInString=function CountCharsInString(str,ch){let count=0;for(const c of str)if(c===ch)++count;return count}; +C3.FindAll=function FindAll(str,find,matchCase=false){if(!find)return[];if(!matchCase){str=str.toLowerCase();find=find.toLowerCase()}const findLen=find.length;let startIndex=0;let index=0;let ret=[];while((index=str.indexOf(find,startIndex))>-1){ret.push(index);startIndex=index+findLen}return ret};C3.ReplaceAll=function ReplaceAll(str,find,replace){return str.replaceAll(find,()=>replace)}; +C3.ReplaceAllCaseInsensitive=function ReplaceAll(str,find,replace){return str.replace(new RegExp(C3.EscapeRegex(find),"gi"),()=>replace)};C3.SetElementContent=function SetElementContent(elem,stringlike){if(typeof stringlike==="string")elem.textContent=stringlike;else if(stringlike.isPlainText())elem.textContent=stringlike.toString();else{elem.innerHTML=stringlike.toHTML();if(stringlike instanceof C3.BBString)stringlike.attachLinkHandlers(elem)}}; +C3.StringLikeEquals=function StringLikeEquals(a,b){if(a instanceof C3.HtmlString||a instanceof C3.BBString)return a.equals(b);else if(b instanceof C3.HtmlString||b instanceof C3.BBString)return b.equals(a);else return a===b};C3.StringSubstitute=function StringSubstitute(str,...arr){let ret=str;for(let i=0,len=arr.length;i=0&&highestUsedIndex>=0&&lowestMissingIndexb)return 1;else if(alowerB)return 1;else if(lowerA0){secondsTotal-=days*24*3600;parts.push(langPluralSub(".days",null,days))}}if(opts.hours){const hours=Math.floor(secondsTotal/3600);if(hours>0||parts.length){secondsTotal-=hours*3600;parts.push(langPluralSub(".hours", +null,hours))}}if(opts.minutes){const minutes=Math.floor(secondsTotal/60);if(minutes>0||parts.length||!opts.seconds){secondsTotal-=minutes*60;parts.push(langPluralSub(".minutes",null,minutes))}}if(opts.seconds){const seconds=Math.floor(secondsTotal%60);parts.push(langPluralSub(".seconds",null,seconds))}const ret=(opts.approximate?lang(".approx-prefix"):"")+parts.join(lang(".separator"));C3.Lang.PopContext();return ret}; +C3.ZeroPad=function(n,d){let s=n<0?"-":"";n=Math.abs(n);let nStr=n.toString();let zeroes=d-nStr.length;for(let i=0;it.toUpperCase())}; +C3.CompareVersionStrings=function CompareVersionStrings(v1,v2){let a1=v1.split(".").map(s=>s.trim());let a2=v2.split(".").map(s=>s.trim());C3.resizeArray(a1,4,"0");C3.resizeArray(a2,4,"0");a1=a1.map(s=>parseInt(s,10));a2=a2.map(s=>parseInt(s,10));for(let i=0;i<4;++i){const diff=a1[i]-a2[i];if(diff!==0)return diff<0?-1:1}return 0};C3.CreateGUID=function CreateGUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,c=>{const r=Math.floor(Math.random()*16);const v=c==="x"?r:r&3|8;return v.toString(16)})}; +C3.StringHammingDistance=function StringHammingDistance(a,b){if(a.length!==b.length)throw new Error("strings must be same length");let ret=0;for(let i=0,len=a.length;ib.length){tmp=a;a=b;b=tmp}row=Array(a.length+1);for(i=0;i<=a.length;i++)row[i]=i;for(i=1;i<=b.length;i++){prev=i;for(j=1;j<=a.length;j++){if(b[i-1]===a[j-1])val=row[j-1];else val=Math.min(row[j-1]+1,Math.min(prev+1,row[j]+1));row[j-1]=prev;prev=val}row[a.length]=prev}return row[a.length]}; + +} + +// ../lib/str/bbstring.js +{ +'use strict';const C3=self.C3;const assert=self.assert; +const BB_CODE_MAP=new Map([["b","strong"],["i","em"],["s","s"],["u","u"],["sub","sub"],["sup","sup"],["small","small"],["mark","mark"],["code","code"],["a1","a"],["a2","a"],["a3","a"],["a4","a"],["a5","a"],["a6","a"],["a7","a"],["a8","a"],["a9","a"],["tip1","abbr"],["tip2","abbr"],["tip3","abbr"],["tip4","abbr"],["tip5","abbr"],["tip6","abbr"],["tip7","abbr"],["tip8","abbr"],["tip9","abbr"],["bad",["span","bbCodeBad"]],["good",["span","bbCodeGood"]],["info",["span","bbCodeInfo"]],["h1",["span","bbCodeH1"]], +["h2",["span","bbCodeH2"]],["h3",["span","bbCodeH3"]],["h4",["span","bbCodeH4"]],["item",["span","bbCodeItem"]]]);const SELF_CLOSING_TAGS=new Set(["icon"]);const BBREGEX=/\[(\/?)([a-zA-Z0-9]+)\]/g;const CUSTOM_BBREGEX=/\[(\/?)([^\[\n]*?)\]/g;let linkActions=null;let tipList=null;let classIndex=0; +function bbToHtmlReplacerFunc(match,closeSlash,tagName){const entry=BB_CODE_MAP.get(tagName);if(entry)if(typeof entry==="string"){if(entry==="a"&&linkActions.length===0||entry==="abbr"&&tipList.length===0)return match;if(entry==="a"&&!closeSlash){const index=parseInt(tagName.substring(1),10)-1;if(index<0||index>=linkActions.length)throw new Error("invalid bbcode link substitution");const linkAction=linkActions[index];if(typeof linkAction==="string")return``;else if(typeof linkAction=== +"function")return``;else throw new TypeError("invalid bbcode link action");}else if(entry==="abbr"&&!closeSlash){const index=parseInt(tagName.substring(3),10)-1;if(index<0||index>=tipList.length)throw new Error("invalid bbcode tip substitution");const tip=tipList[index];let tipStr="";if(typeof tip==="string")tipStr=tip;else if(typeof tip==="function")tipStr=tip();if(typeof tipStr!=="string")throw new TypeError("invalid bbcode tip");return``}else return"<"+closeSlash+entry+">"}else if(Array.isArray(entry)){let tag=entry[0];let className=entry[1];if(closeSlash)return"";else return`<${tag} class="${className}">`}else;else if(tagName==="class")if(closeSlash)return"";else return``;else return match}const LINEBREAK_REGEX=/\n/g; +C3.BBString=class BBString{constructor(str,opts){this._bbstr=opts&&opts.noEscape?str:C3.EscapeHTML(str);this._htmlstr="";this._convertLineBreaks=false;this._linkActions=[];this._tipList=[];if(opts){this._convertLineBreaks=!!opts.convertLineBreaks;if(opts.links){if(opts.links.length>9)throw new Error("too many links");this._linkActions=opts.links}if(opts.tips){if(opts.tips.length>9)throw new Error("too many tips");this._tipList=opts.tips}}this._hasAnyBBtags=this._bbstr.includes("[");this._needsLineBreakConversion= +this._convertLineBreaks&&this._bbstr.includes("\n");this._isPlain=!this._hasAnyBBtags&&!this._needsLineBreakConversion&&!this._bbstr.includes("&");this._hasParsedFragments=false;this._fragments=[]}toString(){return this._bbstr}valueOf(){return this._bbstr}isPlainText(){return this._isPlain}toPlainText(){if(this._hasAnyBBtags)return this._bbstr.replace(BBREGEX,"");else return this._bbstr}toHTML(){if(this._isPlain)return this._bbstr;if(!this._htmlstr&&this._bbstr){let str=this._bbstr;if(this._hasAnyBBtags){classIndex= +0;linkActions=this._linkActions;tipList=this._tipList;str=str.replace(BBREGEX,bbToHtmlReplacerFunc);linkActions=null;tipList=null}if(this._needsLineBreakConversion)str=str.replace(LINEBREAK_REGEX,"
");this._htmlstr=str}return this._htmlstr}attachLinkHandlers(parentElem){if(!this._linkActions.length)return;for(let i=0,len=this._linkActions.length;i0&&bbStr.charAt(index-1)==="\\")continue; +const matchStr=result[0];const closeSlash=result[1];const tagName=result[2];const strFrag=bbStr.substring(prevIndex,index);prevIndex=index+matchStr.length;if(strFrag)fragments.push({text:strFrag,styles:styleStack.slice(0)});if(!tagName)continue;if(closeSlash){const lowerTagName=tagName.toLowerCase();for(let i=styleStack.length-1;i>=0;--i)if(styleStack[i].tag===lowerTagName){styleStack.splice(i,1);break}}else{let tag=tagName;let param=null;const eq=tagName.indexOf("=");if(eq!==-1){tag=tagName.substring(0, +eq).toLowerCase();param=tagName.substring(eq+1)}else tag=tag.toLowerCase();if(SELF_CLOSING_TAGS.has(tag))if(tag==="icon")fragments.push({icon:param,styles:styleStack.slice(0)});else throw new Error(`unknown self-closing tag ${tag}`);else styleStack.push({tag,param})}}if(prevIndex +{if(frag.icon)return C3.New(C3.IconFragment,{icon:frag.icon,styles:frag.styles});else return C3.New(C3.TextFragment,{chArr:C3.SplitGraphemes(frag.text),styles:frag.styles})});this._hasParsedFragments=true;return this._fragments}_ProcessBBCodeEscapeSequences(text){text=C3.ReplaceAll(text,"\\[","[");return C3.ReplaceAll(text,"\\\\","\\")}static StripTags(str){return C3.New(C3.BBString,str,{noEscape:true}).toPlainText()}static StripAnyTags(str){return str.replace(CUSTOM_BBREGEX,"")}}; + +} + +// ../lib/str/textLayout/wordWrap.js +{ +'use strict';const C3=self.C3;function IsWordBreakWhiteSpace(ch){if(ch==="\u00a0"||ch==="\u202f")return false;else return C3.IsWhitespaceChar(ch)}const CJK_OPEN_PUNCTUATION=new Set("\u3008\u300a\u300c\u300e\u3010\u3014\u3016\u3018\u301a\u301d");function IsOpeningCJKPunctiationChar(ch){return CJK_OPEN_PUNCTUATION.has(ch)}function IsContinuingCJKPunctuationChar(ch){return C3.IsCJKPunctuationChar(ch)&&!IsOpeningCJKPunctiationChar(ch)} +function WordBreakTrimEnd(chArr){while(chArr.length>0&&IsWordBreakWhiteSpace(chArr.at(-1)))chArr.pop()}function IsNewline(ch){return ch==="\n"||ch==="\r\n"} +C3.WordWrap=class WordWrap{constructor(){this._lines=[];this._iconSet=null}GetLines(){return this._lines}GetLineCount(){return this._lines.length}SetIconSet(iconSet){this._iconSet=iconSet}_MeasureLine(line,measureFunc){let width=0;let height=0;let fbbAscent=0;let fbbDescent=0;let topToAlphabeticDistance=0;for(const frag of line){if(frag.GetWidth()===-1){const m=measureFunc(frag);frag.SetHeight(m.height);frag.SetFontBoundingBoxAscent(m.fontBoundingBoxAscent||0);frag.SetFontBoundingBoxDescent(m.fontBoundingBoxDescent|| +0);frag.SetTopToAlphabeticDistance(m.topToAlphabeticDistance||0);if(frag.IsText())frag.SetWidth(m.width);else if(frag.IsIcon())frag.CalculateWidthFromHeight(this._iconSet)}width+=frag.GetWidth();height=Math.max(height,frag.GetHeight());fbbAscent=Math.max(fbbAscent,frag.GetFontBoundingBoxAscent());fbbDescent=Math.max(fbbDescent,frag.GetFontBoundingBoxDescent());topToAlphabeticDistance=Math.max(topToAlphabeticDistance,frag.GetTopToAlphabeticDistance())}return{width,height,fontBoundingBoxAscent:fbbAscent, +fontBoundingBoxDescent:fbbDescent,topToAlphabeticDistance}}_AddLine(fragments,width,height,fbbAscent,fbbDescent,topToAlphabeticDistance){this._lines.push(C3.New(C3.WordWrap.Line,{fragments,width,height,fontBoundingBoxAscent:fbbAscent,fontBoundingBoxDescent:fbbDescent,topToAlphabeticDistance}))}WordWrap(fragmentArr,measureFunc,wrapWidth,wrapMode,endOfLineMargin){if(typeof fragmentArr==="string")fragmentArr=[C3.New(C3.TextFragment,{chArr:C3.SplitGraphemes(fragmentArr)})];C3.clearArray(this._lines); +if(!fragmentArr.length||fragmentArr.length===1&&fragmentArr[0].IsText()&&fragmentArr[0].IsEmpty()||wrapWidth<2)return;if(fragmentArr.length===1){const frag=fragmentArr[0];if(frag.IsText()&&frag.GetLength()<=100&&!frag.HasNewLine()){let {width,height,fontBoundingBoxAscent,fontBoundingBoxDescent,topToAlphabeticDistance}=measureFunc(frag);width+=endOfLineMargin;frag.SetWidth(width);frag.SetHeight(height);frag.SetFontBoundingBoxAscent(fontBoundingBoxAscent||0);frag.SetFontBoundingBoxDescent(fontBoundingBoxDescent|| +0);frag.SetTopToAlphabeticDistance(topToAlphabeticDistance||0);if(width<=wrapWidth){this._AddLine([frag],width,height,fontBoundingBoxAscent,fontBoundingBoxDescent,topToAlphabeticDistance);return}}}let tokenisedFragments;if(wrapMode==="word")tokenisedFragments=this._TokeniseByWord(fragmentArr);else if(wrapMode==="cjk")tokenisedFragments=this._TokeniseByCJK(fragmentArr);else tokenisedFragments=this._TokeniseByChar(fragmentArr);this._WrapText(tokenisedFragments,measureFunc,wrapWidth,endOfLineMargin)}_TokeniseByWord(fragmentArr){const ret= +[];let curWord=[];let isCurWhitespace=false;for(const frag of fragmentArr){const styles=frag.GetStyles();if(frag.IsIcon()){if(curWord.length>0)ret.push(curWord);ret.push([frag]);curWord=[];continue}for(const ch of frag.GetCharacterArray())if(IsNewline(ch)){if(curWord.length>0)ret.push(curWord);ret.push([C3.New(C3.TextFragment,{chArr:["\n"],styles})]);curWord=[]}else if(curWord.length===0){curWord.push(C3.New(C3.TextFragment,{chArr:[ch],styles}));isCurWhitespace=IsWordBreakWhiteSpace(ch)}else{const isWhitespace= +IsWordBreakWhiteSpace(ch);if(isWhitespace===isCurWhitespace){const curFrag=curWord.at(-1);if(curFrag.GetStyles()===styles)curFrag._AppendChar(ch);else curWord.push(C3.New(C3.TextFragment,{chArr:[ch],styles}))}else{ret.push(curWord);curWord=[C3.New(C3.TextFragment,{chArr:[ch],styles})];isCurWhitespace=isWhitespace}}}if(curWord.length>0)ret.push(curWord);return ret}_TokeniseByCJK(fragmentArr){const ret=[];let curWord=[];let hadOpeningCjkPunc=false;for(const frag of fragmentArr){const styles=frag.GetStyles(); +if(frag.IsIcon()){if(curWord.length>0)ret.push(curWord);ret.push([frag]);curWord=[];continue}for(const ch of frag.GetCharacterArray())if(IsNewline(ch)){if(curWord.length>0)ret.push(curWord);ret.push([C3.New(C3.TextFragment,{chArr:["\n"],styles})]);curWord=[]}else if(curWord.length===0){curWord.push(C3.New(C3.TextFragment,{chArr:[ch],styles}));hadOpeningCjkPunc=IsOpeningCJKPunctiationChar(ch)}else if(hadOpeningCjkPunc||IsContinuingCJKPunctuationChar(ch)){const curFrag=curWord.at(-1);if(curFrag.GetStyles()=== +styles)curFrag._AppendChar(ch);else curWord.push(C3.New(C3.TextFragment,{chArr:[ch],styles}));hadOpeningCjkPunc=IsOpeningCJKPunctiationChar(ch)}else{ret.push(curWord);curWord=[C3.New(C3.TextFragment,{chArr:[ch],styles})];hadOpeningCjkPunc=IsOpeningCJKPunctiationChar(ch)}}if(curWord.length>0)ret.push(curWord);return ret}_TokeniseByChar(fragmentArr){const ret=[];for(const frag of fragmentArr)if(frag.IsText()){const chArr=frag.GetCharacterArray();C3.appendArray(ret,chArr.map(ch=>[C3.New(C3.TextFragment, +{chArr:[ch],styles:frag.GetStyles()})]))}else ret.push([frag]);return ret}_CopyLine(line){return line.map(f=>f._Clone())}_AddWordToLine(currentLine,curWord){const lastFrag=currentLine.length?currentLine.at(-1):null;let i=0;if(lastFrag&&lastFrag.IsText()&&curWord[0].IsText()&&curWord[0].GetStyles()===lastFrag.GetStyles()){lastFrag._Append(curWord[0].GetCharacterArray());i=1}for(let len=curWord.length;i=wrapWidth){if(currentLine.length>0)this._AddLine(currentLine,currentLineWidth,currentLineHeight,currentLineFbbAscent,currentLineFbbDescent,currentLineTopToAlphabetic);currentLine=[];if(curWord[0].IsText()&&C3.IsCharArrayAllWhitespace(curWord[0].GetCharacterArray())){currentLineWidth=0;currentLineHeight=0;currentLineFbbAscent=0;currentLineFbbDescent=0;currentLineTopToAlphabetic=0}else{this._AddWordToLine(currentLine, +curWord);const metrics=this._MeasureLine(currentLine,measureFunc);currentLineWidth=metrics.width;currentLineHeight=metrics.height;currentLineFbbAscent=metrics.fontBoundingBoxAscent;currentLineFbbDescent=metrics.fontBoundingBoxDescent;currentLineTopToAlphabetic=metrics.topToAlphabeticDistance}}else{currentLine=tryLine;currentLineWidth=tryLineWidth;currentLineHeight=tryMetrics.height;currentLineFbbAscent=tryMetrics.fontBoundingBoxAscent;currentLineFbbDescent=tryMetrics.fontBoundingBoxDescent;currentLineTopToAlphabetic= +tryMetrics.topToAlphabeticDistance}}if(currentLine.length>0)this._AddLine(currentLine,currentLineWidth,currentLineHeight,currentLineFbbAscent,currentLineFbbDescent,currentLineTopToAlphabetic);this._TrimLinesTrailingWhitespace(measureFunc,endOfLineMargin)}_TrimLinesTrailingWhitespace(measureFunc,endOfLineMargin){for(const line of this._lines){const fragments=line._GetFragmentsArray();if(!fragments.length)continue;let lastFrag=fragments.at(-1);if(lastFrag.IsText()){const chArr=lastFrag.GetCharacterArray(); +const trimmedArr=chArr.slice(0);WordBreakTrimEnd(trimmedArr);if(trimmedArr.length===0){line.OffsetWidth(-lastFrag.GetWidth());fragments.pop()}else if(trimmedArr.length0){lastFrag=fragments.at(-1);lastFrag.OffsetWidth(endOfLineMargin);line.OffsetWidth(endOfLineMargin)}}}}Clear(){C3.clearArray(this._lines)}GetMaxLineWidth(){return this._lines.reduce((a, +v)=>Math.max(a,v.GetWidth()),0)}GetTotalLineHeight(){return this._lines.reduce((a,v)=>a+v.GetHeight(),0)}}; + +} + +// ../lib/str/textLayout/line.js +{ +'use strict';const C3=self.C3; +C3.WordWrap.Line=class WordWrapLine{constructor(opts){this._fragments=opts.fragments||[];this._width=opts.width||-1;this._height=opts.height||-1;this._fontBoundingBoxAscent=opts.fontBoundingBoxAscent||-1;this._fontBoundingBoxDescent=opts.fontBoundingBoxDescent||-1;this._topToAlphabeticDistance=opts.topToAlphabeticDistance||-1;this._posX=0;this._posY=0}fragments(){return this._fragments.values()}*fragmentsReverse(){const fragments=this._fragments;for(let i=fragments.length-1;i>=0;--i)yield fragments[i]}_GetFragmentsArray(){return this._fragments}OffsetWidth(w){this._width+= +w}GetWidth(){return this._width}GetHeight(){return this._height}GetFoundBoundingBoxAscent(){return this._fontBoundingBoxAscent}GetFontBoundingBoxDescent(){return this._fontBoundingBoxDescent}GetTopToAlphabeticDistance(){return this._topToAlphabeticDistance}SetPosX(x){this._posX=x}GetPosX(){return this._posX}SetPosY(y){this._posY=y}GetPosY(){return this._posY}}; + +} + +// ../lib/str/textLayout/fragmentBase.js +{ +'use strict';const C3=self.C3; +C3.FragmentBase=class FragmentBase{constructor(opts){this._styles=opts.styles||[];this._width=opts.width||-1;this._height=opts.height||-1;this._fontBoundingBoxAscent=opts.fontBoundingBoxAscent||-1;this._fontBoundingBoxDescent=opts.fontBoundingBoxDescent||-1;this._topToAlphabeticDistance=opts.topToAlphabeticDistance||-1;this._posX=0;this._posY=0}IsText(){return false}IsIcon(){return false}GetStyles(){return this._styles}GetStyleTag(tag){const styles=this._styles;for(let i=styles.length-1;i>=0;--i){const s= +styles[i];if(s.tag===tag)return s}return null}HasStyleTag(tag){return!!this.GetStyleTag(tag)}GetStyleMap(){const ret=new Map;for(const s of this._styles)ret.set(s.tag,s.param);return ret}OffsetWidth(w){this._width+=w}SetWidth(w){this._width=w}GetWidth(){return this._width}SetHeight(h){this._height=h}GetHeight(){return this._height}SetFontBoundingBoxAscent(v){this._fontBoundingBoxAscent=v}GetFontBoundingBoxAscent(){return this._fontBoundingBoxAscent}SetFontBoundingBoxDescent(v){this._fontBoundingBoxDescent= +v}GetFontBoundingBoxDescent(){return this._fontBoundingBoxDescent}SetTopToAlphabeticDistance(v){this._topToAlphabeticDistance=v}GetTopToAlphabeticDistance(){return this._topToAlphabeticDistance}SetPosX(x){this._posX=x}GetPosX(){return this._posX}SetPosY(y){this._posY=y}GetPosY(){return this._posY}}; + +} + +// ../lib/str/textLayout/textFragment.js +{ +'use strict';const C3=self.C3; +C3.TextFragment=class TextFragment extends C3.FragmentBase{constructor(opts){super(opts);this._chArr=opts.chArr}IsText(){return true}_Append(chArr){C3.appendArray(this._chArr,chArr);this._width=-1;this._height=-1;this._fontBoundingBoxAscent=-1;this._fontBoundingBoxDescent=-1;this._topToAlphabeticDistance=-1}_AppendChar(ch){this._chArr.push(ch)}_Clone(){return C3.New(C3.TextFragment,{chArr:this._chArr.slice(0),styles:this._styles,width:this._width,height:this._height,fontBoundingBoxAscent:this._fontBoundingBoxAscent, +fontBoundingBoxDescent:this._fontBoundingBoxDescent,topToAlphabeticDistance:this._topToAlphabeticDistance})}GetCharacterArray(){return this._chArr}SetCharacterArray(arr){this._chArr=arr}GetLength(){return this._chArr.length}IsEmpty(){return this._chArr.length===0}HasNewLine(){return this._chArr.includes("\n")}}; + +} + +// ../lib/str/textLayout/iconFragment.js +{ +'use strict';const C3=self.C3; +C3.IconFragment=class IconFragment extends C3.FragmentBase{constructor(opts){super(opts);this._icon=opts.icon}IsIcon(){return true}GetIconParameter(){return this._icon}_Clone(){return C3.New(C3.IconFragment,{icon:this._icon,styles:this._styles,width:this._width,height:this._height,fontBoundingBoxAscent:this._fontBoundingBoxAscent,fontBoundingBoxDescent:this._fontBoundingBoxDescent,topToAlphabeticDistance:this._topToAlphabeticDistance})}GetTextIcon(iconSet){if(!iconSet)return null;let index=Number(this._icon); +if(String(index)===this._icon){index=Math.floor(index);return iconSet.GetTextIconByIndex(index)}else return iconSet.GetTextIconByTag(this._icon)}CalculateWidthFromHeight(iconSet){const textIcon=this.GetTextIcon(iconSet);if(!textIcon){this._width=0;return}this._width=this._height*textIcon.GetWidth()/textIcon.GetHeight()}GetDrawable(iconSet){const textIcon=this.GetTextIcon(iconSet);return textIcon?textIcon.GetDrawable():null}GetLength(){return 1}}; + +} + +// ../lib/str/textLayout/textIconManager.js +{ +'use strict';const C3=self.C3; +C3.TextIconManager=class TextIconManager{constructor(opts){this._iconSets=new Map;this._getIconSetMetaCallback=opts.getIconSetMeta;this._getIconSetContentCallback=opts.getIconSetContent}Release(){for(const iconSet of this._iconSets.values())iconSet.Release();this._iconSets.clear()}GetIconSet(iconSource){let iconSet=this._iconSets.get(iconSource);if(iconSet)return iconSet;const iconMeta=this._getIconSetMetaCallback(iconSource);iconSet=C3.New(C3.TextIconSet,this,{source:iconSource,iconMeta});this._iconSets.set(iconSource, +iconSet);return iconSet}HasIconSet(iconSource){return this._iconSets.has(iconSource)}DeleteIconSet(iconSource){const iconSet=this._iconSets.get(iconSource);if(iconSet)iconSet.Release();this._iconSets.delete(iconSource)}async _GetIconSetContent(iconSource){return await this._getIconSetContentCallback(iconSource)}}; + +} + +// ../lib/str/textLayout/textIconSet.js +{ +'use strict';const C3=self.C3; +C3.TextIconSet=class TextIconSet{constructor(textIconManager,opts){this._textIconManager=textIconManager;this._source=opts.source;this._iconsArray=[];this._iconsByTag=new Map;this._hasStartedLoad=false;this._isLoading=false;this._loadPromise=null;const iconMetaArr=opts.iconMeta.icons;for(let i=0,len=iconMetaArr.length;i=this._iconsArray.length)return null;return this._iconsArray[index]}GetTextIconByTag(tag){return this._iconsByTag.get(tag.toLowerCase())||null}}; + +} + +// ../lib/str/textLayout/textIcon.js +{ +'use strict';const C3=self.C3;C3.TextIcon=class TextIcon{constructor(textIconSet,opts){this._textIconSet=textIconSet;this._source=opts.source||null;this._index=opts.index;this._tag=opts.tag;this._width=opts.width;this._height=opts.height;this._drawable=null}Release(){this._width=0;this._height=0;this._textIconSet=null}GetSource(){return this._source}GetWidth(){return this._width}GetHeight(){return this._height}_SetDrawable(drawable){this._drawable=drawable}GetDrawable(){return this._drawable}}; + +} + +// ../lib/gfx/gfx.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const vec4=glMatrix.vec4;const mat4=glMatrix.mat4;const tempVec3a=vec3.create();const tempVec3b=vec3.create();const tempVec3c=vec3.create();const tempVec4=vec4.create();const tempMat4=mat4.create();const neartl=vec3.create();const neartr=vec3.create();const nearbl=vec3.create();const nearbr=vec3.create();const fartl=vec3.create();const fartr=vec3.create();const farbl=vec3.create();const farbr=vec3.create(); +const unitViewport=vec4.fromValues(0,0,1,1); +C3.Gfx={Project(objx,objy,objz,mv,proj,viewport,windowCoordinate){const fTemp0=mv[0]*objx+mv[4]*objy+mv[8]*objz+mv[12];const fTemp1=mv[1]*objx+mv[5]*objy+mv[9]*objz+mv[13];const fTemp2=mv[2]*objx+mv[6]*objy+mv[10]*objz+mv[14];const fTemp3=mv[3]*objx+mv[7]*objy+mv[11]*objz+mv[15];let fTemp4=proj[0]*fTemp0+proj[4]*fTemp1+proj[8]*fTemp2+proj[12]*fTemp3;let fTemp5=proj[1]*fTemp0+proj[5]*fTemp1+proj[9]*fTemp2+proj[13]*fTemp3;let fTemp6=proj[2]*fTemp0+proj[6]*fTemp1+proj[10]*fTemp2+proj[14]*fTemp3;let fTemp7= +proj[3]*fTemp0+proj[7]*fTemp1+proj[11]*fTemp2+proj[15]*fTemp3;if(fTemp7===0)return false;fTemp7=1/fTemp7;fTemp4*=fTemp7;fTemp5*=fTemp7;fTemp6*=fTemp7;windowCoordinate[0]=(fTemp4*.5+.5)*viewport[2]+viewport[0];windowCoordinate[1]=(fTemp5*.5+.5)*viewport[3]+viewport[1];windowCoordinate[2]=(1+fTemp6)*.5;return true},Unproject(winx,winy,winz,mv,proj,viewport,objectCoordinate){const A=tempMat4;const vec=tempVec4;mat4.multiply(A,proj,mv);if(mat4.invert(A,A)===null)return false;vec[0]=(winx-viewport[0])/ +viewport[2]*2-1;vec[1]=(winy-viewport[1])/viewport[3]*2-1;vec[2]=2*winz-1;vec[3]=1;vec4.transformMat4(vec,vec,A);if(vec[3]===0)return false;vec[3]=1/vec[3];objectCoordinate[0]=vec[0]*vec[3];objectCoordinate[1]=vec[1]*vec[3];objectCoordinate[2]=vec[2]*vec[3];return true},UnprojectScreenToWorldZ(winx,winy,worldZ,mv,proj,viewport,objectCoordinate){const nearPt=tempVec3a;const farPt=tempVec3b;if(!C3.Gfx.Unproject(winx,winy,0,mv,proj,viewport,nearPt))return false;if(!C3.Gfx.Unproject(winx,winy,1,mv,proj, +viewport,farPt))return false;const dirVec=tempVec3b;vec3.subtract(dirVec,farPt,nearPt);const planeNormal=tempVec3c;vec3.set(planeNormal,0,0,1);const planeConstant=-worldZ;const denominator=vec3.dot(planeNormal,dirVec);let distance=0;if(denominator===0){const planeDistToPt=vec3.dot(planeNormal,nearPt)+planeConstant;if(planeDistToPt!==0)return false}else{distance=-(vec3.dot(nearPt,planeNormal)+planeConstant)/denominator;if(distance<0)return false}vec3.scaleAndAdd(objectCoordinate,nearPt,dirVec,distance); +return true}};function PlaneFromPoints(ptA,ptB,ptC,plane){const normal=tempVec3c;vec3.subtract(tempVec3a,ptC,ptB);vec3.subtract(tempVec3b,ptA,ptB);vec3.cross(normal,tempVec3a,tempVec3b);vec3.normalize(normal,normal);plane.set(normal[0],normal[1],normal[2],vec3.dot(ptA,normal))} +function IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,plane){const nx=plane.x;const ny=plane.y;const nz=plane.z;const d=plane.w;const nxT=plane.xF;const nyT=plane.yF;const nzT=plane.zF;const nxF=1-nxT;const nyF=1-nyT;const nzF=1-nzT;const minD=nx*minX*nxT+nx*maxX*nxF+ny*minY*nyT+ny*maxY*nyF+nz*minZ*nzT+nz*maxZ*nzF;if(minD>=d)return true;const maxD=nx*maxX*nxT+nx*minX*nxF+ny*maxY*nyT+ny*minY*nyF+nz*maxZ*nzT+nz*minZ*nzF;return maxD>d} +function IsPointInFrontOfPlane(x,y,z,plane){const nx=plane.x;const ny=plane.y;const nz=plane.z;const d=plane.w;const minD=nx*x+ny*y+nz*z;return minD>=d}class Plane{constructor(){this.x=NaN;this.y=NaN;this.z=NaN;this.w=NaN;this.xF=NaN;this.yF=NaN;this.zF=NaN}set(x,y,z,w){this.x=x;this.y=y;this.z=z;this.w=w;this.xF=x>0?1:0;this.yF=y>0?1:0;this.zF=z>0?1:0}} +C3.Gfx.ViewFrustum=class ViewFrustum{constructor(){this._leftP=new Plane;this._topP=new Plane;this._rightP=new Plane;this._bottomP=new Plane;this._nearP=new Plane;this._farP=new Plane}CalculatePlanes(mv,proj){const vp=unitViewport;C3.Gfx.Unproject(0,1,0,mv,proj,vp,neartl);C3.Gfx.Unproject(1,1,0,mv,proj,vp,neartr);C3.Gfx.Unproject(0,0,0,mv,proj,vp,nearbl);C3.Gfx.Unproject(1,0,0,mv,proj,vp,nearbr);C3.Gfx.Unproject(0,1,1,mv,proj,vp,fartl);C3.Gfx.Unproject(1,1,1,mv,proj,vp,fartr);C3.Gfx.Unproject(0,0, +1,mv,proj,vp,farbl);C3.Gfx.Unproject(1,0,1,mv,proj,vp,farbr);PlaneFromPoints(nearbl,neartl,fartl,this._leftP);PlaneFromPoints(neartl,neartr,fartr,this._topP);PlaneFromPoints(neartr,nearbr,farbr,this._rightP);PlaneFromPoints(nearbr,nearbl,farbl,this._bottomP);PlaneFromPoints(farbl,fartl,fartr,this._farP);PlaneFromPoints(nearbr,neartr,neartl,this._nearP)}ContainsAABB(minX,minY,minZ,maxX,maxY,maxZ){return IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,this._leftP)&&IsInFrontOfPlane(minX,minY,minZ,maxX, +maxY,maxZ,this._topP)&&IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,this._rightP)&&IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,this._bottomP)&&IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,this._nearP)&&IsInFrontOfPlane(minX,minY,minZ,maxX,maxY,maxZ,this._farP)}IsBehindNearPlane(x,y,z){return!IsPointInFrontOfPlane(x,y,z,this._nearP)}}; + +} + +// ../lib/gfx/rendererBase.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const vec4=glMatrix.vec4;const mat4=glMatrix.mat4;const tempMat4=mat4.create();const tmpVec3a=vec3.fromValues(0,0,0);const tmpVec3b=vec3.fromValues(0,0,0);const tmpVec3c=vec3.fromValues(0,0,0);const defaultUpVector=vec3.fromValues(0,1,0);const tmpVec4=vec4.fromValues(0,0,0,0);const tmpQuad=new C3.Quad;const tmpRect=new C3.Rect;const defaultTexCoordsQuad=new C3.Quad(0,0,1,0,1,1,0,1); +const DEFAULT_RENDERERBASE_OPTS={nearZ:1,farZ:1E4};const matWebGLtoWebGPU=mat4.fromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1); +C3.Gfx.RendererBase=class RendererBase{constructor(opts){opts=Object.assign({},DEFAULT_RENDERERBASE_OPTS,opts);this._width=0;this._height=0;this._fovY=C3.toRadians(45);this._tan_fovY_2=Math.tan(this._fovY/2);this._matP=mat4.create();this._matMV=mat4.create();this._zAxisScale=false;this._nearZ=opts.nearZ;this._farZ=opts.farZ;this._allShaderPrograms=[];this._shaderProgramsByName=new Map;this._spTextureFill=null;this._spPoints=null;this._spTilemapFill=null;this._spTileRandomization=null;this._spColorFill= +null;this._spLinearGradientFill=null;this._spPenumbraFill=null;this._spHardEllipseFill=null;this._spHardEllipseOutline=null;this._spSmoothEllipseFill=null;this._spSmoothEllipseOutline=null;this._spSmoothLineFill=null;this._stateGroups=new Map;this._currentStateGroup=null;this._blendModeTable=[];this._namedBlendModeMap=new Map;this._baseZ=0;this._currentZ=0;this._lineWidth=1;this._lineWidthStack=[this._lineWidth];this._lineCap=1;this._lineCapStack=[this._lineCap];this._lineOffset=.5;this._lineOffsetStack= +[this._lineOffset];this._frameNumber=0;this._enableMipmaps=true;this._hasMajorPerformanceCaveat=false}FillIndexBufferData(indexData){let i=0,len=indexData.length,fv=0;while(i=100)throw new Error("pushed too many line widths - check push/pop pairs"); +this._lineWidthStack.push(n);this._lineWidth=n}PopLineWidth(){if(this._lineWidthStack.length<=1)throw new Error("cannot pop last line width - check push/pop pairs");this._lineWidthStack.pop();this._lineWidth=this._lineWidthStack.at(-1)}SetLineCapButt(){this._lineCap=0;this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapSquare(){this._lineCap=1;this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapZag(){this._lineCap=2;this._lineCapStack[this._lineCapStack.length-1]=0}PushLineCap(type){if(type=== +"butt")this.PushLineCapButt();else if(type==="square")this.PushLineCapSquare();else if(type==="zag")this.PushLineCapZag();else throw new Error("invalid line cap");}PushLineCapButt(){if(this._lineCapStack.length>=100)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(0);this._lineCap=0}PushLineCapSquare(){if(this._lineCapStack.length>=100)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(1);this._lineCap=1}PushLineCapZag(){if(this._lineCapStack.length>= +100)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(2);this._lineCap=2}PopLineCap(){if(this._lineCapStack.length<=1)throw new Error("cannot pop last line cap - check push/pop pairs");this._lineCapStack.pop();this._lineCap=this._lineCapStack.at(-1)}SetLineOffset(n){this._lineOffset=n;this._lineOffsetStack[this._lineOffsetStack.length-1]=n}GetLineOffset(){return this._lineOffset}PushLineOffset(n){if(this._lineOffsetStack.length>=100)throw new Error("pushed too many line offsets - check push/pop pairs"); +this._lineOffsetStack.push(n);this._lineOffset=n}PopLineOffset(){if(this._lineOffsetStack.length<=1)throw new Error("cannot pop last line offset - check push/pop pairs");this._lineOffsetStack.pop();this._lineOffset=this._lineOffsetStack.at(-1)}ConvexPoly(pts){const pts_count=pts.length/2;if(pts_count<3)throw new Error("need at least 3 points");const tris=pts_count-2;const last_tri=tris-1;const p0x=pts[0];const p0y=pts[1];for(let i=0;i0)throw new Error("releasing state group still in use"); +this._renderer=null;this._shaderProgram=null;this._shaderProgramName=""}Apply(){const renderer=this._renderer;renderer.SetProgram(this._shaderProgram);renderer.SetBlendMode(this._blendMode);renderer.SetColor(this._color);renderer.SetCurrentZ(this._zElevation);renderer._SetCurrentStateGroup(this)}GetKey(){return C3.Gfx.StateGroup.MakeKey(this._shaderProgramName,this._blendMode,this._color,this._zElevation)}AddRef(){++this._refCount}DecRef(){--this._refCount}_GetRefCount(){return this._refCount}OnContextLost(){this._shaderProgram= +null}OnContextRestored(renderer){this._shaderProgram=renderer.GetShaderProgramByName(this._shaderProgramName);if(!this._shaderProgram)throw new Error("failed to restore shader program");}static MakeKey(shaderProgram_or_name,blendMode,c,zElevation){const shaderProgramName=typeof shaderProgram_or_name==="string"?shaderProgram_or_name:shaderProgram_or_name.GetName();return shaderProgramName+","+blendMode+","+c.getR()+","+c.getG()+","+c.getB()+","+c.getA()+","+zElevation}}; + +} + +// ../lib/gfx/mesh.js +{ +'use strict';const C3=self.C3;const tempQuadTex=C3.New(C3.Quad);function interpolateQuad(srcX,srcY,quad){const qtlx=quad.getTlx();const qtly=quad.getTly();const qtrx=quad.getTrx()-qtlx;const qtry=quad.getTry()-qtly;const qblx=quad.getBlx()-qtlx;const qbly=quad.getBly()-qtly;const xix=qtrx*srcX;const xiy=qtry*srcX;const yix=qblx*srcY;const yiy=qbly*srcY;return[qtlx+xix+yix,qtly+xiy+yiy]} +C3.Gfx.MeshPoint=class MeshPoint{constructor(mesh,col,row){this._mesh=mesh;this._col=col;this._row=row;this._x=NaN;this._y=NaN;this._zElevation=NaN;this._u=NaN;this._v=NaN;this._x=0;this._y=0;this._zElevation=0;this._u=0;this._v=0}_Init(x,y,u,v){this._x=x;this._y=y;this._u=u;this._v=v}GetX(){return this._x}SetX(x){if(this._x===x)return;this._x=x;this._mesh._SetPointsChanged()}GetY(){return this._y}SetY(y){if(this._y===y)return;this._y=y;this._mesh._SetPointsChanged()}GetZElevation(){return this._zElevation}SetZElevation(z){if(this._zElevation=== +z)return;this._zElevation=Math.max(z,0);this._mesh._SetPointsChanged()}GetU(){return this._u}SetU(u){this._u=u}GetV(){return this._v}SetV(v){this._v=v}_Interpolate_TexRect(srcPoint,quadPos,rcTex){[this._x,this._y]=interpolateQuad(srcPoint._x,srcPoint._y,quadPos);this._zElevation=srcPoint._zElevation;this._u=C3.lerp(rcTex.getLeft(),rcTex.getRight(),srcPoint._u);this._v=C3.lerp(rcTex.getTop(),rcTex.getBottom(),srcPoint._v)}_Interpolate_TexQuad(srcPoint,quadPos,quadTex){[this._x,this._y]=interpolateQuad(srcPoint._x, +srcPoint._y,quadPos);this._zElevation=srcPoint._zElevation;[this._u,this._v]=interpolateQuad(srcPoint._u,srcPoint._v,quadTex)}SaveToJson(){return{"x":this.GetX(),"y":this.GetY(),"z":this.GetZElevation(),"u":this.GetU(),"v":this.GetV()}}LoadFromJson(o){this.SetX(o["x"]);this.SetY(o["y"]);if(o.hasOwnProperty("z"))this.SetZElevation(o["z"]);this.SetU(o["u"]);this.SetV(o["v"])}GetMesh(){return this._mesh}GetColumn(){return this._col}GetRow(){return this._row}}; +C3.Gfx.Mesh=class Mesh{constructor(hsize,vsize,owner){if(hsize<2||vsize<2)throw new Error("invalid mesh size");this._hsize=hsize;this._vsize=vsize;this._owner=owner||null;this._pts=[];this._minX=0;this._minY=0;this._maxX=1;this._maxY=1;this._maxZ=0;this._pointsChanged=false;const lastX=hsize-1;const lastY=vsize-1;for(let y=0;y0}GetMeshPointAt(x,y){x=Math.floor(x);y=Math.floor(y);if(x<0||x>=this._hsize||y<0||y>=this._vsize)return null;return this._pts[y][x]}CalculateTransformedMesh(srcMesh,quadPos,rcTex_or_quad){const isTexRect=rcTex_or_quad instanceof +C3.Rect;if(srcMesh.GetHSize()!==this.GetHSize()||srcMesh.GetVSize()!==this.GetVSize())throw new Error("source mesh wrong size");const srcPts=srcMesh._pts;const destPts=this._pts;for(let y=0,lenY=destPts.length;y[x,y,z];const pts=this._pts;let prevRow=pts[0];for(let y=1,lenY=pts.length;y{curX=C3.clamp(C3.lerp(curX,nextX,rayHit),0,1);curY=C3.clamp(C3.lerp(curY,nextY,rayHit),0,1);outPts.push(curX,curY)};for(let i=0,len=inPts.length;i1E6)throw new Error("Too many mesh poly points"); +const srcTlx=curCol*colWidthNorm;const srcTly=curRow*rowHeightNorm;const srcBrx=(curCol+1)*colWidthNorm;const srcBry=(curRow+1)*rowHeightNorm;isUpper=C3.isPointInTriangleInclusive(curX,curY,srcTlx,srcTly,srcBrx,srcTly,srcBrx,srcBry);if(disableCheck!==DISABLE_DIAGONAL){rayHit=C3.rayIntersectExtended(curX,curY,nextX,nextY,srcTlx,srcTly,srcBrx,srcBry,-RAY_EXT_DIST);if(rayHit>=MIN_RAY_DIST&&rayHit<=MAX_RAY_DIST){addVertexAtRayHit();isUpper=!isUpper;disableCheck=DISABLE_DIAGONAL;continue}}if(curRow>0&& +disableCheck!==DISABLE_TOP_EDGE){rayHit=C3.rayIntersectExtended(curX,curY,nextX,nextY,srcTlx,srcTly,srcBrx,srcTly,RAY_EXT_DIST);if(rayHit>=MIN_RAY_DIST&&rayHit<=MAX_RAY_DIST){addVertexAtRayHit();curRow--;isUpper=false;disableCheck=DISABLE_BOTTOM_EDGE;continue}}if(curCol=MIN_RAY_DIST&&rayHit<=MAX_RAY_DIST){addVertexAtRayHit();curCol++;isUpper=false;disableCheck= +DISABLE_LEFT_EDGE;continue}}if(curCol>0&&disableCheck!==DISABLE_LEFT_EDGE){rayHit=C3.rayIntersectExtended(curX,curY,nextX,nextY,srcTlx,srcTly,srcTlx,srcBry,RAY_EXT_DIST);if(rayHit>=MIN_RAY_DIST&&rayHit<=MAX_RAY_DIST){addVertexAtRayHit();curCol--;isUpper=true;disableCheck=DISABLE_RIGHT_EDGE;continue}}if(curRow=MIN_RAY_DIST&&rayHit<=MAX_RAY_DIST){addVertexAtRayHit(); +curRow++;isUpper=true;disableCheck=DISABLE_TOP_EDGE;continue}}break}}return C3.New(C3.CollisionPoly,outPts)}TransformCollisionPoly(srcPoly,destPoly){const ptsArr=this._TransformPolyPoints(srcPoly);this._SimplifyPoly(ptsArr);destPoly.setPoints(ptsArr)}_TransformPolyPoints(srcPoly){const outPts=[];const ptsArr=srcPoly.pointsArr();for(let i=0,len=ptsArr.length;iR_EPSILON||dx==0&&dy===0)outPts.push(curX,curY);curX=nextX;curY=nextY;lastDx=dx;lastDy=dy}if(outPts.length>=6&&outPts.lengthrow.map(pt=>pt.SaveToJson()))}}LoadFromJson(o){const cols=this.GetHSize();const rows= +this.GetVSize();if(o["cols"]!==cols||o["rows"]!==rows)throw new Error("mesh data wrong size");const meshRows=o["points"];for(let y=0;ymaxTextureSize||this._height>maxTextureSize)throw new Error("texture data exceeds maximum texture size");const gl=this._renderer.GetContext();const webglVersion=this._renderer.GetWebGLVersionNumber();this._texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,this._texture);gl.pixelStorei(gl["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],opts.premultiplyAlpha); +gl.pixelStorei(gl["UNPACK_FLIP_Y_WEBGL"],false);const formatspec=GetFormatSpecifiers(this._pixelFormat,gl);if(!this._renderer.SupportsNPOTTextures()&&!isPOT&&this._IsTiled()){if(data===null)throw new Error("cannot pass null data when creating a NPOT tiled texture without NPOT support");if(data instanceof ArrayBuffer)data=new ImageData(new Uint8ClampedArray(data),this._width,this._height);if(data instanceof ImageData){const tmpCanvas=C3.CreateCanvas(this._width,this._height);const tmpCtx=tmpCanvas.getContext("2d"); +tmpCtx.putImageData(data,0,0);data=tmpCanvas}const canvas=C3.CreateCanvas(C3.nextHighestPowerOfTwo(this._width),C3.nextHighestPowerOfTwo(this._height));const ctx=canvas.getContext("2d");ctx.imageSmoothingEnabled=this._sampling!=="nearest";ctx.drawImage(data,0,0,this._width,this._height,0,0,canvas.width,canvas.height);gl.texImage2D(gl.TEXTURE_2D,0,formatspec.internalformat,formatspec.format,formatspec.type,canvas)}else if(webglVersion>=2){let levels;if(this._isMipMapped)levels=Math.floor(Math.log2(Math.max(this._width, +this._height))+1);else levels=1;gl.texStorage2D(gl.TEXTURE_2D,levels,formatspec.sizedinternalformat,this._width,this._height);if(data instanceof ArrayBuffer)gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,this._width,this._height,formatspec.format,formatspec.type,new Uint8Array(data));else if(data!==null)gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,formatspec.format,formatspec.type,data)}else if(data instanceof ArrayBuffer)gl.texImage2D(gl.TEXTURE_2D,0,formatspec.internalformat,this._width,this._height,0,formatspec.format, +formatspec.type,new Uint8Array(data));else if(data===null)gl.texImage2D(gl.TEXTURE_2D,0,formatspec.internalformat,this._width,this._height,0,formatspec.format,formatspec.type,null);else gl.texImage2D(gl.TEXTURE_2D,0,formatspec.internalformat,formatspec.format,formatspec.type,data);if(data!==null)this._SetTextureParameters(gl);gl.bindTexture(gl.TEXTURE_2D,null);this._renderer._ResetLastTexture();this._refCount=1;allTextures.add(this)}_CreateDynamic(width,height,opts){opts=Object.assign({},CREATEFROM_DEFAULT_OPTIONS, +opts);if(this._texture)throw new Error("already created texture");this._wrapX=opts.wrapX;this._wrapY=opts.wrapY;this._sampling=opts.sampling;this._pixelFormat=opts.pixelFormat;this._isMipMapped=!!opts.mipMap&&this._renderer.AreMipmapsEnabled();this._mipMapQuality=opts.mipMapQuality;if(!VALID_WRAP_MODES.has(this._wrapX)||!VALID_WRAP_MODES.has(this._wrapY))throw new Error("invalid wrap mode");if(!VALID_SAMPLINGS.has(this._sampling))throw new Error("invalid sampling");if(!VALID_PIXEL_FORMATS.has(this._pixelFormat))throw new Error("invalid pixel format"); +if(!VALID_MIPMAP_QUALITIES.has(this._mipMapQuality))throw new Error("invalid mipmap quality");this._isStatic=false;this._width=Math.floor(width);this._height=Math.floor(height);const isPOT=C3.isPOT(this._width)&&C3.isPOT(this._height);const maxTextureSize=this._renderer.GetMaxTextureSize();if(this._width<=0||this._height<=0)throw new Error("invalid texture size");if(this._width>maxTextureSize||this._height>maxTextureSize)throw new Error("texture exceeds maximum texture size");if(!this._renderer.SupportsNPOTTextures()&& +this._IsTiled()&&!isPOT)throw new Error("non-power-of-two tiled textures not supported");const gl=this._renderer.GetContext();const webglVersion=this._renderer.GetWebGLVersionNumber();this._texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,this._texture);gl.pixelStorei(gl["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],opts.premultiplyAlpha);gl.pixelStorei(gl["UNPACK_FLIP_Y_WEBGL"],false);const formatspec=GetFormatSpecifiers(this._pixelFormat,gl);const internalformat=webglVersion>=2?formatspec.sizedinternalformat: +formatspec.internalformat;gl.texImage2D(gl.TEXTURE_2D,0,internalformat,this._width,this._height,0,formatspec.format,formatspec.type,null);this._SetTextureParameters(gl);gl.bindTexture(gl.TEXTURE_2D,null);this._renderer._ResetLastTexture();this._refCount=1;allTextures.add(this)}_GetMipMapHint(gl){if(this._mipMapQuality==="default")return this._isStatic?gl.NICEST:gl.FASTEST;else if(this._mipMapQuality==="low")return gl.FASTEST;else if(this._mipMapQuality==="high")return gl.NICEST;else throw new Error("invalid mipmap quality"); +}_IsTiled(){return this._wrapX!=="clamp-to-edge"||this._wrapY!=="clamp-to-edge"}_GetTextureWrapMode(gl,wrapMode){if(wrapMode==="clamp-to-edge")return gl.CLAMP_TO_EDGE;else if(wrapMode==="repeat")return gl.REPEAT;else if(wrapMode==="mirror-repeat")return gl.MIRRORED_REPEAT;else throw new Error("invalid wrap mode");}_SetTextureParameters(gl){const isPOT=C3.isPOT(this._width)&&C3.isPOT(this._height);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,this._GetTextureWrapMode(gl,this._wrapX));gl.texParameteri(gl.TEXTURE_2D, +gl.TEXTURE_WRAP_T,this._GetTextureWrapMode(gl,this._wrapY));if(this._sampling==="nearest"){gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);this._isMipMapped=false}else{gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);if((isPOT||this._renderer.SupportsNPOTTextures())&&this._isMipMapped){gl.hint(gl.GENERATE_MIPMAP_HINT,this._GetMipMapHint(gl));gl.generateMipmap(gl.TEXTURE_2D);const useTrilinear=this._sampling=== +"trilinear"&&!this._renderer.HasMajorPerformanceCaveat();gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,useTrilinear?gl.LINEAR_MIPMAP_LINEAR:gl.LINEAR_MIPMAP_NEAREST)}else{gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);this._isMipMapped=false}}const anisotropicExt=this._renderer._GetAnisotropicExtension();if(anisotropicExt&&this._anisotropy>0&&this._sampling!=="nearest")gl.texParameterf(gl.TEXTURE_2D,anisotropicExt["TEXTURE_MAX_ANISOTROPY_EXT"],Math.min(this._anisotropy,this._renderer._GetMaxAnisotropy()))}_Update(data, +opts){if((typeof HTMLImageElement==="undefined"||!(data instanceof HTMLImageElement))&&(typeof HTMLVideoElement==="undefined"||!(data instanceof HTMLVideoElement))&&(typeof HTMLCanvasElement==="undefined"||!(data instanceof HTMLCanvasElement))&&(typeof ImageBitmap==="undefined"||!(data instanceof ImageBitmap))&&(typeof OffscreenCanvas==="undefined"||!(data instanceof OffscreenCanvas))&&!(data instanceof ImageData))throw new Error("invalid texture source");if(!this._texture||this._refCount<=0)throw new Error("texture not created"); +if(this._isStatic)throw new Error("cannot update static texture");opts=Object.assign({},UPDATE_DEFAULT_OPTIONS,opts);const dataWidth=data.width||data.videoWidth;const dataHeight=data.height||data.videoHeight;const webglVersion=this._renderer.GetWebGLVersionNumber();const gl=this._renderer.GetContext();gl.bindTexture(gl.TEXTURE_2D,this._texture);gl.pixelStorei(gl["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],opts.premultiplyAlpha);gl.pixelStorei(gl["UNPACK_FLIP_Y_WEBGL"],!!opts.flipY);const formatspec=GetFormatSpecifiers(this._pixelFormat, +gl);const internalformat=webglVersion>=2?formatspec.sizedinternalformat:formatspec.internalformat;try{if(this._width===dataWidth&&this._height===dataHeight){const isPOT=C3.isPOT(this._width)&&C3.isPOT(this._height);gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,formatspec.format,formatspec.type,data);if((isPOT||this._renderer.SupportsNPOTTextures())&&this._isMipMapped){gl.hint(gl.GENERATE_MIPMAP_HINT,this._GetMipMapHint(gl));gl.generateMipmap(gl.TEXTURE_2D)}}else{this._width=dataWidth;this._height=dataHeight; +const isPOT=C3.isPOT(this._width)&&C3.isPOT(this._height);if(!this._renderer.SupportsNPOTTextures()&&this._IsTiled()&&!isPOT)throw new Error("non-power-of-two tiled textures not supported");gl.texImage2D(gl.TEXTURE_2D,0,internalformat,formatspec.format,formatspec.type,data);if((isPOT||this._renderer.SupportsNPOTTextures())&&this._isMipMapped){gl.hint(gl.GENERATE_MIPMAP_HINT,this._GetMipMapHint(gl));gl.generateMipmap(gl.TEXTURE_2D)}}}catch(e){console.error("Error updating WebGL texture: ",e)}gl.bindTexture(gl.TEXTURE_2D, +null);this._renderer._ResetLastTexture()}_Delete(){if(this._refCount>0)throw new Error("texture still has references");if(!this._texture)throw new Error("already deleted texture");allTextures.delete(this);const gl=this._renderer.GetContext();gl.deleteTexture(this._texture);this._texture=null}IsValid(){return!!this._texture}_GetTexture(){return this._texture}GetRenderer(){return this._renderer}AddReference(){this._refCount++}SubtractReference(){if(this._refCount<=0)throw new Error("no more references"); +this._refCount--}GetReferenceCount(){return this._refCount}GetWidth(){return this._width}GetHeight(){return this._height}IsStatic(){return this._isStatic}GetEstimatedMemoryUsage(){let size=this._width*this._height;switch(this._pixelFormat){case "rgba8":size*=4;break;case "rgb8":size*=3;break;case "rgba4":case "rgb5_a1":case "rgb565":size*=2;break}if(this._isMipMapped)size+=Math.floor(size/3);return size}static OnContextLost(){allTextures.clear()}static allTextures(){return allTextures.values()}}; + +} + +// ../lib/gfx/webgl/renderTarget.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const mat4=glMatrix.mat4;const VALID_SAMPLINGS=new Set(["nearest","bilinear","trilinear"]);const DEFAULT_RENDERTARGET_OPTIONS={sampling:"trilinear",alpha:true,depth:false,isSampled:true,isDefaultSize:true,multisampling:0};const allRenderTargets=new Set; +C3.Gfx.WebGLRenderTarget=class WebGLRenderTarget{constructor(renderer){this._renderer=renderer;this._frameBuffer=null;this._frameBufferNoDepth=null;this._texture=null;this._renderBuffer=null;this._width=0;this._height=0;this._isDefaultSize=true;this._sampling="trilinear";this._alpha=true;this._depth=false;this._isSampled=true;this._multisampling=0;this._projectionMatrix=mat4.create();this._lastFov=0;this._lastNearZ=0;this._lastFarZ=0}_Create(width,height,opts){opts=Object.assign({},DEFAULT_RENDERTARGET_OPTIONS, +opts);const webGLVersion=this._renderer.GetWebGLVersionNumber();if(this._texture||this._renderBuffer)throw new Error("already created render target");this._sampling=opts.sampling;this._alpha=!!opts.alpha;this._depth=!!opts.depth;this._isSampled=!!opts.isSampled;this._isDefaultSize=!!opts.isDefaultSize;this._multisampling=opts.multisampling;if(!VALID_SAMPLINGS.has(this._sampling))throw new Error("invalid sampling");if(this._multisampling>0&&(webGLVersion<2||this._isSampled))throw new Error("invalid use of multisampling"); +if(webGLVersion<2)this._isSampled=true;this._width=width;this._height=height;if(this._width<=0||this._height<=0)throw new Error("invalid render target size");this._CalculateProjection();const gl=this._renderer.GetContext();this._frameBuffer=gl.createFramebuffer();if(this._depth)this._frameBufferNoDepth=gl.createFramebuffer();if(this._isSampled){this._texture=this._renderer.CreateDynamicTexture(this._width,this._height,{sampling:this._sampling,pixelFormat:this._alpha?"rgba8":"rgb8",mipMap:false}); +const tex=this._texture._GetTexture();gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,tex,0);if(this._depth){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBufferNoDepth);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,tex,0)}}else{this._renderBuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,this._renderBuffer);const internalFormat=this._alpha?gl.RGBA8:gl.RGB8;if(this._multisampling> +0){const formatSamples=gl.getInternalformatParameter(gl.RENDERBUFFER,internalFormat,gl.SAMPLES);if(formatSamples&&formatSamples[0]){const maxSamples=formatSamples[0];if(this._multisampling>maxSamples)this._multisampling=maxSamples}else this._multisampling=0}if(this._multisampling===0)gl.renderbufferStorage(gl.RENDERBUFFER,internalFormat,this._width,this._height);else gl.renderbufferStorageMultisample(gl.RENDERBUFFER,this._multisampling,internalFormat,this._width,this._height);gl.bindFramebuffer(gl.FRAMEBUFFER, +this._frameBuffer);gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.RENDERBUFFER,this._renderBuffer);if(this._depth){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBufferNoDepth);gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.RENDERBUFFER,this._renderBuffer)}gl.bindRenderbuffer(gl.RENDERBUFFER,null)}const rendererDepthBuffer=this._renderer._GetDepthBuffer();if(this._depth&&rendererDepthBuffer){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer);if(this._renderer._CanSampleDepth())gl.framebufferTexture2D(gl.FRAMEBUFFER, +gl.DEPTH_STENCIL_ATTACHMENT,gl.TEXTURE_2D,rendererDepthBuffer,0);else gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,rendererDepthBuffer)}gl.bindFramebuffer(gl.FRAMEBUFFER,null);allRenderTargets.add(this)}_Resize(width,height){if(this._width===width&&this._height===height)return;this._width=width;this._height=height;this._CalculateProjection();const gl=this._renderer.GetContext();gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer);if(this._texture)this._texture._Update(new ImageData(this._width, +this._height));else{gl.bindRenderbuffer(gl.RENDERBUFFER,this._renderBuffer);gl.renderbufferStorage(gl.RENDERBUFFER,this._alpha?gl.RGBA8:gl.RGB8,this._width,this._height);gl.bindRenderbuffer(gl.RENDERBUFFER,null)}const rendererDepthBuffer=this._renderer._GetDepthBuffer();if(this._depth&&rendererDepthBuffer)if(this._renderer._CanSampleDepth())gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.TEXTURE_2D,rendererDepthBuffer,0);else gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT, +gl.RENDERBUFFER,rendererDepthBuffer);gl.bindFramebuffer(gl.FRAMEBUFFER,null)}_Delete(){if(!this._texture&&!this._renderBuffer)throw new Error("already deleted render target");allRenderTargets.delete(this);const gl=this._renderer.GetContext();if(this._texture){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0);if(this._depth){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBufferNoDepth);gl.framebufferTexture2D(gl.FRAMEBUFFER, +gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0)}this._renderer.DeleteTexture(this._texture);this._texture=null}else if(this._renderBuffer){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer);gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.RENDERBUFFER,null);if(this._depth){gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBufferNoDepth);gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.RENDERBUFFER,null)}gl.deleteRenderbuffer(this._renderBuffer);this._renderBuffer=null}gl.bindFramebuffer(gl.FRAMEBUFFER, +null);if(this._renderer.GetWebGLVersionNumber()>=2){gl.bindFramebuffer(gl.READ_FRAMEBUFFER,null);gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER,null)}gl.deleteFramebuffer(this._frameBuffer);if(this._depth)gl.deleteFramebuffer(this._frameBufferNoDepth);const batchState=this._renderer.GetBatchState();batchState.currentFramebuffer=null;batchState.currentFramebufferNoDepth=null;this._frameBuffer=null}_CalculateProjection(){this._renderer.CalculatePerspectiveMatrix(this._projectionMatrix,this._width/this._height); +this._lastFov=this._renderer.GetFovY();this._lastNearZ=this._renderer.GetNearZ();this._lastFarZ=this._renderer.GetFarZ()}_GetFramebuffer(){return this._frameBuffer}_GetFramebufferNoDepth(){return this._frameBufferNoDepth}GetRenderer(){return this._renderer}GetTexture(){return this._texture}GetProjectionMatrix(){if(this._renderer.GetFovY()!==this._lastFov||this._renderer.GetNearZ()!==this._lastNearZ||this._renderer.GetFarZ()!==this._lastFarZ)this._CalculateProjection();return this._projectionMatrix}IsLinearSampling(){return this._sampling!== +"nearest"}HasAlpha(){return this._alpha}IsSampled(){return this._isSampled}HasDepthBuffer(){return this._depth}GetWidth(){return this._width}GetHeight(){return this._height}IsDefaultSize(){return this._isDefaultSize}GetMultisampling(){return this._multisampling}GetOptions(){const ret={sampling:this._sampling,alpha:this._alpha,isSampled:this._isSampled};if(!this._isDefaultSize){ret.width=this._width;ret.height=this._height}return ret}IsCompatibleWithOptions(opts){opts=Object.assign({},DEFAULT_RENDERTARGET_OPTIONS, +opts);if(opts.sampling!=="nearest"!==this.IsLinearSampling())return false;if(!!opts.alpha!==this.HasAlpha())return false;if(!!opts.depth!==this.HasDepthBuffer())return false;if(this._renderer.GetWebGLVersionNumber()>=2)if(!!opts.isSampled!==this.IsSampled())return false;if(typeof opts.width==="number"||typeof opts.height==="number")return!this.IsDefaultSize()&&this.GetWidth()===Math.floor(opts.width)&&this.GetHeight()===Math.floor(opts.height);else return this.IsDefaultSize()}_GetWebGLTexture(){if(!this._texture)return null; +return this._texture._GetTexture()}GetEstimatedMemoryUsage(){if(this._texture)return this._texture.GetEstimatedMemoryUsage();return this._width*this._height*(this._alpha?4:3)}static async DebugReadPixelsToBlob(renderer,renderTarget){const imageData=await renderer.ReadBackRenderTargetToImageData(renderTarget,true);return await C3.ImageDataToBlob(imageData)}static OnContextLost(){allRenderTargets.clear()}static allRenderTargets(){return allRenderTargets.values()}static ResizeAll(width,height){for(const rt of allRenderTargets)if(rt.IsDefaultSize())rt._Resize(width, +height)}}; + +} + +// ../lib/gfx/webgl/shaderProgram.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const mat4=glMatrix.mat4; +const RESERVED_UNIFORM_NAMES=new Set(["aPos","aTex","aPoints","matP","matMV","samplerFront","samplerBack","samplerDepth","destStart","destEnd","srcStart","srcEnd","srcOriginStart","srcOriginEnd","pixelSize","seconds","devicePixelRatio","layerScale","layerAngle","layoutStart","layoutEnd","color","color2_","pointTexStart","pointTexEnd","zElevation","tileSize","tileSpacing","outlineThickness","zNear","zFar"]); +C3.Gfx.WebGLShaderProgram=class WebGLShaderProgram extends C3.Gfx.ShaderProgramBase{static async Compile(renderer,shaderInfo){const gl=renderer.GetContext();const fragSrc=shaderInfo.src;const vertexSrc=shaderInfo.vertexSrc;const name=shaderInfo.name;const fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,fragSrc);gl.compileShader(fragmentShader);const vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,vertexSrc);gl.compileShader(vertexShader); +const shaderProgram=gl.createProgram();gl.attachShader(shaderProgram,fragmentShader);gl.attachShader(shaderProgram,vertexShader);gl.bindAttribLocation(shaderProgram,0,"aPos");gl.bindAttribLocation(shaderProgram,1,"aTex");gl.bindAttribLocation(shaderProgram,2,"aPoints");gl.linkProgram(shaderProgram);const parallelShaderCompileExt=renderer._GetParallelShaderCompileExtension();if(parallelShaderCompileExt)await renderer._WaitForObjectReady(()=>gl.getProgramParameter(shaderProgram,parallelShaderCompileExt["COMPLETION_STATUS_KHR"])); +else await C3.Wait(5);if(!gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)){const log=gl.getShaderInfoLog(fragmentShader);gl.deleteShader(fragmentShader);gl.deleteShader(vertexShader);gl.deleteProgram(shaderProgram);throw new Error("Error compiling fragment shader: "+log);}if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)){const log=gl.getShaderInfoLog(vertexShader);gl.deleteShader(fragmentShader);gl.deleteShader(vertexShader);gl.deleteProgram(shaderProgram);throw new Error("Error compiling vertex shader: "+ +log);}if(!gl.getProgramParameter(shaderProgram,gl.LINK_STATUS)){const log=gl.getProgramInfoLog(shaderProgram);gl.deleteShader(fragmentShader);gl.deleteShader(vertexShader);gl.deleteProgram(shaderProgram);throw new Error("Error linking shader program: "+log);}const infoLog=C3.FilterUnprintableChars(gl.getProgramInfoLog(shaderProgram)||"").trim();if(infoLog&&!C3.IsStringAllWhitespace(infoLog))console.info(`[WebGL] Shader program '${name}' compilation log: `,infoLog);gl.deleteShader(fragmentShader); +gl.deleteShader(vertexShader);return shaderProgram}static async Create(renderer,shaderInfo){const shaderProgram=await C3.Gfx.WebGLShaderProgram.Compile(renderer,shaderInfo);return new C3.Gfx.WebGLShaderProgram(renderer,shaderProgram,shaderInfo)}constructor(renderer,shaderProgram,shaderInfo){super(renderer,shaderInfo);const gl=renderer.GetContext();const batchState=renderer.GetBatchState();renderer.EndBatch();gl.useProgram(shaderProgram);this._gl=gl;this._shaderProgram=shaderProgram;this._isDeviceTransform= +shaderInfo.name==="";const locAPos=gl.getAttribLocation(shaderProgram,"aPos");const locATex=gl.getAttribLocation(shaderProgram,"aTex");this._locAPoints=gl.getAttribLocation(shaderProgram,"aPoints");if(locAPos!==-1){gl.bindBuffer(gl.ARRAY_BUFFER,renderer._vertexBuffer);gl.vertexAttribPointer(locAPos,renderer.GetNumVertexComponents(),gl.FLOAT,false,0,0);gl.enableVertexAttribArray(locAPos)}if(locATex!==-1){gl.bindBuffer(gl.ARRAY_BUFFER,renderer._texcoordBuffer);gl.vertexAttribPointer(locATex, +2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(locATex)}if(this._locAPoints!==-1){gl.bindBuffer(gl.ARRAY_BUFFER,renderer._pointBuffer);gl.vertexAttribPointer(this._locAPoints,4,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(this._locAPoints)}gl.bindBuffer(gl.ARRAY_BUFFER,null);this._uMatP=new C3.Gfx.WebGLShaderUniform(this,"matP","mat4");this._uMatMV=new C3.Gfx.WebGLShaderUniform(this,"matMV","mat4");this._uColor=new C3.Gfx.WebGLShaderUniform(this,"color","vec4");this._uSamplerFront=new C3.Gfx.WebGLShaderUniform(this, +"samplerFront","sampler");this._uPointTexStart=new C3.Gfx.WebGLShaderUniform(this,"pointTexStart","vec2");this._uPointTexEnd=new C3.Gfx.WebGLShaderUniform(this,"pointTexEnd","vec2");this._uZElevation=new C3.Gfx.WebGLShaderUniform(this,"zElevation","float");this._uTileSize=new C3.Gfx.WebGLShaderUniform(this,"tileSize","vec2");this._uTileSpacing=new C3.Gfx.WebGLShaderUniform(this,"tileSpacing","vec2");this._uColor2=new C3.Gfx.WebGLShaderUniform(this,"color2_","vec4");this._uOutlineThickness=new C3.Gfx.WebGLShaderUniform(this, +"outlineThickness","float");this._uSamplerBack=new C3.Gfx.WebGLShaderUniform(this,"samplerBack","sampler");this._uSamplerDepth=new C3.Gfx.WebGLShaderUniform(this,"samplerDepth","sampler");this._uDestStart=new C3.Gfx.WebGLShaderUniform(this,"destStart","vec2");this._uDestEnd=new C3.Gfx.WebGLShaderUniform(this,"destEnd","vec2");this._uSrcStart=new C3.Gfx.WebGLShaderUniform(this,"srcStart","vec2");this._uSrcEnd=new C3.Gfx.WebGLShaderUniform(this,"srcEnd","vec2");this._uSrcOriginStart=new C3.Gfx.WebGLShaderUniform(this, +"srcOriginStart","vec2");this._uSrcOriginEnd=new C3.Gfx.WebGLShaderUniform(this,"srcOriginEnd","vec2");this._uPixelSize=new C3.Gfx.WebGLShaderUniform(this,"pixelSize","vec2");this._uSeconds=new C3.Gfx.WebGLShaderUniform(this,"seconds","float");this._uDevicePixelRatio=new C3.Gfx.WebGLShaderUniform(this,"devicePixelRatio","float");this._uLayerScale=new C3.Gfx.WebGLShaderUniform(this,"layerScale","float");this._uLayerAngle=new C3.Gfx.WebGLShaderUniform(this,"layerAngle","float");this._uLayoutStart=new C3.Gfx.WebGLShaderUniform(this, +"layoutStart","vec2");this._uLayoutEnd=new C3.Gfx.WebGLShaderUniform(this,"layoutEnd","vec2");this._uZNear=new C3.Gfx.WebGLShaderUniform(this,"zNear","float");this._uZFar=new C3.Gfx.WebGLShaderUniform(this,"zFar","float");this._hasAnyOptionalUniforms=!!(this._uPixelSize.IsUsed()||this._uSeconds.IsUsed()||this._uSamplerBack.IsUsed()||this._uDestStart.IsUsed()||this._uDestEnd.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed()||this._uDevicePixelRatio.IsUsed()|| +this._uLayerScale.IsUsed()||this._uLayerAngle.IsUsed()||this._uLayoutStart.IsUsed()||this._uLayoutEnd.IsUsed());const customParameterDefs=shaderInfo.parameters||[];this._uCustomParameters=[];this._usesAnySrcRectOrPixelSize=this._uPixelSize.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed();this._hasCurrentMatP=false;this._hasCurrentMatMV=false;this._uColor.Init4f(1,1,1,1);this._uColor2.Init4f(1,1,1,1);this._uSamplerFront.Init1i(0); +this._uSamplerBack.Init1i(1);this._uSamplerDepth.Init1i(2);this._uPointTexStart.Init2f(0,0);this._uPointTexEnd.Init2f(1,1);this._uZElevation.Init1f(0);this._uTileSize.Init2f(0,0);this._uTileSpacing.Init2f(0,0);this._uDestStart.Init2f(0,0);this._uDestEnd.Init2f(1,1);this._uSrcStart.Init2f(0,0);this._uSrcEnd.Init2f(0,0);this._uSrcOriginStart.Init2f(0,0);this._uSrcOriginEnd.Init2f(0,0);this._uPixelSize.Init2f(0,0);this._uDevicePixelRatio.Init1f(1);this._uZNear.Init1f(renderer.GetNearZ());this._uZFar.Init1f(renderer.GetFarZ()); +this._uLayerScale.Init1f(1);this._uLayerAngle.Init1f(0);this._uSeconds.Init1f(0);this._uLayoutStart.Init2f(0,0);this._uLayoutEnd.Init2f(0,0);this._uOutlineThickness.Init1f(1);for(const p of customParameterDefs){const uniformName=p[0];const paramType=p[2];const shaderUniform=new C3.Gfx.WebGLShaderUniform(this,uniformName,paramType);if(paramType==="color")shaderUniform.Init3f(0,0,0);else shaderUniform.Init1f(0);this._uCustomParameters.push(shaderUniform)}if(this._isDeviceTransform)this._UpdateDeviceTransformUniforms(batchState.currentMatP); +else{this.UpdateMatP(batchState.currentMatP,true);this.UpdateMatMV(batchState.currentMV,true)}const currentShader=batchState.currentShader;gl.useProgram(currentShader?currentShader._shaderProgram:null)}Release(){this._gl.deleteProgram(this._shaderProgram);this._shaderProgram=null;this._renderer._RemoveShaderProgram(this);this._gl=null;super.Release()}GetWebGLContext(){return this._gl}GetShaderProgram(){return this._shaderProgram}GetParameterCount(){return this._uCustomParameters.length}GetParameterType(paramIndex){if(paramIndex< +0||paramIndex>=this._uCustomParameters.length)return null;return this._uCustomParameters[paramIndex].GetType()}AreCustomParametersAlreadySetInBatch(params){for(let i=0,len=params.length;i=2)prefix="#version 300 es\n";else{if(hasFragDepthExt)prefix="#extension GL_EXT_frag_depth : enable\n";if(useDerivatives){prefix+="#extension GL_EXT_shader_texture_lod : enable\n";prefix+="#extension GL_OES_standard_derivatives : enable\n"}}return prefix+ +` +#ifdef GL_FRAGMENT_PRECISION_HIGH +#define highmedp highp +#else +#define highmedp mediump +#endif +precision highmedp float; +${webGLVer>=2?"in":"varying"} vec2 vTex; +${webGLVer>=2?"out lowp vec4 outColor;":""} +uniform lowp vec4 color; +uniform lowp sampler2D samplerFront; +uniform vec2 pixelSize; + +uniform vec2 tileSize; +uniform vec2 tileSpacing; +uniform float outlineThickness; + +const float PI = 3.1415926; + +lowp vec4 cospVec4(lowp vec4 a, lowp vec4 b, float x) +{ + return (a + b + (a - b) * cos(x * PI)) / 2.0; +} + +vec3 randVec3(vec2 seed) +{ + return vec3(fract(sin(dot(seed.xy + vec2(0.1, 0.1), vec2(12.9898,78.233))) * 43758.5453), + fract(sin(dot(seed.yx + vec2(0.1, 0.1), vec2(12.9898,-78.233))) * 43758.5453), + fract(sin(dot(seed.xy + vec2(0.1, 0.1), vec2(-12.9898,-78.233))) * 43758.5453)); +} + +lowp vec4 sampleTile(vec2 tile, vec2 uv, vec2 ddx, vec2 ddy) +{ + vec2 posRandom = tileSize; + float angleRandom = outlineThickness; + + vec3 rand = (randVec3(floor(tile + 0.5)) - 0.5) * 2.0; + + float angle = angleRandom * rand.z * PI; + float sin_a = sin(angle); + float cos_a = cos(angle); + float aspect = pixelSize.x / pixelSize.y; + + vec2 mid = tile + vec2(0.5, 0.5); + vec2 dp = uv - mid; + dp.x /= aspect; + vec2 r = vec2(dp.x * cos_a - dp.y * sin_a, + dp.y * cos_a + dp.x * sin_a); + r.x *= aspect; + + vec2 p = mid + r + (posRandom * rand.xy / 2.0); + + ${webGLVer>=2?"return textureGrad(samplerFront, p, ddx, ddy);":""} + ${webGLVer<2&&useDerivatives?"return texture2DGradEXT(samplerFront, p, ddx, ddy);":""} + ${webGLVer<2&&!useDerivatives?"return texture2D(samplerFront, p);":""} +} + +void main(void) { + + ${webGLVer<2?"lowp vec4 outColor;":""} + + float blendMarginX = tileSpacing.x; + float blendMarginY = tileSpacing.y; + + vec2 tile = floor(vTex); + vec2 tex = fract(vTex); + vec2 ddx = ${webGLVer>=2||useDerivatives?"dFdx(vTex)":"vec2(0.0, 0.0)"}; + vec2 ddy = ${webGLVer>=2||useDerivatives?"dFdy(vTex)":"vec2(0.0, 0.0)"}; + + vec4 curTile = sampleTile(tile, vTex, ddx, ddy); + + bool inLeftMargin = (tex.x < blendMarginX); + bool inRightMargin = (tex.x > 1.0 - blendMarginX); + bool inTopMargin = (tex.y < blendMarginY); + bool inBottomMargin = (tex.y > 1.0 - blendMarginY); + + if (inLeftMargin) + { + lowp vec4 leftTile = sampleTile(tile + vec2(-1.0, 0.0), vTex, ddx, ddy); + float leftMix = (tex.x / (blendMarginX * 2.0)) + 0.5; + lowp vec4 leftMixedTile = cospVec4(leftTile, curTile, leftMix); + + if (inTopMargin) + { + lowp vec4 topTile = sampleTile(tile + vec2(0.0, -1.0), vTex, ddx, ddy); + lowp vec4 topLeftTile = sampleTile(tile + vec2(-1.0, -1.0), vTex, ddx, ddy); + lowp vec4 topLeftMixedTile = cospVec4(topLeftTile, topTile, leftMix); + + outColor = cospVec4(topLeftMixedTile, leftMixedTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + lowp vec4 bottomTile = sampleTile(tile + vec2(0.0, 1.0), vTex, ddx, ddy); + lowp vec4 bottomLeftTile = sampleTile(tile + vec2(-1.0, 1.0), vTex, ddx, ddy); + lowp vec4 bottomLeftMixedTile = cospVec4(bottomLeftTile, bottomTile, leftMix); + + outColor = cospVec4(leftMixedTile, bottomLeftMixedTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + outColor = leftMixedTile; + } + } + else if (inRightMargin) + { + lowp vec4 rightTile = sampleTile(tile + vec2(1.0, 0.0), vTex, ddx, ddy); + float rightMix = (tex.x - (1.0 - blendMarginX)) / (blendMarginX * 2.0); + lowp vec4 rightMixedTile = cospVec4(curTile, rightTile, rightMix); + + if (inTopMargin) + { + lowp vec4 topTile = sampleTile(tile + vec2(0.0, -1.0), vTex, ddx, ddy); + lowp vec4 topRightTile = sampleTile(tile + vec2(1.0, -1.0), vTex, ddx, ddy); + lowp vec4 topRightMixedTile = cospVec4(topTile, topRightTile, rightMix); + + outColor = cospVec4(topRightMixedTile, rightMixedTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + lowp vec4 bottomTile = sampleTile(tile + vec2(0.0, 1.0), vTex, ddx, ddy); + lowp vec4 bottomRightTile = sampleTile(tile + vec2(1.0, 1.0), vTex, ddx, ddy); + lowp vec4 bottomRightMixedTile = cospVec4(bottomTile, bottomRightTile, rightMix); + + outColor = cospVec4(rightMixedTile, bottomRightMixedTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + outColor = rightMixedTile; + } + } + else if (inTopMargin) + { + lowp vec4 topTile = sampleTile(tile + vec2(0.0, -1.0), vTex, ddx, ddy); + outColor = cospVec4(topTile, curTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + lowp vec4 bottomTile = sampleTile(tile + vec2(0.0, 1.0), vTex, ddx, ddy); + outColor = cospVec4(curTile, bottomTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + outColor = curTile; + } + + outColor *= color; + ${webGLVer<2?"gl_FragColor = outColor;":""} + ${webGLVer>=2?"gl_FragDepth = (outColor.a == 0.0 ? 1.0 : gl_FragCoord.z);":""} + ${webGLVer<2&&hasFragDepthExt?"gl_FragDepthEXT = (outColor.a == 0.0 ? 1.0 : gl_FragCoord.z);":""} +} +`}static GetPointVertexShaderSource_WebGL1(){return["attribute vec4 aPoints;","varying float pointOpacity;","uniform float zElevation;","uniform mat4 matP;","uniform mat4 matMV;","void main(void) {","\tgl_Position = matP * matMV * vec4(aPoints.xy, zElevation, 1.0);","\tgl_PointSize = aPoints.z;","\tpointOpacity = aPoints.w;","}"].join("\n")}static GetPointVertexShaderSource_WebGL2(){return["#version 300 es","in vec4 aPoints;","out float pointOpacity;","uniform float zElevation;","uniform mat4 matP;", +"uniform mat4 matMV;","void main(void) {","\tgl_Position = matP * matMV * vec4(aPoints.xy, zElevation, 1.0);","\tgl_PointSize = aPoints.z;","\tpointOpacity = aPoints.w;","}"].join("\n")}static GetPointFragmentShaderSource_WebGL1_NoFragDepth(){return["uniform lowp sampler2D samplerFront;","varying lowp float pointOpacity;","uniform mediump vec2 pointTexStart;","uniform mediump vec2 pointTexEnd;","uniform lowp vec4 color;","void main(void) {","\tmediump vec2 pointTexMin = min(pointTexStart, pointTexEnd);", +"\tmediump vec2 pointTexMax = max(pointTexStart, pointTexEnd);","\tmediump vec2 pointCoord = (pointTexEnd.x > pointTexStart.x ? gl_PointCoord : vec2(1.0 - gl_PointCoord.y, gl_PointCoord.x));","\tgl_FragColor = texture2D(samplerFront, mix(pointTexMin, pointTexMax, pointCoord)) * color * pointOpacity;","}"].join("\n")}static GetPointFragmentShaderSource_WebGL1_FragDepthEXT(){return["#extension GL_EXT_frag_depth : enable","uniform lowp sampler2D samplerFront;","varying lowp float pointOpacity;","uniform mediump vec2 pointTexStart;", +"uniform mediump vec2 pointTexEnd;","uniform lowp vec4 color;","void main(void) {","\tmediump vec2 pointTexMin = min(pointTexStart, pointTexEnd);","\tmediump vec2 pointTexMax = max(pointTexStart, pointTexEnd);","\tmediump vec2 pointCoord = (pointTexEnd.x > pointTexStart.x ? gl_PointCoord : vec2(1.0 - gl_PointCoord.y, gl_PointCoord.x));","\tgl_FragColor = texture2D(samplerFront, mix(pointTexMin, pointTexMax, pointCoord)) * color * pointOpacity;","\tgl_FragDepthEXT = (gl_FragColor.a == 0.0 ? 1.0 : gl_FragCoord.z);", +"}"].join("\n")}static GetPointFragmentShaderSource_WebGL2(){return["#version 300 es","uniform lowp sampler2D samplerFront;","in lowp float pointOpacity;","uniform mediump vec2 pointTexStart;","uniform mediump vec2 pointTexEnd;","uniform lowp vec4 color;","out lowp vec4 outColor;","void main(void) {","\tmediump vec2 pointTexMin = min(pointTexStart, pointTexEnd);","\tmediump vec2 pointTexMax = max(pointTexStart, pointTexEnd);","\tmediump vec2 pointCoord = (pointTexEnd.x > pointTexStart.x ? gl_PointCoord : vec2(1.0 - gl_PointCoord.y, gl_PointCoord.x));", +"\toutColor = texture(samplerFront, mix(pointTexMin, pointTexMax, pointCoord)) * color * pointOpacity;","\tgl_FragDepth = (outColor.a == 0.0 ? 1.0 : gl_FragCoord.z);","}"].join("\n")}static GetColorFillFragmentShaderSource(){return["uniform lowp vec4 color;","void main(void) {","\tgl_FragColor = color;","}"].join("\n")}static GetLinearGradientFillFragmentShaderSource(){return["precision lowp float;","varying mediump vec2 vTex;","uniform vec4 color;","uniform vec4 color2_;","vec3 fromLinear(vec3 linearRGB)", +"{","\tbvec3 cutoff = lessThan(linearRGB, vec3(0.0031308));","\tvec3 higher = vec3(1.055) * pow(abs(linearRGB), vec3(1.0/2.4)) - vec3(0.055);","\tvec3 lower = linearRGB * vec3(12.92);","\treturn mix(higher, lower, vec3(cutoff));","}","vec3 toLinear(vec3 sRGB)","{","\tbvec3 cutoff = lessThan(sRGB, vec3(0.04045));","\tvec3 higher = pow(abs((sRGB + vec3(0.055))/vec3(1.055)), vec3(2.4));","\tvec3 lower = sRGB/vec3(12.92);","\treturn mix(higher, lower, vec3(cutoff));","}","void main(void) {","\tvec3 linearGrad = mix(toLinear(color.rgb), toLinear(color2_.rgb), vTex.x);", +"\tfloat a = mix(color.a, color2_.a, vTex.x);","\tgl_FragColor = vec4(fromLinear(linearGrad) * a, a);","}"].join("\n")}static GetPenumbraFillFragmentShaderSource(){return[`#ifdef GL_FRAGMENT_PRECISION_HIGH`,`#define highmedp highp`,`#else`,`#define highmedp mediump`,`#endif`,`precision lowp float;`,`varying highmedp vec2 vTex;`,`uniform vec4 color;`,`void main(void) {`,` highmedp float grad = vTex.x / (1.0 - vTex.y);`,` gl_FragColor = color * (1.0 - (cos(grad * 3.141592653589793) + 1.0) / 2.0);`, +`}`].join("\n")}static GetSmoothLineFillFragmentShaderSource(){return["varying mediump vec2 vTex;","uniform lowp vec4 color;","void main(void) {","\tlowp float f = 1.0 - abs(vTex.y - 0.5) * 2.0;","\tgl_FragColor = color * f;","}"].join("\n")}static GetHardEllipseFillFragmentShaderSource(){return["varying mediump vec2 vTex;","uniform lowp vec4 color;","void main(void) {","\tmediump vec2 diff = vTex - vec2(0.5, 0.5);","\tmediump vec2 diffSq = diff * diff;","\tmediump float f = step(diffSq.x + diffSq.y, 0.25);", +"\tgl_FragColor = color * f;","}"].join("\n")}static GetHardEllipseOutlineFragmentShaderSource(){return["varying mediump vec2 vTex;","uniform lowp vec4 color;","uniform mediump vec2 pixelSize;","uniform mediump float outlineThickness;","void main(void) {","\tmediump vec2 diff = vTex - vec2(0.5, 0.5);","\tmediump vec2 diffSq = diff * diff;","\tmediump float distSq = diffSq.x + diffSq.y;","\tmediump vec2 norm = normalize(diff);","\tmediump vec2 halfNorm = norm * 0.5;","\tmediump float innerF = step(distSq, 0.25);", +"\tmediump vec2 innerEdge = halfNorm - pixelSize * norm * outlineThickness;","\tmediump vec2 innerEdgeSq = innerEdge * innerEdge;","\tmediump float outerF = step(innerEdgeSq.x + innerEdgeSq.y, distSq);","\tgl_FragColor = color * innerF * outerF;","}"].join("\n")}static GetSmoothEllipseFillFragmentShaderSource(){return["varying mediump vec2 vTex;","uniform lowp vec4 color;","uniform mediump vec2 pixelSize;","void main(void) {","\tmediump vec2 diff = vTex - vec2(0.5, 0.5);","\tmediump vec2 diffSq = diff * diff;", +"\tmediump vec2 norm = normalize(diff);","\tmediump vec2 halfNorm = norm * 0.5;","\tmediump vec2 halfNormSq = halfNorm * halfNorm;","\tmediump vec2 innerEdge = halfNorm - pixelSize * norm;","\tmediump vec2 innerEdgeSq = innerEdge * innerEdge;","\tmediump float f = smoothstep(halfNormSq.x + halfNormSq.y, innerEdgeSq.x + innerEdgeSq.y, diffSq.x + diffSq.y);","\tgl_FragColor = color * f;","}"].join("\n")}static GetSmoothEllipseOutlineFragmentShaderSource(){return["varying mediump vec2 vTex;","uniform lowp vec4 color;", +"uniform mediump vec2 pixelSize;","uniform mediump float outlineThickness;","void main(void) {","\tmediump vec2 diff = vTex - vec2(0.5, 0.5);","\tmediump vec2 diffSq = diff * diff;","\tmediump float distSq = diffSq.x + diffSq.y;","\tmediump vec2 norm = normalize(diff);","\tmediump vec2 halfNorm = norm * 0.5;","\tmediump vec2 halfNormSq = halfNorm * halfNorm;","\tmediump vec2 pxNorm = pixelSize * norm;","\tmediump vec2 innerEdge1 = halfNorm - pxNorm;","\tmediump vec2 innerEdge1Sq = innerEdge1 * innerEdge1;", +"\tmediump float innerF = smoothstep(halfNormSq.x + halfNormSq.y, innerEdge1Sq.x + innerEdge1Sq.y, distSq);","\tmediump vec2 innerEdge2 = halfNorm - pxNorm * outlineThickness;","\tmediump vec2 innerEdge2Sq = innerEdge2 * innerEdge2;","\tmediump vec2 innerEdge3 = halfNorm - pxNorm * (outlineThickness + 1.0);","\tmediump vec2 innerEdge3Sq = innerEdge3 * innerEdge3;","\tmediump float outerF = smoothstep(innerEdge3Sq.x + innerEdge3Sq.y, innerEdge2Sq.x + innerEdge2Sq.y, distSq);","\tgl_FragColor = color * innerF * outerF;", +"}"].join("\n")}}; + +} + +// ../lib/gfx/webgl/shaderUniform.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const mat4=glMatrix.mat4;const TYPE_SIZES=new Map([["float",1],["percent",1],["sampler",1],["vec2",2],["vec3",3],["color",3],["vec4",4],["mat4",16]]); +C3.Gfx.WebGLShaderUniform=class WebGLShaderUniform{constructor(owner,name,type){if(!TYPE_SIZES.has(type))throw new Error("invalid uniform type");this._owner=owner;this._gl=this._owner.GetWebGLContext();this._name=name;this._type=type;this._isColorType=this._type==="color";this._location=this._gl.getUniformLocation(this._owner.GetShaderProgram(),name);this._isUsed=!!this._location;const typeSize=TYPE_SIZES.get(type);this._lastValue=new Float32Array(typeSize);this._lastBatchValue=new Float32Array(typeSize)}Release(){this._owner= +null;this._gl=null;this._location=null}IsUsed(){return this._isUsed}GetType(){return this._type}IsColorType(){return this._isColorType}Init1f(v0){if(!this.IsUsed())return;this._lastValue[0]=v0;this._lastBatchValue.set(this._lastValue);this._gl.uniform1f(this._location,v0)}Init1i(v0){if(!this.IsUsed())return;this._lastValue[0]=v0;this._lastBatchValue.set(this._lastValue);this._gl.uniform1i(this._location,v0)}Init2f(v0,v1){if(!this.IsUsed())return;this._lastValue[0]=v0;this._lastValue[1]=v1;this._lastBatchValue.set(this._lastValue); +this._gl.uniform2f(this._location,v0,v1)}Init3f(v0,v1,v2){if(!this.IsUsed())return;this._lastValue[0]=v0;this._lastValue[1]=v1;this._lastValue[2]=v2;this._lastBatchValue.set(this._lastValue);this._gl.uniform3f(this._location,v0,v1,v2)}Init4f(v0,v1,v2,v3){if(!this.IsUsed())return;this._lastValue[0]=v0;this._lastValue[1]=v1;this._lastValue[2]=v2;this._lastValue[3]=v3;this._lastBatchValue.set(this._lastValue);this._gl.uniform4f(this._location,v0,v1,v2,v3)}Update1f(v0){v0=Math.fround(v0);const lastValue= +this._lastValue;if(lastValue[0]===v0)return;lastValue[0]=v0;this._gl.uniform1f(this._location,v0)}Update1i(v0){const lastValue=this._lastValue;if(lastValue[0]===v0)return;lastValue[0]=v0;this._gl.uniform1i(this._location,v0)}Update2f(v0,v1){v0=Math.fround(v0);v1=Math.fround(v1);const lastValue=this._lastValue;if(lastValue[0]===v0&&lastValue[1]===v1)return;lastValue[0]=v0;lastValue[1]=v1;this._gl.uniform2f(this._location,v0,v1)}Update3f(v0,v1,v2){v0=Math.fround(v0);v1=Math.fround(v1);v2=Math.fround(v2); +const lastValue=this._lastValue;if(lastValue[0]===v0&&lastValue[1]===v1&&lastValue[2]===v2)return;lastValue[0]=v0;lastValue[1]=v1;lastValue[2]=v2;this._gl.uniform3f(this._location,v0,v1,v2)}Update4f(v0,v1,v2,v3){v0=Math.fround(v0);v1=Math.fround(v1);v2=Math.fround(v2);v3=Math.fround(v3);const lastValue=this._lastValue;if(lastValue[0]===v0&&lastValue[1]===v1&&lastValue[2]===v2&&lastValue[3]===v3)return;lastValue[0]=v0;lastValue[1]=v1;lastValue[2]=v2;lastValue[3]=v3;this._gl.uniform4f(this._location, +v0,v1,v2,v3)}UpdateMatrix4fv(m){const lastValue=this._lastValue;if(mat4.exactEquals(lastValue,m))return;C3.typedArraySet16(lastValue,m,0);this._gl.uniformMatrix4fv(this._location,false,m)}IsSetToCustomInBatch(p){const batchValue=this._lastBatchValue;if(this.IsColorType())return batchValue[0]===Math.fround(p.getR())&&batchValue[1]===Math.fround(p.getG())&&batchValue[2]===Math.fround(p.getB());else return batchValue[0]===Math.fround(p)}SetBatchValueCustom(p){const batchValue=this._lastBatchValue;if(this.IsColorType()){batchValue[0]= +p.getR();batchValue[1]=p.getG();batchValue[2]=p.getB()}else batchValue[0]=p}IsSetTo1InBatch(x){return this._lastBatchValue[0]===Math.fround(x)}IsSetTo2InBatch(x,y){const batchValue=this._lastBatchValue;return batchValue[0]===Math.fround(x)&&batchValue[1]===Math.fround(y)}SetBatch1(x){this._lastBatchValue[0]=x}SetBatch2(x,y){const batchValue=this._lastBatchValue;batchValue[0]=x;batchValue[1]=y}}; + +} + +// ../lib/gfx/webgl/batchJob.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec4=glMatrix.vec4;const mat4=glMatrix.mat4;const BATCH_NULL=0;const BATCH_QUAD=1;const BATCH_SETTEXTURE=2;const BATCH_SETCOLOR=3;const BATCH_SETBLEND=4;const BATCH_SETVIEWPORT=5;const BATCH_SETPROJECTION=6;const BATCH_SETMODELVIEW=7;const BATCH_SETRENDERTARGET=8;const BATCH_CLEARSURFACE=9;const BATCH_POINTS=10;const BATCH_SETPROGRAM=11;const BATCH_SETPROGRAMPARAMETERS=12;const BATCH_SETPROGRAMCUSTOMPARAMETERS=13; +const BATCH_INVALIDATEFRAMEBUFFER=14;const BATCH_SETPOINTTEXCOORDS=15;const BATCH_SETTILEMAPINFO=16;const BATCH_BLITFRAMEBUFFER=17;const BATCH_STARTQUERY=18;const BATCH_ENDQUERY=19;const BATCH_SETELLIPSEPARAMS=20;const BATCH_SETGRADIENTCOLOR=21;const BATCH_CLEARDEPTH=22;const BATCH_SETDEPTHENABLED=23;const BATCH_SETDEPTHSAMPLINGENABLED=24;const BATCH_COPLANAR_STARTSTENCILPASS=25;const BATCH_COPLANAR_STARTCOLORPASS=26;const BATCH_COPLANAR_RESTORE=27;const BATCH_SET_SCISSOR=28; +const BATCH_SETTILERANDOMIZATIONINFO=29;C3.Gfx.BatchState=class BatchState{constructor(renderer){this.renderer=renderer;this.currentMV=mat4.create();this.currentMatP=mat4.create();this.currentFramebuffer=null;this.currentFramebufferNoDepth=null;this.isDepthSamplingEnabled=false;this.currentColor=vec4.fromValues(1,1,1,1);this.currentShader=null;this.pointTexCoords=new C3.Rect;this.clearColor=C3.New(C3.Color,0,0,0,0)}}; +C3.Gfx.WebGLBatchJob=class WebGLBatchJob{constructor(batchState){const arrayBuffer=new ArrayBuffer(96);this._type=0;this._batchState=batchState;this._gl=batchState.renderer.GetContext();this._startIndex=0;this._indexCount=0;this._texParam=null;this._mat4param=new Float32Array(arrayBuffer,0,16);this._colorParam=new Float32Array(arrayBuffer,64,4);this._srcOriginRect=new Float32Array(arrayBuffer,80,4);this._shaderParams=[]}InitQuad(startIndex,indexCount){this._type=BATCH_QUAD;this._startIndex=startIndex; +this._indexCount=indexCount}DoQuad(){const gl=this._gl;gl.drawElements(gl.TRIANGLES,this._indexCount,gl.UNSIGNED_SHORT,this._startIndex)}InitSetTexture(rendererTex){this._type=BATCH_SETTEXTURE;this._texParam=rendererTex}DoSetTexture(){const gl=this._gl;const texParam=this._texParam;gl.bindTexture(gl.TEXTURE_2D,texParam?texParam._GetTexture():null)}InitSetColor(c){this._type=BATCH_SETCOLOR;c.writeToTypedArray(this._colorParam,0)}DoSetColor(){const c=this._colorParam;const batchState=this._batchState; +vec4.copy(batchState.currentColor,c);batchState.currentShader.UpdateColor(c)}InitSetGradientColor(c){this._type=BATCH_SETGRADIENTCOLOR;c.writeToTypedArray(this._colorParam,0)}DoSetGradientColor(){const c=this._colorParam;const s=this._batchState.currentShader;if(s._uColor2.IsUsed())s._uColor2.Update4f(c[0],c[1],c[2],c[3])}InitSetBlend(s,d){this._type=BATCH_SETBLEND;this._startIndex=s;this._indexCount=d}DoSetBlend(){this._gl.blendFunc(this._startIndex,this._indexCount)}InitSetViewport(x,y,w,h){this._type= +BATCH_SETVIEWPORT;const colorParam=this._colorParam;colorParam[0]=x;colorParam[1]=y;colorParam[2]=w;colorParam[3]=h}DoSetViewport(){const colorParam=this._colorParam;this._gl.viewport(colorParam[0],colorParam[1],colorParam[2],colorParam[3])}InitSetProjection(m){this._type=BATCH_SETPROJECTION;mat4.copy(this._mat4param,m)}DoSetProjection(){const batchState=this._batchState;const allShaderPrograms=batchState.renderer._allShaderPrograms;const currentShader=batchState.currentShader;const mat4param=this._mat4param; +for(let i=0,len=allShaderPrograms.length;i{const fontName=e.font.GetName();for(const f of allRendererTexts)if(f.IsBBCodeEnabled()||C3.equalsNoCase(f.GetFontName(),fontName))f._SetWordWrapChanged()});function fillOrStrokeRect(ctx,isStroke,x,y,w,h){if(isStroke)ctx.strokeRect(x,y,w,h);else ctx.fillRect(x,y,w,h)} +function ptToPx(pt){return pt*(4/3)}function getOffsetParam(paramStr,fragHeight){paramStr=paramStr.trim();const param=parseFloat(paramStr);if(!isFinite(param))return 0;if(paramStr.endsWith("%"))return fragHeight*param/100;else return param}let didCheckFoundBoundingBoxSupport=false;let supportsFontBoundingBoxMeasurements=false; +C3.Gfx.RendererText=class RendererText{constructor(renderer,opts){opts=Object.assign({},DEFAULT_OPTS,opts);this._renderer=renderer;this._fontName="Arial";this._fontSize=16;this._fontSizeScale=1;this._lineHeight=0;this._isBold=false;this._isItalic=false;this._colorStr="black";this._isBBcodeEnabled=false;this._iconSet=null;this._iconSmoothing=true;this.onloadfont=null;this._alreadyLoadedFonts=new Set;this._horizontalAlign="left";this._verticalAlign="top";this._text="";this._bbString=null;this._wrappedText= +C3.New(C3.WordWrap);this._wrapMode="word";this._textDirection="ltr";this._wordWrapChanged=false;this._textLayoutChanged=false;this._drawChanged=false;this._drawMaxCharCount=-1;this._drawCharCount=0;this._cssWidth=0;this._cssHeight=0;this._width=0;this._height=0;this._zoom=1;this._textCanvas=null;this._textContext=null;this._measureContext=null;this._measureContextTop=null;this._lastCanvasWidth=-1;this._lastCanvasHeight=-1;this._lastTextCanvasFont="";this._lastMeasureCanvasFont="";this._lastTextCanvasFillStyle= +"";this._lastTextCanvasOpacity=1;this._lastTextCanvasLineWidth=1;this._measureTextCallback=frag=>this._MeasureText(frag);this._texture=null;this._rcTex=new C3.Rect;this._scaleFactor=1;this._textureTimeout=new C3.IdleTimeout(()=>{this.ReleaseTexture();this._SetTextCanvasSize(8,8)},opts.timeout);this.ontextureupdate=null;this._wasReleased=false;allRendererTexts.add(this)}Release(){this.onloadfont=null;this._alreadyLoadedFonts.clear();this._iconSet=null;this._bbString=null;this._textCanvas=null;this._textContext= +null;this._measureContext=null;this._measureContextTop=null;this._measureTextCallback=null;this._textureTimeout.Release();this.ontextureupdate=null;this.ReleaseTexture();this._wrappedText.Clear();this._wrappedText=null;this._renderer=null;this._wasReleased=true;allRendererTexts.delete(this)}_SetDrawChanged(){this._drawChanged=true}_SetTextLayoutChanged(){this._SetDrawChanged();this._textLayoutChanged=true}_SetWordWrapChanged(){this._SetTextLayoutChanged();this._wordWrapChanged=true}SetBBCodeEnabled(e){e= +!!e;if(this._isBBcodeEnabled===e)return;this._isBBcodeEnabled=e;const textBaseline=this._isBBcodeEnabled?"alphabetic":"top";if(this._textContext)this._textContext.textBaseline=textBaseline;if(this._measureContext)this._measureContext.textBaseline=textBaseline;this._SetWordWrapChanged()}IsBBCodeEnabled(){return this._isBBcodeEnabled}SetIconSet(iconSet){if(this._iconSet===iconSet)return;this._iconSet=iconSet;this._wrappedText.SetIconSet(iconSet);if(this._iconSet&&this._iconSet.IsLoading())this._iconSet.LoadContent().then(()=> +this._SetDrawChanged());this._SetWordWrapChanged()}SetIconSmoothing(s){s=!!s;if(this._iconSmoothing===s)return;this._iconSmoothing=s;this._SetDrawChanged()}SetFontName(fontName){if(!fontName)fontName="serif";if(this._fontName===fontName)return;this._fontName=fontName;this._SetWordWrapChanged()}GetFontName(){return this._fontName}SetFontSize(fontSize){if(fontSize<.1)fontSize=.1;if(this._fontSize===fontSize)return;this._fontSize=fontSize;this._SetWordWrapChanged()}GetFontSize(){return this._fontSize}SetFontSizeScale(s){if(this._fontSizeScale=== +s)return;this._fontSizeScale=s;this._SetWordWrapChanged()}SetLineHeight(h){if(this._lineHeight===h)return;this._lineHeight=h;this._SetTextLayoutChanged()}GetLineHeight(){return this._lineHeight}SetBold(bold){bold=!!bold;if(this._isBold===bold)return;this._isBold=bold;this._SetWordWrapChanged()}IsBold(){return this._isBold}SetItalic(italic){italic=!!italic;if(this._isItalic===italic)return;this._isItalic=italic;this._SetWordWrapChanged()}IsItalic(){return this._isItalic}SetDrawMaxCharacterCount(n){n= +Math.floor(n);if(this._drawMaxCharCount===n)return;this._drawMaxCharCount=n;this._SetDrawChanged()}GetDrawMaxCharacterCount(){return this._drawMaxCharCount}_GetFontString(useCssUnits,frag){let ret=[];if(this._isBold||frag.HasStyleTag("b"))ret.push("bold");if(this._isItalic||frag.HasStyleTag("i"))ret.push("italic");const sizeStyle=frag.GetStyleTag("size");const fontSize=(sizeStyle?parseFloat(sizeStyle.param):this._fontSize)*this._fontSizeScale;if(useCssUnits)ret.push(fontSize+"pt");else ret.push(fontSize* +this.GetDrawScale()+"pt");let fontName=this._fontName;const fontStyle=frag.GetStyleTag("font");if(fontStyle&&fontStyle.param){fontName=fontStyle.param;if(this.onloadfont&&!this._alreadyLoadedFonts.has(fontName)){this.onloadfont(fontName);this._alreadyLoadedFonts.add(fontName)}}if(fontName)if(GENERIC_FONT_FAMILIES.has(fontName))ret.push(fontName);else ret.push('"'+fontName+'"');return ret.join(" ")}SetColor(c){if(c instanceof C3.Color)c=c.getCssRgb();if(this._colorStr===c)return;this._colorStr=c;this._SetDrawChanged()}SetColorRgb(r, +g,b){tempColor.setRgb(r,g,b);this.SetColor(tempColor)}SetHorizontalAlignment(h){if(!VALID_HORIZ_ALIGNMENTS.has(h))throw new Error("invalid horizontal alignment");if(this._horizontalAlign===h)return;this._horizontalAlign=h;this._SetTextLayoutChanged()}GetHorizontalAlignment(){return this._horizontalAlign}SetVerticalAlignment(v){if(!VALID_VERT_ALIGNMENTS.has(v))throw new Error("invalid vertical alignment");if(this._verticalAlign===v)return;this._verticalAlign=v;this._SetTextLayoutChanged()}GetVerticalAlignment(){return this._verticalAlign}SetWordWrapMode(m){if(!VALID_WORD_WRAP_MODES.has(m))throw new Error("invalid word wrap mode"); +if(this._wrapMode===m)return;this._wrapMode=m;this._SetWordWrapChanged()}GetWordWrapMode(){return this._wrapMode}SetTextDirection(d){if(!VALID_TEXT_DIRECTIONS.has(d))throw new Error("invalid text direction");if(this._textDirection===d)return;this._textDirection=d;if(this._textContext)this._textContext.direction=this._textDirection;if(this._measureContext)this._measureContext.direction=this._textDirection;this._SetWordWrapChanged()}GetTextDirection(){return this._textDirection}SetText(text){if(this._text=== +text)return;this._text=text;this._SetWordWrapChanged()}GetText(){return this._text}GetDrawScale(){return this._scaleFactor*this._zoom*self.devicePixelRatio}SetSize(cssWidth,cssHeight,zoom){if(typeof zoom==="undefined")zoom=1;if(cssWidth<=0||cssWidth<=0)return;if(this._cssWidth===cssWidth&&this._cssHeight===cssHeight&&this._zoom===zoom)return;const oldCssWidth=this._cssWidth;this._cssWidth=cssWidth;this._cssHeight=cssHeight;this._zoom=zoom;const dpr=self.devicePixelRatio;this._width=this._cssWidth* +this._zoom*dpr;this._height=this._cssHeight*this._zoom*dpr;const maxDim=Math.max(this._width,this._height);const maxTextureSize=Math.min(this._renderer.GetMaxTextureSize(),MAX_TEXTURE_SIZE);let scale=1;if(maxDim>maxTextureSize){scale=maxTextureSize/maxDim;this._width=Math.min(this._width*scale,maxTextureSize);this._height=Math.min(this._height*scale,maxTextureSize)}this._scaleFactor=scale;if(this._cssWidth!==oldCssWidth)this._SetWordWrapChanged();else this._SetTextLayoutChanged()}GetWidth(){return this._width}GetHeight(){return this._height}GetZoom(){return this._zoom}GetTextWidth(){this._UpdateTextMeasurements(); +return this._wrappedText.GetMaxLineWidth()}GetTextHeight(){this._UpdateTextMeasurements();return this._wrappedText.GetTotalLineHeight()+this._wrappedText.GetLineCount()*(this._lineHeight+EXTRA_LINE_HEIGHT)-this._lineHeight}GetLengthInGraphemes(){this._UpdateTextMeasurements();let ret=0;for(const line of this._wrappedText.GetLines())for(const frag of line.fragments())ret+=frag.GetLength();return ret}GetTexture(){this._textureTimeout.Reset();this._MaybeUpdate();return this._texture}HitTestFragment(x, +y){this._UpdateTextMeasurements();const scale=this.GetDrawScale();const lines=this._wrappedText.GetLines();for(const line of lines){const yOff=line.GetFontBoundingBoxDescent()*scale;if(y>=line.GetPosY()-line.GetHeight()*scale+yOff&&y=frag.GetPosX()&&xa+v.GetHeight()*scale+lineSpaceHeight,0)-lineSpaceHeight;penY=Math.max(this._height/2-linesTotalHeight/2,0);if(useFontBoundingBoxMeasurements)firstLineTextHeight=lines[0].GetTopToAlphabeticDistance()*scale}else if(this._verticalAlign==="bottom"){const linesTotalHeight=lines.reduce((a,v)=>a+v.GetHeight()*scale+lineSpaceHeight,0)-this._lineHeight*scale;const lastLineDescentHeight=useFontBoundingBoxMeasurements?lines.at(-1).GetFontBoundingBoxDescent()* +scale:0;penY=this._height-linesTotalHeight-lastLineDescentHeight-2}for(let i=0,len=lines.length;i0&&penY>this._height-EXTRA_LINE_HEIGHT*scale)break}else if(i>0&&penY>=this._height-curLineTextHeight)break;if(startPenY>=0)this._LayoutTextLine(line,penY,scale);if(!this._isBBcodeEnabled)penY+=curLineTextHeight;penY+=lineSpaceHeight}}_LayoutTextLine(line, +penY,scale){let penX=0;if(this._horizontalAlign==="center")penX=(this._width-line.GetWidth()*scale)/2;else if(this._horizontalAlign==="right")penX=this._width-line.GetWidth()*scale;line.SetPosX(penX);line.SetPosY(penY);for(const frag of this._textDirection==="ltr"?line.fragments():line.fragmentsReverse()){this._LayoutFragment(frag,penX,penY,scale);penX+=frag.GetWidth()*scale}}_LayoutFragment(frag,penX,penY,scale){const offsetXStyle=frag.GetStyleTag("offsetx");penX+=offsetXStyle?getOffsetParam(offsetXStyle.param, +frag.GetHeight())*scale:0;const offsetYStyle=frag.GetStyleTag("offsety");penY+=offsetYStyle?getOffsetParam(offsetYStyle.param,frag.GetHeight())*scale:0;if(frag.IsIcon()){const iconOffsetYStyle=frag.GetStyleTag("iconoffsety");penY+=iconOffsetYStyle?getOffsetParam(iconOffsetYStyle.param,frag.GetHeight())*scale:.2*frag.GetHeight()*scale}frag.SetPosX(penX);frag.SetPosY(penY)}_DrawTextToCanvas(){this._textContext.imageSmoothingEnabled=this._iconSmoothing;this._drawCharCount=0;const scale=this.GetDrawScale(); +const lines=this._wrappedText.GetLines();for(const line of lines)this._DrawTextLine(line,scale)}_DrawTextLine(line,scale){const penX=line.GetPosX();const penY=line.GetPosY();if(!Number.isFinite(penX)||!Number.isFinite(penY))return;for(const frag of this._textDirection==="ltr"?line.fragments():line.fragmentsReverse())this._DrawFragment(frag,scale,line.GetHeight())}_DrawFragment(frag,scale,lineHeight){const textContext=this._textContext;const penX=frag.GetPosX();const penY=frag.GetPosY();if(!Number.isFinite(penX)|| +!Number.isFinite(penY))return;const lineFontScale=lineHeight/16;let fragWidth=frag.GetWidth()*scale;const fragHeight=frag.GetHeight()*scale;const fragFontScale=frag.GetHeight()/16;const lineSpaceHeight=(EXTRA_LINE_HEIGHT+this._lineHeight)*scale;let chArr=frag.IsText()?frag.GetCharacterArray():null;if(this._drawMaxCharCount!==-1){if(this._drawCharCount>=this._drawMaxCharCount)return;if(frag.IsText())if(this._drawCharCount+chArr.length>this._drawMaxCharCount){chArr=chArr.slice(0,this._drawMaxCharCount- +this._drawCharCount);fragWidth=this._MeasureText(frag).width*scale}this._drawCharCount+=frag.GetLength()}const backgroundStyle=frag.GetStyleTag("background");const hasUnderline=frag.HasStyleTag("u");const hasStrikethrough=frag.HasStyleTag("s");if(frag.IsText()&&C3.IsCharArrayAllWhitespace(chArr)&&!backgroundStyle&&!hasUnderline&&!hasStrikethrough||frag.HasStyleTag("hide"))return;const colorStyle=frag.GetStyleTag("color");const opacityStyle=frag.GetStyleTag("opacity");this._SetDrawCanvasOpacity(opacityStyle? +parseFloat(opacityStyle.param)/100:1);if(backgroundStyle){this._SetDrawCanvasColor(backgroundStyle.param);textContext.fillRect(penX,penY-fragHeight,fragWidth,fragHeight+lineSpaceHeight)}const lineThicknessStyle=frag.GetStyleTag("linethickness");const lineThicknessScale=lineThicknessStyle?parseFloat(lineThicknessStyle.param):1;const isStroke=frag.HasStyleTag("stroke");if(isStroke)this._SetDrawCanvasLineWith(fragFontScale*.5*lineThicknessScale*this.GetDrawScale());if(frag.IsText()){const text=chArr.join(""); +this._SetDrawFontString(this._GetFontString(false,frag));if(!isStroke){this._SetDrawCanvasLineWith(fragFontScale*.5*lineThicknessScale*this.GetDrawScale());const outlineBackStyle=frag.GetStyleTag("outlineback");if(outlineBackStyle){this._SetDrawCanvasColor(outlineBackStyle.param);this._FillOrStrokeText(true,text,penX,penY,fragWidth)}}this._SetDrawCanvasColor(colorStyle?colorStyle.param:this._colorStr);this._FillOrStrokeText(isStroke,text,penX,penY,fragWidth);if(!isStroke){this._SetDrawCanvasLineWith(fragFontScale* +.5*lineThicknessScale*this.GetDrawScale());const outlineStyle=frag.GetStyleTag("outline");if(outlineStyle){this._SetDrawCanvasColor(outlineStyle.param);this._FillOrStrokeText(true,text,penX,penY,fragWidth)}}}else if(frag.IsIcon())if(frag.GetWidth()>0){const drawable=frag.GetDrawable(this._iconSet);if(drawable)textContext.drawImage(drawable,penX,penY-fragHeight,fragWidth,fragHeight)}this._SetDrawCanvasColor(colorStyle?colorStyle.param:this._colorStr);if(hasUnderline)fillOrStrokeRect(textContext,isStroke, +penX,penY+scale*lineFontScale,fragWidth,scale*lineFontScale*lineThicknessScale);if(hasStrikethrough){const defaultStrikeY=penY-fragHeight/4;const defaultStrikeHeight=scale*fragFontScale;const strikeYMid=defaultStrikeY+defaultStrikeHeight/2;textContext.fillRect(penX,strikeYMid-defaultStrikeHeight*lineThicknessScale/2,fragWidth,defaultStrikeHeight*lineThicknessScale)}}_FillOrStrokeText(isStroke,text,x,y,width){if(this._textDirection==="rtl")x+=width;if(isStroke)if(C3.Platform.BrowserEngine==="Gecko")this._textContext.strokeText(text, +x,y,width);else this._textContext.strokeText(text,x,y);else if(C3.Platform.BrowserEngine==="Gecko")this._textContext.fillText(text,x,y,width);else this._textContext.fillText(text,x,y)}_UpdateTexture(){if(this._renderer.IsContextLost())return;if(!this._texture)this._texture=this._renderer.CreateDynamicTexture(this._textCanvas.width,this._textCanvas.height,{mipMap:true,mipMapQuality:"high"});this._renderer.UpdateTexture(this._textCanvas,this._texture);this._rcTex.set(0,0,this._width/this._texture.GetWidth(), +this._height/this._texture.GetHeight());if(this.ontextureupdate)this.ontextureupdate()}GetTexRect(){return this._rcTex}ReleaseTexture(){if(this._texture){if(!this._renderer.IsContextLost())this._renderer.DeleteTexture(this._texture);this._texture=null}}static OnContextLost(){for(const rendererText of allRendererTexts)rendererText.ReleaseTexture()}static GetAll(){return allRendererTexts.values()}}; + +} + +// ../lib/gfx/webgl/query.js +{ +'use strict';const C3=self.C3; +class WebGLRealTimeElapsedQuery{constructor(renderer){this._gl=renderer.GetContext();this._version=renderer.GetWebGLVersionNumber();this._timerExt=renderer._GetDisjointTimerQueryExtension();this._query=null;this._isActive=false;this._hasResult=false;this._result=0;if(this._version===1)this._query=this._timerExt["createQueryEXT"]();else this._query=this._gl["createQuery"]()}Release(){this._DeleteQueryObject();this._gl=null;this._timerExt=null;this._hasResult=false}_DeleteQueryObject(){if(!this._query)return;if(this._version=== +1)this._timerExt["deleteQueryEXT"](this._query);else this._gl["deleteQuery"](this._query);this._query=null}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active");if(this._version===1)this._timerExt["beginQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"],this._query);else this._gl["beginQuery"](this._timerExt["TIME_ELAPSED_EXT"],this._query);this._isActive=true}EndTimeElapsed(){if(!this._isActive)throw new Error("query not active");if(this._version===1)this._timerExt["endQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"]); +else this._gl["endQuery"](this._timerExt["TIME_ELAPSED_EXT"]);this._isActive=false}CheckForResult(){if(!this._query||this._hasResult||this._isActive)return;let available=false;if(this._version===1)available=this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_AVAILABLE_EXT"]);else available=this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT_AVAILABLE"]);const disjoint=this._gl.getParameter(this._timerExt["GPU_DISJOINT_EXT"]);if(available&&!disjoint){if(this._version=== +1)this._result=this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_EXT"]);else this._result=this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT"]);this._result/=1E9;this._hasResult=true}if(available||disjoint)this._DeleteQueryObject()}HasResult(){return this._hasResult}GetResult(){if(!this._hasResult)throw new Error("no result available");return this._result}} +C3.Gfx.WebGLTimeElapsedQuery=class WebGLTimeElapsedQuery{constructor(renderer){this._renderer=renderer;this._frameNumber=renderer.GetFrameNumber();this._isActive=false;this._parentQuery=null;this._isNested=false;this._realQuery=null;this._queries=[]}Release(){for(const q of this._queries)if(q instanceof WebGLRealTimeElapsedQuery)q.Release();C3.clearArray(this._queries);this._parentQuery=null;this._realQuery=null;this._renderer=null}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active"); +const stack=this._renderer._GetTimeQueryStack();if(stack.length>0){this._isNested=true;this._parentQuery=stack.at(-1);this._parentQuery._EndReal();this._parentQuery._queries.push(this)}else{this._isNested=false;this._parentQuery=null}this._isActive=true;stack.push(this);this._StartReal()}EndTimeElapsed(){if(!this._isActive)throw new Error("query not active");const top=this._renderer._GetTimeQueryStack().pop();if(top!==this)throw new Error("can only end most nested query");this._isActive=false;this._EndReal(); +if(this._parentQuery){this._parentQuery._StartReal();this._parentQuery=null}}_StartReal(){this._realQuery=C3.New(WebGLRealTimeElapsedQuery,this._renderer);this._queries.push(this._realQuery);this._realQuery.BeginTimeElapsed()}_EndReal(){this._realQuery.EndTimeElapsed();this._realQuery=null}CheckForResult(){for(const q of this._queries)q.CheckForResult()}IsNested(){return this._isNested}HasResult(){return this._queries.every(q=>q.HasResult())}GetResult(){return this._queries.reduce((a,v)=>a+v.GetResult(), +0)}GetFrameNumber(){return this._frameNumber}}; + +} + +// ../lib/gfx/webgl/queryResultBuffer.js +{ +'use strict';const C3=self.C3; +C3.Gfx.WebGLQueryResultBuffer=class WebGLQueryResultBuffer{constructor(renderer,maxQueries=1E3){this._renderer=renderer;this._maxQueries=maxQueries;this._buffer=[];this._renderer._AddQueryResultBuffer(this)}Release(){this.Clear();this._renderer._RemoveQueryResultBuffer(this);this._renderer=null}Clear(){for(const q of this._buffer)q.Release();C3.clearArray(this._buffer)}AddTimeElapsedQuery(){const ret=new C3.Gfx.WebGLTimeElapsedQuery(this._renderer);this._buffer.push(ret);if(this._buffer.length>this._maxQueries){const oldest= +this._buffer.shift();oldest.Release()}return ret}CheckForResults(toFrameNumber){for(const q of this._buffer){if(q.GetFrameNumber()>=toFrameNumber)return;if(q.IsNested())return;q.CheckForResult()}}GetFrameRangeResultSum(startFrame,endFrame){if(endFrame<=startFrame)return NaN;let sum=0;for(const q of this._buffer){if(q.GetFrameNumber()>=endFrame)break;if(q.GetFrameNumber()0)this._buffer.splice(0,i);return}}}}; + +} + +// ../lib/gfx/webgl/webglRenderer.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const vec4=glMatrix.vec4;const mat4=glMatrix.mat4;const DEFAULT_WEBGLRENDERER_OPTS={powerPreference:"default",enableGpuProfiling:true,alpha:false,depth:false,canSampleDepth:false,maxWebGLVersion:2,failIfMajorPerformanceCaveat:false};const VALID_POWER_PREFERENCES=new Set(["default","low-power","high-performance"]);const MAX_VERTICES=8E3;const MAX_INDICES=MAX_VERTICES/2*3;const MAX_POINTS=8E3; +const LAST_POINT=MAX_POINTS-4;const PARTIAL_TEXTURE_UPLOAD_CHUNK_SIZE=256*1024;const defaultTexCoordsQuad=new C3.Quad(0,0,1,0,1,1,0,1);const tmpProjection=mat4.create();const tmpModelView=mat4.create();const tmpQuad=new C3.Quad;const tmpRect=new C3.Rect;let loseContextExtension=null; +if(C3.isDebug){self.debug_lose_webgl_context=function(){if(!loseContextExtension){console.warn("WEBGL_lose_context not supported");return}loseContextExtension.loseContext()};self.debug_restore_webgl_context=function(){if(!loseContextExtension){console.warn("WEBGL_lose_context not supported");return}loseContextExtension.restoreContext()}}const pendingPolls=new Set;let pollRafId=-1; +function CheckPendingPolls(){pollRafId=-1;for(const info of pendingPolls)if(info.checkFunc()){info.resolve();pendingPolls.delete(info)}if(pendingPolls.size>0)pollRafId=self.requestAnimationFrame(CheckPendingPolls)} +C3.Gfx.WebGLRenderer=class WebGLRenderer extends C3.Gfx.RendererBase{constructor(canvas,opts){super(opts);opts=Object.assign({},DEFAULT_WEBGLRENDERER_OPTS,opts);if(!VALID_POWER_PREFERENCES.has(opts.powerPreference))throw new Error("invalid power preference");const attribs={"alpha":!!opts.alpha,"depth":false,"antialias":false,"powerPreference":opts.powerPreference,"failIfMajorPerformanceCaveat":!!opts.failIfMajorPerformanceCaveat};let gl=null;let version=0;if(opts.maxWebGLVersion>=2){gl=canvas.getContext("webgl2", +attribs);version=2}if(!gl){gl=canvas.getContext("webgl",attribs);version=1}if(!gl)throw new Error("renderer-unavailable (could not get WebGL context)");this._gl=gl;this._attribs=gl.getContextAttributes();this._versionString=gl.getParameter(gl.VERSION);this._version=version;this._viewport=vec4.create();this._didChangeTransform=false;this._bbProjectionMatrix=mat4.create();this._usesDepthBuffer=!!opts.depth;this._canSampleDepth=!!(opts.depth&&opts.canSampleDepth);this._isDepthEnabled=this._usesDepthBuffer; +this._isDepthSamplingEnabled=false;this._depthBuffer=null;this._isAutoSizeDepthBuffer=true;this._depthBufferWidth=0;this._depthBufferHeight=0;this._vertexBuffer=null;this._texcoordBuffer=null;this._indexBuffer=null;this._pointBuffer=null;this._vertexData=new Float32Array(MAX_VERTICES*this.GetNumVertexComponents());this._indexData=new Uint16Array(MAX_INDICES);this._texcoordData=new Float32Array(MAX_VERTICES*2);this._pointData=new Float32Array(MAX_POINTS*4);this._vertexPtr=0;this._texPtr=0;this._pointPtr= +0;this._lastVertexPtr=0;this._lastProgram=null;this._spDeviceTransformTextureFill=null;this._batch=[];this._batchPtr=0;this._topOfBatch=0;this._currentRenderTarget=null;this._lastPointZ=0;this._batchState=C3.New(C3.Gfx.BatchState,this);this._lastColor=C3.New(C3.Color,1,1,1,1);this._lastTexture0=null;this._lastTexture1=null;this._lastSrcBlend=0;this._lastDestBlend=0;this._lastPointTexCoords=new C3.Rect;this._lastScissorRect=C3.New(C3.Rect,0,0,-1,-1);this._coplanarMode=0;this._maxTextureSize=-1;this._minPointSize= +0;this._maxPointSize=0;this._highpPrecision=0;this._unmaskedVendor="(unavailable)";this._unmaskedRenderer="(unavailable)";this._extensions=[];this._isInitialisingAfterContextRestored=false;this._parallelShaderCompileExt=null;this._anisotropicExt=null;this._depthTextureExt=null;this._fragDepthExt=null;this._stdDerivativesExt=null;this._textureLodExt=null;this._maxAnisotropy=0;this._isGpuProfilingEnabled=!!opts.enableGpuProfiling;this._timerExt=null;this._allQueryResultBuffers=new Set;this._timeQueryStack= +[];this.FillIndexBufferData(this._indexData)}IsWebGL(){return true}async InitState(){super.InitState();const gl=this._gl;const numVertexComponents=this.GetNumVertexComponents();this._lastColor.setRgba(1,1,1,1);this._lastTexture0=null;this._lastTexture1=null;this._vertexPtr=0;this._pointPtr=0;this._lastVertexPtr=MAX_VERTICES*numVertexComponents-4*numVertexComponents;C3.clearArray(this._batch);this._batchPtr=0;this._topOfBatch=0;this._lastProgram=null;this._currentRenderTarget=null;this._lastPointTexCoords.set(0, +0,1,1);this._lastPointZ=0;const batchState=this._batchState;batchState.currentShader=null;batchState.currentFramebuffer=null;batchState.currentFramebufferNoDepth=null;vec4.set(batchState.currentColor,1,1,1,1);batchState.clearColor.setRgba(0,0,0,0);batchState.pointTexCoords.set(0,0,1,1);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.enable(gl.BLEND);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);this._lastSrcBlend=gl.ONE;this._lastDestBlend=gl.ONE_MINUS_SRC_ALPHA;this._InitBlendModes(gl);gl.disable(gl.CULL_FACE); +gl.disable(gl.STENCIL_TEST);gl.disable(gl.DITHER);if(this._usesDepthBuffer){gl.enable(gl.DEPTH_TEST);gl.depthMask(true);gl.depthFunc(gl.LEQUAL)}else{gl.disable(gl.DEPTH_TEST);gl.depthMask(false)}this._isDepthEnabled=this._usesDepthBuffer;this._isDepthSamplingEnabled=false;this._pointBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,this._pointBuffer);gl.bufferData(gl.ARRAY_BUFFER,this._pointData.byteLength,gl.DYNAMIC_DRAW);this._vertexBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,this._vertexBuffer); +gl.bufferData(gl.ARRAY_BUFFER,this._vertexData.byteLength,gl.DYNAMIC_DRAW);this._texcoordBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,this._texcoordBuffer);gl.bufferData(gl.ARRAY_BUFFER,this._texcoordData.byteLength,gl.DYNAMIC_DRAW);this._indexBuffer=gl.createBuffer();gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this._indexBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,this._indexData,gl.STATIC_DRAW);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,null);this._maxTextureSize=gl.getParameter(gl.MAX_TEXTURE_SIZE); +const pointsizes=gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE);this._minPointSize=pointsizes[0];this._maxPointSize=pointsizes[1];const highpVertex=gl.getShaderPrecisionFormat(gl.VERTEX_SHADER,gl.HIGH_FLOAT);const highpFrag=gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT);if(highpVertex&&highpFrag)this._highpPrecision=Math.min(highpVertex["precision"],highpFrag["precision"]);else this._highpPrecision=0;if(this._maxPointSize>2048)this._maxPointSize=2048;this._extensions=gl.getSupportedExtensions(); +const debug_ext=gl.getExtension("WEBGL_debug_renderer_info");if(debug_ext){this._unmaskedVendor=gl.getParameter(debug_ext["UNMASKED_VENDOR_WEBGL"]);this._unmaskedRenderer=gl.getParameter(debug_ext["UNMASKED_RENDERER_WEBGL"])}this._parallelShaderCompileExt=gl.getExtension("KHR_parallel_shader_compile");if(C3.isDebug)loseContextExtension=gl.getExtension("WEBGL_lose_context");if(this._isGpuProfilingEnabled)if(this.GetWebGLVersionNumber()===1)this._timerExt=gl.getExtension("EXT_disjoint_timer_query"); +else this._timerExt=gl.getExtension("EXT_disjoint_timer_query_webgl2")||gl.getExtension("EXT_disjoint_timer_query");this._anisotropicExt=gl.getExtension("EXT_texture_filter_anisotropic");if(this._anisotropicExt)this._maxAnisotropy=gl.getParameter(this._anisotropicExt["MAX_TEXTURE_MAX_ANISOTROPY_EXT"]);else this._maxAnisotropy=0;if(this.GetWebGLVersionNumber()<2&&this._usesDepthBuffer&&this._canSampleDepth){this._depthTextureExt=gl.getExtension("WEBGL_depth_texture");if(!this._depthTextureExt)throw new Error("no depth texture support"); +}if(this.GetWebGLVersionNumber()<2){this._fragDepthExt=gl.getExtension("EXT_frag_depth");this._stdDerivativesExt=gl.getExtension("OES_standard_derivatives");this._textureLodExt=gl.getExtension("EXT_shader_texture_lod")}const WebGLShaderProgram=C3.Gfx.WebGLShaderProgram;const vsSource=WebGLShaderProgram.GetDefaultVertexShaderSource(false);let textureFillFragmentSrc=WebGLShaderProgram.GetTextureFillFragmentShaderSource_WebGL1_NoFragDepth();let textureFillVertexSrc=vsSource;let pointFragmentSrc=WebGLShaderProgram.GetPointFragmentShaderSource_WebGL1_NoFragDepth(); +let pointVertexSrc=WebGLShaderProgram.GetPointVertexShaderSource_WebGL1();let tilemapFragmentSrc=WebGLShaderProgram.GetTilemapFragmentShaderSource_WebGL1_NoFragDepth();let tilemapVertexSrc=WebGLShaderProgram.GetDefaultVertexShaderSource(true);let useFragDepthExt=false;if(this._usesDepthBuffer)if(this.GetWebGLVersionNumber()<2){if(this._fragDepthExt){textureFillFragmentSrc=WebGLShaderProgram.GetTextureFillFragmentShaderSource_WebGL1_FragDepthEXT();pointFragmentSrc=WebGLShaderProgram.GetPointFragmentShaderSource_WebGL1_FragDepthEXT(); +tilemapFragmentSrc=WebGLShaderProgram.GetTilemapFragmentShaderSource_WebGL1_FragDepthEXT();useFragDepthExt=true}}else{textureFillVertexSrc=WebGLShaderProgram.GetDefaultVertexShaderSource_WebGL2();textureFillFragmentSrc=WebGLShaderProgram.GetTextureFillFragmentShaderSource_WebGL2();pointFragmentSrc=WebGLShaderProgram.GetPointFragmentShaderSource_WebGL2();pointVertexSrc=WebGLShaderProgram.GetPointVertexShaderSource_WebGL2();tilemapFragmentSrc=WebGLShaderProgram.GetTilemapFragmentShaderSource_WebGL2(); +tilemapVertexSrc=WebGLShaderProgram.GetDefaultVertexShaderSource_WebGL2(true)}const tileRandomizationFragmentSrc=WebGLShaderProgram.GetTileRandomizationFragmentShaderSource(this.GetWebGLVersionNumber(),useFragDepthExt,this._stdDerivativesExt&&this._textureLodExt);const tileRandomizationVertexSrc=this.GetWebGLVersionNumber()>=2?WebGLShaderProgram.GetDefaultVertexShaderSource_WebGL2():vsSource;const DEFAULT_SHADER_PROGRAMS=[[textureFillFragmentSrc,textureFillVertexSrc,""],[textureFillFragmentSrc, +textureFillVertexSrc,""],[pointFragmentSrc,pointVertexSrc,""],[WebGLShaderProgram.GetColorFillFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetLinearGradientFillFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetPenumbraFillFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetHardEllipseFillFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetHardEllipseOutlineFragmentShaderSource(),vsSource, +""],[WebGLShaderProgram.GetSmoothEllipseFillFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetSmoothEllipseOutlineFragmentShaderSource(),vsSource,""],[WebGLShaderProgram.GetSmoothLineFillFragmentShaderSource(),vsSource,""],[tilemapFragmentSrc,tilemapVertexSrc,""],[tileRandomizationFragmentSrc,tileRandomizationVertexSrc,""]];const defaultShaders=await Promise.all(DEFAULT_SHADER_PROGRAMS.map(i=> +this.CreateShaderProgram({src:i[0],vertexSrc:i[1],name:i[2]})));this._spTextureFill=defaultShaders[0];this._spDeviceTransformTextureFill=defaultShaders[1];this._spPoints=defaultShaders[2];this._spColorFill=defaultShaders[3];this._spLinearGradientFill=defaultShaders[4];this._spPenumbraFill=defaultShaders[5];this._spHardEllipseFill=defaultShaders[6];this._spHardEllipseOutline=defaultShaders[7];this._spSmoothEllipseFill=defaultShaders[8];this._spSmoothEllipseOutline=defaultShaders[9];this._spSmoothLineFill= +defaultShaders[10];this._spTilemapFill=defaultShaders[11];this._spTileRandomization=defaultShaders[12];this.SetTextureFillMode()}async CreateShaderProgram(shaderInfo){const ret=await C3.Gfx.WebGLShaderProgram.Create(this,shaderInfo);this._AddShaderProgram(ret);return ret}ResetLastProgram(){this._lastProgram=null}SetSize(w,h,force){if(this._width===w&&this._height===h&&!force)return;this.EndBatch();const gl=this._gl;const batchState=this._batchState;this._width=w;this._height=h;this._SetViewport(0, +0,w,h);this.CalculatePerspectiveMatrix(this._bbProjectionMatrix,w/h);this.SetProjectionMatrix(this._bbProjectionMatrix);if(this._spDeviceTransformTextureFill){gl.useProgram(this._spDeviceTransformTextureFill.GetShaderProgram());this._spDeviceTransformTextureFill._UpdateDeviceTransformUniforms(this._matP);this._lastProgram=this._spDeviceTransformTextureFill;this._batchState.currentShader=this._spDeviceTransformTextureFill}gl.bindTexture(gl.TEXTURE_2D,null);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D, +null);gl.activeTexture(gl.TEXTURE0);this._lastTexture0=null;this._lastTexture1=null;if(this._usesDepthBuffer&&this._isAutoSizeDepthBuffer)this._SetDepthBufferSize(this._width,this._height);if(this._currentRenderTarget)this._currentRenderTarget._Resize(this._width,this._height);gl.bindFramebuffer(gl.FRAMEBUFFER,null);this._currentRenderTarget=null;batchState.currentFramebuffer=null;batchState.currentFramebufferNoDepth=null}_SetDepthBufferSize(width,height){const gl=this._gl;if(this._depthBuffer&&this._depthBufferWidth=== +width&&this._depthBufferHeight===height)return;if(this._canSampleDepth){if(this._depthBuffer)gl.deleteTexture(this._depthBuffer);this._depthBuffer=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,this._depthBuffer);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);if(this.GetWebGLVersionNumber()>= +2)gl.texImage2D(gl.TEXTURE_2D,0,gl.DEPTH24_STENCIL8,width,height,0,gl.DEPTH_STENCIL,gl.UNSIGNED_INT_24_8,null);else if(this._depthTextureExt)gl.texImage2D(gl.TEXTURE_2D,0,gl.DEPTH_STENCIL,width,height,0,gl.DEPTH_STENCIL,this._depthTextureExt["UNSIGNED_INT_24_8_WEBGL"],null);else;gl.bindTexture(gl.TEXTURE_2D,null)}else{if(this._depthBuffer)gl.deleteRenderbuffer(this._depthBuffer);this._depthBuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,this._depthBuffer);gl.renderbufferStorage(gl.RENDERBUFFER, +this._version>=2?gl.DEPTH24_STENCIL8:gl.DEPTH_STENCIL,width,height);gl.bindRenderbuffer(gl.RENDERBUFFER,null)}this._depthBufferWidth=width;this._depthBufferHeight=height}SetFixedSizeDepthBuffer(width,height){if(!this._usesDepthBuffer)return;this._isAutoSizeDepthBuffer=false;this._SetDepthBufferSize(width,height)}SetAutoSizeDepthBuffer(){if(!this._usesDepthBuffer)return;this._isAutoSizeDepthBuffer=true;this._SetDepthBufferSize(this._width,this._height)}_SetViewport(x,y,w,h){const viewport=this._viewport; +if(viewport[0]===x&&viewport[1]===y&&viewport[2]===w&&viewport[3]===h)return;const b=this.PushBatch();b.InitSetViewport(x,y,w,h);vec4.set(viewport,x,y,w,h);this._topOfBatch=0}SetFovY(f){super.SetFovY(f);this.CalculatePerspectiveMatrix(this._bbProjectionMatrix,this._width/this._height)}SetNearZ(z){super.SetNearZ(z);this.CalculatePerspectiveMatrix(this._bbProjectionMatrix,this._width/this._height)}SetFarZ(z){super.SetFarZ(z);this.CalculatePerspectiveMatrix(this._bbProjectionMatrix,this._width/this._height)}SetProjectionMatrix(matP){if(mat4.exactEquals(this._matP, +matP))return;const b=this.PushBatch();b.InitSetProjection(matP);mat4.copy(this._matP,matP);this._topOfBatch=0;this._didChangeTransform=true}SetDefaultRenderTargetProjectionState(){let projectionMatrix;let viewportWidth,viewportHeight;const currentRenderTarget=this._currentRenderTarget;if(currentRenderTarget===null){projectionMatrix=this._bbProjectionMatrix;viewportWidth=this.GetWidth();viewportHeight=this.GetHeight()}else{projectionMatrix=currentRenderTarget.GetProjectionMatrix();viewportWidth=currentRenderTarget.GetWidth(); +viewportHeight=currentRenderTarget.GetHeight()}this.SetProjectionMatrix(projectionMatrix);this._SetViewport(0,0,viewportWidth,viewportHeight)}SetModelViewMatrix(matMV){if(mat4.exactEquals(this._matMV,matMV))return;const b=this.PushBatch();b.InitSetModelView(matMV);mat4.copy(this._matMV,matMV);this._topOfBatch=0;this._didChangeTransform=true}ResetDidChangeTransformFlag(){this._didChangeTransform=false}DidChangeTransform(){return this._didChangeTransform}GetBatchState(){return this._batchState}PushBatch(){const batch= +this._batch;if(this._batchPtr===batch.length)batch.push(new C3.Gfx.WebGLBatchJob(this._batchState));return batch[this._batchPtr++]}EndBatch(){if(this._batchPtr===0)return;if(this.IsContextLost())return;this._WriteBuffers();this._ExecuteBatch();this._batchPtr=0;this._vertexPtr=0;this._texPtr=0;this._pointPtr=0;this._topOfBatch=0}_WriteBuffers(){const gl=this._gl;if(this._pointPtr>0){gl.bindBuffer(gl.ARRAY_BUFFER,this._pointBuffer);gl.bufferSubData(gl.ARRAY_BUFFER,0,this._pointData.subarray(0,this._pointPtr))}if(this._vertexPtr> +0){gl.bindBuffer(gl.ARRAY_BUFFER,this._vertexBuffer);gl.bufferSubData(gl.ARRAY_BUFFER,0,this._vertexData.subarray(0,this._vertexPtr));gl.bindBuffer(gl.ARRAY_BUFFER,this._texcoordBuffer);gl.bufferSubData(gl.ARRAY_BUFFER,0,this._texcoordData.subarray(0,this._texPtr))}}_ExecuteBatch(){const batch=this._batch;for(let i=0,len=this._batchPtr;i=this._lastVertexPtr){this.EndBatch();v=0}if(this._topOfBatch===1)this._batch[this._batchPtr-1]._indexCount+=6;else{const b=this.PushBatch();b.InitQuad(v,6);this._topOfBatch=1}}_WriteQuadToVertexBuffer(quad){quad.writeToTypedArray3D(this._vertexData,this._vertexPtr,this._baseZ+this._currentZ);this._vertexPtr+=12}Quad(quad){this._ExtendQuadBatch(); +this._WriteQuadToVertexBuffer(quad);defaultTexCoordsQuad.writeToTypedArray(this._texcoordData,this._texPtr);this._texPtr+=8}Quad2(tlx,tly,trx,try_,brx,bry,blx,bly){this._ExtendQuadBatch();const vd=this._vertexData;let v=this._vertexPtr;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]=z;vd[v++]=trx;vd[v++]=try_;vd[v++]=z;vd[v++]=brx;vd[v++]=bry;vd[v++]=z;vd[v++]=blx;vd[v++]=bly;vd[v++]=z;this._vertexPtr=v;defaultTexCoordsQuad.writeToTypedArray(this._texcoordData,this._texPtr);this._texPtr+= +8}Quad3(quad,rcTex){this._ExtendQuadBatch();this._WriteQuadToVertexBuffer(quad);rcTex.writeAsQuadToTypedArray(this._texcoordData,this._texPtr);this._texPtr+=8}Quad4(quad,uv){this._ExtendQuadBatch();this._WriteQuadToVertexBuffer(quad);uv.writeToTypedArray(this._texcoordData,this._texPtr);this._texPtr+=8}Quad3D(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,rcTex){this._ExtendQuadBatch();const vd=this._vertexData;let v=this._vertexPtr;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]= +z+tlz;vd[v++]=trx;vd[v++]=try_;vd[v++]=z+trz;vd[v++]=brx;vd[v++]=bry;vd[v++]=z+brz;vd[v++]=blx;vd[v++]=bly;vd[v++]=z+blz;this._vertexPtr=v;rcTex.writeAsQuadToTypedArray(this._texcoordData,this._texPtr);this._texPtr+=8}Quad3D2(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,uv){this._ExtendQuadBatch();const vd=this._vertexData;let v=this._vertexPtr;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]=z+tlz;vd[v++]=trx;vd[v++]=try_;vd[v++]=z+trz;vd[v++]=brx;vd[v++]=bry;vd[v++]=z+brz; +vd[v++]=blx;vd[v++]=bly;vd[v++]=z+blz;this._vertexPtr=v;uv.writeToTypedArray(this._texcoordData,this._texPtr);this._texPtr+=8}DrawMesh(posArr,uvArr,indexArr){const vd=this._vertexData;const td=this._texcoordData;if(indexArr.length%3!==0)throw new Error("invalid index buffer length");for(let i=0,len=indexArr.length;i=LAST_POINT)this.EndBatch();let p=this._pointPtr;const z=this._baseZ+this._currentZ; +if(this._topOfBatch===2&&this._lastPointZ===z)this._batch[this._batchPtr-1]._indexCount++;else{const b=this.PushBatch();b.InitPoints(p,z);this._topOfBatch=2;this._lastPointZ=z}const pd=this._pointData;pd[p++]=x_;pd[p++]=y_;pd[p++]=size_;pd[p++]=opacity_;this._pointPtr=p}SetProgram(program){if(this._lastProgram===program)return;const b=this.PushBatch();b.InitSetProgram(program);this._lastProgram=program;this._topOfBatch=0;this._currentStateGroup=null}GetProgram(){return this._lastProgram}SetDeviceTransformTextureFillMode(){this.SetProgram(this._spDeviceTransformTextureFill)}SetGradientColor(c){const b= +this.PushBatch();b.InitSetGradientColor(c);this._topOfBatch=0}SetEllipseParams(pixelW,pixelH,outlineThickness=1){const b=this.PushBatch();b.InitSetEllipseParams(pixelW,pixelH,outlineThickness);this._topOfBatch=0}SetTilemapInfo(srcRect,textureWidth,textureHeight,tileWidth,tileHeight,tileSpacingX,tileSpacingY){if(this._lastProgram!==this._spTilemapFill)throw new Error("must set tilemap fill mode first");const b=this.PushBatch();b.InitSetTilemapInfo(srcRect,textureWidth,textureHeight,tileWidth,tileHeight, +tileSpacingX,tileSpacingY);this._topOfBatch=0}SetTileRandomizationInfo(textureWidth,textureHeight,xRandom,yRandom,angleRandom,blendMarginX,blendMarginY){if(this._lastProgram!==this._spTileRandomization)throw new Error("must set tile randomization mode first");const b=this.PushBatch();b.InitSetTileRandomizationInfo(textureWidth,textureHeight,xRandom,yRandom,angleRandom,blendMarginX,blendMarginY);this._topOfBatch=0}SetProgramParameters(backTex,destRect,srcRect,srcOriginRect,layoutRect,pixelWidth,pixelHeight, +dpr,layerScale,layerAngle,time){const s=this._lastProgram;time=time%10800;if(!s._hasAnyOptionalUniforms||s.AreOptionalUniformsAlreadySetInBatch(destRect,srcRect,srcOriginRect,layoutRect,pixelWidth,pixelHeight,dpr,layerScale,layerAngle,time))return;const b=this.PushBatch();b.InitSetProgramParameters();s.SetOptionalUniformsInBatch(destRect,srcRect,srcOriginRect,layoutRect,pixelWidth,pixelHeight,dpr,layerScale,layerAngle,time);const mat4param=b._mat4param;mat4param[0]=pixelWidth;mat4param[1]=pixelHeight; +destRect.writeToTypedArray(mat4param,2);mat4param[6]=layerScale;mat4param[7]=layerAngle;srcRect.writeToTypedArray(mat4param,12);const colorParam=b._colorParam;layoutRect.writeToTypedArray(colorParam,0);const tmp=colorParam[1];colorParam[1]=colorParam[3];colorParam[3]=tmp;srcOriginRect.writeToTypedArray(b._srcOriginRect,0);b._startIndex=time;b._indexCount=dpr;if(s._uSamplerBack.IsUsed())b._texParam=backTex?backTex.GetTexture():null;else b._texParam=null;this._topOfBatch=0}SetProgramCustomParameters(params){const s= +this._lastProgram;if(params.length===0||s.AreCustomParametersAlreadySetInBatch(params))return;const b=this.PushBatch();b.InitSetProgramCustomParameters();s.SetCustomParametersInBatch(params);C3.shallowAssignArray(b._shaderParams,params);this._topOfBatch=0}ClearRgba(r,g,b_,a){const b=this.PushBatch();b.InitClearSurface2(r,g,b_,a);this._topOfBatch=0}Clear(c){const b=this.PushBatch();b.InitClearSurface(c);this._topOfBatch=0}Start(){}Finish(){super.Finish();this._gl.flush()}ClearDepth(){if(!this._usesDepthBuffer|| +!this._currentRenderTarget||!this._currentRenderTarget.HasDepthBuffer())return;const batch=this.PushBatch();batch.InitClearDepth(this._isDepthEnabled);this._topOfBatch=0}SetDepthEnabled(e){e=!!e;if(this._isDepthEnabled===e)return;if(!this._usesDepthBuffer)return;this._isDepthEnabled=e;const batch=this.PushBatch();batch.InitSetDepthEnabled(e);this._topOfBatch=0}IsDepthEnabled(){return this._isDepthEnabled}_GetDepthBuffer(){return this._depthBuffer}_CanSampleDepth(){return this._canSampleDepth}SetDepthSamplingEnabled(e){e= +!!e;if(!this._canSampleDepth)return;if(this._isDepthSamplingEnabled===e)return;if(e&&this.IsDepthEnabled())throw new Error("depth still enabled");this._isDepthSamplingEnabled=e;const batch=this.PushBatch();batch.InitSetDepthSamplingEnabled(e);this._topOfBatch=0}SetScissorRect(x,y,w,h,rtHeight_=0){x=Math.floor(x);y=Math.floor(y);w=Math.floor(w);h=Math.floor(h);if(this._lastScissorRect.equalsWH(x,y,w,h))return;this._lastScissorRect.setWH(x,y,w,h);const rtHeight=rtHeight_||this.GetRenderTargetSize(this.GetRenderTarget())[1]; +y=rtHeight-y-h;const batch=this.PushBatch();batch.InitSetScissor(true,x,y,w,h);this._topOfBatch=0}RemoveScissorRect(){if(this._lastScissorRect.getRight()===-1)return;this._lastScissorRect.set(0,0,-1,-1);const batch=this.PushBatch();batch.InitSetScissor(false,0,0,0,0);this._topOfBatch=0}CheckForQueryResults(){for(const qrb of this._allQueryResultBuffers)qrb.CheckForResults(this._frameNumber)}IsContextLost(){return!this._gl||this._gl.isContextLost()||this._isInitialisingAfterContextRestored}OnContextLost(){super.OnDeviceOrContextLost(); +C3.Gfx.WebGLRendererTexture.OnContextLost();C3.Gfx.WebGLRenderTarget.OnContextLost();C3.Gfx.RendererText.OnContextLost();for(const qrb of this._allQueryResultBuffers)qrb.Clear();this._extensions=[];this._timerExt=null;this._parallelShaderCompileExt=null;this._anisotropicExt=null;this._depthTextureExt=null;this._fragDepthExt=null;this._stdDerivativesExt=null;this._textureLodExt=null;this._maxAnisotropy=0;this._unmaskedVendor="(unavailable)";this._unmaskedRenderer="(unavailable)";this._lastProgram= +null;this._spDeviceTransformTextureFill=null;this._depthBuffer=null;for(const stateGroup of this._stateGroups.values())stateGroup.OnContextLost()}async OnContextRestored(){this._isInitialisingAfterContextRestored=true;await this.InitState();this._isInitialisingAfterContextRestored=false;for(const stateGroup of this._stateGroups.values())stateGroup.OnContextRestored(this);this.SetSize(this._width,this._height,true)}CreateStaticTexture(data,opts){if(this.IsContextLost())throw new Error("context lost"); +this.EndBatch();const rendererTex=C3.New(C3.Gfx.WebGLRendererTexture,this);rendererTex._CreateStatic(data,opts);return rendererTex}async CreateStaticTextureAsync(data,opts){if(this.IsContextLost())throw new Error("context lost");opts=Object.assign({},opts);if(C3.Supports.ImageBitmapOptions){let imageBitmap=await createImageBitmap(data,{"premultiplyAlpha":"premultiply"});const isTiled=opts.wrapX&&opts.wrapX!=="clamp-to-edge"||opts.wrapY&&opts.wrapY!=="clamp-to-edge";const isPOT=C3.isPOT(imageBitmap.width)&& +C3.isPOT(imageBitmap.height);if(!this.SupportsNPOTTextures()&&!isPOT&&isTiled)if(C3.Supports.ImageBitmapOptionsResize){imageBitmap=await createImageBitmap(data,{"premultiplyAlpha":"premultiply","resizeWidth":C3.nextHighestPowerOfTwo(imageBitmap.width),"resizeHeight":C3.nextHighestPowerOfTwo(imageBitmap.height)});opts.premultiplyAlpha=false}else imageBitmap=await createImageBitmap(data,{"premultiplyAlpha":"none"});else opts.premultiplyAlpha=false;return await C3.Asyncify(()=>this.CreateStaticTexture(imageBitmap, +opts))}else{if(data instanceof Blob){if(typeof Image==="undefined")throw new Error("texture upload variant not supported in worker");const img=await C3.BlobToImage(data);data=img}return await C3.Asyncify(()=>this.CreateStaticTexture(data,opts))}}CreateDynamicTexture(width,height,opts){this.EndBatch();const rendererTex=C3.New(C3.Gfx.WebGLRendererTexture,this);rendererTex._CreateDynamic(width,height,opts);return rendererTex}UpdateTexture(data,rendererTex,opts){this.EndBatch();rendererTex._Update(data, +opts)}DeleteTexture(rendererTex){if(!rendererTex)return;rendererTex.SubtractReference();if(rendererTex.GetReferenceCount()>0)return;this.EndBatch();if(rendererTex===this._lastTexture0){this._gl.bindTexture(this._gl.TEXTURE_2D,null);this._lastTexture0=null}if(rendererTex===this._lastTexture1){this._gl.activeTexture(this._gl.TEXTURE1);this._gl.bindTexture(this._gl.TEXTURE_2D,null);this._gl.activeTexture(this._gl.TEXTURE0);this._lastTexture1=null}rendererTex._Delete()}CreateRenderTarget(opts){let width= +this._width;let height=this._height;let isDefaultSize=true;if(opts){if(typeof opts.width==="number"){width=Math.floor(opts.width);isDefaultSize=false}if(typeof opts.height==="number"){height=Math.floor(opts.height);isDefaultSize=false}}if(width<=0||height<=0)throw new Error("invalid size");this.EndBatch();const renderTarget=C3.New(C3.Gfx.WebGLRenderTarget,this);renderTarget._Create(width,height,Object.assign({isDefaultSize},opts));this._currentRenderTarget=null;this._batchState.currentFramebuffer= +null;this._batchState.currentFramebufferNoDepth=null;return renderTarget}SetRenderTarget(renderTarget,updateProjection=true){if(renderTarget===this._currentRenderTarget)return;if(renderTarget&&renderTarget.IsDefaultSize())renderTarget._Resize(this._width,this._height);const b=this.PushBatch();b.InitSetRenderTarget(renderTarget);this._currentRenderTarget=renderTarget;this._topOfBatch=0;if(updateProjection)this.SetDefaultRenderTargetProjectionState()}GetRenderTarget(){return this._currentRenderTarget}GetRenderTargetSize(renderTarget){if(renderTarget)return[renderTarget.GetWidth(), +renderTarget.GetHeight()];else return[this._width,this._height]}CopyRenderTarget(renderTarget,mode="stretch"){if(this._version<2||this._currentRenderTarget&&this._currentRenderTarget.GetMultisampling()>0){this.SetCopyBlend();this.ResetColor();this.DrawRenderTarget(renderTarget,mode)}else{const b=this.PushBatch();b.InitBlitFramebuffer(renderTarget,this._currentRenderTarget,mode);this._topOfBatch=0}}DrawRenderTarget(renderTarget,mode="stretch"){const tex=renderTarget.GetTexture();if(!tex)throw new Error("not a texture-backed render target"); +this.SetTexture(tex);this.FullscreenQuad(mode,tex)}InvalidateRenderTarget(renderTarget){if(this._version<2)return;const b=this.PushBatch();b.InitInvalidateFramebuffer(renderTarget._GetFramebuffer());this._topOfBatch=0}DeleteRenderTarget(renderTarget){this.SetRenderTarget(null);this.EndBatch();const renderTex=renderTarget.GetTexture();if(renderTex===this._lastTexture0){this._gl.bindTexture(this._gl.TEXTURE_2D,null);this._lastTexture0=null}if(renderTex===this._lastTexture1){this._gl.activeTexture(this._gl.TEXTURE1); +this._gl.bindTexture(this._gl.TEXTURE_2D,null);this._gl.activeTexture(this._gl.TEXTURE0);this._lastTexture1=null}renderTarget._Delete()}async ReadBackRenderTargetToImageData(renderTarget,forceSynchronous,areaRect){this.EndBatch();const oldRenderTarget=this._currentRenderTarget;let width,height,framebuffer;if(renderTarget){width=renderTarget.GetWidth();height=renderTarget.GetHeight();framebuffer=renderTarget._GetFramebuffer()}else{width=this.GetWidth();height=this.GetHeight();framebuffer=null}let x= +0;let y=0;let areaWidth=width;let areaHeight=height;if(areaRect){x=C3.clamp(Math.floor(areaRect.getLeft()),0,width-1);y=C3.clamp(Math.floor(areaRect.getTop()),0,height-1);let w=areaRect.width();if(w===0)w=width-x;else w=C3.clamp(Math.floor(w),0,width-x);let h=areaRect.height();if(h===0)h=height-y;else h=C3.clamp(Math.floor(h),0,height-y);areaWidth=w;areaHeight=h;y=height-(y+areaHeight)}const gl=this._gl;gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer);const restorePreviousRenderTarget=()=>{gl.bindFramebuffer(gl.FRAMEBUFFER, +null);this._currentRenderTarget=null;this._batchState.currentFramebuffer=null;this._batchState.currentFramebufferNoDepth=null;this.SetRenderTarget(oldRenderTarget)};let imageData;if(!forceSynchronous&&this.GetWebGLVersionNumber()>=2){gl.bindFramebuffer(gl.READ_FRAMEBUFFER,framebuffer);const pixelBuffer=gl.createBuffer();const bufferSize=areaWidth*areaHeight*4;const PIXEL_PACK_BUFFER=gl["PIXEL_PACK_BUFFER"];gl.bindBuffer(PIXEL_PACK_BUFFER,pixelBuffer);gl.bufferData(PIXEL_PACK_BUFFER,bufferSize,gl["STREAM_READ"]); +gl.readPixels(x,y,areaWidth,areaHeight,gl.RGBA,gl.UNSIGNED_BYTE,0);gl.bindFramebuffer(gl.READ_FRAMEBUFFER,null);gl.bindBuffer(PIXEL_PACK_BUFFER,null);restorePreviousRenderTarget();const sync=gl["fenceSync"](gl["SYNC_GPU_COMMANDS_COMPLETE"],0);await this._WaitForObjectReady(()=>gl["getSyncParameter"](sync,gl["SYNC_STATUS"])===gl["SIGNALED"]);gl["deleteSync"](sync);imageData=new ImageData(areaWidth,areaHeight);gl.bindBuffer(PIXEL_PACK_BUFFER,pixelBuffer);gl["getBufferSubData"](PIXEL_PACK_BUFFER,0,new Uint8Array(imageData.data.buffer), +0,bufferSize);gl.bindBuffer(PIXEL_PACK_BUFFER,null);gl.deleteBuffer(pixelBuffer)}else{imageData=new ImageData(areaWidth,areaHeight);gl.readPixels(x,y,areaWidth,areaHeight,gl.RGBA,gl.UNSIGNED_BYTE,new Uint8Array(imageData.data.buffer));restorePreviousRenderTarget()}return imageData}CoplanarStartStencilPass(){this.SetDepthEnabled(true);const batch=this.PushBatch();batch.InitCoplanarStartStencilPass();this._topOfBatch=0;this._coplanarMode=1}CoplanarStartColorPass(){this.SetDepthEnabled(false);const batch= +this.PushBatch();batch.InitCoplanarStartColorPass();this._topOfBatch=0;this._coplanarMode=2}IsCoplanarColorPass(){return this._coplanarMode===2}CoplanarRestoreStandardRendering(){this.SetDepthEnabled(true);const batch=this.PushBatch();batch.InitCoplanarRestore();this._topOfBatch=0;this._coplanarMode=0}StartQuery(query){if(!this.SupportsGPUProfiling())return;const b=this.PushBatch();b.InitStartQuery(query);this._topOfBatch=0}EndQuery(query){if(!this.SupportsGPUProfiling())return;const b=this.PushBatch(); +b.InitEndQuery(query);this._topOfBatch=0}_WaitForObjectReady(checkFunc){const ret=new Promise(resolve=>pendingPolls.add({resolve,checkFunc}));if(pollRafId===-1)pollRafId=self.requestAnimationFrame(CheckPendingPolls);return ret}GetEstimatedBackBufferMemoryUsage(){return this._width*this._height*(this._attribs["alpha"]?4:3)}GetEstimatedRenderBufferMemoryUsage(){let ret=0;for(const t of C3.Gfx.WebGLRenderTarget.allRenderTargets()){if(t.GetTexture())continue;ret+=t.GetEstimatedMemoryUsage()}return ret}GetEstimatedTextureMemoryUsage(){let ret= +0;for(const t of C3.Gfx.WebGLRendererTexture.allTextures())ret+=t.GetEstimatedMemoryUsage();return ret}GetWebGLVersionString(){return this._versionString}GetWebGLVersionNumber(){return this._version}GetDisplayName(){return"webgl"+this.GetWebGLVersionNumber()}SupportsNPOTTextures(){return this.GetWebGLVersionNumber()>=2}GetMaxTextureSize(){return this._maxTextureSize}GetMinPointSize(){return this._minPointSize}GetMaxPointSize(){return this._maxPointSize}SupportsHighP(){return this._highpPrecision!== +0}GetHighPPrecision(){return this._highpPrecision}GetUnmaskedVendor(){return this._unmaskedVendor}GetUnmaskedRenderer(){return this._unmaskedRenderer}GetWebGLExtensionsAnalyticsString(){if(this.GetWebGLVersionNumber()>=2)return"webgl2";else{const exts=[];if(this._fragDepthExt)exts.push("EXT_frag_depth");if(this._stdDerivativesExt)exts.push("OES_standard_derivatives");if(this._textureLodExt)exts.push("EXT_shader_texture_lod");if(exts.length>0)return"webgl1:"+exts.join(",");else return"webgl1:none"}}GetExtensions(){return this._extensions}SupportsGPUProfiling(){return!!this._timerExt}_GetDisjointTimerQueryExtension(){return this._timerExt}_GetParallelShaderCompileExtension(){return this._parallelShaderCompileExt}_GetAnisotropicExtension(){return this._anisotropicExt}_GetMaxAnisotropy(){return this._maxAnisotropy}_AddQueryResultBuffer(qrb){this._allQueryResultBuffers.add(qrb)}_RemoveQueryResultBuffer(qrb){this._allQueryResultBuffers.delete(qrb)}_GetTimeQueryStack(){return this._timeQueryStack}GetContext(){return this._gl}_InitBlendModes(gl){this._InitBlendModeData([["normal", +gl.ONE,gl.ONE_MINUS_SRC_ALPHA],["additive",gl.ONE,gl.ONE],["xor",gl.ONE,gl.ONE_MINUS_SRC_ALPHA],["copy",gl.ONE,gl.ZERO],["destination-over",gl.ONE_MINUS_DST_ALPHA,gl.ONE],["source-in",gl.DST_ALPHA,gl.ZERO],["destination-in",gl.ZERO,gl.SRC_ALPHA],["source-out",gl.ONE_MINUS_DST_ALPHA,gl.ZERO],["destination-out",gl.ZERO,gl.ONE_MINUS_SRC_ALPHA],["source-atop",gl.DST_ALPHA,gl.ONE_MINUS_SRC_ALPHA],["destination-atop",gl.ONE_MINUS_DST_ALPHA,gl.SRC_ALPHA]])}CreateWebGLText(){return this.CreateRendererText()}}; + +} + +// ../lib/gfx/webgpu/webgpuRenderer.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const mat4=glMatrix.mat4;const assert=self.assert;const GPUBufferUsage=self["GPUBufferUsage"];const GPUShaderStage=self["GPUShaderStage"];const GPUMapMode=self["GPUMapMode"];const GPUTextureUsage=self["GPUTextureUsage"];const DEFAULT_WEBGPURENDERER_OPTS={powerPreference:"default",depth:false,failIfMajorPerformanceCaveat:false,canSampleBackbuffer:false,usesBackgroundBlending:false,canSampleDepth:false}; +const MAX_VERTICES=42E3;const MAX_INDICES=MAX_VERTICES/2*3;const NUM_VERTEX_COMPONENTS=3;const MAX_POINTS=MAX_VERTICES/4;const MAX_COLORS=MAX_VERTICES/4;const LAST_QUAD_PTR=MAX_VERTICES/4-1;const LAST_POINT_PTR=MAX_POINTS*4-4*4;const FLAG_IN_DRAW=1<<0;const FLAG_DRAWING_POINTS=1<<1;const FLAG_SCISSOR_ENABLED=1<<2;const FLAG_SCISSOR_CHANGED=1<<3;const FLAG_DRAW_STATE_CHANGED=1<<4;const FLAG_PIPELINE_CHANGED=1<<5;const FLAG_TEX_BINDGROUP_CHANGED=1<<6;const FLAG_BACKTEX_BINDGROUP_CHANGED=1<<7; +const FLAG_DEPTHTEX_BINDGROUP_CHANGED=1<<8;const FLAG_TRANSFORM_CHANGED=1<<9;const FLAG_VERTEX_UNIFORM_CHANGED=1<<10;const FLAG_FRAG_UNIFORM_CHANGED=1<<11;const FLAG_FRAG_C3PARAMS_CHANGED=1<<12;const FLAG_BUFFER_BINDGROUP_CHANGED=1<<13;const FLAG_DID_ADD_COMMAND=1<<14;const FLAG_CONTEXT_LOST=1<<15;const FLAG_MULTITEXTURE_ENABLED=1<<16;const FLAG_USE_DEPTH_BUFFER=1<<17;const FLAG_DEPTH_ENABLED=1<<18;const FLAG_RENDERTARGET_HAS_DEPTH=1<<19;const FLAG_CLEAR_DEPTH=1<<20; +const FLAG_COPLANAR_STENCIL_PASS=1<<21;const FLAG_COPLANAR_COLOR_PASS=1<<22;const FLAG_CLEAR_STENCIL=1<<23;const FLAG_AUTOSIZE_DEPTH_BUFFER=1<<24;const FLAG_SUPPORTS_TIMESTAMP_QUERY=1<<25;const FLAG_SUPPORTS_F16=1<<26;const FLAG_USE_NORMALIZED_COORDS=1<<27;const FLAG_DID_CHANGE_TRANSFORM=1<<28;const CHANGED_FLAGS_MASK=FLAG_DRAW_STATE_CHANGED|FLAG_PIPELINE_CHANGED|FLAG_BUFFER_BINDGROUP_CHANGED|FLAG_TEX_BINDGROUP_CHANGED|FLAG_BACKTEX_BINDGROUP_CHANGED|FLAG_DEPTHTEX_BINDGROUP_CHANGED; +const END_DRAW_FLAGS_MASK=CHANGED_FLAGS_MASK|FLAG_SCISSOR_CHANGED|FLAG_IN_DRAW;const NEW_RENDERPASS_FLAGS=CHANGED_FLAGS_MASK|FLAG_DID_ADD_COMMAND;const CHANGED_UNIFORM_BUFFER_MASK=FLAG_TRANSFORM_CHANGED|FLAG_VERTEX_UNIFORM_CHANGED|FLAG_FRAG_UNIFORM_CHANGED|FLAG_FRAG_C3PARAMS_CHANGED;const SIZEOF_F32=4;const defaultTexCoordsQuad=new C3.Quad(0,0,1,0,1,1,0,1);const tempVec2=C3.New(C3.Vector2);const tempRect=C3.New(C3.Rect);const tempRect2=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad);let DEBUG=false; +function DebugLog(msg){console.log("[WebGPU] "+msg)} +C3.Gfx.WebGPURenderer=class WebGPURenderer extends C3.Gfx.RendererBase{constructor(opts){super(opts);this._adapterOpts=null;this._adapter=null;this._adapterInfo=null;this._device=null;this._canvas=null;this._presentCtx=null;this._swapChainFormat="";this._swapChainTexture=null;this._swapChainTexView=null;this._viewportWidth=0;this._viewportHeight=0;this._matTransform=mat4.create();this._depthBuffer=null;this._nullDepthBuffer=null;this._depthBufferView=null;this._nullDepthBufferView=null;this._depthBufferBindGroup= +null;this._nullDepthBufferBindGroup=null;this._depthBufferWidth=0;this._depthBufferHeight=0;this._vertexUniformBuffer=null;this._fragmentUniformBuffer=null;this._fragmentC3ParamsBuffer=null;this._fragmentDefaultCustomParamsBuffer=null;this._vertexBuffer=null;this._texcoordBuffer=null;this._colorBuffer=null;this._indexBuffer=null;this._pointBuffer=null;this._vertexUniformBufferLayout=C3.Gfx.WebGPUShaderProgram.GetVertexUniformBufferLayout();this._vertexUniformBufferSize=C3.Gfx.WebGPUShaderProgram.GetVertexUniformBufferSize(); +this._vertexUniformArrayBuffer=null;this._vertexUniformf32=null;this._fragUniformBufferLayout=C3.Gfx.WebGPUShaderProgram.GetFragmentUniformBufferLayout();this._fragUniformBufferSize=C3.Gfx.WebGPUShaderProgram.GetFragmentUniformBufferSize();this._fragUniformArrayBuffer=null;this._fragUniformf32=null;this._fragC3ParamsLayout=C3.Gfx.WebGPUShaderProgram.GetFragmentC3ParamsBufferLayout();this._fragC3ParamsSize=C3.Gfx.WebGPUShaderProgram.GetFragmentC3ParamsBufferSize();this._fragC3ParamsArrayBuffer=null; +this._fragC3Paramsf32=null;this._fragC3Paramsu32=null;this._vertexData=new Float32Array(MAX_VERTICES*NUM_VERTEX_COMPONENTS);this._texcoordData=new Float32Array(MAX_VERTICES*3);this._colorData=new Float32Array(MAX_COLORS*4);this._indexData=new Uint16Array(MAX_INDICES);this._pointData=new Float32Array(MAX_POINTS*4);this._quadPtr=0;this._currentMultiTextureIndex=0;this._currentColor=C3.New(C3.Color,1,1,1,1);this._pointPtr=0;this._bufferManager=C3.New(C3.Gfx.WebGPUBufferManager,this);this._flags=FLAG_CONTEXT_LOST; +this._drawFirstIndex=0;this._drawIndexCount=0;this._vertexUniformUpdateStart=0;this._vertexUniformUpdateEnd=0;this._fragUniformUpdateStart=0;this._fragUniformUpdateEnd=0;this._fragC3ParamsUpdateStart=0;this._fragC3ParamsUpdateEnd=0;this._scissorRect=C3.New(C3.Rect,0,0,0,0);this._currentColor2=C3.New(C3.Color,1,1,1,1);this._currentPointColor=C3.New(C3.Color,1,1,1,1);this._currentPointTexCoords=C3.New(C3.Rect,0,0,0,0);this._currentVertexZElevation=0;this._textureFormat="";this._bufferBindGroupLayout= +null;this._defaultBufferBindGroup=null;this._textureBindGroupLayout=null;this._backTextureBindGroupLayout=null;this._depthTextureBindGroupLayout=null;this._nullTexture=null;this._currentTexture=null;this._currentTextureBindGroup=null;this._currentBackTexture=null;this._currentBackTextureBindGroup=null;this._currentDepthTextureBindGroup=null;this._currentBufferBindGroup=null;this._mipmapGeneratorPipeline=null;this._availableMultiTextures=new Set;this._nonFullMultiTexGroups=new Set;this._maxTextureSize= +8192;this._pipelineLayout=null;this._defaultVertexModule=null;this._normVertexModule=null;this._currentProgram=null;this._currentBlendMode=0;this._currentMultisampleCount=0;this._mipmapGeneratorProgram=null;this._samplerMap=new Map;this._commandEncoder=null;this._currentRenderPass=null;this._commandBuffers=[];this._backbufferRenderTarget=null;this._currentRenderTarget=null;this._canSampleBackbuffer=false;this._usesBackgroundBlending=false;this._canSampleDepth=false;this._frameTimeQuerySet=null;this._timestampIsMeasuring= +false;this._timestampStartIndex=-1;this._timestampEndIndex=-1;this._timestampStartedIndices=new Set;this.ondevicelost=null;this.ondevicerestored=null;this._InitBlendModes()}IsWebGPU(){return true}_SetFlag(f,e){if(e)this._flags|=f;else this._flags&=~f}_IsFlagSet(f){return(this._flags&f)!==0}async Create(canvas,opts){opts=Object.assign({},DEFAULT_WEBGPURENDERER_OPTS,opts);if(!navigator["gpu"])throw new Error("renderer-unavailable (WebGPU not supported)");if(opts.depth)this._flags|=FLAG_USE_DEPTH_BUFFER; +this._canSampleBackbuffer=!!opts.canSampleBackbuffer;this._usesBackgroundBlending=!!opts.usesBackgroundBlending;this._adapterOpts={};this._canSampleDepth=!!(opts.depth&&opts.canSampleDepth);if(opts.powerPreference!=="default")this._adapterOpts["powerPreference"]=opts.powerPreference;this._canvas=canvas;this.FillIndexBufferData(this._indexData);await this._InitDevice(opts.failIfMajorPerformanceCaveat)}async _InitDevice(failIfMajorPerformanceCaveat){this._device=null;await this._TryGetDeviceOnCurrentAdapter(failIfMajorPerformanceCaveat); +while(!this._device){this._adapter=null;await this._TryGetDeviceOnCurrentAdapter(failIfMajorPerformanceCaveat)}await this.InitState()}async _TryGetDeviceOnCurrentAdapter(failIfMajorPerformanceCaveat){if(!this._adapter){this._adapter=await navigator["gpu"]["requestAdapter"](this._adapterOpts);if(!this._adapter)throw new Error("renderer-unavailable (no WebGPU adapter available)");if(failIfMajorPerformanceCaveat&&this._adapter["isFallbackAdapter"])throw new Error("renderer-unavailable (WebGPU provided fallback adapter)"); +}const features=[];if(this._adapter["features"].has("timestamp-query"))features.push("timestamp-query");if(this._adapter["features"].has("shader-f16"))features.push("shader-f16");this._device=await this._adapter["requestDevice"]({"requiredFeatures":features});if(!this._device)return null;this._maxTextureSize=this._device["limits"]["maxTextureDimension2D"];this._SetFlag(FLAG_SUPPORTS_TIMESTAMP_QUERY,this._device["features"].has("timestamp-query"));this._SetFlag(FLAG_SUPPORTS_F16,this._device["features"].has("shader-f16")); +this._device["lost"].then(info=>this._OnDeviceLost(info));this._SetFlag(FLAG_CONTEXT_LOST,false)}async _OnDeviceLost(info){console.log("[WebGPU] Device lost: ",info);super.OnDeviceOrContextLost();this._bufferManager.OnContextLost();C3.Gfx.WebGPURendererTexture.OnContextLost();C3.Gfx.WebGPURenderTarget.OnContextLost();C3.Gfx.RendererText.OnContextLost();this._swapChainFormat="";this._swapChainTexture=null;this._swapChainTexView=null;this._depthBuffer=null;this._depthBufferView=null;this._nullDepthBuffer= +null;this._nullDepthBufferView=null;this._depthBufferBindGroup=null;this._nullDepthBufferBindGroup=null;this._vertexBuffer=null;this._texcoordBuffer=null;this._colorBuffer=null;this._indexBuffer=null;this._pointBuffer=null;this._vertexUniformBuffer=null;this._fragmentUniformBuffer=null;this._fragmentC3ParamsBuffer=null;this._fragmentDefaultCustomParamsBuffer=null;this._defaultBufferBindGroup=null;this._bufferBindGroupLayout=null;this._currentBufferBindGroup=null;this._textureBindGroupLayout=null; +this._backTextureBindGroupLayout=null;this._depthTextureBindGroupLayout=null;this._pipelineLayout=null;this._currentProgram=null;this._nullTexture=null;this._currentTexture=null;this._currentTextureBindGroup=null;this._currentBackTexture=null;this._currentBackTextureBindGroup=null;this._currentDepthTextureBindGroup=null;this._defaultVertexModule=null;this._normVertexModule=null;this._backbufferRenderTarget=null;this._currentRenderTarget=null;this._mipmapGeneratorPipeline=null;this._frameTimeQuerySet= +null;this._availableMultiTextures.clear();this._nonFullMultiTexGroups.clear();this._samplerMap.clear();for(const stateGroup of this._stateGroups.values())stateGroup.OnContextLost();this._device=null;this._adapter=null;this._adapterInfo=null;this._flags|=FLAG_CONTEXT_LOST;if(this.ondevicelost)this.ondevicelost();await this._InitDevice();for(const stateGroup of this._stateGroups.values())stateGroup.OnContextRestored(this);this.SetSize(this._width,this._height,true);if(this.ondevicerestored)this.ondevicerestored()}async InitState(){super.InitState(); +const device=this._device;this._swapChainFormat=navigator["gpu"]["getPreferredCanvasFormat"]();this._swapChainTexture=null;this._swapChainTexView=null;let swapChainTextureUsage=GPUTextureUsage["RENDER_ATTACHMENT"];if(this._canSampleBackbuffer)swapChainTextureUsage|=GPUTextureUsage["TEXTURE_BINDING"];if(this._usesBackgroundBlending)swapChainTextureUsage|=GPUTextureUsage["COPY_SRC"];if(this._swapChainFormat.startsWith("rgba8")||this._swapChainFormat.startsWith("bgra8"))this._textureFormat=this._swapChainFormat; +else this._textureFormat="rgba8unorm";this._flags&=FLAG_USE_DEPTH_BUFFER|FLAG_SUPPORTS_TIMESTAMP_QUERY|FLAG_SUPPORTS_F16;this._flags|=CHANGED_UNIFORM_BUFFER_MASK;if(this._IsFlagSet(FLAG_USE_DEPTH_BUFFER))this._flags|=FLAG_DEPTH_ENABLED|FLAG_RENDERTARGET_HAS_DEPTH|FLAG_AUTOSIZE_DEPTH_BUFFER;this._quadPtr=0;this._currentBlendMode=0;this._currentMultisampleCount=0;this._currentColor.setRgba(1,1,1,1);this._currentColor2.setRgba(1,1,1,1);this._currentPointColor.setRgba(1,1,1,1);this._vertexUniformArrayBuffer= +new ArrayBuffer(this._vertexUniformBufferSize);this._vertexUniformf32=new Float32Array(this._vertexUniformArrayBuffer);this._fragUniformArrayBuffer=new ArrayBuffer(this._fragUniformBufferSize);this._fragUniformf32=new Float32Array(this._fragUniformArrayBuffer);this._fragC3ParamsArrayBuffer=new ArrayBuffer(this._fragC3ParamsSize);this._fragC3Paramsf32=new Float32Array(this._fragC3ParamsArrayBuffer);this._fragC3Paramsu32=new Uint32Array(this._fragC3ParamsArrayBuffer);this._vertexBuffer=device["createBuffer"]({"label":"vertexbuffer", +"size":this._vertexData.byteLength,"usage":GPUBufferUsage["VERTEX"]|GPUBufferUsage["COPY_DST"]});this._texcoordBuffer=device["createBuffer"]({"label":"texcoordbuffer","size":this._texcoordData.byteLength,"usage":GPUBufferUsage["VERTEX"]|GPUBufferUsage["COPY_DST"]});this._colorBuffer=device["createBuffer"]({"label":"colorbuffer","size":this._colorData.byteLength,"usage":GPUBufferUsage["VERTEX"]|GPUBufferUsage["STORAGE"]|GPUBufferUsage["COPY_DST"]});this._indexBuffer=device["createBuffer"]({"label":"indexbuffer", +"mappedAtCreation":true,"size":this._indexData.byteLength,"usage":GPUBufferUsage["INDEX"]});const indexArrayBuffer=this._indexBuffer["getMappedRange"]();(new Uint16Array(indexArrayBuffer)).set(this._indexData);this._indexBuffer["unmap"]();this._pointBuffer=device["createBuffer"]({"label":"pointbuffer","size":this._pointData.byteLength,"usage":GPUBufferUsage["VERTEX"]|GPUBufferUsage["STORAGE"]|GPUBufferUsage["COPY_DST"]});this._bufferBindGroupLayout=device["createBindGroupLayout"]({"label":"bufferbindgrouplayout", +"entries":[{"binding":0,"visibility":GPUShaderStage["VERTEX"],"buffer":{"type":"uniform","minBindingSize":this._vertexUniformBufferSize}},{"binding":1,"visibility":GPUShaderStage["FRAGMENT"],"buffer":{"type":"uniform","minBindingSize":this._fragUniformBufferSize}},{"binding":2,"visibility":GPUShaderStage["VERTEX"],"buffer":{"type":"read-only-storage","minBindingSize":this._colorData.byteLength}},{"binding":3,"visibility":GPUShaderStage["VERTEX"],"buffer":{"type":"read-only-storage","minBindingSize":this._pointData.byteLength}}, +{"binding":4,"visibility":GPUShaderStage["FRAGMENT"],"buffer":{"type":"uniform","minBindingSize":this._fragC3ParamsSize}},{"binding":5,"visibility":GPUShaderStage["FRAGMENT"],"buffer":{"type":"uniform"}}]});const texBindGroupLayoutEntries=[];const multiTexLimit=C3.Gfx.WebGPUMultiTextureGroup.GetMultiTextureLimit();for(let i=0;i","code":WebGPUShaderProgram._PreprocessVertexShaderCode(WebGPUShaderProgram.GetDefaultVertexShaderSource(),supportsF16)});this._defaultVertexModule["getCompilationInfo"]().then(compilationInfo=>WebGPUShaderProgram.ReportShaderCompilationInfo("","vertex",compilationInfo));this._normVertexModule=device["createShaderModule"]({"label":"", +"code":WebGPUShaderProgram._PreprocessVertexShaderCode(WebGPUShaderProgram.GetNormalizedVertexShaderSource(),supportsF16)});this._normVertexModule["getCompilationInfo"]().then(compilationInfo=>WebGPUShaderProgram.ReportShaderCompilationInfo("","vertex",compilationInfo));const defaultShaders=await Promise.all([WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram.GetTextureFillFragmentShaderSource(false),srcFragDepth:WebGPUShaderProgram.GetTextureFillFragmentShaderSource(true), +vertexSrc:WebGPUShaderProgram.GetTextureFillVertexShaderSource(),normVertexSrc:WebGPUShaderProgram.GetNormalizedTextureFillVertexShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetMipmapGeneratorFragmentSource(),vertexSrc:WebGPUShaderProgram._GetMipmapGeneratorVertexSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetPointFragmentSource(false),srcFragDepth:WebGPUShaderProgram._GetPointFragmentSource(true),vertexSrc:WebGPUShaderProgram._GetPointVertexSource()}), +WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetTilemapFragmentShaderSource(false),srcFragDepth:WebGPUShaderProgram._GetTilemapFragmentShaderSource(true)}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetColorFillFragmentShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetLinearGradientFillFragmentShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetPenumbraFillFragmentShaderSource()}), +WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetHardEllipseFillFragmentShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetHardEllipseOutlineFragmentShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetSmoothEllipseFillFragmentShaderSource()}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetSmoothEllipseOutlineFragmentShaderSource()}), +WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram.GetTileRandomizationFragmentShaderSource(false),srcFragDepth:WebGPUShaderProgram.GetTileRandomizationFragmentShaderSource(true)}),WebGPUShaderProgram.Create(this,{name:"",src:WebGPUShaderProgram._GetSmoothLineFillFragmentShaderSource()})]);this._spTextureFill=defaultShaders[0];this._mipmapGeneratorProgram=defaultShaders[1];this._spPoints=defaultShaders[2];this._spTilemapFill=defaultShaders[3];this._spColorFill= +defaultShaders[4];this._spLinearGradientFill=defaultShaders[5];this._spPenumbraFill=defaultShaders[6];this._spHardEllipseFill=defaultShaders[7];this._spHardEllipseOutline=defaultShaders[8];this._spSmoothEllipseFill=defaultShaders[9];this._spSmoothEllipseOutline=defaultShaders[10];this._spTileRandomization=defaultShaders[11];this._spSmoothLineFill=defaultShaders[12];for(const shaderProgram of defaultShaders)this._AddShaderProgram(shaderProgram);this._currentProgram=this._spTextureFill;this._flags|= +FLAG_MULTITEXTURE_ENABLED;this._mipmapGeneratorPipeline=this._mipmapGeneratorProgram._GetMipmapGeneratorPipeline();this._vertexUniformBuffer=device["createBuffer"]({"label":"vertexuniformbuffer","size":this._vertexUniformBufferSize,"usage":GPUBufferUsage["UNIFORM"]|GPUBufferUsage["COPY_DST"]});this._fragmentUniformBuffer=device["createBuffer"]({"label":"fragmentuniformbuffer","size":this._fragUniformBufferSize,"usage":GPUBufferUsage["UNIFORM"]|GPUBufferUsage["COPY_DST"]});this._fragmentC3ParamsBuffer= +device["createBuffer"]({"label":"fragmentc3paramsuniformbuffer","size":this._fragC3ParamsSize,"usage":GPUBufferUsage["UNIFORM"]|GPUBufferUsage["COPY_DST"]});this._fragmentDefaultCustomParamsBuffer=device["createBuffer"]({"label":"fragmentdefaultcustomparamsbuffer","size":16,"usage":GPUBufferUsage["UNIFORM"]|GPUBufferUsage["COPY_DST"]});this._vertexUniformUpdateStart=0;this._vertexUniformUpdateEnd=this._vertexUniformBufferSize;this._UpdateTransformUniform();this._UpdatePointTexCoordsUniform();this._UpdateZElevationUniform(); +this._fragUniformUpdateStart=0;this._fragUniformUpdateEnd=this._fragUniformBufferSize;this._UpdateColor2Uniform();this._UpdatePointColorUniform();this._defaultBufferBindGroup=this._CreateBufferBindGroup(this._fragmentDefaultCustomParamsBuffer);this._currentBufferBindGroup=this._defaultBufferBindGroup;const nullTextureCanvas=C3.CreateCanvas(32,32);nullTextureCanvas.getContext("2d");this._nullTexture=await this.CreateStaticTextureAsync(nullTextureCanvas);this._currentTexture=null;this._currentTextureBindGroup= +this._nullTexture._GetOwnTextureBindGroup();this._currentMultiTextureIndex=0;this._currentBackTexture=null;this._currentBackTextureBindGroup=this._nullTexture._GetBackTextureBindGroup();this._nullTexture._DisableMultiTexture();this._nullDepthBuffer=this._device["createTexture"]({"label":"nulldepthbuffer","size":[8,8,1],"format":this._GetDepthBufferFormat(),"usage":GPUTextureUsage["TEXTURE_BINDING"]});this._nullDepthBufferView=this._nullDepthBuffer["createView"]({"label":"nulldepthbufferview","aspect":"depth-only"}); +this._nullDepthBufferBindGroup=this._device["createBindGroup"]({"label":"nulldepthbufferbindgroup","layout":this._depthTextureBindGroupLayout,"entries":[{"binding":0,"resource":this._GetSampler({sampling:"nearest"})},{"binding":1,"resource":this._nullDepthBufferView}]});this._currentDepthTextureBindGroup=this._nullDepthBufferBindGroup;this._backbufferRenderTarget=C3.New(C3.Gfx.WebGPURenderTarget,this,true);this._backbufferRenderTarget.GetTexture()._BackbufferTextureSetProperties(swapChainTextureUsage, +this._swapChainFormat);this._currentRenderTarget=this._backbufferRenderTarget;this._CreateCommandEncoder();if(this._adapter["info"])this._adapterInfo=this._adapter["info"];else if(this._adapter["requestAdapterInfo"])this._adapterInfo=await this._adapter["requestAdapterInfo"]();else this._adapterInfo=null;if(!this._presentCtx)this._presentCtx=this._canvas.getContext("webgpu");this._presentCtx["configure"]({"device":device,"format":this._swapChainFormat,"usage":swapChainTextureUsage,"alphaMode":"premultiplied"}); +if(DEBUG)DebugLog("Initialised state")}_CreateBufferBindGroup(customParamsBuffer){return this._device["createBindGroup"]({"layout":this._bufferBindGroupLayout,"entries":[{"binding":0,"resource":{"buffer":this._vertexUniformBuffer}},{"binding":1,"resource":{"buffer":this._fragmentUniformBuffer}},{"binding":2,"resource":{"buffer":this._colorBuffer}},{"binding":3,"resource":{"buffer":this._pointBuffer}},{"binding":4,"resource":{"buffer":this._fragmentC3ParamsBuffer}},{"binding":5,"resource":{"buffer":customParamsBuffer}}]})}_GetDevice(){return this._device}_GetDefaultVertexModule(){return this._defaultVertexModule}_GetNormalizedVertexModule(){return this._normVertexModule}async CreateShaderProgram(shaderInfo){if(DEBUG)DebugLog(`Creating shader program '${shaderInfo.name}'`); +const shaderProgram=await C3.Gfx.WebGPUShaderProgram.Create(this,shaderInfo);this._AddShaderProgram(shaderProgram);return shaderProgram}GetDisplayName(){return"webgpu"}GetSwapChainFormat(){return this._swapChainFormat}_GetDepthBufferFormat(){return"depth24plus-stencil8"}_GetSwapChainTexture(){return this._swapChainTexture}_GetSwapChainTexView(){return this._swapChainTexView}_CanSampleBackbuffer(){return this._canSampleBackbuffer}UsesBackgroundBlending(){return this._usesBackgroundBlending}_GetPipelineLayout(){return this._pipelineLayout}_GetTextureBindGroupLayout(){return this._textureBindGroupLayout}_GetBackTextureBindGroupLayout(){return this._backTextureBindGroupLayout}GetTextureFormat(){return this._textureFormat}GetMaxTextureSize(){return this._maxTextureSize}IsContextLost(){return this._IsFlagSet(FLAG_CONTEXT_LOST)}SupportsGPUProfiling(){return this._IsFlagSet(FLAG_SUPPORTS_TIMESTAMP_QUERY)}SupportsF16(){return this._IsFlagSet(FLAG_SUPPORTS_F16)}GetEstimatedBackBufferMemoryUsage(){const bbPixels= +this.GetWidth()*this.GetHeight();let ret=bbPixels*C3.Gfx.WebGPURendererTexture.GetFormatByteSize(this._swapChainFormat);if(this.UsesDepthBuffer())ret+=bbPixels*C3.Gfx.WebGPURendererTexture.GetFormatByteSize(this._GetDepthBufferFormat());return ret}GetEstimatedRenderBufferMemoryUsage(){let ret=0;for(const t of C3.Gfx.WebGPURenderTarget.allRenderTargets()){if(t.IsBackBuffer())continue;ret+=t.GetTexture().GetEstimatedMemoryUsage()}return ret}GetEstimatedTextureMemoryUsage(){let ret=0;for(const t of C3.Gfx.WebGPURendererTexture.allTextures()){if(t.IsRenderTarget())continue; +ret+=t.GetEstimatedMemoryUsage()}return ret}SupportsNPOTTextures(){return true}GetBufferManager(){return this._bufferManager}SetSize(w,h,force){if(this._width===w&&this._height===h&&!force)return;if(DEBUG)DebugLog(`Setting size to ${w} x ${h}`);this.EndBatch();this._width=w;this._height=h;this._viewportWidth=w;this._viewportHeight=h;this._backbufferRenderTarget._CalculateProjection();this.SetProjectionMatrix(this._backbufferRenderTarget.GetProjectionMatrix());if(this._currentRenderTarget)this._currentRenderTarget._Resize(this._width, +this._height);if(this._IsFlagSet(FLAG_USE_DEPTH_BUFFER)&&this._IsFlagSet(FLAG_AUTOSIZE_DEPTH_BUFFER))this._SetDepthBufferSize(w,h)}_SetDepthBufferSize(width,height){if(this._depthBuffer){if(this._depthBufferWidth===width&&this._depthBufferHeight===height)return;this._depthBuffer["destroy"]()}let depthUsage=GPUTextureUsage["RENDER_ATTACHMENT"];if(this._canSampleDepth)depthUsage|=GPUTextureUsage["TEXTURE_BINDING"];this._depthBuffer=this._device["createTexture"]({"label":"depthbuffer","size":[width, +height,1],"format":this._GetDepthBufferFormat(),"usage":depthUsage});this._depthBufferView=this._depthBuffer["createView"]({"label":"depthbufferview"});if(this._canSampleDepth)this._depthBufferBindGroup=this._device["createBindGroup"]({"label":"depthbufferbindgroup","layout":this._depthTextureBindGroupLayout,"entries":[{"binding":0,"resource":this._GetSampler({sampling:"nearest"})},{"binding":1,"resource":this._depthBuffer["createView"]({"label":"depthbufferview","aspect":"depth-only"})}]});this._depthBufferWidth= +width;this._depthBufferHeight=height}SetFixedSizeDepthBuffer(width,height){if(!this.UsesDepthBuffer())return;this._SetFlag(FLAG_AUTOSIZE_DEPTH_BUFFER,false);this._SetDepthBufferSize(width,height)}SetAutoSizeDepthBuffer(){if(!this.UsesDepthBuffer())return;this._SetFlag(FLAG_AUTOSIZE_DEPTH_BUFFER,true);this._SetDepthBufferSize(this._width,this._height)}SetProjectionMatrix(matP){if(mat4.exactEquals(this._matP,matP))return;mat4.copy(this._matP,matP);this._UpdateTransformUniform()}SetDefaultRenderTargetProjectionState(){this.SetProjectionMatrix(this._currentRenderTarget.GetProjectionMatrix())}SetModelViewMatrix(matMV){if(mat4.exactEquals(this._matMV, +matMV))return;mat4.copy(this._matMV,matMV);this._UpdateTransformUniform()}ResetDidChangeTransformFlag(){this._SetFlag(FLAG_DID_CHANGE_TRANSFORM,false)}DidChangeTransform(){return this._IsFlagSet(FLAG_DID_CHANGE_TRANSFORM)}CreateStaticTexture(data,opts){if(data&&!C3.Gfx.WebGPURendererTexture.IsGPUImageCopyExternalImageSource(data)){const dataWidth=data.width||data.videoWidth;const dataHeight=data.height||data.videoHeight;const canvas=C3.CreateCanvas(dataWidth,dataHeight);const ctx=canvas.getContext("2d"); +ctx.drawImage(data,0,0,dataWidth,dataHeight);data=canvas}this.EndBatch();if(DEBUG)DebugLog(`Creating texture ${data?data.width:opts.width} x ${data?data.height:opts.height}`);const rendererTex=C3.New(C3.Gfx.WebGPURendererTexture,this);rendererTex._Create(data,opts);return rendererTex}async CreateStaticTextureAsync(data,opts){if(C3.Gfx.WebGPURendererTexture.IsGPUImageCopyExternalImageSource(data))return this.CreateStaticTexture(data,opts);else{if(!C3.Supports.ImageBitmapOptions)throw new Error("no support for ImageBitmapOptions"); +const imageBitmap=await createImageBitmap(data,{"premultiplyAlpha":"premultiply"});return this.CreateStaticTexture(imageBitmap,opts)}}_GetSampler(opts){const wrapX=opts.wrapX||"clamp-to-edge";const wrapY=opts.wrapY||"clamp-to-edge";const sampling=opts.sampling;let anisotropy=opts.anisotropy||0;if(sampling!=="trilinear")anisotropy=0;const key=`${wrapX},${wrapY},${sampling},${anisotropy}`;let ret=this._samplerMap.get(key);if(ret)return ret;const descriptor={"addressModeU":wrapX,"addressModeV":wrapY, +"magFilter":"nearest","minFilter":"nearest","mipmapFilter":"nearest"};if(sampling==="bilinear"||sampling==="trilinear"){descriptor["magFilter"]="linear";descriptor["minFilter"]="linear"}if(sampling==="trilinear"){descriptor["mipmapFilter"]="linear";if(anisotropy>1)descriptor["maxAnisotropy"]=anisotropy}ret=this._device["createSampler"](descriptor);this._samplerMap.set(key,ret);return ret}_GetMipmapGeneratorPipeline(){return this._mipmapGeneratorPipeline}CreateDynamicTexture(width,height,opts){this.EndBatch(); +const rendererTex=C3.New(C3.Gfx.WebGPURendererTexture,this);rendererTex._CreateDynamic(width,height,opts);return rendererTex}UpdateTexture(data,rendererTex,opts){return rendererTex._Update(data,opts)}DeleteTexture(rendererTex){if(!rendererTex)return;rendererTex.SubtractReference();if(rendererTex.GetReferenceCount()>0)return;if(!this.IsContextLost()){this.EndBatch();if(this._currentTexture===rendererTex)this.SetTexture(null);if(this._currentBackTexture===rendererTex)this.SetBackTexture(null)}rendererTex._Delete()}_SetMultiTextureAvailable(rendererTex, +available){if(this.IsContextLost())return;if(available)this._availableMultiTextures.add(rendererTex);else this._availableMultiTextures.delete(rendererTex)}_SetMultiTextureGroupNonFull(mtg,available){if(available)this._nonFullMultiTexGroups.add(mtg);else this._nonFullMultiTexGroups.delete(mtg)}_TryCreateMultiTextureGroup(rendererTex){const textures=[rendererTex];const multiTexLimit=C3.Gfx.WebGPUMultiTextureGroup.GetMultiTextureLimit();for(const mtg of this._nonFullMultiTexGroups)mtg.Release();for(const tex of this._availableMultiTextures){if(textures.length>= +multiTexLimit)break;if(tex===rendererTex)continue;textures.push(tex)}if(textures.length<2)return;C3.New(C3.Gfx.WebGPUMultiTextureGroup,this,textures)}Start(){if(DEBUG)DebugLog(`================== START FRAME ===================`);this._UpdateSwapChainTexture()}Restart(){this._UpdateSwapChainTexture()}_UpdateSwapChainTexture(){this._swapChainTexture=this._presentCtx["getCurrentTexture"]();this._swapChainTexView=this._swapChainTexture["createView"]({"label":"swapchaintextureview"});this._backbufferRenderTarget.GetTexture()._BackbufferTextureStartFrame()}Finish(){if(this._currentRenderPass=== +null&&this._backbufferRenderTarget._IsAwaitingClear())this._BeginRenderPass();super.Finish();this._bufferManager.MaybeCollectUnusedBuffers(this._frameNumber);this._backbufferRenderTarget.GetTexture()._BackbufferTextureEndFrame();this._swapChainTexture=null;this._swapChainTexView=null;if(DEBUG)DebugLog(`End of frame`);if(this._frameNumber>=10)DEBUG=false}_CreateCommandEncoder(){this._commandEncoder=this._device["createCommandEncoder"]();this._flags&=~FLAG_DID_ADD_COMMAND}StartFrameTiming(queryCount){if(!this.SupportsGPUProfiling())throw new Error("GPU profiling not supported"); +if(this._frameTimeQuerySet)throw new Error("already started frame timing");this._timestampIsMeasuring=false;this._timestampStartedIndices.clear();this._frameTimeQuerySet=C3.New(C3.Gfx.WebGPUTimeQuerySet,this,queryCount);return this._frameTimeQuerySet}StartMeasuringRenderPassTime(startIndex,endIndex){if(!this.SupportsGPUProfiling())return;if(!this._frameTimeQuerySet)throw new Error("not started frame timing");if(startIndex<0||endIndex<0||startIndex===endIndex)throw new Error("invalid timestamp index"); +this._MaybeEndRenderPass();this._timestampIsMeasuring=true;this._timestampStartIndex=startIndex;this._timestampEndIndex=endIndex}StopMeasuringRenderPassTime(){if(!this._timestampIsMeasuring)return;this._MaybeEndRenderPass();this._timestampIsMeasuring=false}_AddQuadToDrawBatch(){let q=this._quadPtr;if(q>LAST_QUAD_PTR){this.EndBatch();q=0}else if((this._flags&FLAG_IN_DRAW)!==0){this._drawIndexCount+=6;return}if(this._currentRenderPass===null)this._BeginRenderPass();this._flags|=FLAG_IN_DRAW;this._drawFirstIndex= +q*6;this._drawIndexCount=6}_MaybeEndDrawBatch(){const flags=this._flags;if((flags&FLAG_IN_DRAW)===0)return;if(DEBUG){const updates=[];if(flags&FLAG_DRAW_STATE_CHANGED)updates.push("draw state");if(flags&FLAG_PIPELINE_CHANGED)updates.push("pipeline");if(flags&FLAG_TEX_BINDGROUP_CHANGED)updates.push("texture");if(flags&FLAG_BACKTEX_BINDGROUP_CHANGED)updates.push("background texture");if(flags&FLAG_DEPTHTEX_BINDGROUP_CHANGED)updates.push("depth texture");if(flags&FLAG_BUFFER_BINDGROUP_CHANGED)updates.push("buffer"); +if(flags&FLAG_SCISSOR_CHANGED)updates.push("scissor");let str="";if(updates.length>0)str+=`(Updated ${updates.join(", ")}) `;if((flags&FLAG_DRAWING_POINTS)!==0)str+=`Drawing ${this._drawIndexCount/6} points`;else str+=`Drawing ${this._drawIndexCount/6} quads`;DebugLog(str)}const renderPass=this._currentRenderPass;if((flags&FLAG_DRAW_STATE_CHANGED)!==0){const rt=this._currentRenderTarget;renderPass["setViewport"](0,0,rt.GetWidth(),rt.GetHeight(),0,1);renderPass["setIndexBuffer"](this._indexBuffer, +"uint16");renderPass["setVertexBuffer"](0,this._vertexBuffer);renderPass["setVertexBuffer"](1,this._texcoordBuffer);if((flags&(FLAG_COPLANAR_STENCIL_PASS|FLAG_COPLANAR_COLOR_PASS))!==0)renderPass["setStencilReference"](1);if((flags&FLAG_SCISSOR_ENABLED)!==0)this._DoSetRenderPassScissorRect(renderPass,this._scissorRect,rt)}if((flags&FLAG_PIPELINE_CHANGED)!==0){let variant=0;if((flags&FLAG_USE_NORMALIZED_COORDS)!==0)variant=4;else if((flags&FLAG_COPLANAR_STENCIL_PASS)!==0)variant=2;else if((flags&FLAG_COPLANAR_COLOR_PASS)!== +0)variant=3;else if((flags&(FLAG_DEPTH_ENABLED|FLAG_RENDERTARGET_HAS_DEPTH))===(FLAG_DEPTH_ENABLED|FLAG_RENDERTARGET_HAS_DEPTH))variant=1;renderPass["setPipeline"](this._currentProgram.GetRenderPipelineForState(this._currentBlendMode,variant,this._currentMultisampleCount))}if((flags&FLAG_BUFFER_BINDGROUP_CHANGED)!==0)renderPass["setBindGroup"](0,this._currentBufferBindGroup);if((flags&FLAG_TEX_BINDGROUP_CHANGED)!==0)renderPass["setBindGroup"](1,this._currentTextureBindGroup);if((flags&FLAG_BACKTEX_BINDGROUP_CHANGED)!== +0)renderPass["setBindGroup"](2,this._currentBackTextureBindGroup);if((flags&FLAG_DEPTHTEX_BINDGROUP_CHANGED)!==0)renderPass["setBindGroup"](3,this._currentDepthTextureBindGroup);if((flags&FLAG_SCISSOR_CHANGED)!==0){const rt=this._currentRenderTarget;if((flags&FLAG_SCISSOR_ENABLED)!==0)this._DoSetRenderPassScissorRect(renderPass,this._scissorRect,rt);else renderPass["setScissorRect"](0,0,rt.GetWidth(),rt.GetHeight())}renderPass["drawIndexed"](this._drawIndexCount,1,this._drawFirstIndex,0,0);this._flags&= +~END_DRAW_FLAGS_MASK}_DoSetRenderPassScissorRect(renderPass,scissorRect,renderTarget){const rtWidth=renderTarget.GetWidth();const rtHeight=renderTarget.GetHeight();let left=C3.clamp(scissorRect.getLeft(),0,rtWidth);let top=C3.clamp(scissorRect.getTop(),0,rtHeight);let right=C3.clamp(scissorRect.getRight(),left,rtWidth);let bottom=C3.clamp(scissorRect.getBottom(),top,rtHeight);if(Number.isNaN(left))left=0;if(Number.isNaN(top))top=0;if(Number.isNaN(right))right=rtWidth;if(Number.isNaN(bottom))bottom= +rtHeight;renderPass["setScissorRect"](left,top,right-left,bottom-top)}_BeginRenderPass(){const flags=this._flags;if((flags&CHANGED_UNIFORM_BUFFER_MASK)!==0)this._WriteUniformBuffers();let renderPassOpts=null;if((flags&FLAG_COPLANAR_STENCIL_PASS)!==0)renderPassOpts=this._GetCoplanarStencilRenderPassOpts();else if((flags&FLAG_COPLANAR_COLOR_PASS)!==0)renderPassOpts=this._GetCoplanarColorRenderPassOpts();else renderPassOpts=this._GetStandardRenderPassOpts();this._currentRenderPass=this._commandEncoder["beginRenderPass"](renderPassOpts); +this._flags|=NEW_RENDERPASS_FLAGS}_GetStandardRenderPassOpts(){const flags=this._flags;const currentRenderTarget=this._currentRenderTarget;const renderPassOpts={"colorAttachments":[{"view":currentRenderTarget._GetTextureView(),"loadOp":currentRenderTarget._IsAwaitingClear()?"clear":"load","clearValue":currentRenderTarget._GetClearColor().toJSON(),"storeOp":"store"}]};this._MaybeSetTimestampRenderPassOption(renderPassOpts);currentRenderTarget._SetIsAwaitingClear(false);if((flags&(FLAG_RENDERTARGET_HAS_DEPTH| +FLAG_DEPTH_ENABLED))===(FLAG_RENDERTARGET_HAS_DEPTH|FLAG_DEPTH_ENABLED)){renderPassOpts["depthStencilAttachment"]={"view":this._depthBufferView,"depthLoadOp":(flags&FLAG_CLEAR_DEPTH)!==0?"clear":"load","depthClearValue":1,"depthStoreOp":"store","stencilLoadOp":"clear","stencilClearValue":0,"stencilStoreOp":"discard"};this._flags&=~FLAG_CLEAR_DEPTH}if(DEBUG)DebugLog(`Starting render pass to ${currentRenderTarget.IsBackBuffer()?"backbuffer":"texture"}, depth ${renderPassOpts["depthStencilAttachment"]? +"enabled":"disabled"}, ${renderPassOpts["colorAttachments"][0]["loadOp"]==="load"?"continue":"clear"} color${renderPassOpts["depthStencilAttachment"]&&renderPassOpts["depthStencilAttachment"]["depthLoadOp"]!=="load"?", clear depth":""}`);return renderPassOpts}_GetCoplanarStencilRenderPassOpts(){const flags=this._flags;const renderPassOpts={"colorAttachments":[],"depthStencilAttachment":{"view":this._depthBufferView,"depthLoadOp":(flags&FLAG_CLEAR_DEPTH)!==0?"clear":"load","depthClearValue":1,"depthStoreOp":"store", +"stencilLoadOp":(flags&FLAG_CLEAR_STENCIL)!==0?"clear":"load","stencilClearValue":0,"stencilStoreOp":"store"}};this._MaybeSetTimestampRenderPassOption(renderPassOpts);this._flags&=~(FLAG_CLEAR_DEPTH|FLAG_CLEAR_STENCIL);if(DEBUG)DebugLog(`Starting coplanar stencil renderpass${renderPassOpts["depthStencilAttachment"]["depthLoadOp"]==="load"?"":", clear depth"}${renderPassOpts["depthStencilAttachment"]["stencilLoadOp"]==="load"?"":", clear stencil"}`);return renderPassOpts}_GetCoplanarColorRenderPassOpts(){const currentRenderTarget= +this._currentRenderTarget;const renderPassOpts={"colorAttachments":[{"view":currentRenderTarget._GetTextureView(),"loadOp":currentRenderTarget._IsAwaitingClear()?"clear":"load","clearValue":currentRenderTarget._GetClearColor().toJSON(),"storeOp":"store"}],"depthStencilAttachment":{"view":this._depthBufferView,"depthReadOnly":true,"stencilReadOnly":true}};this._MaybeSetTimestampRenderPassOption(renderPassOpts);currentRenderTarget._SetIsAwaitingClear(false);if(DEBUG)DebugLog(`Starting coplanar color renderpass to ${currentRenderTarget.IsBackBuffer()? +"backbuffer":"texture"}, ${renderPassOpts["colorAttachments"][0]["loadOp"]==="load"?"continue":"clear"} color`);return renderPassOpts}_MaybeSetTimestampRenderPassOption(renderPassOpts){if(!this._timestampIsMeasuring)return;const timestampWrites={"querySet":this._frameTimeQuerySet._GetQuerySet(),"endOfPassWriteIndex":this._timestampEndIndex};if(!this._timestampStartedIndices.has(this._timestampStartIndex)){timestampWrites["beginningOfPassWriteIndex"]=this._timestampStartIndex;this._timestampStartedIndices.add(this._timestampStartIndex)}renderPassOpts["timestampWrites"]= +timestampWrites}_MaybeDoPendingClearRenderPass(renderTarget){if(!renderTarget._IsAwaitingClear())return;this._MaybeEndRenderPass();const renderPass=this._commandEncoder["beginRenderPass"]({"colorAttachments":[{"view":renderTarget._GetTextureView(),"loadOp":"clear","clearValue":renderTarget._GetClearColor().toJSON(),"storeOp":"store"}]});renderPass["end"]();this._flags|=FLAG_DID_ADD_COMMAND;renderTarget._SetIsAwaitingClear(false)}_MaybeEndRenderPass(){if(this._currentRenderPass===null)return;this._MaybeEndDrawBatch(); +if(DEBUG)DebugLog(`Ending render pass (to ${this._currentRenderTarget.IsBackBuffer()?"backbuffer":"texture"})`);this._currentRenderPass["end"]();this._currentRenderPass=null}EndBatch(isFinish=false){this._MaybeEndRenderPass();if(this._frameTimeQuerySet&&isFinish){this._frameTimeQuerySet.Resolve(this._commandEncoder);this._flags|=FLAG_DID_ADD_COMMAND}if((this._flags&FLAG_DID_ADD_COMMAND)!==0){this._commandBuffers.push(this._commandEncoder["finish"]());this._CreateCommandEncoder()}if(this._commandBuffers.length=== +0)return;if(DEBUG)DebugLog(`Ending batch`);this._WriteBuffers();if(DEBUG)DebugLog(`Submitting ${this._commandBuffers.length} commands`);this._device["queue"]["submit"](this._commandBuffers);C3.clearArray(this._commandBuffers);this._bufferManager.AfterSubmit();if(this._frameTimeQuerySet&&isFinish){this._frameTimeQuerySet.ReadResult();this._frameTimeQuerySet=null}}_WriteBuffers(){const queue=this._device["queue"];if(this._quadPtr>0){const quads=this._quadPtr;if(DEBUG)DebugLog(`Writing vertex buffers`); +queue["writeBuffer"](this._vertexBuffer,0,this._vertexData.buffer,0,quads*12*SIZEOF_F32);queue["writeBuffer"](this._texcoordBuffer,0,this._texcoordData.buffer,0,quads*12*SIZEOF_F32);queue["writeBuffer"](this._colorBuffer,0,this._colorData.buffer,0,quads*4*SIZEOF_F32);this._quadPtr=0}if(this._pointPtr>0){if(DEBUG)DebugLog(`Writing point buffer`);queue["writeBuffer"](this._pointBuffer,0,this._pointData.buffer,0,this._pointPtr*SIZEOF_F32);this._pointPtr=0}}_UpdateTransformUniform(){this._flags|=FLAG_TRANSFORM_CHANGED| +FLAG_DID_CHANGE_TRANSFORM;this._MarkVertexUniformBufferRangeChanged(this._vertexUniformBufferLayout.transform)}_UpdatePointTexCoordsUniform(){const ul=this._vertexUniformBufferLayout.pointTex;this._currentPointTexCoords.writeToTypedArray(this._vertexUniformf32,ul.offset/4);this._MarkVertexUniformBufferRangeChanged(ul)}_UpdateZElevationUniform(){const ul=this._vertexUniformBufferLayout.zElevation;this._vertexUniformf32[ul.offset/4]=this._currentVertexZElevation;this._MarkVertexUniformBufferRangeChanged(ul)}_MarkVertexUniformBufferRangeChanged(layoutDesc){const startByte= +layoutDesc.offset;const endByte=layoutDesc.end;if((this._flags&FLAG_VERTEX_UNIFORM_CHANGED)!==0){this._vertexUniformUpdateStart=Math.min(this._vertexUniformUpdateStart,startByte);this._vertexUniformUpdateEnd=Math.max(this._vertexUniformUpdateEnd,endByte)}else{this._flags|=FLAG_VERTEX_UNIFORM_CHANGED;this._vertexUniformUpdateStart=startByte;this._vertexUniformUpdateEnd=endByte;this._MaybeEndRenderPass()}}_UpdateColor2Uniform(){this._UpdateFragmentUniformColor(this._currentColor2,this._fragUniformBufferLayout.color2)}_UpdatePointColorUniform(){this._UpdateFragmentUniformColor(this._currentPointColor, +this._fragUniformBufferLayout.pointColor)}_UpdateFragmentUniformColor(color,layoutDesc){color.writeToTypedArray(this._fragUniformf32,layoutDesc.offset/4);this._MarkFragUniformBufferRangeChanged(layoutDesc)}_UpdateFragmentUniformVec2(theVec2,layoutDesc){theVec2.writeToTypedArray(this._fragUniformf32,layoutDesc.offset/4);this._MarkFragUniformBufferRangeChanged(layoutDesc)}_MarkFragUniformBufferRangeChanged(layoutDesc){const startByte=layoutDesc.offset;const endByte=layoutDesc.end;if((this._flags&FLAG_FRAG_UNIFORM_CHANGED)!== +0){this._fragUniformUpdateStart=Math.min(this._fragUniformUpdateStart,startByte);this._fragUniformUpdateEnd=Math.max(this._fragUniformUpdateEnd,endByte)}else{this._flags|=FLAG_FRAG_UNIFORM_CHANGED;this._fragUniformUpdateStart=startByte;this._fragUniformUpdateEnd=endByte;this._MaybeEndRenderPass()}}_MaybeUpdateFragmentC3ParamsFloat(value,layoutDesc){if(this._fragC3Paramsf32[layoutDesc.offset/4]===Math.fround(value))return;this._fragC3Paramsf32[layoutDesc.offset/4]=value;this._MarkFragC3ParamsRangeChanged(layoutDesc)}_MaybeUpdateFragmentC3ParamsUint(value, +layoutDesc){if(this._fragC3Paramsu32[layoutDesc.offset/4]===value)return;this._fragC3Paramsu32[layoutDesc.offset/4]=value;this._MarkFragC3ParamsRangeChanged(layoutDesc)}_MaybeUpdateFragmentC3ParamsRect(rect,layoutDesc){if(rect.equalsF32Array(this._fragC3Paramsf32,layoutDesc.offset/4))return;rect.writeToTypedArray(this._fragC3Paramsf32,layoutDesc.offset/4);this._MarkFragC3ParamsRangeChanged(layoutDesc)}_MarkFragC3ParamsRangeChanged(layoutDesc){const startByte=layoutDesc.offset;const endByte=layoutDesc.end; +if((this._flags&FLAG_FRAG_C3PARAMS_CHANGED)!==0){this._fragC3ParamsUpdateStart=Math.min(this._fragC3ParamsUpdateStart,startByte);this._fragC3ParamsUpdateEnd=Math.max(this._fragC3ParamsUpdateEnd,endByte)}else{this._flags|=FLAG_FRAG_C3PARAMS_CHANGED;this._fragC3ParamsUpdateStart=startByte;this._fragC3ParamsUpdateEnd=endByte;this._MaybeEndRenderPass()}}_WriteUniformBuffers(){const flags=this._flags;if((flags&FLAG_TRANSFORM_CHANGED)!==0){if(DEBUG)DebugLog(`Updating transform`);mat4.multiply(this._matTransform, +this._matP,this._matMV);this._vertexUniformf32.set(this._matTransform,this._vertexUniformBufferLayout.transform.offset/4)}if((flags&FLAG_VERTEX_UNIFORM_CHANGED)!==0){if(DEBUG)DebugLog(`Updating vertex uniform buffer`);this._bufferManager.UpdateBufferSubData(this._commandEncoder,this._vertexUniformBuffer,this._vertexUniformArrayBuffer,this._vertexUniformUpdateStart,this._vertexUniformUpdateEnd-this._vertexUniformUpdateStart)}if((flags&FLAG_FRAG_UNIFORM_CHANGED)!==0){if(DEBUG)DebugLog(`Updating fragment uniform buffer`); +this._bufferManager.UpdateBufferSubData(this._commandEncoder,this._fragmentUniformBuffer,this._fragUniformArrayBuffer,this._fragUniformUpdateStart,this._fragUniformUpdateEnd-this._fragUniformUpdateStart)}if((flags&FLAG_FRAG_C3PARAMS_CHANGED)!==0){if(DEBUG)DebugLog(`Updating fragment C3Params buffer`);this._bufferManager.UpdateBufferSubData(this._commandEncoder,this._fragmentC3ParamsBuffer,this._fragC3ParamsArrayBuffer,this._fragC3ParamsUpdateStart,this._fragC3ParamsUpdateEnd-this._fragC3ParamsUpdateStart)}this._flags= +flags&~CHANGED_UNIFORM_BUFFER_MASK|FLAG_DID_ADD_COMMAND}CreateRenderTarget(opts){let width=this._width;let height=this._height;let isDefaultSize=true;if(opts){if(typeof opts.width==="number"){width=Math.floor(opts.width);isDefaultSize=false}if(typeof opts.height==="number"){height=Math.floor(opts.height);isDefaultSize=false}}if(width<=0||height<=0)throw new Error("invalid size");this.EndBatch();const renderTarget=C3.New(C3.Gfx.WebGPURenderTarget,this);renderTarget._Create(width,height,Object.assign({isDefaultSize}, +opts));return renderTarget}SetRenderTarget(renderTarget,updateProjection=true){if(renderTarget===null)renderTarget=this._backbufferRenderTarget;if(this._currentRenderTarget===renderTarget)return;this._MaybeEndRenderPass();this._currentRenderTarget=renderTarget;this._SetFlag(FLAG_RENDERTARGET_HAS_DEPTH,renderTarget.HasDepthBuffer());if(renderTarget.IsDefaultSize()&&!renderTarget.IsBackBuffer())renderTarget._Resize(this._width,this._height);if(updateProjection)this.SetDefaultRenderTargetProjectionState()}InvalidateRenderTarget(renderTarget){}GetRenderTarget(){if(this._currentRenderTarget=== +this._backbufferRenderTarget)return null;else return this._currentRenderTarget}GetRenderTargetSize(renderTarget){if(renderTarget===null)return[this._width,this._height];else return[renderTarget.GetWidth(),renderTarget.GetHeight()]}GetBackbufferRenderTarget(){return this._backbufferRenderTarget}DeleteRenderTarget(renderTarget){this.EndBatch();if(this._currentRenderTarget===renderTarget)this.SetRenderTarget(null);const renderTex=renderTarget.GetTexture();if(this._currentTexture===renderTex)this.SetTexture(null); +if(this._currentBackTexture===renderTex)this.SetBackTexture(null);renderTarget._Delete()}async ReadBackRenderTargetToImageData(renderTarget,forceSynchronous,areaRect){this._MaybeDoPendingClearRenderPass(renderTarget);this.EndBatch();if(renderTarget===null)renderTarget=this._backbufferRenderTarget;const device=this._device;const rtWidth=renderTarget.GetWidth();const rtHeight=renderTarget.GetHeight();let x=0;let y=0;let areaWidth=rtWidth;let areaHeight=rtHeight;if(areaRect){x=C3.clamp(Math.floor(areaRect.getLeft()), +0,rtWidth-1);y=C3.clamp(Math.floor(areaRect.getTop()),0,rtHeight-1);let w=areaRect.width();if(w===0)w=rtWidth-x;else w=C3.clamp(Math.floor(w),0,rtWidth-x);let h=areaRect.height();if(h===0)h=rtHeight-y;else h=C3.clamp(Math.floor(h),0,rtHeight-y);areaWidth=w;areaHeight=h}const commandEncoder=device["createCommandEncoder"]();const readbackTexture=renderTarget.GetTexture();let copyBufferFromTexture=readbackTexture._GetTexture();let convertedTexture=null;if(readbackTexture._GetFormat()==="rgba8unorm"){if(!readbackTexture.CanReadPixels())C3.NotYetImplemented()}else{convertedTexture= +this._ConvertTextureFormat(readbackTexture,"rgba8unorm",commandEncoder);copyBufferFromTexture=convertedTexture}const imageBytesPerRow=areaWidth*4;const bufferBytesPerRow=Math.ceil(imageBytesPerRow/256)*256;const readbackBuffer=device["createBuffer"]({"size":bufferBytesPerRow*areaHeight,"usage":GPUBufferUsage["MAP_READ"]|GPUBufferUsage["COPY_DST"]});commandEncoder["copyTextureToBuffer"]({"texture":copyBufferFromTexture,"origin":[x,y,0]},{"buffer":readbackBuffer,"bytesPerRow":bufferBytesPerRow},[areaWidth, +areaHeight,1]);const commandBuffer=commandEncoder["finish"]();device["queue"]["submit"]([commandBuffer]);if(convertedTexture)convertedTexture["destroy"]();await readbackBuffer["mapAsync"](self["GPUMapMode"]["READ"]);const srcArrayBuffer=readbackBuffer["getMappedRange"]().slice(0);let imageData;if(bufferBytesPerRow===imageBytesPerRow)imageData=new ImageData(new Uint8ClampedArray(srcArrayBuffer),areaWidth,areaHeight);else{const destArrayBuffer=new ArrayBuffer(imageBytesPerRow*areaHeight);const destArr= +new Uint8Array(destArrayBuffer);for(let y=0;y=2)return 4;else return 1}SetRenderingToMultisampleCount(multisampleCount){multisampleCount= +this._ClampToSupportedMultisampleValues(multisampleCount);if(this._currentMultisampleCount===multisampleCount)return;this._MaybeEndDrawBatch();this._currentMultisampleCount=multisampleCount;this._flags|=FLAG_PIPELINE_CHANGED}SetBlendMode(bm){if(bm===this._currentBlendMode)return;this._MaybeEndDrawBatch();this._currentBlendMode=bm;this._currentStateGroup=null;this._flags|=FLAG_PIPELINE_CHANGED}SetNamedBlendMode(bm){this.SetBlendMode(this.NamedBlendToNumber(bm))}SetAlphaBlend(){this.SetBlendMode(0)}SetCopyBlend(){this.SetBlendMode(3)}SetColorRgba(r, +g,b,a){const currentColor=this._currentColor;if(currentColor.equalsRgba(r,g,b,a))return;currentColor.setRgba(r,g,b,a);this._currentStateGroup=null}SetOpacity(a){const currentColor=this._currentColor;if(currentColor.getA()===a)return;currentColor.setA(a);this._currentStateGroup=null}GetOpacity(){return this._currentColor.getA()}SetColor(c){const currentColor=this._currentColor;if(currentColor.equals(c))return;currentColor.set(c);this._currentStateGroup=null}ResetColor(){this.SetColorRgba(1,1,1,1)}GetColor(){return this._currentColor}Rect(r){this.Rect2(r.getLeft(), +r.getTop(),r.getRight(),r.getBottom())}Rect2(left,top,right,bottom){this.Quad2(left,top,right,top,right,bottom,left,bottom)}Quad(quad){this.Quad4(quad,defaultTexCoordsQuad)}Quad2(tlx,tly,trx,try_,brx,bry,blx,bly){this._AddQuadToDrawBatch();const vd=this._vertexData;const qPtr=this._quadPtr++;let v=qPtr*12;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]=z;vd[v++]=trx;vd[v++]=try_;vd[v++]=z;vd[v++]=brx;vd[v++]=bry;vd[v++]=z;vd[v++]=blx;vd[v++]=bly;vd[v]=z;defaultTexCoordsQuad.writeToTypedArray3D(this._texcoordData, +qPtr*12,this._currentMultiTextureIndex);this._currentColor.writeToTypedArray(this._colorData,qPtr*4)}Quad3(quad,rcTex){this._AddQuadToDrawBatch();const qPtr=this._quadPtr++;quad.writeToTypedArray3D(this._vertexData,qPtr*12,this._baseZ+this._currentZ);rcTex.writeAsQuadToTypedArray3D(this._texcoordData,qPtr*12,this._currentMultiTextureIndex);this._currentColor.writeToTypedArray(this._colorData,qPtr*4)}Quad4(quad,uv){this._AddQuadToDrawBatch();const qPtr=this._quadPtr++;quad.writeToTypedArray3D(this._vertexData, +qPtr*12,this._baseZ+this._currentZ);uv.writeToTypedArray3D(this._texcoordData,qPtr*12,this._currentMultiTextureIndex);this._currentColor.writeToTypedArray(this._colorData,qPtr*4)}Quad3D(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,rcTex){this._AddQuadToDrawBatch();const vd=this._vertexData;const qPtr=this._quadPtr++;let v=qPtr*12;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]=z+tlz;vd[v++]=trx;vd[v++]=try_;vd[v++]=z+trz;vd[v++]=brx;vd[v++]=bry;vd[v++]=z+brz;vd[v++]=blx;vd[v++]= +bly;vd[v]=z+blz;rcTex.writeAsQuadToTypedArray3D(this._texcoordData,qPtr*12,this._currentMultiTextureIndex);this._currentColor.writeToTypedArray(this._colorData,qPtr*4)}Quad3D2(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,uv){this._AddQuadToDrawBatch();const vd=this._vertexData;const qPtr=this._quadPtr++;let v=qPtr*12;const z=this._baseZ+this._currentZ;vd[v++]=tlx;vd[v++]=tly;vd[v++]=z+tlz;vd[v++]=trx;vd[v++]=try_;vd[v++]=z+trz;vd[v++]=brx;vd[v++]=bry;vd[v++]=z+brz;vd[v++]=blx;vd[v++]=bly;vd[v]= +z+blz;uv.writeToTypedArray3D(this._texcoordData,qPtr*12,this._currentMultiTextureIndex);this._currentColor.writeToTypedArray(this._colorData,qPtr*4)}DrawMesh(posArr,uvArr,indexArr){const vd=this._vertexData;const td=this._texcoordData;const cd=this._colorData;if(indexArr.length%3!==0)throw new Error("invalid index buffer length");const currentMultiTextureIndex=this._currentMultiTextureIndex;const currentColor=this._currentColor;const currentColorR=currentColor.getR();const currentColorG=currentColor.getG(); +const currentColorB=currentColor.getB();const currentColorA=currentColor.getA();for(let i=0,len=indexArr.length;i0)this._MaybeEndDrawBatch();this._flags&=~FLAG_DRAWING_POINTS}Point(x,y,size,opacity){let p=this._pointPtr;if(p>LAST_POINT_PTR){this.EndBatch();p=0}if((this._flags&FLAG_IN_DRAW)!==0)this._drawIndexCount+=6;else{if(this._currentRenderPass===null)this._BeginRenderPass();this._flags|=FLAG_IN_DRAW;this._drawFirstIndex=p/4*6;this._drawIndexCount=6}const pd=this._pointData;pd[p++]=x;pd[p++]=y;pd[p++]= +size;pd[p++]=opacity;this._pointPtr=p}SetGradientColor(c){if(this._currentColor2.equals(c))return;this._currentColor2.copy(c);this._UpdateColor2Uniform()}SetEllipseParams(pixelW,pixelH,outlineThickness=1){const fubl=this._fragUniformBufferLayout;const f32arr=this._fragUniformf32;tempVec2.set(pixelW,pixelH);if(!tempVec2.equalsF32Array(f32arr,fubl.pixelSize.offset/4))this._UpdateFragmentUniformVec2(tempVec2,fubl.pixelSize);if(f32arr[fubl.outlineThickness.offset/4]!==Math.fround(outlineThickness)){f32arr[fubl.outlineThickness.offset/ +4]=outlineThickness;this._MarkFragUniformBufferRangeChanged(fubl.outlineThickness)}}SetTilemapInfo(srcRect,textureWidth,textureHeight,tileWidth,tileHeight,tileSpacingX,tileSpacingY){const fubl=this._fragUniformBufferLayout;const f32arr=this._fragUniformf32;if(!srcRect.equalsF32Array(f32arr,fubl.srcRect.offset/4)){srcRect.writeToTypedArray(f32arr,fubl.srcRect.offset/4);this._MarkFragUniformBufferRangeChanged(fubl.srcRect)}tempVec2.set(tileWidth/textureWidth,tileHeight/textureHeight);if(!tempVec2.equalsF32Array(f32arr, +fubl.tileSize.offset/4))this._UpdateFragmentUniformVec2(tempVec2,fubl.tileSize);tempVec2.set(tileSpacingX/textureWidth,tileSpacingY/textureHeight);if(!tempVec2.equalsF32Array(f32arr,fubl.tileSpacing.offset/4))this._UpdateFragmentUniformVec2(tempVec2,fubl.tileSpacing)}SetTileRandomizationInfo(textureWidth,textureHeight,xRandom,yRandom,angleRandom,blendMarginX,blendMarginY){const fubl=this._fragUniformBufferLayout;const f32arr=this._fragUniformf32;tempVec2.set(xRandom,yRandom);if(!tempVec2.equalsF32Array(f32arr, +fubl.tileSize.offset/4))this._UpdateFragmentUniformVec2(tempVec2,fubl.tileSize);if(f32arr[fubl.outlineThickness.offset/4]!==Math.fround(angleRandom)){f32arr[fubl.outlineThickness.offset/4]=angleRandom;this._MarkFragUniformBufferRangeChanged(fubl.outlineThickness)}tempVec2.set(blendMarginX,blendMarginY);if(!tempVec2.equalsF32Array(f32arr,fubl.tileSpacing.offset/4))this._UpdateFragmentUniformVec2(tempVec2,fubl.tileSpacing)}SetProgramParameters(backTexture,destRect,srcRect,srcOriginRect,layoutRect,pixelWidth, +pixelHeight,dpr,layerScale,layerAngle,time){const fubl=this._fragC3ParamsLayout;const currentProgram=this._currentProgram;time=time%10800;if(currentProgram.BlendsBackground())this.SetBackTexture(backTexture);if(currentProgram.UsesAnyC3ParamRect()){this._MaybeUpdateFragmentC3ParamsRect(destRect,fubl.destRect);this._MaybeUpdateFragmentC3ParamsRect(srcRect,fubl.srcRect);this._MaybeUpdateFragmentC3ParamsRect(srcOriginRect,fubl.srcOriginRect);this._MaybeUpdateFragmentC3ParamsRect(layoutRect,fubl.layoutRect)}this._MaybeUpdateFragmentC3ParamsFloat(dpr, +fubl.devicePixelRatio);this._MaybeUpdateFragmentC3ParamsFloat(layerScale,fubl.layerScale);this._MaybeUpdateFragmentC3ParamsFloat(layerAngle,fubl.layerAngle);this._MaybeUpdateFragmentC3ParamsFloat(time,fubl.seconds);this._MaybeUpdateFragmentC3ParamsFloat(this.GetNearZ(),fubl.zNear);this._MaybeUpdateFragmentC3ParamsFloat(this.GetFarZ(),fubl.zFar)}SetProgramCustomParameters(params){if(!params)return;if(params.IsChanged()){this._MaybeEndRenderPass();params.UpdateBuffer(this._commandEncoder)}this._SetBufferBindGroup(params.GetBufferBindGroup())}SetProgramParameter_IsSrcTexRotated(isRotated){this._MaybeUpdateFragmentC3ParamsUint(isRotated? +1:0,this._fragC3ParamsLayout.isSrcTexRotated)}_SetBufferBindGroup(bindGroup){if(bindGroup===this._currentBufferBindGroup)return;this._MaybeEndDrawBatch();this._currentBufferBindGroup=bindGroup;this._flags|=FLAG_BUFFER_BINDGROUP_CHANGED}_OnBufferBindGroupDestroyed(bufferBindGroup){if(this._currentBufferBindGroup===bufferBindGroup)this._SetBufferBindGroup(this._defaultBufferBindGroup)}CopyRenderTarget(renderTarget){if(renderTarget._IsAwaitingClear()){this._currentRenderTarget._SetIsAwaitingClear(true); +this._currentRenderTarget._GetClearColor().set(renderTarget._GetClearColor());return}if(renderTarget.GetMultisampling()>=2&&this._currentRenderTarget.GetMultisampling()<2){this._ResolveMultisampledRenderTarget(renderTarget);return}this.ClearRgba(0,0,0,0);this.SetCopyBlend();this.ResetColor();this.DrawRenderTarget(renderTarget)}DrawRenderTarget(renderTarget){this._MaybeDoPendingClearRenderPass(renderTarget);const tex=renderTarget.GetTexture();this.SetTexture(tex);this.FullscreenQuad()}FullscreenQuad(){const isNormalized= +this.IsNormalizedCoordsProgramVariant();if(!isNormalized)this.SetNormalizedCoordsProgramVariant(true);this.SetCurrentZ(0);const quad=tempQuad;const tex=tempRect;quad.set(0,-1,0,-1,2,1,0,1);tex.set(0,-1,2,1);this.Quad3(quad,tex);if(!isNormalized)this.SetNormalizedCoordsProgramVariant(false)}_ResolveMultisampledRenderTarget(renderTarget){this._MaybeDoPendingClearRenderPass(renderTarget);this._MaybeEndRenderPass();const passEncoder=this._commandEncoder["beginRenderPass"]({"colorAttachments":[{"view":renderTarget.GetTexture()._GetTextureView(), +"resolveTarget":this._currentRenderTarget.GetTexture()._GetTextureView(),"loadOp":"load","storeOp":"store"}]});passEncoder["end"]();this._flags|=FLAG_DID_ADD_COMMAND}CoplanarStartStencilPass(){this._MaybeEndRenderPass();this.SetDepthEnabled(true);this._flags|=FLAG_COPLANAR_STENCIL_PASS|FLAG_CLEAR_STENCIL}CoplanarStartColorPass(){this._MaybeEndRenderPass();this.SetDepthEnabled(false);this._flags&=~FLAG_COPLANAR_STENCIL_PASS;this._flags|=FLAG_COPLANAR_COLOR_PASS}IsCoplanarColorPass(){return this._IsFlagSet(FLAG_COPLANAR_COLOR_PASS)}CoplanarRestoreStandardRendering(){this._MaybeEndRenderPass(); +this.SetDepthEnabled(true);this._flags&=~FLAG_COPLANAR_COLOR_PASS}_InitBlendModes(){this._InitBlendModeData([["normal","one","one-minus-src-alpha"],["additive","one","one"],["xor","one","one-minus-src-alpha"],["copy","one","zero"],["destination-over","one-minus-dst-alpha","one"],["source-in","dst-alpha","zero"],["destination-in","zero","src-alpha"],["source-out","one-minus-dst-alpha","zero"],["destination-out","zero","one-minus-src-alpha"],["source-atop","dst-alpha","one-minus-src-alpha"],["destination-atop", +"one-minus-dst-alpha","src-alpha"]])}GetAvailableAdapterFeatures(){return this._adapter?[...this._adapter["features"]]:[]}GetAdapterInfo(){return this._adapterInfo}GetAdapterInfoString(){const adapterInfo=this._adapterInfo;if(!adapterInfo)return"unknown/unknown";const vendor=adapterInfo["vendor"]||"unknown";const architecture=adapterInfo["architecture"]||"unknown";const extraInfo=[];if(adapterInfo["device"])extraInfo.push(adapterInfo["device"]);if(adapterInfo["description"])extraInfo.push(adapterInfo["description"]); +if(adapterInfo["type"])extraInfo.push(adapterInfo["type"]);if(adapterInfo["backend"])extraInfo.push(adapterInfo["backend"]);const extraString=extraInfo.length>0?` (${extraInfo.join(", ")})`:"";return vendor+"/"+architecture+extraString}}; + +} + +// ../lib/gfx/webgpu/bufferManager.js +{ +'use strict';const C3=self.C3;const ENABLE_RECYCLING=true; +C3.Gfx.WebGPUBufferManager=class WebGPUBufferManager{constructor(renderer){this._renderer=renderer;this._buffers=new Map;this._recycleAfterSubmit=[];this._releaseAfterSubmit=[];this._destroyAfterSubmit=[];this._totalBufferCount=0;this._totalBufferSize=0;this._totalCreated=0;this._totalReleased=0;this._totalReturned=0;this._totalRecycled=0}GetRenderer(){return this._renderer}OnContextLost(){this._buffers.clear();C3.clearArray(this._recycleAfterSubmit);C3.clearArray(this._releaseAfterSubmit);C3.clearArray(this._destroyAfterSubmit)}_RoundBufferSizeClass(byteCount){return Math.max(C3.nextHighestPowerOfTwo(byteCount), +16)}GetRecyclableBuffer(byteCount){this._totalReturned++;const sizeClass=this._RoundBufferSizeClass(byteCount);if(ENABLE_RECYCLING){const arr=this._buffers.get(sizeClass);if(typeof arr!=="undefined"&&arr.length>0){const ret=arr.pop();ret.MarkInUse();if(arr.length===0)this._buffers.delete(sizeClass);return ret}}this._totalBufferCount++;this._totalBufferSize+=sizeClass;this._totalCreated++;return C3.New(C3.Gfx.WebGPURecyclableBuffer,this,sizeClass)}_AddRecycledBuffer(recyclableBuffer){this._totalRecycled++; +const sizeClass=recyclableBuffer.GetSize();const arr=this._buffers.get(sizeClass);if(typeof arr==="undefined")this._buffers.set(sizeClass,[recyclableBuffer]);else arr.push(recyclableBuffer)}_DestroyAfterSubmit(buffer){this._destroyAfterSubmit.push(buffer)}AfterSubmit(){for(const rcBuf of this._recycleAfterSubmit)rcBuf.Recycle();C3.clearArray(this._recycleAfterSubmit);for(const rcBuf of this._releaseAfterSubmit){this._totalBufferCount--;this._totalBufferSize-=rcBuf.GetSize();rcBuf.Release()}C3.clearArray(this._releaseAfterSubmit); +for(const buf of this._destroyAfterSubmit)buf["destroy"]();C3.clearArray(this._destroyAfterSubmit)}MaybeCollectUnusedBuffers(frameNumber){if(frameNumber%30===0)this._CollectUnusedBuffers(frameNumber)}_CollectUnusedBuffers(frameNumber){for(const [sizeClass,arr]of this._buffers.entries()){let j=0;for(let i=0,len=arr.length;i, + pointTexStart : vec2, + pointTexEnd : vec2, + zElevation : f32 +}; +@binding(0) @group(0) var uniforms : Uniforms; +`;const vubLayout={transform:{offset:0,size:SIZEOF_MAT4_F32,end:0},pointTex:{offset:64,size:SIZEOF_VEC4_F32,end:0},pointTexStart:{offset:64,size:SIZEOF_VEC2_F32,end:0},pointTexEnd:{offset:72,size:SIZEOF_VEC2_F32,end:0},zElevation:{offset:80,size:SIZEOF_F32,end:0}};UpdateLayoutEndValues(vubLayout);const vubSize=vubLayout.zElevation.end;const fragmentUniformBufferDeclaration=` +struct Uniforms { + color2 : vec4, + pointColor : vec4, + tileSize : vec2, + tileSpacing : vec2, + srcRectStart : vec2, + srcRectEnd : vec2, + pixelSize : vec2, + outlineThickness : f32 +}; +@binding(1) @group(0) var uniforms : Uniforms; +`;const fubLayout={color2:{offset:0,size:SIZEOF_VEC4_F32,end:0},pointColor:{offset:16,size:SIZEOF_VEC4_F32,end:0},tileSize:{offset:32,size:SIZEOF_VEC2_F32,end:0},tileSpacing:{offset:40,size:SIZEOF_VEC2_F32,end:0},srcRect:{offset:48,size:SIZEOF_VEC4_F32,end:0},srcRectStart:{offset:48,size:SIZEOF_VEC2_F32,end:0},srcRectEnd:{offset:56,size:SIZEOF_VEC2_F32,end:0},pixelSize:{offset:64,size:SIZEOF_VEC2_F32,end:0},outlineThickness:{offset:72,size:SIZEOF_F32,end:0}};UpdateLayoutEndValues(fubLayout); +const fubSize=fubLayout.outlineThickness.end;const c3ParamsUniformBufferDeclaration=` +struct C3Params { + srcStart : vec2, + srcEnd : vec2, + srcOriginStart : vec2, + srcOriginEnd : vec2, + layoutStart : vec2, + layoutEnd : vec2, + destStart : vec2, + destEnd : vec2, + devicePixelRatio : f32, + layerScale : f32, + layerAngle : f32, + seconds : f32, + zNear : f32, + zFar : f32, + isSrcTexRotated : u32 +}; +@binding(4) @group(0) var c3Params : C3Params; + +fn c3_srcToNorm(p : vec2) -> vec2 +{ + return (p - c3Params.srcStart) / (c3Params.srcEnd - c3Params.srcStart); +} + +fn c3_normToSrc(p : vec2) -> vec2 +{ + return fma(p, c3Params.srcEnd - c3Params.srcStart, c3Params.srcStart); +} + +fn c3_clampToSrc(p : vec2) -> vec2 +{ + return clamp(p, min(c3Params.srcStart, c3Params.srcEnd), max(c3Params.srcStart, c3Params.srcEnd)); +} + +fn c3_srcOriginToNorm(p : vec2) -> vec2 +{ + return (p - c3Params.srcOriginStart) / (c3Params.srcOriginEnd - c3Params.srcOriginStart); +} + +fn c3_normToSrcOrigin(p : vec2) -> vec2 +{ + return fma(p, c3Params.srcOriginEnd - c3Params.srcOriginStart, c3Params.srcOriginStart); +} + +fn c3_clampToSrcOrigin(p : vec2) -> vec2 +{ + return clamp(p, min(c3Params.srcOriginStart, c3Params.srcOriginEnd), max(c3Params.srcOriginStart, c3Params.srcOriginEnd)); +} + +fn c3_getLayoutPos(p : vec2) -> vec2 +{ + return fma(p - c3Params.srcOriginStart, (c3Params.layoutEnd - c3Params.layoutStart) / (c3Params.srcOriginEnd - c3Params.srcOriginStart), c3Params.layoutStart); +} + +fn c3_srcToDest(p : vec2) -> vec2 +{ + return fma(p - c3Params.srcStart, (c3Params.destEnd - c3Params.destStart) / (c3Params.srcEnd - c3Params.srcStart), c3Params.destStart); +} + +fn c3_clampToDest(p : vec2) -> vec2 +{ + return clamp(p, min(c3Params.destStart, c3Params.destEnd), max(c3Params.destStart, c3Params.destEnd)); +} + +fn c3_linearizeDepth(depthSample : f32) -> f32 +{ + return c3Params.zNear * c3Params.zFar / (c3Params.zFar + depthSample * (c3Params.zNear - c3Params.zFar)); +} +`;const C3PARAMS_TERMS_REFERENCING_SRC_RECTS=["srcStart","srcEnd","srcOriginStart","srcOriginEnd","c3_srcToNorm","c3_normToSrc","c3_clampToSrc","c3_srcOriginToNorm","c3_normToSrcOrigin","c3_clampToSrcOrigin","c3_getLayoutPos","c3_srcToDest"];const C3PARAMS_TERMS_REFERENCING_OTHER_RECTS=["layoutStart","layoutEnd","destStart","destEnd","c3_clampToDest"]; +const c3ParamsLayout={srcRect:{offset:0,size:SIZEOF_VEC4_F32,end:0},srcStart:{offset:0,size:SIZEOF_VEC2_F32,end:0},srcEnd:{offset:8,size:SIZEOF_VEC2_F32,end:0},srcOriginRect:{offset:16,size:SIZEOF_VEC4_F32,end:0},srcOriginStart:{offset:16,size:SIZEOF_VEC2_F32,end:0},srcOriginEnd:{offset:24,size:SIZEOF_VEC2_F32,end:0},layoutRect:{offset:32,size:SIZEOF_VEC4_F32,end:0},layoutStart:{offset:32,size:SIZEOF_VEC2_F32,end:0},layoutEnd:{offset:40,size:SIZEOF_VEC2_F32,end:0},destRect:{offset:48,size:SIZEOF_VEC4_F32, +end:0},destStart:{offset:48,size:SIZEOF_VEC2_F32,end:0},destEnd:{offset:56,size:SIZEOF_VEC2_F32,end:0},devicePixelRatio:{offset:64,size:SIZEOF_F32,end:0},layerScale:{offset:68,size:SIZEOF_F32,end:0},layerAngle:{offset:72,size:SIZEOF_F32,end:0},seconds:{offset:76,size:SIZEOF_F32,end:0},zNear:{offset:80,size:SIZEOF_F32,end:0},zFar:{offset:84,size:SIZEOF_F32,end:0},isSrcTexRotated:{offset:88,size:SIZEOF_U32,end:0}};UpdateLayoutEndValues(c3ParamsLayout);const c3ParamsSize=c3ParamsLayout.isSrcTexRotated.end; +const fragmentInputStructDeclaration=` +struct FragmentInput { + @location(0) fragUV : vec2, + @location(1) fragColor : vec4, + @builtin(position) fragPos : vec4 +}; + +fn c3_getBackUV(fragPos : vec2, texBack : texture_2d) -> vec2 +{ + return fragPos / vec2(textureDimensions(texBack)); +} + +fn c3_getDepthUV(fragPos : vec2, texDepth : texture_depth_2d) -> vec2 +{ + return fragPos / vec2(textureDimensions(texDepth)); +} +`;const fragmentOutputStructDeclaration=` +struct FragmentOutput { + @location(0) color : vec4 +}; +`;const shaderCustomParamSizes=new Map([["float",4],["percent",4],["color",12]]);const shaderCustomParamAlignSizes=new Map([["float",4],["percent",4],["color",16]]);const c3WGSLUtilityFunctionsLib=` +fn c3_premultiply(c : vec4) -> vec4 +{ + return vec4(c.rgb * c.a, c.a); +} + +fn c3_unpremultiply(c : vec4) -> vec4 +{ + if (c.a == 0.0) + { + return vec4(0.0); + } + + return vec4(c.rgb / c.a, c.a); +} + +fn c3_grayscale(rgb : vec3) -> f32 +{ + return dot(rgb, vec3(0.299, 0.587, 0.114)); +} + +fn c3_getPixelSize(t : texture_2d) -> vec2 +{ + return vec2(1.0) / vec2(textureDimensions(t)); +} + +fn c3_clamp2(v : vec2, l : f32, u : f32) -> vec2 +{ + return clamp(v, vec2(l), vec2(u)); +} + +fn c3_mod(x : f32, y : f32) -> f32 +{ + return x - y * floor(x / y); +} + +fn c3_mod2(x : vec2, y : vec2) -> vec2 +{ + return x - y * floor(x / y); +} + +fn c3_RGBtoHSL(color : vec3) -> vec3 +{ + var hsl : vec3 = vec3(0.0); + + var fmin : f32 = min(min(color.r, color.g), color.b); + var fmax : f32 = max(max(color.r, color.g), color.b); + var delta : f32 = fmax - fmin; + + hsl.z = (fmax + fmin) / 2.0; + + if (delta == 0.0) + { + hsl.x = 0.0; + hsl.y = 0.0; + } + else + { + if (hsl.z < 0.5) + { + hsl.y = delta / (fmax + fmin); + } + else + { + hsl.y = delta / (2.0 - fmax - fmin); + } + + var dR : f32 = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; + var dG : f32 = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; + var dB : f32 = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + + if (color.r == fmax) + { + hsl.x = dB - dG; + } + else if (color.g == fmax) + { + hsl.x = (1.0 / 3.0) + dR - dB; + } + else if (color.b == fmax) + { + hsl.x = (2.0 / 3.0) + dG - dR; + } + + if (hsl.x < 0.0) + { + hsl.x = hsl.x + 1.0; + } + else if (hsl.x > 1.0) + { + hsl.x = hsl.x - 1.0; + } + } + + return hsl; +} + +fn c3_hueToRGB(f1 : f32, f2 : f32, hue_ : f32) -> f32 +{ + var hue : f32 = hue_; + if (hue < 0.0) + { + hue = hue + 1.0; + } + else if (hue > 1.0) + { + hue = hue - 1.0; + } + + var ret : f32; + + if ((6.0 * hue) < 1.0) + { + ret = f1 + (f2 - f1) * 6.0 * hue; + } + else if ((2.0 * hue) < 1.0) + { + ret = f2; + } + else if ((3.0 * hue) < 2.0) + { + ret = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + } + else + { + ret = f1; + } + + return ret; +} + +fn c3_HSLtoRGB(hsl : vec3) -> vec3 +{ + var rgb : vec3 = vec3(hsl.z); + + if (hsl.y != 0.0) + { + var f2 : f32; + + if (hsl.z < 0.5) + { + f2 = hsl.z * (1.0 + hsl.y); + } + else + { + f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + } + + var f1 : f32 = 2.0 * hsl.z - f2; + + rgb.r = c3_hueToRGB(f1, f2, hsl.x + (1.0 / 3.0)); + rgb.g = c3_hueToRGB(f1, f2, hsl.x); + rgb.b = c3_hueToRGB(f1, f2, hsl.x - (1.0 / 3.0)); + } + + return rgb; +} +`; +C3.Gfx.WebGPUShaderProgram=class WebGPUShaderProgram extends C3.Gfx.ShaderProgramBase{constructor(renderer,shaderInfo){super(renderer,shaderInfo);this._fragmentModule=shaderInfo.fragmentModule;this._fragmentModuleFragDepth=shaderInfo.fragmentModuleFragDepth;this._vertexModule=shaderInfo.vertexModule;this._normVertexModule=shaderInfo.normVertexModule;this._renderPipelines=makeNullFilledArray(55);this._multisampleRenderPipelines=new Map;this._mipmapPipelineCache=new Map;this._usesAnyC3ParamRect=false;this._usesIsSrcTexRotated= +false;this._parameters=[];this._customParamsByteSize=0;if(shaderInfo.parameters){let currentOffset=0;for(const p of shaderInfo.parameters){const type=p[2];if(!shaderCustomParamSizes.has(type))throw new Error(`unrecognized effect param type '${type}'`);const paramSize=shaderCustomParamSizes.get(type);const paramAlignSize=shaderCustomParamAlignSizes.get(type);const alignDiff=currentOffset%paramAlignSize;if(alignDiff!==0)currentOffset+=paramAlignSize-alignDiff;this._parameters.push({type,offset:currentOffset, +size:paramSize,end:currentOffset+paramSize});currentOffset+=paramSize}this._customParamsByteSize=Math.ceil(currentOffset/16)*16}}static async Create(renderer,shaderInfo){const device=renderer._GetDevice();const name=shaderInfo.name;const supportsF16=renderer.SupportsF16();const originalSrc=shaderInfo.src;const fragmentSrc=C3.Gfx.WebGPUShaderProgram._PreprocessFragmentShaderCode(originalSrc,supportsF16);const fragmentModule=device["createShaderModule"]({"label":name,"code":fragmentSrc});let fragmentModuleFragDepth= +null;if(shaderInfo.srcFragDepth){const fragmentSrcFragDepth=C3.Gfx.WebGPUShaderProgram._PreprocessFragmentShaderCode(shaderInfo.srcFragDepth,supportsF16);fragmentModuleFragDepth=device["createShaderModule"]({"label":name,"code":fragmentSrcFragDepth})}fragmentModule["getCompilationInfo"]().then(compilationInfo=>C3.Gfx.WebGPUShaderProgram.ReportShaderCompilationInfo(name,"fragment",compilationInfo));let vertexModule;const vertexSrc=C3.Gfx.WebGPUShaderProgram._PreprocessVertexShaderCode(shaderInfo.vertexSrc, +supportsF16);if(vertexSrc){vertexModule=device["createShaderModule"]({"label":name,"code":vertexSrc});vertexModule["getCompilationInfo"]().then(compilationInfo=>C3.Gfx.WebGPUShaderProgram.ReportShaderCompilationInfo(name,"vertex",compilationInfo))}else vertexModule=renderer._GetDefaultVertexModule();let normVertexModule;const normVertexSrc=C3.Gfx.WebGPUShaderProgram._PreprocessVertexShaderCode(shaderInfo.normVertexSrc,supportsF16);if(normVertexSrc){normVertexModule=device["createShaderModule"]({"label":name, +"code":normVertexSrc});normVertexModule["getCompilationInfo"]().then(compilationInfo=>C3.Gfx.WebGPUShaderProgram.ReportShaderCompilationInfo(name,"vertex (norm)",compilationInfo))}else normVertexModule=renderer._GetNormalizedVertexModule();const ret=C3.New(C3.Gfx.WebGPUShaderProgram,renderer,Object.assign({fragmentModule,fragmentModuleFragDepth,vertexModule,normVertexModule},shaderInfo));ret._usesAnySrcRectOrPixelSize=originalSrc.includes("%%C3PARAMS_STRUCT%%")&&C3PARAMS_TERMS_REFERENCING_SRC_RECTS.some(t=> +originalSrc.includes(t));ret._usesAnyC3ParamRect=ret._usesAnySrcRectOrPixelSize||originalSrc.includes("%%C3PARAMS_STRUCT%%")&&C3PARAMS_TERMS_REFERENCING_OTHER_RECTS.some(t=>originalSrc.includes(t));ret._usesIsSrcTexRotated=originalSrc.includes("%%C3PARAMS_STRUCT%%")&&originalSrc.includes("isSrcTexRotated");if(name!==""){const crpNoDepthPromise=ret._CreateRenderPipelineAsync(0,0,0);let crpDepthPromise=null;if(renderer.UsesDepthBuffer())crpDepthPromise=ret._CreateRenderPipelineAsync(0, +1,0);const [rpNoDepth,rpDepth]=await Promise.all([crpNoDepthPromise,crpDepthPromise]);ret._renderPipelines[0]=rpNoDepth;if(rpDepth)ret._renderPipelines[1]=rpDepth}return ret}static _PreprocessShaderCode(src,supportsF16){if(!src)return src;let prefix="";if(supportsF16)prefix=`enable f16; +alias f16or32 = f16; +`;else prefix="alias f16or32 = f32;\n";return prefix+src}static _PreprocessFragmentShaderCode(src,supportsF16){src=C3.Gfx.WebGPUShaderProgram._PreprocessShaderCode(src,supportsF16);return C3.StringSubstituteMap(src,{"%%SAMPLERFRONT_BINDING%%":"@binding(0) @group(1)","%%TEXTUREFRONT_BINDING%%":"@binding(1) @group(1)","%%SAMPLERBACK_BINDING%%":"@binding(0) @group(2)","%%TEXTUREBACK_BINDING%%":"@binding(1) @group(2)","%%SAMPLERDEPTH_BINDING%%":"@binding(0) @group(3)","%%TEXTUREDEPTH_BINDING%%":"@binding(1) @group(3)", +"%%SHADERPARAMS_BINDING%%":"@binding(5) @group(0)","%%FRAGMENTINPUT_STRUCT%%":fragmentInputStructDeclaration,"%%FRAGMENTOUTPUT_STRUCT%%":fragmentOutputStructDeclaration,"%%C3PARAMS_STRUCT%%":c3ParamsUniformBufferDeclaration,"%%C3_UTILITY_FUNCTIONS%%":c3WGSLUtilityFunctionsLib})}static _PreprocessVertexShaderCode(src,supportsF16){return C3.Gfx.WebGPUShaderProgram._PreprocessShaderCode(src,supportsF16)}static ReportShaderCompilationInfo(name,shaderType,compilationInfo){for(const message of compilationInfo["messages"]){const logStr= +`[WebGPU] Message (${message["type"]}) compiling ${shaderType} shader '${name}': ${message["message"]} (line ${message["lineNum"]}, pos ${message["linePos"]})`;if(message.type==="error")console.error(logStr);else if(message.type==="warning")console.warn(logStr);else console.log(logStr)}}Release(){this._fragmentModule=null;this._fragmentModuleFragDepth=null;this._vertexModule=null;this._normVertexModule=null;for(let i=0,len=this._renderPipelines.length;i=this._parameters.length)return null;return this._parameters[paramIndex].type}GetCustomParametersByteSize(){return this._customParamsByteSize}_GetCustomParameterInfo(paramIndex){return this._parameters[paramIndex]}_GetRenderPipelineDescriptor(blendMode, +variant,multisampleCount){const [srcBlend,destBlend]=this._renderer._GetBlendByIndex(blendMode);const ret={"label":`${this.GetName()} blendMode ${blendMode} variant ${variant} multisampleCount ${multisampleCount}`,"layout":this._GetPipelineLayout(),"vertex":{"module":variant===4?this._normVertexModule:this._vertexModule,"entryPoint":"main","buffers":[{"arrayStride":3*SIZEOF_F32,"attributes":[{"shaderLocation":0,"offset":0,"format":"float32x3"}]},{"arrayStride":3*SIZEOF_F32,"attributes":[{"shaderLocation":1, +"offset":0,"format":"float32x3"}]}]},"fragment":{"module":this._fragmentModule,"entryPoint":"main","targets":[{"format":this._renderer.GetSwapChainFormat(),"blend":{"color":{"srcFactor":srcBlend,"dstFactor":destBlend},"alpha":{"srcFactor":srcBlend,"dstFactor":destBlend}}}]}};if(multisampleCount>=2)[ret["multisample"]={"count":multisampleCount}];if(variant===1){ret["fragment"]["module"]=this._fragmentModuleFragDepth||this._fragmentModule;ret["depthStencil"]={"format":this._renderer._GetDepthBufferFormat(), +"depthWriteEnabled":true,"depthCompare":"less-equal"}}else if(variant===2){ret["fragment"]["module"]=this._fragmentModuleFragDepth||this._fragmentModule;ret["fragment"]["targets"]=[];const stencilTestState={"compare":"always","failOp":"keep","depthFailOp":"keep","passOp":"replace"};ret["depthStencil"]={"format":this._renderer._GetDepthBufferFormat(),"depthWriteEnabled":true,"depthCompare":"less-equal","stencilFront":stencilTestState,"stencilBack":stencilTestState,"stencilReadMask":1,"stencilWriteMask":1}}else if(variant=== +3){ret["fragment"]["module"]=this._fragmentModuleFragDepth||this._fragmentModule;const stencilTestState={"compare":"equal","failOp":"keep","depthFailOp":"keep","passOp":"keep"};ret["depthStencil"]={"format":this._renderer._GetDepthBufferFormat(),"depthWriteEnabled":false,"depthCompare":"always","stencilFront":stencilTestState,"stencilBack":stencilTestState,"stencilReadMask":1,"stencilWriteMask":0}}return ret}_CreateRenderPipeline(blendMode,variant,multisampleCount){return this._GetDevice()["createRenderPipeline"](this._GetRenderPipelineDescriptor(blendMode, +variant,multisampleCount))}_CreateRenderPipelineAsync(blendMode,variant,multisampleCount){return this._GetDevice()["createRenderPipelineAsync"](this._GetRenderPipelineDescriptor(blendMode,variant,multisampleCount))}GetRenderPipelineForState(blendMode,variant,multisampleCount){const pipelineIndex=blendMode*5+variant;if(multisampleCount<2){let ret=this._renderPipelines[pipelineIndex];if(ret===null){ret=this._CreateRenderPipeline(blendMode,variant,multisampleCount);this._renderPipelines[pipelineIndex]= +ret}return ret}else{let arr=this._multisampleRenderPipelines.get(multisampleCount);if(!Array.isArray(arr)){arr=makeNullFilledArray(55);this._multisampleRenderPipelines.set(multisampleCount,arr)}let ret=arr[pipelineIndex];if(ret===null){ret=this._CreateRenderPipeline(blendMode,variant,multisampleCount);arr[pipelineIndex]=ret}return ret}}static GetVertexUniformBufferLayout(){return vubLayout}static GetVertexUniformBufferSize(){return Math.ceil(vubSize/16)*16}static GetFragmentUniformBufferLayout(){return fubLayout}static GetFragmentUniformBufferSize(){return Math.ceil(fubSize/ +16)*16}static GetFragmentC3ParamsBufferLayout(){return c3ParamsLayout}static GetFragmentC3ParamsBufferSize(){return Math.ceil(c3ParamsSize/16)*16}static GetDefaultVertexShaderSource(){return` + ${vertexUniformBufferDeclaration} + + struct ColorData { + data : array> + }; + @binding(2) @group(0) var colorBuffer : ColorData; + + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32, + @location(0) position : vec3, + @location(1) uv : vec3 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec2, + @location(1) fragColor : vec4 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + var output : VertexOutput; + output.Position = uniforms.transform * vec4(input.position, 1.0); + output.fragUV = input.uv.xy; + output.fragColor = colorBuffer.data[input.VertexIndex / u32(4)]; + return output; + }`}static GetNormalizedVertexShaderSource(){return` + struct ColorData { + data : array> + }; + @binding(2) @group(0) var colorBuffer : ColorData; + + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32, + @location(0) position : vec3, + @location(1) uv : vec3 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec2, + @location(1) fragColor : vec4 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + var output : VertexOutput; + var p = input.position; + p.y = 1.0 - p.y; + output.Position = vec4(p.xy * 2.0 - 1.0, p.z, 1.0); + output.fragUV = input.uv.xy; + output.fragColor = colorBuffer.data[input.VertexIndex / u32(4)]; + return output; + }`}static GetTextureFillVertexShaderSource(){return` + ${vertexUniformBufferDeclaration} + + struct ColorData { + data : array> + }; + @binding(2) @group(0) var colorBuffer : ColorData; + + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32, + @location(0) position : vec3, + @location(1) uv : vec3 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec3, + @location(1) fragColor : vec4 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + var output : VertexOutput; + output.Position = uniforms.transform * vec4(input.position, 1.0); + output.fragUV = input.uv; + output.fragColor = colorBuffer.data[input.VertexIndex / u32(4)]; + return output; + }`}static GetNormalizedTextureFillVertexShaderSource(){return` + struct ColorData { + data : array> + }; + @binding(2) @group(0) var colorBuffer : ColorData; + + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32, + @location(0) position : vec3, + @location(1) uv : vec3 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec3, + @location(1) fragColor : vec4 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + var output : VertexOutput; + var p = input.position; + p.y = 1.0 - p.y; + output.Position = vec4(p.xy * 2.0 - 1.0, p.z, 1.0); + output.fragUV = input.uv; + output.fragColor = colorBuffer.data[input.VertexIndex / u32(4)]; + return output; + }`}static GetTextureFillFragmentShaderSource(useFragDepth){return` + @binding(0) @group(1) var sampler0 : sampler; + @binding(1) @group(1) var texture0 : texture_2d; + @binding(2) @group(1) var sampler1 : sampler; + @binding(3) @group(1) var texture1 : texture_2d; + @binding(4) @group(1) var sampler2 : sampler; + @binding(5) @group(1) var texture2 : texture_2d; + @binding(6) @group(1) var sampler3 : sampler; + @binding(7) @group(1) var texture3 : texture_2d; + @binding(8) @group(1) var sampler4 : sampler; + @binding(9) @group(1) var texture4 : texture_2d; + @binding(10) @group(1) var sampler5 : sampler; + @binding(11) @group(1) var texture5 : texture_2d; + @binding(12) @group(1) var sampler6 : sampler; + @binding(13) @group(1) var texture6 : texture_2d; + @binding(14) @group(1) var sampler7 : sampler; + @binding(15) @group(1) var texture7 : texture_2d; + @binding(16) @group(1) var sampler8 : sampler; + @binding(17) @group(1) var texture8 : texture_2d; + @binding(18) @group(1) var sampler9 : sampler; + @binding(19) @group(1) var texture9 : texture_2d; + @binding(20) @group(1) var sampler10 : sampler; + @binding(21) @group(1) var texture10 : texture_2d; + @binding(22) @group(1) var sampler11 : sampler; + @binding(23) @group(1) var texture11 : texture_2d; + @binding(24) @group(1) var sampler12 : sampler; + @binding(25) @group(1) var texture12 : texture_2d; + @binding(26) @group(1) var sampler13 : sampler; + @binding(27) @group(1) var texture13 : texture_2d; + + struct FragmentInput { + @location(0) fragUV : vec3, + @location(1) fragColor : vec4, + ${useFragDepth?"@builtin(position) fragPos: vec4":""} + }; + + struct FragmentOutput { + @location(0) color : vec4, + ${useFragDepth?"@builtin(frag_depth) fragDepth: f32":""} + }; + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var texXy : vec2 = input.fragUV.xy; + var texIndex : f32 = input.fragUV.z; + var c : vec4; + + let dx = dpdx(texXy); + let dy = dpdy(texXy); + + if (texIndex < 6.5) + { + if (texIndex < 2.5) + { + if (texIndex < 0.5) { c = textureSampleGrad(texture0, sampler0, texXy, dx, dy); } + else + { + if (texIndex < 1.5) { c = textureSampleGrad(texture1, sampler1, texXy, dx, dy); } + else { c = textureSampleGrad(texture2, sampler2, texXy, dx, dy); } + } + } + else + { + if (texIndex < 4.5) + { + if (texIndex < 3.5) { c = textureSampleGrad(texture3, sampler3, texXy, dx, dy); } + else { c = textureSampleGrad(texture4, sampler4, texXy, dx, dy); } + } + else + { + if (texIndex < 5.5) { c = textureSampleGrad(texture5, sampler5, texXy, dx, dy); } + else { c = textureSampleGrad(texture6, sampler6, texXy, dx, dy); } + } + } + } + else + { + if (texIndex < 9.5) + { + if (texIndex < 7.5) { c = textureSampleGrad(texture7, sampler7, texXy, dx, dy); } + else + { + if (texIndex < 8.5) { c = textureSampleGrad(texture8, sampler8, texXy, dx, dy); } + else { c = textureSampleGrad(texture9, sampler9, texXy, dx, dy); } + } + } + else + { + if (texIndex < 11.5) + { + if (texIndex < 10.5) { c = textureSampleGrad(texture10, sampler10, texXy, dx, dy); } + else { c = textureSampleGrad(texture11, sampler11, texXy, dx, dy); } + } + else + { + if (texIndex < 12.5) { c = textureSampleGrad(texture12, sampler12, texXy, dx, dy); } + else { c = textureSampleGrad(texture13, sampler13, texXy, dx, dy); } + } + } + } + + output.color = c * input.fragColor; + ${useFragDepth?"output.fragDepth = select(input.fragPos.z, 1.0, output.color.a == 0.0);":""} + return output; + }`}static _GetMipmapGeneratorVertexSource(){return` + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec2 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + + var pos : array, 4> = array, 4>( + vec2(-1.0, 1.0), + vec2(1.0, 1.0), + vec2(-1.0, -1.0), + vec2(1.0, -1.0)); + + var output : VertexOutput; + var p : vec2 = pos[input.VertexIndex]; + output.Position = vec4(p, 0.0, 1.0); + output.fragUV = p / 2.0 + 0.5; + return output; + }`}static _GetMipmapGeneratorFragmentSource(){return` + @binding(0) @group(0) var sampler0 : sampler; + @binding(1) @group(0) var texture0 : texture_2d; + + struct FragmentInput { + @location(0) fragUV : vec2 + }; + + struct FragmentOutput { + @location(0) color : vec4 + }; + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + output.color = textureSample(texture0, sampler0, vec2(input.fragUV.x, 1.0 - input.fragUV.y)); + return output; + }`}_GetMipmapGeneratorPipeline(targetFormat){if(!targetFormat)targetFormat=this._renderer.GetTextureFormat();let pipeline=this._mipmapPipelineCache.get(targetFormat);if(!pipeline){pipeline=this._GetDevice()["createRenderPipeline"]({"label":"","layout":"auto","vertex":{"module":this._vertexModule,"entryPoint":"main"},"primitive":{"topology":"triangle-strip","stripIndexFormat":"uint16"},"fragment":{"module":this._fragmentModule,"entryPoint":"main","targets":[{"format":targetFormat, +"blend":{"color":{"srcFactor":"one","dstFactor":"zero"},"alpha":{"srcFactor":"one","dstFactor":"zero"}}}]}});this._mipmapPipelineCache.set(targetFormat,pipeline)}return pipeline}static _GetPointVertexSource(){return` + ${vertexUniformBufferDeclaration} + + struct PointData { + data : array> + }; + @binding(3) @group(0) var pointBuffer : PointData; + + struct VertexInput { + @builtin(vertex_index) VertexIndex : u32 + }; + + struct VertexOutput { + @builtin(position) Position : vec4, + @location(0) fragUV : vec2, + @location(1) pointOpacity : f32 + }; + + @vertex + fn main(input : VertexInput) -> VertexOutput { + + var normPos : array, 4> = array, 4>( + vec2(-0.5, -0.5), + vec2(0.5, -0.5), + vec2(0.5, 0.5), + vec2(-0.5, 0.5)); + + var output : VertexOutput; + var p : vec2 = normPos[input.VertexIndex % u32(4)]; + var pointData : vec4 = pointBuffer.data[input.VertexIndex / u32(4)]; + + var size : f32 = pointData.z; + output.Position = uniforms.transform * vec4(p * size + pointData.xy, uniforms.zElevation, 1.0); + output.pointOpacity = pointData.w; + + var pointTexMin : vec2 = min(uniforms.pointTexStart, uniforms.pointTexEnd); + var pointTexMax : vec2 = max(uniforms.pointTexStart, uniforms.pointTexEnd); + var pn : vec2 = p + vec2(0.5, 0.5); + var pointCoord : vec2 = select(vec2(1.0 - pn.y, pn.x), pn, uniforms.pointTexEnd.x > uniforms.pointTexStart.x); + + output.fragUV = mix(pointTexMin, pointTexMax, pointCoord); + return output; + }`}static _GetPointFragmentSource(useFragDepth){return` + ${fragmentUniformBufferDeclaration} + + %%SAMPLERFRONT_BINDING%% var sampler0 : sampler; + %%TEXTUREFRONT_BINDING%% var texture0 : texture_2d; + + struct FragmentInput { + @location(0) fragUV : vec2, + @location(1) pointOpacity : f32, + @builtin(position) fragPos : vec4 + }; + + struct FragmentOutput { + @location(0) color : vec4, + ${useFragDepth?"@builtin(frag_depth) fragDepth: f32":""} + }; + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + output.color = textureSample(texture0, sampler0, input.fragUV) * uniforms.pointColor * input.pointOpacity; + ${useFragDepth?"output.fragDepth = select(input.fragPos.z, 1.0, output.color.a == 0.0);":""} + return output; + }`}static _GetTilemapFragmentShaderSource(useFragDepth){return` + ${fragmentUniformBufferDeclaration} + + %%SAMPLERFRONT_BINDING%% var sampler0 : sampler; + %%TEXTUREFRONT_BINDING%% var texture0 : texture_2d; + + %%FRAGMENTINPUT_STRUCT%% + + struct FragmentOutput { + @location(0) color : vec4, + ${useFragDepth?"@builtin(frag_depth) fragDepth: f32":""} + }; + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var halfPixelSize : vec2 = vec2(0.5, 0.5) / vec2(textureDimensions(texture0)); + + var tile : vec2 = floor(input.fragUV); + var tex : vec2 = fract(input.fragUV); + var tileOrigin : vec2 = uniforms.srcRectStart + tile * (uniforms.tileSize + uniforms.tileSpacing); + var lowerBound : vec2 = tileOrigin + halfPixelSize; + var upperBound : vec2 = tileOrigin + uniforms.tileSize - halfPixelSize; + + output.color = textureSampleLevel(texture0, sampler0, clamp(tex, lowerBound, upperBound), 0.0) * input.fragColor; + ${useFragDepth?"output.fragDepth = select(input.fragPos.z, 1.0, output.color.a == 0.0);":""} + return output; + }`}static GetTileRandomizationFragmentShaderSource(useFragDepth){return` +${fragmentUniformBufferDeclaration} + +%%SAMPLERFRONT_BINDING%% var sampler0 : sampler; +%%TEXTUREFRONT_BINDING%% var texture0 : texture_2d; + +%%FRAGMENTINPUT_STRUCT%% + +struct FragmentOutput { + @location(0) color : vec4, + ${useFragDepth?"@builtin(frag_depth) fragDepth: f32":""} +}; + +%%C3_UTILITY_FUNCTIONS%% + +const PI : f32 = 3.1415926; + +fn cospVec4(a : vec4, b : vec4, x : f32) -> vec4 +{ + return (a + b + (a - b) * cos(x * PI)) / 2.0; +} + +fn randVec3(seed : vec2) -> vec3 +{ + return vec3( + fract(sin(dot(seed.xy, vec2(12.9898,78.233))) * 43758.5453), + fract(sin(dot(seed.yx, vec2(12.9898,-78.233))) * 43758.5453), + fract(sin(dot(seed.xy, vec2(-12.9898,-78.233))) * 43758.5453)); +} + +fn sampleTile(tile : vec2, uv : vec2, ddx : vec2, ddy : vec2) -> vec4 +{ + var posRandom = uniforms.tileSize; + var angleRandom = uniforms.outlineThickness; + var pixelSize = c3_getPixelSize(texture0); + + var rand = (randVec3(round(tile)) - 0.5) * 2.0; + + var angle = angleRandom * rand.z * PI; + var sin_a = sin(angle); + var cos_a = cos(angle); + var aspect = pixelSize.x / pixelSize.y; + + var mid = tile + vec2(0.5, 0.5); + var dp = uv - mid; + dp.x /= aspect; + var r = vec2(dp.x * cos_a - dp.y * sin_a, + dp.y * cos_a + dp.x * sin_a); + r.x *= aspect; + + var p = mid + r + (posRandom * rand.xy / 2.0); + + return textureSampleGrad(texture0, sampler0, p, ddx, ddy); +} + +@fragment +fn main(input : FragmentInput) -> FragmentOutput +{ + var output : FragmentOutput; + + var blendMarginX = uniforms.tileSpacing.x; + var blendMarginY = uniforms.tileSpacing.y; + + var tile = floor(input.fragUV); + var tex = fract(input.fragUV); + var ddx = dpdx(input.fragUV); + var ddy = dpdy(input.fragUV); + + var curTile = sampleTile(tile, input.fragUV, ddx, ddy); + + var inLeftMargin = (tex.x < blendMarginX); + var inRightMargin = (tex.x > 1.0 - blendMarginX); + var inTopMargin = (tex.y < blendMarginY); + var inBottomMargin = (tex.y > 1.0 - blendMarginY); + + if (inLeftMargin) + { + var leftTile = sampleTile(tile + vec2(-1.0, 0.0), input.fragUV, ddx, ddy); + var leftMix = (tex.x / (blendMarginX * 2.0)) + 0.5; + var leftMixedTile = cospVec4(leftTile, curTile, leftMix); + + if (inTopMargin) + { + var topTile = sampleTile(tile + vec2(0.0, -1.0), input.fragUV, ddx, ddy); + var topLeftTile = sampleTile(tile + vec2(-1.0, -1.0), input.fragUV, ddx, ddy); + var topLeftMixedTile = cospVec4(topLeftTile, topTile, leftMix); + + output.color = cospVec4(topLeftMixedTile, leftMixedTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + var bottomTile = sampleTile(tile + vec2(0.0, 1.0), input.fragUV, ddx, ddy); + var bottomLeftTile = sampleTile(tile + vec2(-1.0, 1.0), input.fragUV, ddx, ddy); + var bottomLeftMixedTile = cospVec4(bottomLeftTile, bottomTile, leftMix); + + output.color = cospVec4(leftMixedTile, bottomLeftMixedTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + output.color = leftMixedTile; + } + } + else if (inRightMargin) + { + var rightTile = sampleTile(tile + vec2(1.0, 0.0), input.fragUV, ddx, ddy); + var rightMix = (tex.x - (1.0 - blendMarginX)) / (blendMarginX * 2.0); + var rightMixedTile = cospVec4(curTile, rightTile, rightMix); + + if (inTopMargin) + { + var topTile = sampleTile(tile + vec2(0.0, -1.0), input.fragUV, ddx, ddy); + var topRightTile = sampleTile(tile + vec2(1.0, -1.0), input.fragUV, ddx, ddy); + var topRightMixedTile = cospVec4(topTile, topRightTile, rightMix); + + output.color = cospVec4(topRightMixedTile, rightMixedTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + var bottomTile = sampleTile(tile + vec2(0.0, 1.0), input.fragUV, ddx, ddy); + var bottomRightTile = sampleTile(tile + vec2(1.0, 1.0), input.fragUV, ddx, ddy); + var bottomRightMixedTile = cospVec4(bottomTile, bottomRightTile, rightMix); + + output.color = cospVec4(rightMixedTile, bottomRightMixedTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + output.color = rightMixedTile; + } + } + else if (inTopMargin) + { + var topTile = sampleTile(tile + vec2(0.0, -1.0), input.fragUV, ddx, ddy); + output.color = cospVec4(topTile, curTile, (tex.y / (blendMarginY * 2.0)) + 0.5); + } + else if (inBottomMargin) + { + var bottomTile = sampleTile(tile + vec2(0.0, 1.0), input.fragUV, ddx, ddy); + output.color = cospVec4(curTile, bottomTile, (tex.y - (1.0 - blendMarginY)) / (blendMarginY * 2.0)); + } + else + { + output.color = curTile; + } + + output.color *= input.fragColor; + ${useFragDepth?"output.fragDepth = select(input.fragPos.z, 1.0, output.color.a == 0.0);":""} + return output; +} +`}static _GetColorFillFragmentShaderSource(){return` + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + output.color = input.fragColor; + return output; + }`}static _GetLinearGradientFillFragmentShaderSource(){return` + ${fragmentUniformBufferDeclaration} + + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + fn fromLinear(linearRGB : vec3) -> vec3 + { + var cutoff : vec3 = (linearRGB < vec3(0.0031308)); + var higher : vec3 = vec3(1.055) * pow(abs(linearRGB), vec3(1.0/2.4)) - 0.055; + var lower : vec3 = linearRGB * 12.92; + return select(higher, lower, cutoff); + } + + fn toLinear(sRGB : vec3) -> vec3 + { + var cutoff : vec3 = (sRGB < vec3(0.04045)); + var higher : vec3 = pow(abs((sRGB + 0.055) / 1.055), vec3(2.4)); + var lower : vec3 = sRGB / 12.92; + return select(higher, lower, cutoff); + } + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var linearGrad : vec3 = mix(toLinear(input.fragColor.rgb), toLinear(uniforms.color2.rgb), vec3(input.fragUV.x)); + + var a : f32 = mix(input.fragColor.a, uniforms.color2.a, input.fragUV.x); + output.color = vec4(fromLinear(linearGrad) * a, a); + return output; + } + `}static _GetPenumbraFillFragmentShaderSource(){return` + ${fragmentUniformBufferDeclaration} + + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var grad : f32 = input.fragUV.x / (1.0 - input.fragUV.y); + output.color = input.fragColor * (1.0 - (cos(grad * 3.141592653589793) + 1.0) / 2.0); + return output; + } + `}static _GetHardEllipseFillFragmentShaderSource(){return` + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var diff : vec2 = input.fragUV - 0.5; + var diffSq : vec2 = diff * diff; + + var f : f32 = step(diffSq.x + diffSq.y, 0.25); + + output.color = input.fragColor * f; + return output; + }`}static _GetHardEllipseOutlineFragmentShaderSource(){return` + ${fragmentUniformBufferDeclaration} + + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var diff : vec2 = input.fragUV - 0.5; + var diffSq : vec2 = diff * diff; + var distSq : f32 = diffSq.x + diffSq.y; + var norm : vec2 = normalize(diff); + var halfNorm : vec2 = norm * 0.5; + + var innerF : f32 = step(distSq, 0.25); + + var innerEdge : vec2 = halfNorm - uniforms.pixelSize * norm * uniforms.outlineThickness; + var innerEdgeSq : vec2 = innerEdge * innerEdge; + var outerF : f32 = step(innerEdgeSq.x + innerEdgeSq.y, distSq); + + output.color = input.fragColor * innerF * outerF; + return output; + }`}static _GetSmoothEllipseFillFragmentShaderSource(){return` + ${fragmentUniformBufferDeclaration} + + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var diff : vec2 = input.fragUV - 0.5; + var diffSq : vec2 = diff * diff; + var norm : vec2 = normalize(diff); + var halfNorm : vec2 = norm * 0.5; + var halfNormSq : vec2 = halfNorm * halfNorm; + + var innerEdge : vec2 = halfNorm - uniforms.pixelSize * norm; + var innerEdgeSq : vec2 = innerEdge * innerEdge; + + var f : f32 = smoothstep(halfNormSq.x + halfNormSq.y, innerEdgeSq.x + innerEdgeSq.y, diffSq.x + diffSq.y); + + output.color = input.fragColor * f; + return output; + }`}static _GetSmoothEllipseOutlineFragmentShaderSource(){return` + ${fragmentUniformBufferDeclaration} + + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var diff : vec2 = input.fragUV - 0.5; + var diffSq : vec2 = diff * diff; + var distSq : f32 = diffSq.x + diffSq.y; + var norm : vec2 = normalize(diff); + var halfNorm : vec2 = norm * 0.5; + var halfNormSq : vec2 = halfNorm * halfNorm; + + var pxNorm : vec2 = uniforms.pixelSize * norm; + var innerEdge1 : vec2 = halfNorm - pxNorm; + var innerEdge1Sq : vec2 = innerEdge1 * innerEdge1; + + var innerF : f32 = smoothstep(halfNormSq.x + halfNormSq.y, innerEdge1Sq.x + innerEdge1Sq.y, distSq); + + var innerEdge2 : vec2 = halfNorm - pxNorm * uniforms.outlineThickness; + var innerEdge2Sq : vec2 = innerEdge2 * innerEdge2; + var innerEdge3 : vec2 = halfNorm - pxNorm * (uniforms.outlineThickness + 1.0); + var innerEdge3Sq : vec2 = innerEdge3 * innerEdge3; + + var outerF : f32 = smoothstep(innerEdge3Sq.x + innerEdge3Sq.y, innerEdge2Sq.x + innerEdge2Sq.y, distSq); + + output.color = input.fragColor * innerF * outerF; + return output; + }`}static _GetSmoothLineFillFragmentShaderSource(){return` + %%FRAGMENTINPUT_STRUCT%% + %%FRAGMENTOUTPUT_STRUCT%% + + @fragment + fn main(input : FragmentInput) -> FragmentOutput { + var output : FragmentOutput; + var f : f32 = 1.0 - abs(input.fragUV.y - 0.5) * 2.0; + output.color = input.fragColor * f; + return output; + }`}}; + +} + +// ../lib/gfx/webgpu/texture.js +{ +'use strict';const C3=self.C3;const VALID_SAMPLINGS=new Set(["nearest","bilinear","trilinear"]);const VALID_WRAP_MODES=new Set(["clamp-to-edge","repeat","mirror-repeat"]);const GPUTextureUsage=self["GPUTextureUsage"];const DEFAULT_CREATE_OPTIONS={wrapX:"clamp-to-edge",wrapY:"clamp-to-edge",sampling:"trilinear",anisotropy:0,mipMap:true,isRenderTarget:false,isSampled:false,canReadPixels:false,canUpdate:false,multisampling:0,width:-1,height:-1}; +const TEXTURE_FORMAT_SIZE_DATA=[[1,["r8unorm","r8snorm","r8uint","r8sint","stencil8"]],[2,["r16uint","r16sint","r16float","rg8unorm","rg8snorm","rg8uint","rg8sint","depth16unorm"]],[3,["depth24plus"]],[4,["r32uint","r32sint","r32float","rg16uint","rg16sint","rg16float","rgba8unorm","rgba8unorm-srgb","rgba8snorm","rgba8uint","rgba8sint","bgra8unorm","bgra8unorm-srgb","rgb9e5ufloat","rgb10a2uint","rgb10a2unorm","rg11b10ufloat","depth24plus-stencil8","depth32float"]],[8,["rg32uint","rg32sint","rg32float", +"rgba16uint","rgba16sint","rgba16float"]],[16,["rgba32uint","rgba32sint","rgba32float"]],[5,["depth32float-stencil8"]]];const TEXTURE_FORMAT_SIZE_MAP=new Map;for(const [size,fmtArr]of TEXTURE_FORMAT_SIZE_DATA)for(const fmt of fmtArr)TEXTURE_FORMAT_SIZE_MAP.set(fmt,size);const allTextures=new Set;const UPDATE_DEFAULT_OPTIONS={premultiplyAlpha:true,flipY:false}; +C3.Gfx.WebGPURendererTexture=class WebGPURendererTexture{constructor(renderer,isForBackbuffer){this._renderer=renderer;this._texture=null;this._format="";this._textureView=null;this._sampler=null;this._ownTextureBindGroup=null;this._backTextureBindGroup=null;this._width=0;this._height=0;this._isStatic=true;this._wrapX="clamp-to-edge";this._wrapY="clamp-to-edge";this._sampling="trilinear";this._anisotropy=0;this._isMipMapped=false;this._refCount=0;this._isRenderTarget=false;this._isSampled=false;this._canReadPixels= +false;this._canUpdate=false;this._multisampling=0;this._usage=0;this._multiTextureEnabled=true;this._multiTextureGroup=null;this._multiTextureIndex=0;this._isForBackbuffer=!!isForBackbuffer;if(this._isForBackbuffer){this._format=this._renderer.GetSwapChainFormat();this._isRenderTarget=true;this._isSampled=true;this._sampler=this._renderer._GetSampler({sampling:"nearest"})}}_InitFromOpts(opts){this._wrapX=opts.wrapX;this._wrapY=opts.wrapY;this._sampling=opts.sampling;this._anisotropy=opts.anisotropy; +this._isMipMapped=!!opts.mipMap&&this._renderer.AreMipmapsEnabled()&&opts.sampling!=="nearest";this._isRenderTarget=!!opts.isRenderTarget;this._isSampled=!!opts.isSampled;this._canReadPixels=!!opts.canReadPixels;this._canUpdate=!!opts.canUpdate;this._multisampling=this._renderer._ClampToSupportedMultisampleValues(opts.multisampling);if(!VALID_SAMPLINGS.has(this._sampling))throw new Error("invalid sampling");if(!VALID_WRAP_MODES.has(this._wrapX)||!VALID_WRAP_MODES.has(this._wrapY))throw new Error("invalid wrap mode"); +if(this._multisampling>=2&&this._isSampled)throw new Error("invalid use of multisampling");if(this._sampling==="nearest")this._anisotropy=0;this._sampler=this._renderer._GetSampler({wrapX:this._wrapX,wrapY:this._wrapY,sampling:this._sampling,anisotropy:this._anisotropy});this._CreateGPUResources();this._refCount=1}_CreateGPUResources(){const renderer=this._renderer;const device=renderer._GetDevice();this._usage=0;if(this._isRenderTarget){this._usage=GPUTextureUsage["RENDER_ATTACHMENT"];if(this._isSampled)this._usage|= +GPUTextureUsage["TEXTURE_BINDING"];if(this._canUpdate)this._usage|=GPUTextureUsage["COPY_DST"];this._format=this._renderer.GetSwapChainFormat()}else{this._usage=GPUTextureUsage["COPY_DST"]|GPUTextureUsage["TEXTURE_BINDING"];this._format=this._renderer.GetTextureFormat()}if(this._canReadPixels)this._usage|=GPUTextureUsage["COPY_SRC"];this._texture=device["createTexture"]({"size":[this._width,this._height,1],"mipLevelCount":this._GetMipLevelCount(),"format":this._format,"usage":this._usage,"sampleCount":this._multisampling>= +2?this._multisampling:1});this._textureView=this._texture["createView"]();const texBindGroupEntries=[];const multiTexLimit=C3.Gfx.WebGPUMultiTextureGroup.GetMultiTextureLimit();for(let i=0;i0)throw new Error("texture still has references"); +if(!this._texture)throw new Error("already deleted texture");this._DeleteGPUResources()}_DisableMultiTexture(){this._multiTextureEnabled=false;this._SetMultiTextureAvailable(false)}_CanMultiTexture(){return this._isStatic&&this._multiTextureEnabled&&!this._isRenderTarget}_SetMultiTextureAvailable(available){this._renderer._SetMultiTextureAvailable(this,available)}_SetMultiTextureGroup(mtg,index){if(this._multiTextureGroup)throw new Error("already in a group");this._multiTextureGroup=mtg;this._multiTextureIndex= +index;this._SetMultiTextureAvailable(false)}_ClearMultiTextureGroup(){this._multiTextureGroup=null;this._multiTextureIndex=0;if(this._CanMultiTexture())this._SetMultiTextureAvailable(true)}_GetOwnTextureBindGroup(){return this._ownTextureBindGroup}_GetBackTextureBindGroup(){return this._backTextureBindGroup}_GetMultiTextureBindGroup(){if(this._multiTextureGroup!==null)return this._multiTextureGroup._GetBindGroup();else if(this._CanMultiTexture()){this._renderer._TryCreateMultiTextureGroup(this);return this._multiTextureGroup!== +null?this._multiTextureGroup._GetBindGroup():this._ownTextureBindGroup}else return this._ownTextureBindGroup}_GetMultiTextureIndex(){return this._multiTextureIndex}GetWidth(){if(this._isForBackbuffer)return this._renderer.GetWidth();else return this._width}GetHeight(){if(this._isForBackbuffer)return this._renderer.GetHeight();else return this._height}GetRenderer(){return this._renderer}_GetTexture(){return this._texture}_GetTextureView(){return this._textureView}_GetFormat(){return this._format}_GetSampler(){return this._sampler}GetSampling(){return this._sampling}IsLinearSampling(){return this._sampling!== +"nearest"}IsRenderTarget(){return this._isRenderTarget}IsSampled(){return this._isSampled}CanReadPixels(){return this._canReadPixels}AddReference(){this._refCount++}SubtractReference(){if(this._refCount<=0)throw new Error("no more references");this._refCount--}GetReferenceCount(){return this._refCount}_GetUsage(){return this._usage}_BackbufferTextureSetProperties(usage,format){this._usage=usage;this._format=format}_BackbufferTextureStartFrame(){const renderer=this._renderer;const device=renderer._GetDevice(); +this._texture=renderer._GetSwapChainTexture();this._textureView=renderer._GetSwapChainTexView();if(renderer._CanSampleBackbuffer())this._backTextureBindGroup=device["createBindGroup"]({"layout":renderer._GetBackTextureBindGroupLayout(),"entries":[{"binding":0,"resource":this._sampler},{"binding":1,"resource":this._textureView}]})}_BackbufferTextureEndFrame(){this._texture=null;this._textureView=null;this._backTextureBindGroup=null}GetEstimatedMemoryUsage(){let size=this.GetWidth()*this.GetHeight()* +C3.Gfx.WebGPURendererTexture.GetFormatByteSize(this._GetFormat());if(this._isMipMapped)size+=Math.floor(size/3);return size}static OnContextLost(){}static allTextures(){return allTextures.values()}static GetFormatByteSize(fmt){const ret=TEXTURE_FORMAT_SIZE_MAP.get(fmt);if(typeof ret==="number")return ret;else return NaN}}; + +} + +// ../lib/gfx/webgpu/multiTextureGroup.js +{ +'use strict';const C3=self.C3; +C3.Gfx.WebGPUMultiTextureGroup=class WebGPUMultiTextureGroup{constructor(renderer,textures){if(textures.length<2)throw new Error("invalid multi-texture group");this._renderer=renderer;this._textures=textures;this._multiTextureBindGroup=null;for(let i=0,len=textures.length;i=2&&opts.isSampled)throw new Error("invalid use of multisampling");this._rendererTexture=this._renderer.CreateDynamicTexture(width,height,{sampling:opts.sampling, +mipMap:false,isRenderTarget:true,isSampled:opts.isSampled,canReadPixels:opts.canReadPixels,canUpdate:opts.canUpdate,multisampling:this._multisampling});this._CalculateProjection();allRenderTargets.add(this)}_Delete(){allRenderTargets.delete(this);this._rendererTexture._DeleteGPUResources();this._rendererTexture=null;this._renderer=null}_Resize(width,height){if(width===this.GetWidth()&&height===this.GetHeight())return;const sampling=this._rendererTexture.GetSampling();const isSampled=this._rendererTexture.IsSampled(); +const canReadPixels=this._rendererTexture.CanReadPixels();this._rendererTexture._DeleteGPUResources();this._rendererTexture=null;this._rendererTexture=this._renderer.CreateDynamicTexture(width,height,{sampling,mipMap:false,isRenderTarget:true,isSampled,canReadPixels});this._CalculateProjection()}_GetTextureView(){if(this._isBackBuffer)return this._renderer._GetSwapChainTexView();else return this._rendererTexture._GetTextureView()}_CalculateProjection(){this._renderer.CalculatePerspectiveMatrix(this._projectionMatrix, +this.GetWidth()/this.GetHeight());this._lastFov=this._renderer.GetFovY();this._lastNearZ=this._renderer.GetNearZ();this._lastFarZ=this._renderer.GetFarZ()}IsDefaultSize(){return this._isDefaultSize}IsBackBuffer(){return this._isBackBuffer}HasDepthBuffer(){return this._depth}GetWidth(){if(this._isBackBuffer)return this._renderer.GetWidth();else return this._rendererTexture.GetWidth()}GetHeight(){if(this._isBackBuffer)return this._renderer.GetHeight();else return this._rendererTexture.GetHeight()}GetTexture(){if(this._rendererTexture)return this._rendererTexture; +else throw new Error("no texture");}GetRenderer(){return this._renderer}GetMultisampling(){return this._multisampling}GetProjectionMatrix(){if(this._renderer.GetFovY()!==this._lastFov||this._renderer.GetNearZ()!==this._lastNearZ||this._renderer.GetFarZ()!==this._lastFarZ)this._CalculateProjection();return this._projectionMatrix}IsLinearSampling(){return this._rendererTexture.IsLinearSampling()}IsSampled(){return this._rendererTexture.IsSampled()}CanReadPixels(){return this._rendererTexture.CanReadPixels()}IsCompatibleWithOptions(opts){opts= +Object.assign({},DEFAULT_RENDERTARGET_OPTIONS,opts);if(opts.sampling!=="nearest"!==this.IsLinearSampling())return false;if(!!opts.isSampled!==this.IsSampled())return false;if(!!opts.canReadPixels!==this.CanReadPixels())return false;if(!!opts.depth!==this.HasDepthBuffer())return false;if(typeof opts.width==="number"||typeof opts.height==="number")return!this.IsDefaultSize()&&this.GetWidth()===Math.floor(opts.width)&&this.GetHeight()===Math.floor(opts.height);else return this.IsDefaultSize()}_SetIsAwaitingClear(x){this._isAwaitingClear= +!!x}_IsAwaitingClear(){return this._isAwaitingClear}_GetClearColor(){return this._clearColor}static OnContextLost(){}static allRenderTargets(){return allRenderTargets.values()}}; + +} + +// ../lib/gfx/webgpu/timeQuerySet.js +{ +'use strict';const C3=self.C3; +C3.Gfx.WebGPUTimeQuerySet=class WebGPUTimeQuerySet{constructor(renderer,queryCount){this._renderer=renderer;this._frameNumber=this._renderer.GetFrameNumber();this._queryCount=queryCount;const device=this._renderer._GetDevice();this._querySet=device["createQuerySet"]({"count":this._queryCount,"type":"timestamp"});const GPUBufferUsage=self["GPUBufferUsage"];this._resolveBuffer=device["createBuffer"]({"size":this._GetBufferSize(),"usage":GPUBufferUsage["QUERY_RESOLVE"]|GPUBufferUsage["COPY_SRC"]});this._readbackBuffer= +device["createBuffer"]({"size":this._GetBufferSize(),"usage":GPUBufferUsage["COPY_DST"]|GPUBufferUsage["MAP_READ"]});this._result=null}_GetBufferSize(){return this._queryCount*8}_GetQuerySet(){return this._querySet}Resolve(encoder){encoder["resolveQuerySet"](this._querySet,0,this._queryCount,this._resolveBuffer,0);encoder["copyBufferToBuffer"](this._resolveBuffer,0,this._readbackBuffer,0,this._GetBufferSize())}async ReadResult(){const bufferSize=this._GetBufferSize();await this._readbackBuffer["mapAsync"](self["GPUMapMode"]["READ"], +0,bufferSize);const arrayBuffer=this._readbackBuffer["getMappedRange"](0,bufferSize);this._result=new BigUint64Array(arrayBuffer.slice(0));this._readbackBuffer["destroy"]();this._readbackBuffer=null;this._resolveBuffer["destroy"]();this._resolveBuffer=null;this._querySet["destroy"]();this._querySet=null}HasResult(){return this._result!==null}GetResult(){if(!this._result)throw new Error("not yet got result");return this._result}GetFrameNumber(){return this._frameNumber}}; + +} + +// ../lib/gfx/effectCompositor/effectChainManager.js +{ +'use strict';const C3=self.C3;const DEFAULT_CTOR_OPTS={getDrawSize:null,getRenderTarget:null,releaseRenderTarget:null,getTime:null,redraw:null}; +C3.Gfx.EffectChainManager=class EffectChainManager{constructor(opts){opts=Object.assign({},DEFAULT_CTOR_OPTS,opts);this._cbGetDrawSize=opts.getDrawSize;this._cbGetRenderTarget=opts.getRenderTarget;this._cbReleaseRenderTarget=opts.releaseRenderTarget;this._cbGetTime=opts.getTime;this._cbRedraw=opts.redraw;this._webgpuBackTexture=null;this._allEffectChains=new Set}_AddEffectChain(ec){this._allEffectChains.add(ec)}_RemoveEffectChain(ec){this._allEffectChains.delete(ec)}OnContextLost(){this._webgpuBackTexture= +null;for(const ec of this._allEffectChains)ec.OnContextLost()}GetDrawSize(renderer){if(this._cbGetDrawSize)return this._cbGetDrawSize(renderer);else return[renderer.GetWidth(),renderer.GetHeight()]}GetRenderTarget(effectChain){return this._cbGetRenderTarget(effectChain)}ReleaseRenderTarget(rt,effectChain){this._cbReleaseRenderTarget(rt,effectChain)}GetTime(){return this._cbGetTime()}Redraw(effectChain){this._cbRedraw(effectChain)}_GetWebGPUBackTexture(renderer,width,height){width=Math.floor(width); +height=Math.floor(height);if(this._webgpuBackTexture&&(this._webgpuBackTexture.GetWidth()!==width||this._webgpuBackTexture.GetHeight()!==height)){renderer.DeleteTexture(this._webgpuBackTexture);this._webgpuBackTexture=null}if(this._webgpuBackTexture===null)this._webgpuBackTexture=renderer.CreateStaticTexture(null,{width,height,sampling:"nearest",mipMap:false});return this._webgpuBackTexture}}; + +} + +// ../lib/gfx/effectCompositor/effectChain.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const glMatrix=self.glMatrix;const mat4=glMatrix.mat4;const tempRect=C3.New(C3.Rect);const tempRect2=C3.New(C3.Rect);const tempRect3=C3.New(C3.Rect);const tempRect4=C3.New(C3.Rect);const tempMat4a=mat4.create();const tempMat4b=mat4.create();const DEFAULT_CTOR_OPTS={drawContent:null,getSourceTextureInfo:null,getShaderParameters:null,invalidateRenderTargets:false}; +const DEFAULT_BUILDSTEPS_OPTS={indexMap:null,forcePreDraw:false,forcePostDraw:false,is3D:false,isSourceTextureRotated:false,isRotatedOrNegativeSizeInstance:false,useFullSurface:false}; +C3.Gfx.EffectChain=class EffectChain{constructor(manager,opts){opts=Object.assign({},DEFAULT_CTOR_OPTS,opts);this._manager=manager;this._cbDrawContent=opts.drawContent;this._cbGetSourceTextureInfo=opts.getSourceTextureInfo;this._cbGetShaderParameters=opts.getShaderParameters;this._cbDrawContentHook=null;this._shaderProgramList=[];this._shaderProgramIndices=[];this._steps=[];this._needsRebuild=false;this._blendMode=0;this._isAnyShaderAnimated=false;this._isAnyShaderDepthSampling=false;this._isAnyShaderBackgroundBlending= +false;this._isAnyShaderCrossSampling=false;this._isAnyIsSrcTexRotated=false;this._useCopyTextureBackgroundSampling=false;this._didChangeTransform=false;this._depthEnabledAtStart=false;this._coplanarColorPassAtStart=false;this._canUseFastPath=false;this._useFullSurface=false;this._isSourceTextureRotated=false;this._numTempSurfacesRequired=0;this._renderTargets=[null,null,null];this._invalidateRenderTargets=!!opts.invalidateRenderTargets;this._boxExtendHorizontal=0;this._boxExtendVertical=0;this._drawWidth= +0;this._drawHeight=0;this._contentObject=null;this._contextObject=null;this._layoutRect=C3.New(C3.Rect);this._drawSurfaceRect=C3.New(C3.Rect);this._rcTexOriginal=C3.New(C3.Rect);this._rcTexBounce=C3.New(C3.Rect);this._rcTexDest=C3.New(C3.Rect);this._devicePixelRatio=1;this._layerScale=1;this._layerAngle=0;this._time=0;this._destRenderTarget=null;this._backTex=null;this._compositOffX=0;this._compositOffY=0;this._updateOwnProjection=false;this._projectionMatrix=mat4.create();this._modelViewMatrix=mat4.create(); +this._manager._AddEffectChain(this)}Release(){this._manager._RemoveEffectChain(this);C3.clearArray(this._steps);C3.clearArray(this._shaderProgramList);C3.clearArray(this._shaderProgramIndices);this._contentObject=null;this._contextObject=null;this._cbDrawContent=null;this._cbGetSourceTextureInfo=null;this._cbGetShaderParameters=null}OnContextLost(){this._needsRebuild=true;C3.clearArray(this._steps);C3.clearArray(this._shaderProgramList);C3.clearArray(this._shaderProgramIndices)}NeedsRebuild(){return this._needsRebuild}BuildSteps(shaderProgramList, +opts){opts=Object.assign({},DEFAULT_BUILDSTEPS_OPTS,opts);C3.clearArray(this._steps);this._boxExtendHorizontal=0;this._boxExtendVertical=0;this._isAnyShaderAnimated=false;this._isAnyShaderDepthSampling=false;this._isAnyShaderBackgroundBlending=false;this._isAnyShaderCrossSampling=false;this._isAnyIsSrcTexRotated=false;this._useCopyTextureBackgroundSampling=false;this._numTempSurfacesRequired=0;this._isSourceTextureRotated=!!opts.isSourceTextureRotated;this._useFullSurface=!!opts.useFullSurface;this._needsRebuild= +false;C3.shallowAssignArray(this._shaderProgramList,shaderProgramList);if(shaderProgramList.length===0)return;if(opts.indexMap){if(opts.indexMap.length!==shaderProgramList.length)throw new Error("incorrect indexMap length");C3.shallowAssignArray(this._shaderProgramIndices,opts.indexMap)}else{C3.clearArray(this._shaderProgramIndices);for(let i=0,len=shaderProgramList.length;i=1?this._GetRenderTarget():null;this._renderTargets[2]=this._numTempSurfacesRequired===2?this._GetRenderTarget():null;for(const step of this._steps){const srcTarget=this._GetRenderTargetForId(step.GetSrcTargetId());const destTarget=this._GetRenderTargetForId(step.GetDestTargetId());if(renderer.IsWebGPU())step.Run_WebGPU(renderer, +srcTarget,destTarget);else step.Run_WebGL(renderer,srcTarget,destTarget)}renderer.SetTexture(null);if(this._renderTargets[1])this._ReleaseRenderTarget(this._renderTargets[1]);if(this._renderTargets[2])this._ReleaseRenderTarget(this._renderTargets[2]);this._renderTargets.fill(null);this._OnAfterEndEffectChain(renderer);this._destRenderTarget=null;this._backTex=null;this._contentObject=null;this._contextObject=null;this._cbDrawContentHook=null}_CalculateDrawSizeAndRectangles(renderer,opts){const [drawWidth, +drawHeight]=this._manager.GetDrawSize(renderer);this._SetDrawSize(renderer,drawWidth,drawHeight);this._CalculateRectangles(opts)}_SetDrawSize(renderer,drawWidth,drawHeight){if(drawWidth<=0||drawHeight<=0)throw new Error("invalid draw size");if(this._drawWidth!==drawWidth||this._drawHeight!==drawHeight)this._CalculateDeviceTransformMatrices(renderer,drawWidth,drawHeight,0,0,this._projectionMatrix,this._modelViewMatrix);this._drawWidth=drawWidth;this._drawHeight=drawHeight}_CalculateDeviceTransformMatrices(renderer, +width,height,offX,offY,projMat,mvMat){const scrollX=width/2+offX;const scrollY=height/2+offY;renderer.CalculatePerspectiveMatrix(projMat,width/height);const tempMat4=renderer.CalculateLookAtModelView2(scrollX,scrollY,renderer.GetDefaultCameraZ(height),scrollX,scrollY,0,height);mat4.copy(mvMat,tempMat4)}_CalculateRectangles(opts){this._layoutRect.copy(opts.layoutRect);if(opts.drawSurfaceRect)this._drawSurfaceRect.copy(opts.drawSurfaceRect);else this._drawSurfaceRect.set(0,0,this._drawWidth,this._drawHeight); +this._rcTexOriginal.copy(this._drawSurfaceRect);this._rcTexOriginal.divide(this._drawWidth,this._drawHeight);const boxScale=this._layerScale*this._devicePixelRatio;this._drawSurfaceRect.inflate(this._boxExtendHorizontal*boxScale,this._boxExtendVertical*boxScale);this._rcTexDest.copy(this._drawSurfaceRect);this._rcTexDest.divide(this._drawWidth,this._drawHeight);this._drawSurfaceRect.clampBoth(0,0,this._drawWidth,this._drawHeight);this._rcTexBounce.copy(this._drawSurfaceRect);this._rcTexBounce.divide(this._drawWidth, +this._drawHeight)}_OnBeforeStartEffectChain(renderer){this._depthEnabledAtStart=renderer.IsDepthEnabled();this._coplanarColorPassAtStart=renderer.IsCoplanarColorPass();if(this._useFullSurface){renderer.SetDepthEnabled(false);if(this._isAnyShaderDepthSampling)renderer.SetDepthSamplingEnabled(true)}else{tempRect.copy(this._drawSurfaceRect);if(renderer.IsWebGL()){const boxScale=this._layerScale*this._devicePixelRatio;tempRect.inflate(Math.max(this._boxExtendHorizontal,1)*boxScale,Math.max(this._boxExtendVertical, +1)*boxScale);tempRect.roundOuter();tempRect.clamp(0,0,this._drawWidth,this._drawHeight)}else tempRect.roundOuter();renderer.SetScissorRect(tempRect.getLeft(),tempRect.getTop(),tempRect.width(),tempRect.height(),this._drawHeight)}}_OnAfterEffectChainDrawContent(renderer){renderer.ResetColor();if(!this._useFullSurface){if(this._coplanarColorPassAtStart)renderer.CoplanarRestoreStandardRendering();renderer.SetDepthEnabled(false);if(this._isAnyShaderDepthSampling)renderer.SetDepthSamplingEnabled(true)}if(renderer.IsWebGPU())renderer.SetNormalizedCoordsProgramVariant(true)}_OnAfterEndEffectChain(renderer){renderer.SetDepthSamplingEnabled(false); +if(this._coplanarColorPassAtStart)renderer.CoplanarStartColorPass();renderer.SetDepthEnabled(this._depthEnabledAtStart);if(!this._useFullSurface)renderer.RemoveScissorRect();if(renderer.IsWebGPU())renderer.SetNormalizedCoordsProgramVariant(false);this._didChangeTransform=renderer.DidChangeTransform()}_ClampRcTexDest(){this._rcTexDest.clamp(0,0,1,1)}_GetRenderTargetForId(id){return id<0?null:this._renderTargets[id]}_GetRenderTarget(){return this._manager.GetRenderTarget(this)}_GetDestRenderTarget(){return this._destRenderTarget}_ReleaseRenderTarget(rt){this._manager.ReleaseRenderTarget(rt, +this)}_GetShaderProgramAt(i){return this._shaderProgramList[i]}_DrawContent(renderer){if(this._cbDrawContentHook)this._cbDrawContentHook(this,renderer,()=>this._cbDrawContent(renderer,this));else this._cbDrawContent(renderer,this);if(!this._canUseFastPath)this._OnAfterEffectChainDrawContent(renderer)}_IsRenderTargetSameSizeAndOffset(renderer){if(this._useFullSurface)return true;if(this._compositOffX!==0||this._compositOffY!==0)return false;const [rtWidth,rtHeight]=renderer.GetRenderTargetSize(renderer.GetRenderTarget()); +if(rtWidth!==this._drawWidth||rtHeight!==this._drawHeight)return false;return true}_SetDeviceTransform(renderer,isLast){let projMat=this._projectionMatrix;let mvMat=this._modelViewMatrix;if(isLast&&!this._IsRenderTargetSameSizeAndOffset(renderer)){projMat=tempMat4a;mvMat=tempMat4b;const [rtWidth,rtHeight]=renderer.GetRenderTargetSize(renderer.GetRenderTarget());this._CalculateDeviceTransformMatrices(renderer,rtWidth,rtHeight,this._compositOffX,this._compositOffY,projMat,mvMat);if(!this._useFullSurface)renderer.RemoveScissorRect()}renderer.SetProjectionMatrix(projMat); +renderer.SetModelViewMatrix(mvMat)}_Redraw(){this._manager.Redraw(this)}_GetShaderParameters(index,renderer){return this._cbGetShaderParameters(this._shaderProgramIndices[index],renderer)}_SetProgramParameters(renderer,index){let rcTexDest=this._rcTexDest;let srcRect=this._rcTexBounce;let srcOriginRect=this._rcTexOriginal;if(renderer.IsWebGL()){tempRect2.copy(rcTexDest);tempRect2.flipAround(1);rcTexDest=tempRect2;tempRect3.copy(srcRect);tempRect3.flipAround(1);srcRect=tempRect3;tempRect4.copy(srcOriginRect); +tempRect4.flipAround(1);srcOriginRect=tempRect4}this._DoSetProgramParameters(renderer,index,srcRect,srcOriginRect,rcTexDest,1/this._drawWidth,1/this._drawHeight)}_SetFirstBounceProgramParameters(renderer,index){let srcRect=this._rcTexBounce;let srcOriginRect=this._rcTexOriginal;let pixelWidth=1/this._drawWidth;let pixelHeight=1/this._drawHeight;if(this._cbGetSourceTextureInfo){let {srcTexRect,srcWidth,srcHeight}=this._cbGetSourceTextureInfo(this._contentObject);if(!srcTexRect){tempRect.set(0,0,0, +0);srcTexRect=tempRect}if(!srcWidth)srcWidth=this._drawWidth;if(!srcHeight)srcHeight=this._drawHeight;srcRect=srcTexRect;srcOriginRect=srcTexRect;pixelWidth=1/srcWidth;pixelHeight=1/srcHeight}else if(renderer.IsWebGL()){tempRect3.copy(srcRect);tempRect3.flipAround(1);srcRect=tempRect3;tempRect4.copy(srcOriginRect);tempRect4.flipAround(1);srcOriginRect=tempRect4}let rcTexDest=this._rcTexDest;if(renderer.IsWebGL()){rcTexDest=tempRect2;rcTexDest.copy(this._rcTexDest);rcTexDest.flipAround(1)}this._DoSetProgramParameters(renderer, +index,srcRect,srcOriginRect,rcTexDest,pixelWidth,pixelHeight);if(renderer.IsWebGPU()&&this._isAnyIsSrcTexRotated)renderer.SetProgramParameter_IsSrcTexRotated(this._isSourceTextureRotated)}_GetBackTex(renderer){if(this._isAnyShaderBackgroundBlending)if(renderer.IsWebGPU())if(this._UseCopyTextureBackgroundSampling())return this._backTex;else return this._destRenderTarget.GetTexture();else return this._destRenderTarget;else return null}_DoSetProgramParameters(renderer,index,srcRect,srcOriginRect,rcTexDest, +pixelWidth,pixelHeight){renderer.SetProgramParameters(this._GetBackTex(renderer),rcTexDest,srcRect,srcOriginRect,this._layoutRect,pixelWidth,pixelHeight,this._devicePixelRatio,this._layerScale,this._layerAngle,this._time);renderer.SetProgramCustomParameters(this._GetShaderParameters(index,renderer))}_Render_FastPath(renderer,opts){const shaderProgram=this._shaderProgramList[0];const wasDepthEnabled=renderer.IsDepthEnabled();const usesDepth=shaderProgram.UsesDepth();if(usesDepth){renderer.SetDepthEnabled(false); +renderer.SetDepthSamplingEnabled(true);this._rcTexDest.set(0,0,1,1);this._rcTexOriginal.set(0,0,1,1)}renderer.SetProgram(shaderProgram);renderer.SetBlendMode(this._blendMode);renderer.SetRenderTarget(this._destRenderTarget);let pixelWidth=0;let pixelHeight=1;this._rcTexOriginal.set(0,0,1,1);if(shaderProgram.UsesAnySrcRectOrPixelSize()&&this._cbGetSourceTextureInfo){const {srcTexRect,srcWidth,srcHeight}=this._cbGetSourceTextureInfo(this._contentObject);if(srcTexRect)this._rcTexOriginal.copy(srcTexRect); +pixelWidth=Number.isFinite(srcWidth)?1/srcWidth:0;pixelHeight=Number.isFinite(srcHeight)?1/srcHeight:0}else{const [drawWidth,drawHeight]=this._manager.GetDrawSize(renderer);pixelWidth=1/drawWidth;pixelHeight=1/drawHeight}if(opts.layoutRect)this._layoutRect.copy(opts.layoutRect);else this._layoutRect.set(0,0,0,0);renderer.SetProgramParameters(this._GetBackTex(renderer),this._rcTexDest,this._rcTexOriginal,this._rcTexOriginal,this._layoutRect,pixelWidth,pixelHeight,this._devicePixelRatio,this._layerScale, +this._layerAngle,this._time);renderer.SetProgramCustomParameters(this._GetShaderParameters(0,renderer));if(renderer.IsWebGPU()&&this._isAnyIsSrcTexRotated)renderer.SetProgramParameter_IsSrcTexRotated(this._isSourceTextureRotated);renderer.SetBaseZ(0);this._DrawContent(renderer);if(usesDepth){renderer.SetDepthSamplingEnabled(false);renderer.SetDepthEnabled(wasDepthEnabled)}}_UseCopyTextureBackgroundSampling(){return this._useCopyTextureBackgroundSampling}_UseRenderTargetBackgroundSampling(){return!this._useCopyTextureBackgroundSampling}IsAnyShaderBackgroundBlending(){return this._isAnyShaderBackgroundBlending}CanSkipCalculatingDrawSurfaceRect(){if(!this._canUseFastPath)return false; +if(this._UseCopyTextureBackgroundSampling())return false;return true}UseFullSurface(){return this._useFullSurface}GetContentObject(){return this._contentObject}GetContextObject(){return this._contextObject}_GetBlendMode(){return this._blendMode}_UpdateOwnProjection(){return this._updateOwnProjection}DidChangeTransform(){return this._didChangeTransform}_GetDrawSurfaceRect(){return this._drawSurfaceRect}_GetRcTexBounce(){return this._rcTexBounce}_ShouldInvalidateRenderTargets(){return this._invalidateRenderTargets}async DebugLogRenderTargetContents(msg, +renderer,renderTarget){}}; + +} + +// ../lib/gfx/effectCompositor/step.js +{ +'use strict';const C3=self.C3; +C3.Gfx.EffectChain.Step=class EffectChainStep{constructor(effectChain,srcTargetId,destTargetId,index=-1){this._effectChain=effectChain;this._srcTargetId=srcTargetId;this._destTargetId=destTargetId;this._index=index}GetEffectChain(){return this._effectChain}GetSrcTargetId(){return this._srcTargetId}GetDestTargetId(){return this._destTargetId}GetIndex(){return this._index}GetShaderProgram(){return this.GetEffectChain()._GetShaderProgramAt(this.GetIndex())}Run_WebGL(renderer,srcRenderTarget,destRenderTarget){}Run_WebGPU(renderer, +srcRenderTarget,destRenderTarget){}}; + +} + +// ../lib/gfx/effectCompositor/preDrawStep.js +{ +'use strict';const C3=self.C3; +C3.Gfx.EffectChain.Step.PreDraw=class PreDrawStep extends C3.Gfx.EffectChain.Step{constructor(effectChain,srcTargetId,destTargetId,index){super(effectChain,srcTargetId,destTargetId,index)}Run_WebGL(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetAlphaBlend();renderer.SetTextureFillMode();renderer.SetRenderTarget(destRenderTarget,effectChain._UpdateOwnProjection());renderer.ClearRgba(0,0,0,0);effectChain._DrawContent(renderer);effectChain._ClampRcTexDest()}Run_WebGPU(renderer, +srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetAlphaBlend();renderer.SetTextureFillMode();renderer.SetRenderTarget(destRenderTarget,false);renderer.ClearRgba(0,0,0,0);effectChain._DrawContent(renderer);effectChain._ClampRcTexDest()}}; + +} + +// ../lib/gfx/effectCompositor/postDrawStep.js +{ +'use strict';const C3=self.C3;const tempRect=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad); +C3.Gfx.EffectChain.Step.PostDraw=class PostDrawStep extends C3.Gfx.EffectChain.Step{constructor(effectChain,srcTargetId,destTargetId,index){super(effectChain,srcTargetId,destTargetId,index)}Run_WebGL(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetTextureFillMode();renderer.SetRenderTarget(destRenderTarget);effectChain._SetDeviceTransform(renderer,true);renderer.SetBlendMode(effectChain._GetBlendMode());renderer.SetTexture(srcRenderTarget.GetTexture()); +tempQuad.setFromRect(effectChain._GetDrawSurfaceRect());tempRect.copy(effectChain._GetRcTexBounce());tempRect.flipAround(1);renderer.Quad3(tempQuad,tempRect);if(effectChain._ShouldInvalidateRenderTargets())renderer.InvalidateRenderTarget(srcRenderTarget)}Run_WebGPU(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetTextureFillMode();renderer.SetRenderTarget(destRenderTarget,false);if(effectChain._IsRenderTargetSameSizeAndOffset(renderer))tempQuad.setFromRect(effectChain._GetRcTexBounce()); +else{renderer.SetNormalizedCoordsProgramVariant(false);effectChain._SetDeviceTransform(renderer,true);tempQuad.setFromRect(effectChain._GetDrawSurfaceRect())}renderer.SetBackTexture(null);renderer.SetBlendMode(effectChain._GetBlendMode());renderer.SetTexture(srcRenderTarget.GetTexture());if(effectChain.UseFullSurface())renderer.FullscreenQuad();else renderer.Quad3(tempQuad,effectChain._GetRcTexBounce())}}; + +} + +// ../lib/gfx/effectCompositor/firstBounceStep.js +{ +'use strict';const C3=self.C3; +C3.Gfx.EffectChain.Step.FirstBounce=class FirstBounceStep extends C3.Gfx.EffectChain.Step{constructor(effectChain,srcTargetId,destTargetId,index){super(effectChain,srcTargetId,destTargetId,index)}Run_WebGL(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetRenderTarget(destRenderTarget,effectChain._UpdateOwnProjection());renderer.ClearRgba(0,0,0,0);renderer.SetCopyBlend();renderer.SetProgram(this.GetShaderProgram());effectChain._SetFirstBounceProgramParameters(renderer,this.GetIndex()); +effectChain._DrawContent(renderer);effectChain._ClampRcTexDest()}Run_WebGPU(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetRenderTarget(destRenderTarget,false);renderer.ClearRgba(0,0,0,0);renderer.SetCopyBlend();renderer.SetProgram(this.GetShaderProgram());effectChain._SetFirstBounceProgramParameters(renderer,this.GetIndex());effectChain._DrawContent(renderer);effectChain._ClampRcTexDest()}}; + +} + +// ../lib/gfx/effectCompositor/bounceStep.js +{ +'use strict';const C3=self.C3;const tempRect=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad); +C3.Gfx.EffectChain.Step.Bounce=class BounceStep extends C3.Gfx.EffectChain.Step{constructor(effectChain,srcTargetId,destTargetId,index){super(effectChain,srcTargetId,destTargetId,index)}Run_WebGL(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain();renderer.SetRenderTarget(destRenderTarget);const isLast=this.GetDestTargetId()===0;if(isLast)renderer.SetBlendMode(effectChain._GetBlendMode());else{renderer.ClearRgba(0,0,0,0);renderer.SetCopyBlend()}renderer.SetProgram(this.GetShaderProgram()); +effectChain._SetProgramParameters(renderer,this.GetIndex());renderer.SetTexture(srcRenderTarget.GetTexture());effectChain._SetDeviceTransform(renderer,isLast);tempQuad.setFromRect(effectChain._GetDrawSurfaceRect());tempRect.copy(effectChain._GetRcTexBounce());tempRect.flipAround(1);renderer.Quad3(tempQuad,tempRect);if(effectChain._ShouldInvalidateRenderTargets())renderer.InvalidateRenderTarget(srcRenderTarget)}Run_WebGPU(renderer,srcRenderTarget,destRenderTarget){const effectChain=this.GetEffectChain(); +renderer.SetRenderTarget(destRenderTarget,false);const isLast=this.GetDestTargetId()===0;if(isLast){renderer.SetBlendMode(effectChain._GetBlendMode());renderer.SetBackTexture(null);if(effectChain._IsRenderTargetSameSizeAndOffset(renderer))tempQuad.setFromRect(effectChain._GetRcTexBounce());else{renderer.SetNormalizedCoordsProgramVariant(false);effectChain._SetDeviceTransform(renderer,true);tempQuad.setFromRect(effectChain._GetDrawSurfaceRect())}}else{renderer.ClearRgba(0,0,0,0);renderer.SetCopyBlend(); +tempQuad.setFromRect(effectChain._GetRcTexBounce())}renderer.SetProgram(this.GetShaderProgram());effectChain._SetProgramParameters(renderer,this.GetIndex());renderer.SetTexture(srcRenderTarget.GetTexture());if(effectChain.UseFullSurface())renderer.FullscreenQuad();else renderer.Quad3(tempQuad,effectChain._GetRcTexBounce())}}; + +} + +// interfaces/IRuntime.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;let runtime=null;const keysDownByKey=new Set;function SortZOrderList(a,b){const layerA=a[0];const layerB=b[0];const diff=layerA-layerB;if(diff!==0)return diff;const indexA=a[1];const indexB=b[1];return indexA-indexB}const tempZOrderList=[];const tempInstances=[];let didWarnInAlertPolyfill=false;let didWarnFpsDeprecated=false;const VALID_FRAMERATE_MODES=new Set(["vsync","unlimited-tick","unlimited-frame"]); +self.IRuntime=class IRuntime{constructor(runtime_){runtime=runtime_;Object.defineProperties(this,{assets:{value:runtime.GetAssetManager().GetIAssetManager(),writable:false},collisions:{value:runtime.GetCollisionEngine().GetICollisionEngine(),writable:false},objects:{value:{},writable:false},globalVars:{value:{},writable:false},projectName:{value:runtime.GetProjectName(),writable:false},projectVersion:{value:runtime.GetProjectVersion(),writable:false},storage:{value:new self.IStorage(runtime),writable:false}, +isInWorker:{value:runtime.IsInWorker(),writable:false},viewportWidth:{value:runtime.GetOriginalViewportWidth(),writable:false},viewportHeight:{value:runtime.GetOriginalViewportHeight(),writable:false},sampling:{value:runtime.GetSampling(),writable:false},isPixelRoundingEnabled:{value:runtime.IsPixelRoundingEnabled(),writable:false}});runtime.UserScriptDispatcher().addEventListener("keydown",e=>{if(keysDownByKey.has(e["key"])){e.stopPropagation();return}keysDownByKey.add(e["key"])});runtime.UserScriptDispatcher().addEventListener("keyup", +e=>keysDownByKey.delete(e["key"]));runtime.Dispatcher().addEventListener("window-blur",()=>keysDownByKey.clear());if(runtime.IsInWorker())self["alert"]=message=>{if(!didWarnInAlertPolyfill){didWarnInAlertPolyfill=true;console.warn("[Construct] alert() was called from a Web Worker, because the project 'Use worker' setting is enabled. This method is not normally available in a Web Worker. Construct has implemented the alert for you, but note that other features may be missing in worker mode. You may wish to disable 'Use worker', or use a more convenient function like console.log(). For more information please refer to the scripting section of the manual.")}return this.alert(message)}}_InitObjects(objectDescriptors){Object.defineProperties(this.objects, +objectDescriptors)}_InitGlobalVars(globalVarDescriptors){Object.defineProperties(this.globalVars,globalVarDescriptors)}addEventListener(name,func){runtime.UserScriptDispatcher().addEventListener(name,func)}removeEventListener(name,func){runtime.UserScriptDispatcher().removeEventListener(name,func)}callFunction(name,...params){C3X.RequireString(name);const eventSheetManager=runtime.GetEventSheetManager();const functionBlock=eventSheetManager.GetFunctionBlockByName(name);if(!functionBlock)throw new Error(`cannot find function name '${name}'`); +if(!functionBlock.IsEnabled())return functionBlock.GetDefaultReturnValue();if(params.lengthlayout.GetILayout())}goToLayout(nameOrIndex){const layoutManager=runtime.GetLayoutManager();let layout=null;if(typeof nameOrIndex==="number"||typeof nameOrIndex==="string")layout=layoutManager.GetLayout(nameOrIndex); +else throw new TypeError("expected string or number");if(!layout)throw new Error("invalid layout");if(layoutManager.IsPendingChangeMainLayout())return;layoutManager.ChangeMainLayout(layout)}get keyboard(){const ret=runtime._GetCommonScriptInterfaces().keyboard;if(!ret)throw new Error("runtime.keyboard used but Keyboard object missing - add it to your project first");return ret}get mouse(){const ret=runtime._GetCommonScriptInterfaces().mouse;if(!ret)throw new Error("runtime.mouse used but Mouse object missing - add it to your project first"); +return ret}get touch(){const ret=runtime._GetCommonScriptInterfaces().touch;if(!ret)throw new Error("runtime.touch used but Touch object missing - add it to your project first");return ret}get timelineController(){const ret=runtime._GetCommonScriptInterfaces().timelineController;if(!ret)throw new Error("runtime.timelineController used but Timeline Controller object missing - add it to your project first");return ret}get platformInfo(){const ret=runtime._GetCommonScriptInterfaces().platformInfo;if(!ret)throw new Error("runtime.platformInfo used but Platform Info object missing - add it to your project first"); +return ret}invokeDownload(url,filename){C3X.RequireString(url);C3X.RequireString(filename);runtime.InvokeDownload(url,filename)}getInstanceByUid(uid){C3X.RequireFiniteNumber(uid);const ret=runtime.GetInstanceByUID(uid);return ret?ret.GetInterfaceClass():null}sortZOrder(iterable,callback){C3X.RequireFunction(callback);const layout=runtime.GetCurrentLayout();for(const iinst of iterable){const inst=runtime._UnwrapIWorldInstance(iinst);const wi=inst.GetWorldInfo();tempZOrderList.push([wi.GetLayer().GetIndex(), +wi.GetZIndex()]);tempInstances.push(inst)}if(tempZOrderList.length===0)return;tempZOrderList.sort(SortZOrderList);tempInstances.sort((a,b)=>callback(a.GetInterfaceClass(),b.GetInterfaceClass()));let anyChanged=false;for(let i=0,len=tempZOrderList.length;iruntime._UnwrapIObjectClass(ioc));else objectClasses=[runtime._UnwrapIObjectClass(iObjectClasses)];const bbox=C3.Rect.FromObject(domrect);const ret=[];collisionEngine.GetObjectClassesCollisionCandidates(null, +objectClasses,bbox,ret);return ret.map(wi=>wi.GetInterfaceClass())}}; + +} + +// interfaces/other/IStorage.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;self.IStorage=class IStorage{constructor(runtime){this._storage=runtime._GetProjectStorage()}getItem(key){C3X.RequireString(key);return this._storage.getItem(key)}setItem(key,value){C3X.RequireString(key);return this._storage.setItem(key,value)}removeItem(key){C3X.RequireString(key);return this._storage.removeItem(key)}clear(){return this._storage.clear()}keys(){return this._storage.keys()}}; + +} + +// interfaces/objects/IPlugin.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const internalApiToken=C3._GetInternalAPIToken(); +self.IPlugin=class IPlugin{constructor(){const plugin=C3.AddonManager._GetInitObject2(internalApiToken);Object.defineProperties(this,{runtime:{value:plugin.GetRuntime().GetIRuntime(),writable:false},isSingleGlobal:{value:plugin.IsSingleGlobal(),writable:false},isWorldType:{value:plugin.IsWorldType(),writable:false},isHTMLElementType:{value:plugin.IsHTMLElementType(),writable:false},isRotatable:{value:plugin.IsRotatable(),writable:false},hasEffects:{value:plugin.HasEffects(),writable:false},is3d:{value:plugin.Is3D(), +writable:false},supportsHierarchies:{value:plugin.SupportsSceneGraph(),writable:false},supportsMesh:{value:plugin.SupportsMesh(),writable:false}})}}; + +} + +// interfaces/objects/IObjectClass.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.IObjectClass=class IObjectClass{constructor(){const objectClass=C3.AddonManager._GetInitObject2(internalApiToken);map.set(this,objectClass);Object.defineProperties(this,{name:{value:objectClass.GetName(),writable:false},runtime:{value:objectClass.GetRuntime().GetIRuntime(),writable:false},plugin:{value:objectClass.GetPlugin().GetIPlugin(),writable:false}});objectClass.GetRuntime()._MapScriptInterface(this,objectClass)}addEventListener(type,func){C3X.RequireString(type);C3X.RequireFunction(func); +map.get(this).UserScriptDispatcher().addEventListener(type,func)}removeEventListener(type,func){C3X.RequireString(type);C3X.RequireFunction(func);map.get(this).UserScriptDispatcher().removeEventListener(type,func)}getAllInstances(){return[...this.instances()]}getFirstInstance(){return C3.first(this.instances())}getPickedInstances(){return[...this.pickedInstances()]}getFirstPickedInstance(){return C3.first(this.pickedInstances())}getPairedInstance(otherInst_){const objectClass=map.get(this);const otherInst= +objectClass.GetRuntime()._UnwrapIInstance(otherInst_);const ret=objectClass.GetPairedInstance(otherInst);return ret?ret.GetInterfaceClass():null}*instances(){for(const inst of map.get(this).instancesIncludingPendingCreate())yield inst.GetInterfaceClass()}*pickedInstances(){for(const inst of map.get(this).GetCurrentSol().GetInstances())yield inst.GetInterfaceClass()}setInstanceClass(Class){C3X.RequireFunction(Class);const objectClass=map.get(this);if(objectClass.GetInstanceCount()>0)throw new Error("setInstanceClass() called too late, because instances have already been created - call in runOnStartup"); +map.get(this)._SetUserScriptInstanceClass(Class)}createInstance(layerNameOrIndex,x,y,createHierarchy,template){C3X.RequireNumber(x);C3X.RequireNumber(y);if(typeof layerNameOrIndex!=="number"&&typeof layerNameOrIndex!=="string")throw new TypeError("invalid layer parameter");const objectClass=map.get(this);const runtime=objectClass.GetRuntime();const layer=runtime.GetMainRunningLayout().GetLayer(layerNameOrIndex);if(!layer)throw new Error("invalid layer");const inst=runtime.CreateInstance(objectClass, +layer,x,y,createHierarchy,template);if(createHierarchy)layer.SortAndAddInstancesByZIndex(inst);const eventSheetManager=runtime.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);inst._TriggerOnCreatedOnSelfAndRelated();eventSheetManager.BlockFlushingInstances(false);if(!eventSheetManager.IsInEventEngine()&&!runtime.GetLayoutManager().IsEndingLayout())runtime.FlushPendingInstances();return inst.GetInterfaceClass()}}; + +} + +// interfaces/layouts/ILayout.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const VALID_WHERE_STRINGS=["above","below","top-sublayer","bottom-sublayer"]; +self.ILayout=class ILayout{constructor(layout){map.set(this,layout);const effectInstanceArr=[];const effectList=layout.GetEffectList();const effectCount=effectList.GetAllEffectTypes().length;for(let i=0;ilayer.GetILayer())}*allLayers(){for(const layer of map.get(this).allLayers())yield layer.GetILayer()}addLayer(layerName,iInsertBy,whereStr){const layout=map.get(this);const ILayer=self.ILayer;C3X.RequireString(layerName);C3X.RequireOptionalInstanceOf(iInsertBy,ILayer);const insertBy=iInsertBy?layout.GetRuntime()._UnwrapScriptInterface(iInsertBy):null;const where=VALID_WHERE_STRINGS.indexOf(whereStr); +if(where<0)throw new Error("invalid location");layout.AddLayer(layerName,insertBy,where)}moveLayer(iLayer,iInsertBy,whereStr){const layout=map.get(this);const runtime=layout.GetRuntime();const ILayer=self.ILayer;C3X.RequireInstanceOf(iLayer,ILayer);const layer=runtime._UnwrapScriptInterface(iLayer);if(!layer)throw new Error("invalid layer");C3X.RequireOptionalInstanceOf(iInsertBy,ILayer);const insertBy=iInsertBy?runtime._UnwrapScriptInterface(iInsertBy):null;const where=VALID_WHERE_STRINGS.indexOf(whereStr); +if(where<0)throw new Error("invalid location");layout.MoveLayer(layer,insertBy,where)}removeLayer(iLayer){const layout=map.get(this);const ILayer=self.ILayer;C3X.RequireInstanceOf(iLayer,ILayer);const layer=layout.GetRuntime()._UnwrapScriptInterface(iLayer);if(!layer)throw new Error("invalid layer");const runtime=layer.GetRuntime();layout.RemoveLayer(layer);if(!runtime.GetEventSheetManager().IsInEventEngine())runtime.FlushPendingInstances()}removeAllDynamicLayers(){const layout=map.get(this);const runtime= +layout.GetRuntime();layout.RemoveAllDynamicLayers();if(!runtime.GetEventSheetManager().IsInEventEngine())runtime.FlushPendingInstances()}setVanishingPoint(vpX,vpY){C3X.RequireFiniteNumber(vpX);C3X.RequireFiniteNumber(vpY);map.get(this).SetVanishingPointXY(vpX,vpY)}getVanishingPoint(){return map.get(this)._GetVanishingPoint()}set projection(p){C3X.RequireString(p);const layout=map.get(this);if(p==="perspective")layout.SetPerspectiveProjection();else if(p==="orthographic")layout.SetOrthographicProjection(); +else throw new Error("invalid projection");}get projection(){if(map.get(this).IsOrthographicProjection())return"orthographic";else return"perspective"}}; + +} + +// interfaces/layouts/ILayer.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const BLEND_MODE_TO_INDEX=new Map([["normal",0],["additive",1],["copy",3],["destination-over",4],["source-in",5],["destination-in",6],["source-out",7],["destination-out",8],["source-atop",9],["destination-atop",10]]);const INDEX_TO_BLEND_MODE=new Map([...BLEND_MODE_TO_INDEX.entries()].map(a=>[a[1],a[0]]));const tempColor=C3.New(C3.Color); +self.ILayer=class ILayer{constructor(layer){map.set(this,layer);const effectInstanceArr=[];const effectList=layer.GetEffectList();const effectCount=effectList.GetAllEffectTypes().length;for(let i=0;is.GetInterfaceClass()): +[]}*otherContainerInstances(){const inst=map.get(this);if(!inst.IsInContainer())return;for(const s of inst.siblings())yield s.GetInterfaceClass()}get templateName(){return map.get(this).GetTemplateName()}set timeScale(t){C3X.RequireFiniteNumber(t);map.get(this).SetTimeScale(t)}get timeScale(){return map.get(this).GetActiveTimeScale()}restoreTimeScale(){map.get(this).RestoreTimeScale()}get dt(){const inst=map.get(this);return inst.GetRuntime().GetDt(inst)}hasTags(...tagsArray){C3X.RequireArray(tagsArray); +const incomingTags=new Set(tagsArray);const instanceTags=map.get(this).GetTagsSet();return incomingTags.isSubsetOf(instanceTags)}setAllTags(tagsSet){C3X.RequireInstanceOf(tagsSet,Set);map.get(this).SetTagsSet(tagsSet)}getAllTags(){return new Set(map.get(this).GetTagsSet())}}; + +} + +// interfaces/sdk/ISDKInstanceBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.ISDKInstanceBase=class ISDKInstanceBase extends self.IInstance{constructor(opts){super();map.set(this,C3.AddonManager._GetInitObject2(internalApiToken));this._p_isTicking=false;this._p_tickFunc=null;this._p_isTicking2=false;this._p_tickFunc2=null;this._p_domComponentId=opts?.domComponentId;this._p_wrapperComponentId=opts?.wrapperComponentId}_release(){super._release();map.delete(this)}_getInitProperties(){return C3.AddonManager._GetInitProperties()}_trigger(method){const inst=map.get(this);inst.GetRuntime().Trigger(method, +inst)}_triggerAsync(method){const inst=map.get(this);return inst.GetRuntime().TriggerAsync(method,inst)}_addDOMMessageHandler(messageId,callback){C3X.RequireString(messageId);C3X.RequireFunction(callback);if(!this._p_domComponentId)throw new Error(`no DOM component id set`);const runtime=map.get(this).GetRuntime();runtime.AddDOMComponentMessageHandler(this._p_domComponentId,messageId,callback)}_addDOMMessageHandlers(arr){C3X.RequireArray(arr);for(const [messageId,callback]of arr)this._addDOMMessageHandler(messageId, +callback)}_postToDOM(messageId,data){C3X.RequireString(messageId);if(!this._p_domComponentId)throw new Error(`no DOM component id set`);const runtime=map.get(this).GetRuntime();runtime.PostComponentMessageToDOM(this._p_domComponentId,messageId,data)}_postToDOMAsync(messageId,data){C3X.RequireString(messageId);if(!this._p_domComponentId)throw new Error(`no DOM component id set`);const runtime=map.get(this).GetRuntime();return runtime.PostComponentMessageToDOMAsync(this._p_domComponentId,messageId, +data)}_postToDOMMaybeSync(handler,data){const runtime=map.get(this).GetRuntime();if(runtime.IsInWorker())this._postToDOM(handler,data);else return window["c3_runtimeInterface"]["_OnMessageFromRuntime"]({"type":"event","component":this._p_domComponentId,"handler":handler,"data":data,"responseId":null})}_setTicking(isTicking){isTicking=!!isTicking;if(this._p_isTicking===isTicking)return;this._p_isTicking=isTicking;const runtime=map.get(this).GetRuntime();if(isTicking){if(!this._p_tickFunc)this._p_tickFunc= +()=>this._tick();runtime.Dispatcher().addEventListener("tick",this._p_tickFunc)}else runtime.Dispatcher().removeEventListener("tick",this._p_tickFunc)}_isTicking(){return this._p_isTicking}_tick(){}_setTicking2(isTicking){isTicking=!!isTicking;if(this._p_isTicking2===isTicking)return;this._p_isTicking2=isTicking;const runtime=map.get(this).GetRuntime();if(isTicking){if(!this._p_tickFunc2)this._p_tickFunc2=()=>this._tick2();runtime.Dispatcher().addEventListener("tick2",this._p_tickFunc2)}else runtime.Dispatcher().removeEventListener("tick2", +this._p_tickFunc2)}_isTicking2(){return this._p_isTicking2}_tick2(){}_getDebuggerProperties(){return[]}_saveToJson(){return null}_loadFromJson(o){}_isWrapperExtensionAvailable(){if(!this._p_wrapperComponentId)throw new Error(`no wrapper component id set`);const runtime=map.get(this).GetRuntime();return runtime.HasWrapperComponentId(this._p_wrapperComponentId)}_addWrapperExtensionMessageHandler(messageId,callback){C3X.RequireString(messageId);C3X.RequireFunction(callback);if(!this._p_wrapperComponentId)throw new Error(`no wrapper component id set`); +const runtime=map.get(this).GetRuntime();runtime.AddWrapperExtensionMessageHandler(this._p_wrapperComponentId,messageId,callback)}_addWrapperMessageHandlers(arr){C3X.RequireArray(arr);for(const [messageId,callback]of arr)this._addWrapperExtensionMessageHandler(messageId,callback)}_sendWrapperExtensionMessage(messageId,params){if(!this._p_wrapperComponentId)throw new Error(`no wrapper component id set`);this.runtime.sendWrapperExtensionMessage(this._p_wrapperComponentId,messageId,params)}_sendWrapperExtensionMessageAsync(messageId, +params){if(!this._p_wrapperComponentId)throw new Error(`no wrapper component id set`);return this.runtime.sendWrapperExtensionMessageAsync(this._p_wrapperComponentId,messageId,params)}}; + +} + +// interfaces/objects/IWorldInstance.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const IInstance=self.IInstance;const ILayer=self.ILayer;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken();const BLEND_MODE_TO_INDEX=new Map([["normal",0],["additive",1],["copy",3],["destination-over",4],["source-in",5],["destination-in",6],["source-out",7],["destination-out",8],["source-atop",9],["destination-atop",10]]);const INDEX_TO_BLEND_MODE=new Map([...BLEND_MODE_TO_INDEX.entries()].map(a=>[a[1],a[0]]));const tempColor=C3.New(C3.Color); +function MakeIWorldInstanceClass(BaseClass){return class IWorldInstance extends BaseClass{constructor(opts){super(opts);const inst=C3.AddonManager._GetInitObject2(internalApiToken);map.set(this,inst);const effectInstanceArr=[];const wi=inst.GetWorldInfo();const instanceEffectList=wi.GetInstanceEffectList();if(instanceEffectList){const effectCount=wi.GetObjectClass().GetEffectList().GetAllEffectTypes().length;for(let i=0;iinst.GetInterfaceClass())}static getByConstructor(ctor){if(!ctor)return null;const behavior=C3.AddonManager.GetBehaviorByConstructorFunction(ctor);return behavior?behavior.GetIBehavior(): +null}}; + +} + +// interfaces/objects/IEffectInstance.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const tempColor=C3.New(C3.Color); +self.IEffectInstance=class IEffectInstance{constructor(effectList,index){map.set(this,effectList);const descriptors={index:{value:index,writable:false}};Object.defineProperties(this,descriptors)}get name(){const effectTypes=map.get(this).GetAllEffectTypes();return effectTypes[this.index].GetName()}get isActive(){return map.get(this).IsEffectIndexActive(this.index)}set isActive(a){a=!!a;const fxList=map.get(this);if(fxList.IsEffectIndexActive(this.index)===a)return;fxList.SetEffectIndexActive(this.index, +a);fxList.UpdateActiveEffects();fxList.GetRuntime().UpdateRender()}setParameter(i,v){C3X.RequireFiniteNumber(i);i=Math.floor(+i);const fxList=map.get(this);const oldValue=fxList.GetEffectParameter(this.index,i);if(oldValue===null)throw new RangeError("invalid index");if(oldValue instanceof C3.Color){if(!Array.isArray(v)||v.length<3)throw new TypeError("expected array with 3 elements");tempColor.setRgb(v[0],v[1],v[2]);v=tempColor}else if(typeof v!=="number")throw new TypeError("expected number");const didChange= +fxList.SetEffectParameter(this.index,i,v);if(didChange&&fxList.IsEffectIndexActive(this.index))fxList.GetRuntime().UpdateRender()}getParameter(i){C3X.RequireFiniteNumber(i);i=Math.floor(+i);const fxList=map.get(this);const ret=fxList.GetEffectParameter(this.index,i);if(ret===null)throw new RangeError("invalid index");if(ret instanceof C3.Color)return[ret.getR(),ret.getG(),ret.getB()];else return ret}}; + +} + +// interfaces/objects/IAnimation.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap; +self.IAnimation=class IAnimation{constructor(animationInfo){map.set(this,animationInfo);Object.defineProperties(this,{name:{value:animationInfo.GetName(),writable:false}})}get speed(){return map.get(this).GetSpeed()}get isLooping(){return map.get(this).IsLooping()}get repeatCount(){return map.get(this).GetRepeatCount()}get repeatTo(){return map.get(this).GetRepeatTo()}get isPingPong(){return map.get(this).IsPingPong()}get frameCount(){return map.get(this).GetFrameCount()}getFrames(){return map.get(this).GetFrames().map(f=>f.GetIAnimationFrame())}*frames(){for(const f of map.get(this).GetFrames())yield f.GetIAnimationFrame()}}; + +} + +// interfaces/objects/IImageInfo.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;self.IImageInfo=class IImageInfo{constructor(imageInfo){map.set(this,imageInfo)}static _Unwrap(iImageInfo){return map.get(iImageInfo)}get width(){return map.get(this).GetWidth()}get height(){return map.get(this).GetHeight()}getSize(){const imageInfo=map.get(this);return[imageInfo.GetWidth(),imageInfo.GetHeight()]}getTexture(renderer){return renderer.getTextureForImageInfo(this)}getTexRect(){return map.get(this).GetTexRect().toDOMRect()}}; + +} + +// interfaces/objects/IAnimationFrame.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap; +self.IAnimationFrame=class IAnimationFrame extends self.IImageInfo{constructor(animationFrameInfo){super(animationFrameInfo.GetImageInfo());map.set(this,animationFrameInfo);Object.defineProperties(this,{duration:{value:animationFrameInfo.GetDuration(),writable:false},originX:{value:animationFrameInfo.GetOriginX(),writable:false},originY:{value:animationFrameInfo.GetOriginY(),writable:false}})}getOrigin(){const afi=map.get(this);return[afi.GetOriginX(),afi.GetOriginY()]}getImagePointCount(){return map.get(this).GetImagePointCount()}getImagePointX(nameOrIndex){return this.getImagePoint(nameOrIndex)[0]}getImagePointY(nameOrIndex){return this.getImagePoint(nameOrIndex)[1]}getImagePoint(nameOrIndex){const afi= +map.get(this);let ip=null;if(typeof nameOrIndex==="number")ip=afi.GetImagePointByIndex(Math.floor(nameOrIndex));else if(typeof nameOrIndex==="string")ip=afi.GetImagePointByName(nameOrIndex);else throw new TypeError("expected string or number");if(!ip)return this.getOrigin();return[ip.GetX(),ip.GetY()]}getPolyPointCount(){const poly=map.get(this).GetCollisionPoly();return poly?poly.pointCount():0}getPolyPointX(index){return this.getPolyPoint(index)[0]}getPolyPointY(index){return this.getPolyPoint(index)[1]}getPolyPoint(index){C3X.RequireFiniteNumber(index); +index=Math.floor(index);const poly=map.get(this).GetCollisionPoly();if(!poly||index<0||index>=poly.pointCount())return[0,0];const pointsArr=poly.pointsArr();const ptX=pointsArr[index*2];const ptY=pointsArr[index*2+1];return[ptX,ptY]}get tag(){return map.get(this).GetTag()}}; + +} + +// interfaces/other/ITimelineStateBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;function GetTimelineState(iface){const timelineState=map.get(iface);if(timelineState.IsReleased())throw new Error("timeline/tween was released and is no longer valid");return timelineState} +self.ITimelineStateBase=class ITimelineStateBase{constructor(timelineState){map.set(this,timelineState);timelineState.GetRuntime()._MapScriptInterface(this,timelineState)}pause(){GetTimelineState(this).Stop()}resume(){GetTimelineState(this).Resume()}stop(){GetTimelineState(this).Reset()}hasTags(tags){return GetTimelineState(this).HasTags(tags)}set time(t){C3X.RequireFiniteNumber(t);GetTimelineState(this).SetTime(t)}get time(){return GetTimelineState(this).GetTime()}set totalTime(t){C3X.RequireFiniteNumber(t); +GetTimelineState(this).SetTotalTime(t)}get totalTime(){return GetTimelineState(this).GetTotalTime()}set isLooping(l){GetTimelineState(this).SetLoop(!!l)}get isLooping(){return GetTimelineState(this).GetLoop()}set isPingPong(p){GetTimelineState(this).SetPingPong(!!p)}get isPingPong(){return GetTimelineState(this).GetPingPong()}set playbackRate(p){C3X.RequireFiniteNumber(p);GetTimelineState(this).SetPlaybackRate(p)}get playbackRate(){return GetTimelineState(this).GetPlaybackRate()}get progress(){const timelineState= +GetTimelineState(this);return timelineState.GetTime()/timelineState.GetTotalTime()}get tags(){return GetTimelineState(this).GetTags()}get finished(){return GetTimelineState(this).GetPlayPromise()}get isPlaying(){return GetTimelineState(this).IsPlaying()}get isPaused(){return GetTimelineState(this).IsPaused()}get isReleased(){return map.get(this).IsReleased()}}; + +} + +// interfaces/other/ITimelineState.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;let easeToIndexFunc=null;function GetTimelineState(iface){const timelineState=map.get(iface);if(timelineState.IsReleased())throw new Error("timeline was released and is no longer valid");return timelineState} +self.ITimelineState=class ITimelineState extends self.ITimelineStateBase{constructor(timelineState){super(timelineState);map.set(this,timelineState);const descriptors={name:{value:timelineState.GetName(),writable:false}};Object.defineProperties(this,descriptors)}}; + +} + +// interfaces/other/ITweenState.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const behInstMap=new WeakMap;let easeToIndexFunc=null;function GetTweenState(iface){const tweenState=map.get(iface);if(tweenState.IsReleased())throw new Error("tween was released and is no longer valid");return tweenState} +self.ITweenState=class ITweenState extends self.ITimelineStateBase{constructor(tweenState,behInst,opts){super(tweenState);if(!easeToIndexFunc)easeToIndexFunc=opts.easeToIndexFunc;map.set(this,tweenState);if(behInst)behInstMap.set(this,behInst)}stop(){const tweenState=GetTweenState(this);const behInst=behInstMap.get(this);behInst.ReleaseTween(tweenState)}setEase(easeName){C3X.RequireString(easeName);const ease=self.Ease.GetEaseFromIndex(easeToIndexFunc(easeName));GetTweenState(this).SetEase(ease)}get instance(){const inst= +GetTweenState(this).GetInstance();return inst?inst.GetInterfaceClass():null}get isDestroyOnComplete(){return GetTweenState(this).GetDestroyInstanceOnComplete()}set isDestroyOnComplete(d){GetTweenState(this).SetDestroyInstanceOnComplete(!!d)}get value(){const tweenState=GetTweenState(this);if(tweenState.GetId()!=="value")throw new Error("not a value tween");return tweenState.GetPropertyTrack("value").GetSourceAdapterValue()}}; + +} + +// interfaces/sdk/ISDKPluginBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;self.ISDKPluginBase=class ISDKPluginBase extends self.IPlugin{constructor(){super()}}; + +} + +// interfaces/sdk/ISDKDOMPluginBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.ISDKDOMPluginBase=class ISDKDOMPluginBase extends self.ISDKPluginBase{constructor(opts){super();map.set(this,C3.AddonManager._GetInitObject2(internalApiToken));if(!opts?.domComponentId)throw new Error(`no DOM component ID specified`);this._p_domComponentId=opts.domComponentId;this._p_nextElementId=0;this._p_instMap=new Map;this._addElementMessageHandler("elem-focused",inst=>inst._onElemFocused());this._addElementMessageHandler("elem-blurred",inst=>{if(inst)inst._onElemBlurred()})}_addElement(inst){const elementId= +this._p_nextElementId++;this._p_instMap.set(elementId,inst);return elementId}_removeElement(elementId){this._p_instMap.delete(elementId)}_addElementMessageHandler(handler,func){const runtime=map.get(this).GetRuntime();runtime.AddDOMComponentMessageHandler(this._p_domComponentId,handler,e=>{const inst=this._p_instMap.get(e["elementId"]);func(inst,e)})}_addElementMessageHandlers(arr){C3X.RequireArray(arr);for(const [handler,func]of arr)this._addElementMessageHandlers(handler,func)}}; + +} + +// interfaces/sdk/ISDKObjectTypeBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken();self.ISDKObjectTypeBase=class ISDKObjectTypeBase extends self.IObjectClass{constructor(){super();const objectClass=C3.AddonManager._GetInitObject2(internalApiToken);map.set(this,objectClass)}_onCreate(){}getImageInfo(){return map.get(this).GetImageInfo().GetIImageInfo()}_loadTextures(renderer){}_releaseTextures(renderer){}_onDynamicTextureLoadComplete(){}_preloadTexturesWithInstances(renderer){}}; + +} + +// interfaces/sdk/ISDKWorldInstanceBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.ISDKWorldInstanceBase=class ISDKWorldInstanceBase extends self.IWorldInstanceSDKBase{constructor(opts){super(opts);map.set(this,C3.AddonManager._GetInitObject2(internalApiToken));this._p_renderercontextlost_handler=null;this._p_renderercontextrestored_handler=null}_release(){super._release();if(this._p_renderercontextlost_handler){const dispatcher=map.get(this).GetRuntime().Dispatcher();dispatcher.removeEventListener("renderercontextlost",this._p_renderercontextlost_handler);dispatcher.removeEventListener("renderercontextrestored", +this._p_renderercontextrestored_handler);this._p_renderercontextlost_handler=null;this._p_renderercontextrestored_handler=null}map.delete(this)}_handleRendererContextLoss(){if(this._p_renderercontextlost_handler)return;this._p_renderercontextlost_handler=()=>this._onRendererContextLost();this._p_renderercontextrestored_handler=()=>this._onRendererContextRestored();const dispatcher=map.get(this).GetRuntime().Dispatcher();dispatcher.addEventListener("renderercontextlost",this._p_renderercontextlost_handler); +dispatcher.addEventListener("renderercontextrestored",this._p_renderercontextrestored_handler)}_onRendererContextLost(){}_onRendererContextRestored(){}_draw(renderer){}}; + +} + +// interfaces/sdk/ISDKDOMInstanceBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const tempRect=C3.New(C3.Rect);const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.ISDKDOMInstanceBase=class ISDKDOMInstanceBase extends self.ISDKWorldInstanceBase{constructor(opts){if(!opts?.domComponentId)throw new Error(`no DOM component ID specified`);super(opts);const inst=C3.AddonManager._GetInitObject2(internalApiToken);map.set(this,inst);this._p_elementId=this.plugin._addElement(this);this._p_isElementShowing=true;this._p_elemHasFocus=false;this._p_autoFontSize=false;this._p_autoFontSizeOffset=-.2;this._p_lastRect=C3.New(C3.Rect,0,0,-1,-1);const canvasManager=inst.GetRuntime().GetCanvasManager(); +this._p_lastWindowWidth=canvasManager.GetLastWidth();this._p_lastWindowHeight=canvasManager.GetLastHeight();this._p_lastHTMLIndex=-1;this._p_lastHTMLZIndex=-1;this._p_isPendingUpdateState=false;this._setTicking(true)}_release(){super._release();this.plugin._removeElement(this._p_elementId);this._postToDOMElement("destroy");this._p_elementId=-1;map.delete(this)}_getElementInDOMMode(){const runtime=map.get(this).GetRuntime();if(runtime.IsInWorker())throw new Error("not valid in worker mode");return this._postToDOMElementMaybeSync("get-element")}_postToDOMElement(handler, +data){if(!data)data={};data["elementId"]=this._p_elementId;this._postToDOM(handler,data)}_postToDOMElementMaybeSync(handler,data){if(!data)data={};data["elementId"]=this._p_elementId;return this._postToDOMMaybeSync(handler,data)}_postToDOMElementAsync(handler,data){if(!data)data={};data["elementId"]=this._p_elementId;return this._postToDOMAsync(handler,data)}_createElement(data){if(!data)data={};const wi=map.get(this).GetWorldInfo();data["elementId"]=this._p_elementId;data["isVisible"]=wi.IsVisible(); +data["htmlIndex"]=wi.GetLayer().GetHTMLIndex();data["htmlZIndex"]=wi.GetHTMLZIndex();Object.assign(data,this._getElementState());this._p_isElementShowing=!!data["isVisible"];this._postToDOMMaybeSync("create",data);this._updatePosition(true)}setElementVisible(v){v=!!v;if(this._p_isElementShowing===v)return;this._p_isElementShowing=v;this._postToDOMElement("set-visible",{"isVisible":v})}_tick(){this._updatePosition(false)}_shouldPreserveElement(){const runtime=map.get(this).GetRuntime();const fullscreenMode= +runtime.GetCanvasManager().GetFullscreenMode();return C3.Platform.OS==="Android"&&(fullscreenMode==="scale-inner"||fullscreenMode==="scale-outer"||fullscreenMode==="crop")}_updatePosition(first){const inst=map.get(this);if(inst.IsDestroyed())return;const wi=inst.GetWorldInfo();const layer=wi.GetLayer();const bbox=wi.GetBoundingBox();let [cleft,ctop]=layer.LayerToCanvasCss(bbox.getLeft(),bbox.getTop());let [cright,cbottom]=layer.LayerToCanvasCss(bbox.getRight(),bbox.getBottom());const canvasManager= +inst.GetRuntime().GetCanvasManager();const rightEdge=canvasManager.GetCssWidth();const bottomEdge=canvasManager.GetCssHeight();if(!wi.IsVisible()||!layer.IsVisible()){this.setElementVisible(false);return}if(!this._shouldPreserveElement())if(cright<=0||cbottom<=0||cleft>=rightEdge||ctop>=bottomEdge){this.setElementVisible(false);return}tempRect.set(cleft,ctop,cright,cbottom);const curWinWidth=canvasManager.GetLastWidth();const curWinHeight=canvasManager.GetLastHeight();const curHTMLIndex=layer.GetHTMLIndex(); +const curHTMLZIndex=wi.GetHTMLZIndex();if(!first&&tempRect.equals(this._p_lastRect)&&this._p_lastWindowWidth===curWinWidth&&this._p_lastWindowHeight===curWinHeight&&this._p_lastHTMLIndex===curHTMLIndex&&this._p_lastHTMLZIndex===curHTMLZIndex){this.setElementVisible(true);return}this._p_lastRect.copy(tempRect);this._p_lastWindowWidth=curWinWidth;this._p_lastWindowHeight=curWinHeight;this._p_lastHTMLIndex=curHTMLIndex;this._p_lastHTMLZIndex=curHTMLZIndex;this.setElementVisible(true);let fontSize=null; +if(this._p_autoFontSize)fontSize=layer.GetDisplayScale()+this._p_autoFontSizeOffset;this._postToDOMElement("update-position",{"left":Math.round(this._p_lastRect.getLeft()),"top":Math.round(this._p_lastRect.getTop()),"width":Math.round(this._p_lastRect.width()),"height":Math.round(this._p_lastRect.height()),"htmlIndex":curHTMLIndex,"htmlZIndex":curHTMLZIndex,"fontSize":fontSize})}focusElement(){this._postToDOMElementMaybeSync("focus",{"focus":true})}blurElement(){this._postToDOMElementMaybeSync("focus", +{"focus":false})}_onElemFocused(){this._p_elemHasFocus=true}_onElemBlurred(){this._p_elemHasFocus=false}isElementFocused(){return this._p_elemHasFocus}setElementCSSStyle(prop,val){this.postToDOMElement("set-css-style",{"prop":C3.CSSToCamelCase(prop),"val":val})}setElementAttribute(attribName,value){this.postToDOMElement("set-attribute",{"name":attribName,"val":value})}removeElementAttribute(attribName){this.postToDOMElement("remove-attribute",{"name":attribName})}_updateElementState(){if(this._p_isPendingUpdateState)return; +this._p_isPendingUpdateState=true;Promise.resolve().then(()=>{this._p_isPendingUpdateState=false;this._postToDOMElement("update-state",this._getElementState())})}_getElementState(){}_getElementId(){return this._p_elementId}}; + +} + +// interfaces/sdk/ISDKBehaviorBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;self.ISDKBehaviorBase=class ISDKBehaviorBase extends self.IBehavior{constructor(){super()}}; + +} + +// interfaces/sdk/ISDKBehaviorTypeBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;self.ISDKBehaviorTypeBase=class ISDKBehaviorTypeBase extends globalThis.IBehaviorType{constructor(){super()}_onCreate(){}}; + +} + +// interfaces/sdk/ISDKBehaviorInstanceBase.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const internalApiToken=C3._GetInternalAPIToken(); +self.ISDKBehaviorInstanceBase=class ISDKBehaviorInstanceBase extends self.IBehaviorInstance{constructor(){super();map.set(this,C3.AddonManager._GetInitObject2(internalApiToken));this._p_isTicking=false;this._p_isTicking2=false;this._p_isPostTicking=false}_release(){super._release();this._setTicking(false);this._setTicking2(false);this._setPostTicking(false);map.delete(this)}_getInitProperties(){return C3.AddonManager._GetInitProperties()}_postCreate(){}_trigger(method){const behInst=map.get(this); +behInst.GetRuntime().Trigger(method,behInst.GetObjectInstance(),behInst.GetBehaviorType())}_triggerAsync(method){const behInst=map.get(this);return behInst.GetRuntime().TriggerAsync(method,behInst.GetObjectInstance(),behInst.GetBehaviorType())}_setTicking(isTicking){isTicking=!!isTicking;if(this._p_isTicking===isTicking)return;this._p_isTicking=isTicking;const runtime=map.get(this).GetRuntime();if(isTicking)runtime._AddBehInstToTick(this);else runtime._RemoveBehInstToTick(this)}_isTicking(){return this._p_isTicking}_tick(){}_setTicking2(isTicking){isTicking= +!!isTicking;if(this._p_isTicking2===isTicking)return;this._p_isTicking2=isTicking;const runtime=map.get(this).GetRuntime();if(isTicking)runtime._AddBehInstToTick2(this);else runtime._RemoveBehInstToTick2(this)}_isTicking2(){return this._p_isTicking2}_tick2(){}_setPostTicking(isTicking){isTicking=!!isTicking;if(this._p_isPostTicking===isTicking)return;this._p_isPostTicking=isTicking;const runtime=map.get(this).GetRuntime();if(isTicking)runtime._AddBehInstToPostTick(this);else runtime._RemoveBehInstToPostTick(this)}_isPostTicking(){return this._p_isPostTicking}_postTick(){}_getDebuggerProperties(){return[]}_saveToJson(){return null}_loadFromJson(o){}}; + +} + +// interfaces/gfx/IRenderer.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;let renderer=null;let runtime=null; +self.IRenderer=class IRenderer{constructor(runtime_,renderer_){runtime=runtime_;renderer=renderer_}setAlphaBlendMode(){renderer.SetAlphaBlend()}setBlendMode(blendMode){renderer.SetNamedBlendMode(blendMode)}setColorFillMode(){renderer.SetColorFillMode()}setTextureFillMode(){renderer.SetTextureFillMode()}setSmoothLineFillMode(){renderer.SetSmoothLineFillMode()}setColor(color){renderer.SetColorRgba(color[0],color[1],color[2],color[3])}setColorRgba(r,g,b,a){renderer.SetColorRgba(r,g,b,a)}resetColor(){renderer.ResetColor()}setOpacity(o){renderer.SetOpacity(o)}setCurrentZ(z){renderer.SetCurrentZ(z)}getCurrentZ(){renderer.GetCurrentZ()}rect(r){renderer.Rect2(r.left, +r.top,r.right,r.bottom)}rect2(l,t,r,b){renderer.Rect2(l,t,r,b)}quad(quad){renderer.Quad(C3.Quad.fromDOMQuad(quad))}quad2(tlx,tly,trx,try_,brx,bry,blx,bly){renderer.Quad2(tlx,tly,trx,try_,brx,bry,blx,bly)}quad3(quad,rect){renderer.Quad3(C3.Quad.fromDOMQuad(quad),C3.Rect.fromDOMRect(rect))}quad4(quad,texQuad){renderer.Quad4(C3.Quad.fromDOMQuad(quad),C3.Quad.fromDOMQuad(texQuad))}quad3D(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,rect){renderer.Quad3D(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly, +blz,C3.Rect.fromDOMRect(rect))}quad3D2(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,texQuad){renderer.Quad3D2(tlx,tly,tlz,trx,try_,trz,brx,bry,brz,blx,bly,blz,C3.Quad.fromDOMQuad(texQuad))}drawMesh(posArr,uvArr,indexArr){renderer.DrawMesh(posArr,uvArr,indexArr)}convexPoly(pointsArray){renderer.ConvexPoly(pointsArray)}line(x1,y1,x2,y2){renderer.Line(x1,y1,x2,y2)}texturedLine(x1,y1,x2,y2,u,v){renderer.TexturedLine(x1,y1,x2,y2,u,v)}lineRect(l,t,r,b){renderer.LineRect(l,t,r,b)}lineRect2(rect){renderer.LineRect2(C3.Rect.fromDOMRect(rect))}lineQuad(quad){renderer.LineQuad(C3.Quad.fromDOMQuad(quad))}pushLineWidth(w){renderer.PushLineWidth(w)}popLineWidth(){renderer.PopLineWidth()}pushLineCap(lineCap){renderer.PushLineCap(lineCap)}popLineCap(){renderer.PopLineCap()}setTexture(itexture){C3X.RequireOptionalInstanceOf(itexture, +self.ITexture);const texture=itexture?runtime._UnwrapScriptInterface(itexture):null;renderer.SetTexture(texture)}loadTextureForImageInfo(iImageInfo,opts){const imageInfo=self.IImageInfo._Unwrap(iImageInfo);if(!imageInfo)throw new Error(`invalid IImageInfo`);return imageInfo.LoadStaticTexture(renderer,{wrapX:opts?.wrapX??"clamp-to-edge",wrapY:opts?.wrapY??"clamp-to-edge",sampling:opts?.sampling??"trilinear",mipMap:opts?.mipMap??true})}releaseTextureForImageInfo(iImageInfo){const imageInfo=self.IImageInfo._Unwrap(iImageInfo); +if(!imageInfo)throw new Error(`invalid IImageInfo`);imageInfo.ReleaseTexture()}getTextureForImageInfo(iImageInfo){const imageInfo=self.IImageInfo._Unwrap(iImageInfo);if(!imageInfo)throw new Error(`invalid IImageInfo`);const texture=imageInfo.GetTexture();return self.ITexture.GetInterface(runtime,texture)}createDynamicTexture(width,height,opts){C3X.RequireFiniteNumber(width);C3X.RequireFiniteNumber(height);const texture=renderer.CreateDynamicTexture(width,height,{wrapX:opts?.wrapX??"clamp-to-edge", +wrapY:opts?.wrapY??"clamp-to-edge",sampling:opts?.sampling??"trilinear",mipMap:opts?.mipMap??true});return self.ITexture.GetInterface(runtime,texture)}updateTexture(data,itexture,opts){C3X.RequireInstanceOf(itexture,self.ITexture);const texture=runtime._UnwrapScriptInterface(itexture);renderer.UpdateTexture(data,texture,{premultiplyAlpha:opts?.premultiplyAlpha??true})}deleteTexture(itexture){C3X.RequireInstanceOf(itexture,self.ITexture);const texture=runtime._UnwrapScriptInterface(itexture);renderer.DeleteTexture(texture)}createRendererText(){const rendererText= +renderer.CreateRendererText();return new self.IRendererText(runtime,rendererText)}setDeviceTransform(){runtime.GetCanvasManager().SetDeviceTransform(renderer)}setLayerTransform(iLayer){C3X.RequireInstanceOf(iLayer,globalThis.ILayer);const layer=runtime._UnwrapScriptInterface(iLayer);layer._SetTransform(renderer)}}; + +} + +// interfaces/gfx/ITexture.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;const reverseMap=new WeakMap; +self.ITexture=class ITexture{constructor(runtime,texture){map.set(this,{runtime,texture});reverseMap.set(texture,this);runtime._MapScriptInterface(this,texture);Object.defineProperties(this,{width:{value:texture.GetWidth(),writable:false},height:{value:texture.GetHeight(),writable:false}})}static GetInterface(runtime,texture){if(!texture)return null;const existingInterface=reverseMap.get(texture);if(existingInterface)return existingInterface;return new self.ITexture(runtime,texture)}}; + +} + +// interfaces/gfx/IRendererText.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const map=new WeakMap;function getActual(iface){return map.get(iface).rendererText} +self.IRendererText=class IRendererText{constructor(runtime,rendererText){map.set(this,{runtime,rendererText});runtime._MapScriptInterface(this,rendererText)}release(){getActual(this).Release()}set fontFace(name){C3X.RequireString(name);getActual(this).SetFontName(name)}get fontFace(){return getActual(this).GetFontName()}set sizePt(s){C3X.RequireFiniteNumber(s);getActual(this).SetFontSize(s)}get sizePt(){return getActual(this).GetFontSize()}set lineHeight(px){C3X.RequireFiniteNumber(px);getActual(this).SetLineHeight(px)}get lineHeight(){return getActual(this).GetLineHeight()}set isBold(b){getActual(this).SetBold(b)}get isBold(){return getActual(this).IsBold()}set isItalic(i){getActual(this).SetItalic(i)}get isItalic(){return getActual(this).IsItalic()}setColor(arr){C3X.RequireArray(arr); +this.setColorRgb(arr[0],arr[1],arr[2])}setColorRgb(r,g,b){getActual(this).SetColorRgb(r,g,b)}setCssColor(str){C3X.RequireString(str);getActual(this).SetColor(str)}set horizontalAlign(h){getActual(this).SetHorizontalAlignment(h)}get horizontalAlign(){return getActual(this).GetHorizontalAlignment()}set verticalAlign(v){getActual(this).SetVerticalAlignment(v)}get verticalAlign(){return getActual(this).GetVerticalAlignment()}set wordWrapMode(m){getActual(this).SetWordWrapMode(m)}get wordWrapMode(){return getActual(this).GetWordWrapMode()}set textDirection(d){getActual(this).SetTextDirection(d)}get textDirection(){return getActual(this).GetTextDirection()}set text(str){C3X.RequireString(str); +getActual(this).SetText(str)}get text(){return getActual(this).GetText()}setSize(cssWidth,cssHeight,zoomScale){C3X.RequireFiniteNumber(cssWidth);C3X.RequireFiniteNumber(cssHeight);C3X.RequireFiniteNumber(zoomScale);getActual(this).SetSize(cssWidth,cssHeight,zoomScale)}getTexture(){const {runtime,rendererText}=map.get(this);const texture=rendererText.GetTexture();return self.ITexture.GetInterface(runtime,texture)}getTexRect(){return getActual(this).GetTexRect().toDOMRect()}setTextureUpdateCallback(cb){C3X.RequireFunction(cb); +getActual(this).ontextureupdate=cb}releaseTexture(){getActual(this).ReleaseTexture()}get textWidth(){return getActual(this).GetTextWidth()}get textHeight(){return getActual(this).GetTextHeight()}}; + +} + +// assets/assetManager.js +{ +'use strict';const C3=self.C3;const VALID_LOAD_POLICIES=new Set(["local","remote"]);const EXT_TO_TYPE=new Map([["mp4","video/mp4"],["webm","video/webm"],["m4a","audio/mp4"],["mp3","audio/mpeg"],["js","application/javascript"],["wasm","application/wasm"],["svg","image/svg+xml"],["html","text/html"]]);function GetTypeFromFileExtension(filename){if(!filename)return"";const parts=filename.split(".");if(parts.length<2)return"";const ext=parts.at(-1).toLowerCase();return EXT_TO_TYPE.get(ext)||""} +function AddScript(url){return new Promise((resolve,reject)=>{const elem=document.createElement("script");elem.onload=resolve;elem.onerror=reject;elem.async=false;elem.type="module";elem.src=url;document.head.appendChild(elem)})} +C3.AssetManager=class AssetManager extends C3.DefendedBase{constructor(runtime,opts){super();const exportType=opts["exportType"];this._runtime=runtime;this._fileStructure="folders";this._cordovaBlobUrlCache=new Map;this._isCordova=exportType==="cordova";this._isiOSCordova=!!opts["isiOSCordova"];this._isFileProtocol=!!opts["isFileProtocol"];this._swClientId=opts["swClientId"];this._supportedAudioFormats=opts["supportedAudioFormats"]||{};this._audioFiles=new Map;this._preloadSounds=false;this._scriptSubfolder= +opts["scriptFolder"];this._mediaSubfolder="";this._fontsSubfolder="";this._iconsSubfolder="";this._fileMap=opts["fileMap"]||new Map;this._fileMapBlobUrls=new Map;const isRemoteLoadPolicy=exportType==="html5"||exportType==="scirra-arcade"||exportType==="instant-games";this._defaultLoadPolicy=isRemoteLoadPolicy?"remote":"local";this._assetsByUrl=new Map;this._webFonts=[];this._loadPromises=[];this._hasFinishedInitialLoad=false;this._totalAssetSizeToLoad=0;this._assetSizeLoaded=0;this._lastLoadProgress= +0;this._hasHadErrorLoading=false;this._loadingRateLimiter=C3.New(C3.RateLimiter,()=>this._FireLoadingProgressEvent(),50);this._localPromiseThrottle=C3.New(C3.PromiseThrottle,Math.max(C3.hardwareConcurrency,8));this._remotePromiseThrottle=C3.New(C3.PromiseThrottle,20);this._iAssetManager=new self.IAssetManager(this)}Release(){for(const asset of this._assetsByUrl.values())asset.Release();this._assetsByUrl.clear();C3.clearArray(this._loadPromises);this._runtime=null}GetRuntime(){return this._runtime}_SetFileStructure(f){this._fileStructure= +f}GetFileStructure(){return this._fileStructure}GetScriptSubfolder(){return this._scriptSubfolder}_SetMediaSubfolder(folder){this._mediaSubfolder=folder}GetMediaSubfolder(){return this._mediaSubfolder}_SetFontsSubfolder(folder){this._fontsSubfolder=folder}GetFontsSubfolder(){return this._fontsSubfolder}_SetIconsSubfolder(folder){this._iconsSubfolder=folder}GetIconsSubfolder(){return this._iconsSubfolder}IsFileProtocol(){return this._isFileProtocol}FetchBlob(url,loadPolicy){loadPolicy=loadPolicy|| +this._defaultLoadPolicy;if(C3.IsRelativeURL(url)){if(this._fileStructure==="flat")url=url.toLowerCase();if(this._isCordova&&this._isFileProtocol)return this.CordovaFetchLocalFileAsBlob(url);else if(this._runtime.GetExportType()==="playable-ad-single-file")return self["c3_runtimeInterface"]["_PlayableAdFetchBlob"](url);else if(loadPolicy==="local")return this._localPromiseThrottle.Add(()=>C3.FetchBlob(url));else return this._remotePromiseThrottle.Add(()=>C3.FetchBlob(url))}else return C3.FetchBlob(url)}FetchArrayBuffer(url){if(C3.IsRelativeURL(url)){if(this._fileStructure=== +"flat")url=url.toLowerCase();if(this._isCordova&&this._isFileProtocol)return this.CordovaFetchLocalFileAsArrayBuffer(url);else if(this._runtime.GetExportType()==="playable-ad-single-file")return C3.BlobToArrayBuffer(self["c3_runtimeInterface"]["_PlayableAdFetchBlob"](url));else if(this._defaultLoadPolicy==="local")return this._localPromiseThrottle.Add(()=>C3.FetchArrayBuffer(url));else return this._remotePromiseThrottle.Add(()=>C3.FetchArrayBuffer(url))}else return C3.FetchArrayBuffer(url)}FetchText(url){if(C3.IsRelativeURL(url)){if(this._fileStructure=== +"flat")url=url.toLowerCase();if(this._isCordova&&this._isFileProtocol)return this.CordovaFetchLocalFileAsText(url);else if(this._runtime.GetExportType()==="playable-ad-single-file")return C3.BlobToString(self["c3_runtimeInterface"]["_PlayableAdFetchBlob"](url));else if(this._defaultLoadPolicy==="local")return this._localPromiseThrottle.Add(()=>C3.FetchText(url));else return this._remotePromiseThrottle.Add(()=>C3.FetchText(url))}else return C3.FetchText(url)}async FetchJson(url){const text=await this.FetchText(url); +return JSON.parse(text)}_CordovaFetchLocalFileAs(filename,as_){if(this._fileStructure==="flat")filename=filename.toLowerCase();return this._runtime.PostComponentMessageToDOMAsync("runtime","cordova-fetch-local-file",{"filename":filename,"as":as_})}CordovaFetchLocalFileAsText(filename){return this._CordovaFetchLocalFileAs(filename,"text")}async CordovaFetchLocalFileAsBlob(filename){const buffer=await this._CordovaFetchLocalFileAs(filename,"buffer");const type=GetTypeFromFileExtension(filename);return new Blob([buffer], +{"type":type})}async CordovaFetchLocalFileAsBlobURL(filename){if(this._fileStructure==="flat")filename=filename.toLowerCase();let blobUrl=this._cordovaBlobUrlCache.get(filename);if(blobUrl)return blobUrl;const blob=await this.CordovaFetchLocalFileAsBlob(filename);blobUrl=URL.createObjectURL(blob);this._cordovaBlobUrlCache.set(filename,blobUrl);return blobUrl}CordovaFetchLocalFileAsArrayBuffer(filename){return this._CordovaFetchLocalFileAs(filename,"buffer")}GetMediaFileUrl(filename){if(this._fileStructure=== +"flat")filename=filename.toLowerCase();let ret=this._mediaSubfolder+filename;if(C3.Platform.BrowserEngine==="Gecko"&&this._runtime.GetExportType()==="preview")ret=this._GetLocalBlobURLFromFileMap(ret);return ret}GetProjectFileUrl(url){if(C3.IsAbsoluteURL(url))return Promise.resolve(url);else if(this._isCordova&&this._isFileProtocol)return this.CordovaFetchLocalFileAsBlobURL(url);else{if(this._fileStructure==="flat")url=url.toLowerCase();return Promise.resolve(url)}}GetProjectFileIframeUrl(url){if(C3.IsAbsoluteURL(url)|| +this._runtime.GetExportType()!=="preview"||!this._swClientId||!url)return url;else try{const modifiedUrl=new URL(url,location.href);modifiedUrl.searchParams.set("__c3_client_id",this._swClientId);return modifiedUrl.toString()}catch(err){console.warn("Invalid iframe URL: "+url);return url}}LoadProjectFileUrl(url){return this.GetProjectFileUrl(url)}LoadImage(opts){if(opts.loadPolicy&&!VALID_LOAD_POLICIES.has(opts.loadPolicy))throw new Error("invalid load policy");let asset=this._assetsByUrl.get(opts.url); +if(asset)return asset;asset=C3.New(C3.ImageAsset,this,{url:opts.url,size:opts.size||0,loadPolicy:opts.loadPolicy||this._defaultLoadPolicy});this._assetsByUrl.set(asset.GetURL(),asset);if(!this._hasFinishedInitialLoad){this._totalAssetSizeToLoad+=asset.GetSize();this._loadPromises.push(asset.Load().then(()=>this._AddLoadedSize(asset.GetSize())))}return asset}_ReleaseAsset(asset){this._assetsByUrl.delete(asset.GetURL())}async WaitForAllToLoad(){try{await Promise.all(this._loadPromises);this._lastLoadProgress= +1}catch(err){console.error("Error loading: ",err);this._hasHadErrorLoading=true;this._FireLoadingProgressEvent()}}SetInitialLoadFinished(){this._hasFinishedInitialLoad=true}HasHadErrorLoading(){return this._hasHadErrorLoading}_AddLoadedSize(s){this._assetSizeLoaded+=s;this._loadingRateLimiter.Call()}_FireLoadingProgressEvent(){const event=C3.New(C3.Event,"loadingprogress");this._lastLoadProgress=C3.clamp(this._assetSizeLoaded/this._totalAssetSizeToLoad,0,1);event.progress=this._lastLoadProgress;this._runtime.Dispatcher().dispatchEvent(event)}GetLoadProgress(){return this._lastLoadProgress}_SetWebFonts(arr){C3.shallowAssignArray(this._webFonts, +arr);if(this._webFonts.length)this._loadPromises.push(this._LoadWebFonts())}async _LoadWebFonts(){const promises=[];const loadFontsForDOM=[];for(const [name,filename,size]of this._webFonts){this._totalAssetSizeToLoad+=size;promises.push(this._LoadWebFont(name,filename,loadFontsForDOM).then(()=>this._AddLoadedSize(size)))}await Promise.all(promises);if(this._runtime.IsInWorker()&&loadFontsForDOM.length>0)await this._runtime.PostComponentMessageToDOMAsync("runtime","load-webfonts",{"webfonts":loadFontsForDOM})}async _LoadWebFont(name, +filename,loadFontsForDOM){try{let url=await this.GetProjectFileUrl(filename);if(C3.Platform.BrowserEngine==="Gecko"){name=`'${name}'`;if(this._runtime.GetExportType()==="preview")url=this._GetLocalBlobURLFromFileMap(url)}const fontFace=new FontFace(name,`url('${url}')`);if(this._runtime.IsInWorker())self.fonts.add(fontFace);else document.fonts.add(fontFace);await fontFace.load();if(this._runtime.IsInWorker())loadFontsForDOM.push({name,url})}catch(err){console.warn(`[C3 runtime] Failed to load web font '${name}': `, +err)}}IsAudioFormatSupported(type){return!!this._supportedAudioFormats[type]}_SetAudioFiles(arr,preloadSounds){this._preloadSounds=!!preloadSounds;for(const [fileName,projectFilesInfo,isMusic]of arr)this._audioFiles.set(fileName,{fileName,formats:projectFilesInfo.map(si=>({type:si[0],fileExtension:si[1],fullName:fileName+si[1],fileSize:si[2]})),isMusic})}GetPreferredAudioFile(namePart){if(this._fileStructure==="flat")namePart=namePart.toLowerCase();const info=this._audioFiles.get(namePart);if(!info)return null; +let webMOpusFile=null;for(const formatInfo of info.formats){if(!webMOpusFile&&formatInfo.type==="audio/webm; codecs=opus")webMOpusFile=formatInfo;if(this.IsAudioFormatSupported(formatInfo.type))return formatInfo}return webMOpusFile}GetProjectAudioFileUrl(namePart){const formatInfo=this.GetPreferredAudioFile(namePart);if(!formatInfo)return null;return{url:this.GetMediaFileUrl(formatInfo.fullName),type:formatInfo.type}}GetAudioToPreload(){if(this._preloadSounds){const ret=[];for(const info of this._audioFiles.values()){if(info.isMusic)continue; +const formatInfo=this.GetPreferredAudioFile(info.fileName);if(!formatInfo)continue;ret.push({originalUrl:info.fileName,url:this.GetMediaFileUrl(formatInfo.fullName),type:formatInfo.type,fileSize:formatInfo.fileSize})}return ret}else return[]}_GetLocalBlobFromFileMap(url){url=(new URL(url,location.href)).toString();return this._fileMap.get(url)||null}_GetLocalBlobURLFromFileMap(url){let blobUrl=this._fileMapBlobUrls.get(url);if(blobUrl)return blobUrl;const blob=this._GetLocalBlobFromFileMap(url);if(!blob)return url; +blobUrl=URL.createObjectURL(blob);this._fileMapBlobUrls.set(url,blobUrl);return blobUrl}GetIAssetManager(){return this._iAssetManager}async LoadScripts(...urls){const scriptUrls=await Promise.all(urls.map(url=>this.GetProjectFileUrl(url)));if(this._runtime.IsInWorker())if(urls.length===1){const url=urls[0];await self.c3_import((C3.IsRelativeURL(url)?"./":"")+url)}else{const scriptStr=urls.map(url=>`import "${C3.IsRelativeURL(url)?"./":""}${url}";`).join("\n");const blobUrl=URL.createObjectURL(new Blob([scriptStr], +{type:"application/javascript"}));await self.c3_import(blobUrl)}else await Promise.all(scriptUrls.map(url=>AddScript(url)))}async CompileWebAssembly(url){if(WebAssembly.compileStreaming){const fetchUrl=await this.GetProjectFileUrl(url);return await WebAssembly.compileStreaming(fetch(fetchUrl))}else{const arrayBuffer=await C3.FetchArrayBuffer(url);return await WebAssembly.compile(arrayBuffer)}}async LoadStyleSheet(url){const fetchUrl=await this.GetProjectFileUrl(url);return await this._runtime.PostComponentMessageToDOMAsync("runtime", +"add-stylesheet",{"url":fetchUrl})}}; + +} + +// assets/asset.js +{ +'use strict';const C3=self.C3; +C3.Asset=class Asset extends C3.DefendedBase{constructor(assetManager,opts){super();this._assetManager=assetManager;this._runtime=assetManager.GetRuntime();this._url=opts.url||"";this._size=opts.size;this._loadPolicy=opts.loadPolicy;this._blob=opts.blob||null;this._isLoaded=!!this._blob;this._loadPromise=null}Release(){this._loadPromise=null;this._assetManager=null;this._runtime=null;this._blob=null}GetURL(){return this._url}GetSize(){return this._size}Load(){if(this._loadPolicy==="local"||this._blob){this._isLoaded= +true;return Promise.resolve()}if(this._loadPromise)return this._loadPromise;this._loadPromise=this._assetManager.FetchBlob(this._url,this._loadPolicy).then(blob=>{this._isLoaded=true;this._loadPromise=null;this._blob=blob;return blob}).catch(err=>{console.error("Error loading resource: ",err);this._loadPromise=null});return this._loadPromise}IsLoaded(){return this._isLoaded}GetBlob(){if(this._blob)return Promise.resolve(this._blob);if(this._loadPromise)return this._loadPromise;return this._assetManager.FetchBlob(this._url, +this._loadPolicy)}}; + +} + +// assets/imageAsset.js +{ +'use strict';const C3=self.C3;const promiseThrottle=new C3.PromiseThrottle;const allImageAssets=new Set; +C3.ImageAsset=class ImageAsset extends C3.Asset{constructor(assetManager,opts){super(assetManager,opts);this._texturePromise=null;this._webglTexture=null;this._refCount=0;this._imageWidth=-1;this._imageHeight=-1;allImageAssets.add(this)}Release(){if(this._refCount!==0)throw new Error("released image asset which still has texture references");this._assetManager._ReleaseAsset(this);this._texturePromise=null;allImageAssets.delete(this);super.Release()}static OnRendererContextLost(){for(const imageAsset of allImageAssets){imageAsset._texturePromise= +null;imageAsset._webglTexture=null;imageAsset._refCount=0}}LoadStaticTexture(renderer,opts){opts=opts||{};this._refCount++;if(this._webglTexture)return Promise.resolve(this._webglTexture);if(this._texturePromise)return this._texturePromise;opts.anisotropy=this._runtime.GetCanvasManager().GetTextureAnisotropy();this._texturePromise=this._DoLoadStaticTexture(renderer,opts);return this._texturePromise}async _DoLoadStaticTexture(renderer,opts){try{const blob=await this.GetBlob();if(this._refCount===0)return null; +return await promiseThrottle.Add(async()=>{const texture=await renderer.CreateStaticTextureAsync(blob,opts);this._texturePromise=null;if(this._refCount===0){renderer.DeleteTexture(texture);return null}this._webglTexture=texture;this._imageWidth=texture.GetWidth();this._imageHeight=texture.GetHeight();return this._webglTexture})}catch(err){console.error("Failed to load texture: ",err);throw err;}}ReleaseTexture(){if(this._refCount<=0)throw new Error("texture released too many times");this._refCount--; +if(this._refCount===0&&this._webglTexture){const renderer=this._webglTexture.GetRenderer();renderer.DeleteTexture(this._webglTexture);this._webglTexture=null}}GetRefCount(){return this._refCount}GetTexture(){return this._webglTexture}GetWidth(){return this._imageWidth}GetHeight(){return this._imageHeight}async LoadToDrawable(){const blob=await this.GetBlob();if(C3.Supports.ImageBitmap)return await createImageBitmap(blob);else return await C3.BlobToImage(blob)}}; + +} + +// layouts/renderCell.js +{ +'use strict';const C3=self.C3;const assert=self.assert;function SortByInstLastCachedZIndex(a,b){return a.GetWorldInfo()._GetLastCachedZIndex()-b.GetWorldInfo()._GetLastCachedZIndex()} +C3.RenderCell=class RenderCell extends C3.DefendedBase{constructor(grid,x,y){super();this._grid=grid;this._x=x;this._y=y;this._instances=[];this._isSorted=true;this._pendingRemoval=new Set;this._isAnyPendingRemoval=false}Release(){C3.clearArray(this._instances);this._pendingRemoval.clear();this._grid=null}Reset(){C3.clearArray(this._instances);this._isSorted=true;this._pendingRemoval.clear();this._isAnyPendingRemoval=false}SetChanged(){this._isSorted=false}IsEmpty(){if(!this._instances.length)return true; +if(this._instances.length>this._pendingRemoval.size)return false;this._FlushPending();return true}Insert(inst){if(this._pendingRemoval.has(inst)){this._pendingRemoval.delete(inst);if(this._pendingRemoval.size===0)this._isAnyPendingRemoval=false;return}this._instances.push(inst);this._isSorted=this._instances.length===1}Remove(inst){this._pendingRemoval.add(inst);this._isAnyPendingRemoval=true;if(this._pendingRemoval.size>=50)this._FlushPending()}_FlushPending(){if(!this._isAnyPendingRemoval)return; +if(this._instances.length===this._pendingRemoval.size){this.Reset();return}C3.arrayRemoveAllInSet(this._instances,this._pendingRemoval);this._pendingRemoval.clear();this._isAnyPendingRemoval=false}_EnsureSorted(){if(this._isSorted)return;this._instances.sort(SortByInstLastCachedZIndex);this._isSorted=true}Dump(result){this._FlushPending();this._EnsureSorted();if(this._instances.length)result.push(this._instances)}}; + +} + +// layouts/renderGrid.js +{ +'use strict';const C3=self.C3; +C3.RenderGrid=class RenderGrid extends C3.DefendedBase{constructor(cellWidth,cellHeight){super();this._cellWidth=cellWidth;this._cellHeight=cellHeight;this._cells=C3.New(C3.PairMap)}Release(){this._cells.Release();this._cells=null}GetCell(x,y,createIfMissing){let ret=this._cells.Get(x,y);if(ret)return ret;else if(createIfMissing){ret=C3.New(C3.RenderCell,this,x,y);this._cells.Set(x,y,ret);return ret}else return null}XToCell(x){return Math.floor(x/this._cellWidth)}YToCell(y){return Math.floor(y/this._cellHeight)}Update(inst, +oldRange,newRange){if(oldRange)for(let x=oldRange.getLeft(),lenx=oldRange.getRight();x<=lenx;++x)for(let y=oldRange.getTop(),leny=oldRange.getBottom();y<=leny;++y){if(newRange&&newRange.containsPoint(x,y))continue;const cell=this.GetCell(x,y,false);if(!cell)continue;cell.Remove(inst);if(cell.IsEmpty())this._cells.Delete(x,y)}if(newRange)for(let x=newRange.getLeft(),lenx=newRange.getRight();x<=lenx;++x)for(let y=newRange.getTop(),leny=newRange.getBottom();y<=leny;++y){if(oldRange&&oldRange.containsPoint(x, +y))continue;this.GetCell(x,y,true).Insert(inst)}}QueryRange(rc,result){let x=this.XToCell(rc.getLeft());const ystart=this.YToCell(rc.getTop());const lenx=this.XToCell(rc.getRight());const leny=this.YToCell(rc.getBottom());for(;x<=lenx;++x)for(let y=ystart;y<=leny;++y){const cell=this.GetCell(x,y,false);if(!cell)continue;cell.Dump(result)}}MarkRangeChanged(rc){let x=rc.getLeft();const ystart=rc.getTop();const lenx=rc.getRight();const leny=rc.getBottom();for(;x<=lenx;++x)for(let y=ystart;y<=leny;++y){const cell= +this.GetCell(x,y,false);if(!cell)continue;cell.SetChanged()}}}; + +} + +// layouts/layer.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const tmpRect=new C3.Rect;const tmpQuad=new C3.Quad;const renderCellArr=[];const tmpDestRect=new C3.Rect;const tmpSrcRect=new C3.Rect;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const vec4=glMatrix.vec4;const mat4=glMatrix.mat4;const tempMat4=mat4.create();const tempVec3=vec3.create();const tempVec4=vec4.create();const camVector=vec3.create();const lookVector=vec3.create();const upVector=vec3.create();const tempVec2=C3.New(C3.Vector2); +const tempRect=C3.New(C3.Rect);function SortByInstLastCachedZIndex(a,b){return a.GetWorldInfo()._GetLastCachedZIndex()-b.GetWorldInfo()._GetLastCachedZIndex()}function SortByInstZElevation(a,b){return a.GetWorldInfo().GetZElevation()-b.GetWorldInfo().GetZElevation()}const tempInstanceList1=[];const tempInstanceList2=[];const tempInstancesByCameraDist=[]; +const DEFAULT_LAYER_OPTIONS={name:"",sid:-1,isDynamic:false,isVisible:true,isInteractive:true,isHTMLElementsLayer:false,backgroundColor:[1,1,1,1],isTransparent:true,parallax:[1,1],opacity:1,isForceOwnTexture:false,renderAs3d:false,useCameraDistanceDrawOrder:false,useRenderCells:false,scaleRate:1,blendMode:0,zElevation:0,initialInstancesData:[],effectListData:[],subLayersData:[]}; +C3.Layer=class Layer extends C3.DefendedBase{constructor(layout,parentLayer,opts){super();opts=Object.assign({},DEFAULT_LAYER_OPTIONS,opts);this._layout=layout;this._runtime=layout.GetRuntime();this._parentLayer=parentLayer;this._name=opts.name;this._index=-1;this._isHTMLElementsLayer=!!opts.isHTMLElementsLayer;this._htmlIndex=-1;this._sid=opts.sid;this._isDynamic=!!opts.isDynamic;this._isVisible=!!opts.isVisible;this._isInteractive=!!opts.isInteractive;this._backgroundColor=C3.New(C3.Color);this._backgroundColor.setFromJSON(opts.backgroundColor); +this._isTransparent=!!opts.isTransparent;this._parallaxX=opts.parallax[0];this._parallaxY=opts.parallax[1];this._color=C3.New(C3.Color,1,1,1,opts.opacity);this._premultipliedColor=C3.New(C3.Color);this._isForceOwnTexture=!!opts.isForceOwnTexture;this._renderAs3d=!!opts.renderAs3d;this._useCameraDistanceDrawOrder=!!opts.useCameraDistanceDrawOrder;this._useRenderCells=!!opts.useRenderCells;this._scaleRate=opts.scaleRate;this._blendMode=opts.blendMode;this._curRenderTarget=null;this._scale=1;this._zElevation= +opts.zElevation;this._angle=0;this._scrollX=0;this._scrollY=0;this._hasOwnScrollPosition=false;this._viewport=C3.New(C3.Rect);this._viewportZ0=C3.New(C3.Rect);this._viewport3D=C3.New(C3.Rect);this._isViewportChanged=true;this._projectionMatrix=mat4.create();this._isProjectionMatrixChanged=true;this._modelViewMatrix=mat4.create();this._isMVMatrixChanged=true;this._viewFrustum=C3.New(C3.Gfx.ViewFrustum);this._isViewFrustumChanged=true;this._startupInitialInstances=[];this._initialInstancesData=opts.initialInstancesData; +this._initialInstances=[];this._createdGlobalUids=[];this._initialUIDsToInstanceData=new Map;this._instances=[];this._zIndicesUpToDate=false;this._htmlZIndicesUpToDate=false;this._anyInstanceZElevated=false;const canvasManager=this._runtime.GetCanvasManager();this._effectList=C3.New(C3.EffectList,this,opts.effectListData);this._effectChain=C3.New(C3.Gfx.EffectChain,canvasManager.GetEffectChainManager(),{drawContent:(renderer,effectChain)=>{const layer=effectChain.GetContentObject();const renderSurface= +layer.GetRenderTarget();renderer.SetColor(layer.GetPremultipliedColor());renderer.DrawRenderTarget(renderSurface);renderer.InvalidateRenderTarget(renderSurface);canvasManager.ReleaseAdditionalRenderTarget(renderSurface)},getShaderParameters:index=>this.GetEffectList()._GetEffectChainShaderParametersForIndex(index)});this._needsRebuildEffectChainSteps=true;this._wasDefaultColor=true;this._renderGrid=null;this._lastRenderList=[];this._isRenderListUpToDate=false;this._lastRenderCells=C3.New(C3.Rect, +0,0,-1,-1);this._curRenderCells=C3.New(C3.Rect,0,0,-1,-1);this._iLayer=new self.ILayer(this);this._UpdatePremultipliedColor();if(this.UsesRenderCells())this._renderGrid=C3.New(C3.RenderGrid,this._runtime.GetOriginalViewportWidth(),this._runtime.GetOriginalViewportHeight());this._subLayers=opts.subLayersData.map(ld=>C3.Layer.CreateFromExportData(this._layout,this,ld))}_InitInitialInstances(){for(const instData of this._initialInstancesData){const objectClass=this._runtime.GetObjectClassByIndex(instData[1]); +this._layout._AddInitialObjectClass(objectClass);if(!objectClass.GetDefaultInstanceData()){objectClass.SetDefaultInstanceData(instData);objectClass._SetDefaultLayerIndex(this._index)}this._initialInstances.push(instData);this._initialUIDsToInstanceData.set(instData[2],instData)}C3.shallowAssignArray(this._startupInitialInstances,this._initialInstances);this._initialInstancesData=null}static CreateFromExportData(layout,parentLayer,data){return C3.New(C3.Layer,layout,parentLayer,{name:data[0],sid:data[2], +isVisible:data[3],isInteractive:data[13],isHTMLElementsLayer:data[19],backgroundColor:data[4].map(x=>x/255),isTransparent:data[5],parallax:[data[6],data[7]],opacity:data[8],isForceOwnTexture:data[9],renderAs3d:data[17],useCameraDistanceDrawOrder:data[18],useRenderCells:data[10],scaleRate:data[11],blendMode:data[12],zElevation:data[16],initialInstancesData:data[14],effectListData:data[15],subLayersData:data[20]})}Release(){for(const subLayer of this._subLayers)subLayer.Release();C3.clearArray(this._subLayers); +for(const inst of this._instances)this._runtime.DestroyInstance(inst);C3.clearArray(this._instances);this._effectList.Release();this._effectList=null;this._effectChain.Release();this._effectChain=null;this._iLayer=null;this._parentLayer=null;this._layout=null;this._runtime=null}GetInitialInstanceData(uid){return this._initialUIDsToInstanceData.get(uid)}CreateInitialInstances(createdInstances){const isFirstVisit=this._layout.IsFirstVisit();let k=0;const initialInstances=this._initialInstances;for(let i= +0,len=initialInstances.length;i=0)assignedZIndices.add(cachedZIndex)}let index=-1;for(const inst of this._instances){const wi=inst.GetWorldInfo();if(wi._GetLastCachedZIndex()>=0)continue;++index;while(assignedZIndices.has(index))++index;wi._SetZIndex(index)}}this._instances.sort(SortByInstLastCachedZIndex)}_Start(){}_End(){for(const inst of this._instances)if(!inst.GetObjectClass().IsGlobal())this._runtime.DestroyInstance(inst);this._runtime.FlushPendingInstances();C3.clearArray(this._instances); +this._anyInstanceZElevated=false;this.SetZIndicesChanged()}RecreateInitialObjects(objectClass,rc,offsetX,offsetY,createHierarchy){const eventSheetManager=this._runtime.GetEventSheetManager();const allObjectClasses=this._runtime.GetAllObjectClasses();const isFamily=objectClass.IsFamily();const ret=[];for(const instData of this._initialInstances){const worldData=instData[0];const x=worldData[0];const y=worldData[1];if(!rc.containsPoint(x,y))continue;const objectType=allObjectClasses[instData[1]];if(objectType!== +objectClass)if(isFamily){if(!objectClass.FamilyHasMember(objectType))continue}else continue;let createOnLayer=this;const runningLayout=this._runtime.GetCurrentLayout();if(this.GetLayout()!==runningLayout){createOnLayer=runningLayout.GetLayerByName(this.GetName());if(!createOnLayer)createOnLayer=runningLayout.GetLayerByIndex(this.GetIndex())}const inst=this._runtime.CreateInstanceFromData(instData,createOnLayer,false,undefined,undefined,false,createHierarchy);createOnLayer.SortAndAddInstancesByZIndex(inst); +const wi=inst.GetWorldInfo();wi.OffsetXY(offsetX,offsetY);wi.SetBboxChanged();eventSheetManager.BlockFlushingInstances(true);inst._TriggerOnCreatedOnSelfAndRelated();eventSheetManager.BlockFlushingInstances(false);ret.push(inst)}return ret}GetInstanceCount(){return this._instances.length}GetLayout(){return this._layout}GetName(){return this._name}_SetIndex(i){this._index=i}GetIndex(){return this._index}_SetHTMLIndex(i){this._htmlIndex=i}GetHTMLIndex(){return this._htmlIndex}IsHTMLElementsLayer(){return this._isHTMLElementsLayer}SetIsHTMLElementsLayer(i){i= +!!i;if(this._isHTMLElementsLayer===i)return;this._isHTMLElementsLayer=i;this._layout._ReindexAndUpdateAllLayers();this._runtime.UpdateRender()}_GetSiblingIndex(){let ret=-1;const parentLayer=this.GetParentLayer();if(parentLayer)ret=parentLayer.GetSubLayers().indexOf(this);else ret=this.GetLayout()._GetRootLayers().indexOf(this);return ret}GetSID(){return this._sid}GetRuntime(){return this._runtime}IsDynamic(){return this._isDynamic}HasAnyDynamicParentLayer(){for(const parent of this.parentLayers())if(parent.IsDynamic())return true; +return false}GetDevicePixelRatio(){return this._runtime.GetDevicePixelRatio()}GetEffectList(){return this._effectList}GetEffectChain(){this._MaybeRebuildEffectChainSteps();return this._effectChain}_MaybeRebuildEffectChainSteps(){const isDefaultColor=this.HasDefaultColor();if(!this._needsRebuildEffectChainSteps&&isDefaultColor===this._wasDefaultColor&&!this._effectChain.NeedsRebuild())return;const activeEffectTypes=this.GetEffectList().GetActiveEffectTypes();this._effectChain.BuildSteps(activeEffectTypes.map(e=> +e.GetShaderProgram()),{indexMap:activeEffectTypes.map(e=>e.GetIndex()),forcePreDraw:!isDefaultColor,useFullSurface:true});this._needsRebuildEffectChainSteps=false;this._wasDefaultColor=isDefaultColor}UpdateActiveEffects(){this.GetEffectList().UpdateActiveEffects();this._needsRebuildEffectChainSteps=true}UsesRenderCells(){return this._useRenderCells&&!this._useCameraDistanceDrawOrder}GetRenderGrid(){return this._renderGrid}SetRenderListStale(){this._isRenderListUpToDate=false}IsVisible(){for(const layer of this.selfAndParentLayers())if(!layer._IsVisibleFlagSet())return false; +return true}_IsVisibleFlagSet(){return this._isVisible}SetVisible(v){v=!!v;if(this._isVisible===v)return;this._isVisible=v;this._runtime.UpdateRender()}SetInteractive(i){this._isInteractive=!!i}IsInteractive(){return this._isInteractive}IsSelfAndParentsInteractive(){for(const layer of this.selfAndParentLayers())if(!layer.IsInteractive())return false;return true}SetOwnScrollPositionEnabled(e){e=!!e;if(this._hasOwnScrollPosition===e)return;this._hasOwnScrollPosition=e;if(e){const layout=this.GetLayout(); +this._scrollX=layout.GetScrollX();this._scrollY=layout.GetScrollY()}this._SetMVMatrixChanged();this._runtime.UpdateRender()}IsOwnScrollPositionEnabled(){return this._hasOwnScrollPosition}SetScrollX(x){const layout=this.GetLayout();const lbound=layout.GetScrollLeftBound();const rbound=layout.GetScrollRightBound();if(x>rbound)x=rbound;if(xbbound)y=bbound;if(y0}_GetInstances(){return this._instances}_GetInstancesInDrawOrder(){if(this.RendersIn3DMode()&& +this._useCameraDistanceDrawOrder){C3.shallowAssignArray(tempInstancesByCameraDist,this._GetInstances());tempInstancesByCameraDist.sort((a,b)=>this._SortInstancesByCameraDistance(a,b));return tempInstancesByCameraDist}else return this._GetInstances()}_AppendAllInstancesIncludingSubLayersInDrawOrder(arr){C3.appendArray(arr,this._GetInstancesInDrawOrder());for(const subLayer of this._subLayers)if(subLayer.IsVisible()&&subLayer.GetOpacity()>0)subLayer._AppendAllInstancesIncludingSubLayersInDrawOrder(arr)}_SortInstancesByCameraDistance(a, +b){const camVec=this.GetLayout().Get3DCameraPosition();const camX=camVec[0];const camY=camVec[1];const camZ=camVec[2];const wiA=a.GetWorldInfo();const wiB=b.GetWorldInfo();const dxA=wiA.GetX()-camX;const dyA=wiA.GetY()-camY;const dzA=wiA.GetZElevation()-camZ;const dxB=wiB.GetX()-camX;const dyB=wiB.GetY()-camY;const dzB=wiB.GetZElevation()-camZ;return dxB*dxB+dyB*dyB+dzB*dzB-(dxA*dxA+dyA*dyA+dzA*dzA)}GetBackgroundColor(){return this._backgroundColor}IsTransparent(){return this._isTransparent}SetTransparent(t){t= +!!t;if(this._isTransparent===t)return;this._isTransparent=t;this._runtime.UpdateRender()}IsForceOwnTexture(){return this._isForceOwnTexture}SetForceOwnTexture(f){f=!!f;if(this._isForceOwnTexture===f)return;this._isForceOwnTexture=f;this._runtime.UpdateRender()}RendersIn2DMode(){return!this.GetRuntime().Uses3DFeatures()||!this._renderAs3d}RendersIn3DMode(){return!this.RendersIn2DMode()}Has3DCamera(){return this.RendersIn3DMode()&&this.GetLayout().Is3DCameraEnabled()}SelfAndAllSubLayersHave3DCamera(){if(!this.Has3DCamera())return false; +for(const subLayer of this._subLayers)if(!subLayer.SelfAndAllSubLayersHave3DCamera())return false;return true}SetBlendMode(bm){if(this._blendMode===bm)return;this._blendMode=bm;this._runtime.UpdateRender()}GetBlendMode(){return this._blendMode}IsRootLayer(){return!this._parentLayer}GetParentLayer(){return this._parentLayer}_SetParentLayer(layer){this._parentLayer=layer}GetSubLayers(){return this._subLayers}HasAnySubLayers(){return this._subLayers.length>0}_AddSubLayer(layer,atTop=true){if(atTop)this._subLayers.push(layer); +else this._subLayers.unshift(layer)}_InsertSubLayer(layer,insertBy,isAbove){let i=this._subLayers.indexOf(insertBy);if(i===-1)throw new Error("cannot find layer to insert by");if(isAbove)++i;this._subLayers.splice(i,0,layer)}_RemoveSubLayer(layer){const i=this._subLayers.indexOf(layer);if(i===-1)throw new Error("cannot find layer to remove");this._subLayers.splice(i,1)}HasAnyVisibleSubLayer(){for(const subLayer of this._subLayers)if(subLayer.ShouldDraw())return true;return false}*selfAndAllSubLayers(){for(const subLayer of this._subLayers)yield*subLayer.selfAndAllSubLayers(); +yield this}*parentLayers(){let parentLayer=this.GetParentLayer();while(parentLayer){yield parentLayer;parentLayer=parentLayer.GetParentLayer()}}*selfAndParentLayers(){yield this;yield*this.parentLayers()}HasParentLayer(layer){for(const p of this.parentLayers())if(p===layer)return true;return false}IsTransformCompatibleWith(otherLayer){return this===otherLayer||this._parallaxX===otherLayer._parallaxX&&this._parallaxY===otherLayer._parallaxY&&this._scale===otherLayer._scale&&this._scaleRate===otherLayer._scaleRate&& +this._angle===otherLayer._angle&&this.GetScrollX()===otherLayer.GetScrollX()&&this.GetScrollY()===otherLayer.GetScrollY()}SaveTransform(){return{"parallaxX":this.GetParallaxX(),"parallaxY":this.GetParallaxY(),"scale":this.GetOwnScale(),"scaleRate":this.GetScaleRate(),"angle":this.GetOwnAngle(),"hasOwnScroll":this.IsOwnScrollPositionEnabled(),"scrollX":this.GetScrollX(),"scrollY":this.GetScrollY()}}RestoreTransform(t){this.SetParallax(t["parallaxX"],t["parallaxY"]);this.SetOwnScale(t["scale"]);this.SetScaleRate(t["scaleRate"]); +this.SetAngle(t["angle"]);this.SetOwnScrollPositionEnabled(t["hasOwnScroll"]);this.SetScrollX(t["scrollX"]);this.SetScrollY(t["scrollY"]);this._MaybeUpdateViewport()}_RemoveAllInstancesInSet(s){if(s.size===0)return;const numRemoved=C3.arrayRemoveAllInSet(this._instances,s);if(numRemoved>0){this._MaybeResetAnyInstanceZElevatedFlag();this.SetZIndicesChanged()}}SetZIndicesChanged(inst){this._zIndicesUpToDate=false;this._isRenderListUpToDate=false;if(!inst||inst.GetObjectClass().GetPlugin().IsHTMLElementType())this._htmlZIndicesUpToDate= +false}_UpdateZIndices(){if(this._zIndicesUpToDate)return;this._instances.sort(SortByInstZElevation);if(this.UsesRenderCells())for(let i=0,len=this._instances.length;i[...l.selfAndAllSubLayers()]).flat();let htmlZIndex=0;for(const layer of allLayers){for(const inst of layer._GetInstances())if(inst.GetObjectClass().GetPlugin().IsHTMLElementType())inst.GetWorldInfo()._SetHTMLZIndex(htmlZIndex++);layer._SetHTMLZIndicesUpToDate()}}_SetHTMLZIndicesUpToDate(){this._htmlZIndicesUpToDate=true}MoveInstanceAdjacent(inst,other,isAfter){const instWi=inst.GetWorldInfo();const otherWi= +other.GetWorldInfo();if(instWi.GetLayer()!==this||otherWi.GetLayer()!==this)throw new Error("can't arrange Z order unless both objects on this layer");const myZ=instWi.GetZIndex();let insertZ=otherWi.GetZIndex();if(myZ===insertZ+(isAfter?1:-1))return false;C3.arrayRemove(this._instances,myZ);if(myZ1)arr=this._MergeAllSortedZArrays_pass(arr);return arr[0]}_GetRenderCellInstancesToDraw(){this._UpdateZIndices();C3.clearArray(renderCellArr);this._renderGrid.QueryRange(this.GetViewport(),renderCellArr);if(!renderCellArr.length)return[];if(renderCellArr.length===1)return renderCellArr[0];return this._MergeAllSortedZArrays(renderCellArr)}ShouldDraw(){return this.IsVisible()&&this.GetOpacity()>0&&this._DrawsAnyContentInSelfOrSubLayers()}_DrawsAnyContentInSelfOrSubLayers(){if(this.HasInstances()|| +!this.IsTransparent())return true;for(const subLayer of this._subLayers)if(subLayer._DrawsAnyContentInSelfOrSubLayers())return true;return false}UsesOwnTexture(){return this.IsForceOwnTexture()||!this.HasDefaultColor()||this.GetBlendMode()!==0||this._effectList.HasAnyActiveEffect()}SelfOrAnySubLayerUsesOwnTexture(){if(this.UsesOwnTexture())return true;for(const subLayer of this._subLayers)if(subLayer.SelfOrAnySubLayerUsesOwnTexture())return true;return false}GetRenderTarget(){return this._curRenderTarget}Get2DScaleFactorToZ(z){if(this._layout.IsOrthographicProjection())return 1; +else{const camZ=this.GetCameraZ();return camZ/(camZ-z)}}GetCameraZ(viewH){return this.GetDefaultCameraZ(viewH)/this.GetNormalScale()}_SetMVMatrixChanged(){this._isMVMatrixChanged=true;this._isViewFrustumChanged=true;this._isViewportChanged=true}_GetModelViewMatrix(renderer){if(this._isMVMatrixChanged){this._CalculateModelViewMatrix(renderer,this._modelViewMatrix,0,0,null);this._isMVMatrixChanged=false}return this._modelViewMatrix}GetCameraPosition(){if(this.Has3DCamera()){const camPos=this.GetLayout().Get3DCameraPosition(); +return[camPos[0],camPos[1],camPos[2]]}else return this._Get2DCameraPosition()}_Get2DCameraPosition(offX=0,offY=0,viewH=0){const runtime=this._runtime;const layout=this.GetLayout();const parallaxOriginX=runtime.GetParallaxXOrigin();const parallaxOriginY=runtime.GetParallaxYOrigin();let scrollOriginX=(this.GetScrollX()-parallaxOriginX)*this._parallaxX+parallaxOriginX;let scrollOriginY=(this.GetScrollY()-parallaxOriginY)*this._parallaxY+parallaxOriginY;if(runtime.IsPixelRoundingEnabled()){scrollOriginX= +Math.round(scrollOriginX);scrollOriginY=Math.round(scrollOriginY)}let camX=scrollOriginX+offX;let camY=scrollOriginY+offY;const camZ=layout.IsOrthographicProjection()?this.GetDefaultCameraZ(viewH):this.GetCameraZ(viewH);const [vpX,vpY]=this._GetVanishingPoint();if(vpX!==.5||vpY!==.5){const zf=this.GetDefaultCameraZ(viewH)/camZ;let camOffX=(vpX-.5)*runtime.GetViewportWidth()/zf;let camOffY=(vpY-.5)*runtime.GetViewportHeight()/zf;const a=this.GetAngle();if(a!==0){tempVec2.set(camOffX,camOffY);tempVec2.rotate(a); +camOffX=tempVec2.getX();camOffY=tempVec2.getY()}camX+=camOffX;camY+=camOffY}return[camX,camY,camZ]}_CalculateModelViewMatrix(renderer,outMat,offX,offY,viewH){const runtime=this._runtime;const layout=this.GetLayout();if(this.Has3DCamera()){vec3.copy(camVector,layout.Get3DCameraPosition());vec3.copy(lookVector,layout.Get3DCameraLookAt());vec3.copy(upVector,layout.Get3DCameraUpVector());const parallaxOriginX=runtime.GetParallaxXOrigin();const parallaxOriginY=runtime.GetParallaxYOrigin();const lookDx= +lookVector[0]-camVector[0];const lookDy=lookVector[1]-camVector[1];const lookDz=lookVector[2]-camVector[2];camVector[0]=(camVector[0]-parallaxOriginX)*this._parallaxX+parallaxOriginX;camVector[1]=(camVector[1]-parallaxOriginY)*this._parallaxY+parallaxOriginY;camVector[2]*=Math.max(this._parallaxX,this._parallaxY);lookVector[0]=camVector[0]+lookDx;lookVector[1]=camVector[1]+lookDy;lookVector[2]=camVector[2]+lookDz}else{const [camX,camY,camZ]=this._Get2DCameraPosition(offX,offY,viewH);vec3.set(camVector, +camX,camY,camZ);vec3.set(lookVector,camX,camY,camZ-100);const a=this.GetAngle();if(a===0)vec3.set(upVector,0,1,0);else vec3.set(upVector,Math.sin(a),Math.cos(a),0)}renderer.CalculateLookAtModelView(outMat,camVector,lookVector,upVector,viewH||runtime.GetViewportHeight())}_SetProjectionMatrixChanged(){this._isProjectionMatrixChanged=true;this._isViewFrustumChanged=true;this._isViewportChanged=true}_GetProjectionMatrix(renderer){if(this._isProjectionMatrixChanged){this._CalculateProjectionMatrix(renderer); +this._isProjectionMatrixChanged=false}return this._projectionMatrix}_CalculateProjectionMatrix(renderer){const canvasManager=this._runtime.GetCanvasManager();const [vpX,vpY]=this._GetVanishingPoint();if(this._layout.IsOrthographicProjection())renderer.CalculateOrthographicMatrix(this._projectionMatrix,canvasManager.GetDrawWidth(),canvasManager.GetDrawHeight());else if(vpX===.5&&vpY===.5)mat4.copy(this._projectionMatrix,canvasManager.GetDefaultProjectionMatrix());else{const drawW=canvasManager.GetDrawWidth(); +const drawH=canvasManager.GetDrawHeight();renderer.CalculatePerspectiveMatrix(this._projectionMatrix,drawW/drawH,vpX,vpY)}}_SetTransform(renderer,updateProjection=true,offX=0,offY=0,viewH=0){if(updateProjection)renderer.SetProjectionMatrix(this._GetProjectionMatrix(renderer));let modelViewMatrix=null;if(offX===0&&offY===0&&viewH===0)modelViewMatrix=this._GetModelViewMatrix(renderer);else{this._CalculateModelViewMatrix(renderer,tempMat4,offX,offY,viewH);modelViewMatrix=tempMat4}renderer.SetModelViewMatrix(modelViewMatrix)}PrepareForDraw(renderer){this._SetTransform(renderer); +renderer.SetBaseZ(this.GetZElevation())}_MaybeStartWebGLProfiling(renderer){let layerQuery=null;if(renderer.IsWebGL()&&this._runtime.IsGPUProfiling()){const timingsBuffer=this._runtime.GetCanvasManager().GetLayerTimingsBuffer(this);if(timingsBuffer){layerQuery=timingsBuffer.AddTimeElapsedQuery();renderer.StartQuery(layerQuery)}}return layerQuery}_MaybeStartWebGPUProfiling(renderer){if(renderer.IsWebGPU()&&this._runtime.IsGPUProfiling()){const timestampIndex=(this.GetIndex()+1)*2;renderer.StartMeasuringRenderPassTime(timestampIndex, +timestampIndex+1)}}Draw(renderer,destinationRenderTarget,isFirstToTarget){const canvasManager=this._runtime.GetCanvasManager();const useOwnTexture=this.UsesOwnTexture();let ownRenderTarget=null;const webglLayerQuery=this._MaybeStartWebGLProfiling(renderer);this._MaybeStartWebGPUProfiling(renderer);if(useOwnTexture){const rtOpts={sampling:this._runtime.GetSampling(),isSampled:true,canReadPixels:renderer.IsWebGPU()?this._runtime.UsesAnyBackgroundBlending():false};if(canvasManager.GetCurrentFullscreenScalingQuality()=== +"low"){rtOpts.width=canvasManager.GetDrawWidth();rtOpts.height=canvasManager.GetDrawHeight()}ownRenderTarget=this._runtime.GetAdditionalRenderTarget(rtOpts);this._curRenderTarget=ownRenderTarget;renderer.SetRenderTarget(ownRenderTarget);if(this.IsTransparent())renderer.ClearRgba(0,0,0,0)}else{this._curRenderTarget=destinationRenderTarget;renderer.SetRenderTarget(destinationRenderTarget)}if(!this.IsTransparent())renderer.Clear(this._backgroundColor);this._layout._DrawLayerList(renderer,this._curRenderTarget, +this._subLayers,useOwnTexture&&this.IsTransparent());this._MaybeStartWebGPUProfiling(renderer);this._SetTransform(renderer);renderer.SetBaseZ(this.GetZElevation());renderer.SetDepthEnabled(this.RendersIn3DMode());if(this.GetNormalScale()>Number.EPSILON){this._UpdateZIndices();const useRenderCells=this.UsesRenderCells()&&this.GetZElevation()===0&&!this._anyInstanceZElevated;if(this.Has3DCamera())this._DrawInstances_3DCamera(renderer);else if(useRenderCells)this._DrawInstances_RenderCells(renderer); +else this._DrawInstances(renderer,this._GetInstancesInDrawOrder())}renderer.SetBaseZ(0);renderer.SetCurrentZ(0);if(useOwnTexture){renderer.SetDepthEnabled(false);this._DrawLayerOwnTextureToRenderTarget(renderer,ownRenderTarget,destinationRenderTarget,isFirstToTarget)}if(webglLayerQuery)renderer.EndQuery(webglLayerQuery);this._curRenderTarget=null}_DrawInstances(renderer,instances){const viewport=this.GetViewport();const renderTarget=this._curRenderTarget;const isOrthographic=this.GetLayout().IsOrthographicProjection(); +const hasVanishingPointOutsideViewport=this.GetLayout().HasVanishingPointOutsideViewport();let lastInst=null;for(let i=0,len=instances.length;i0)postRenderInstances.push(inst);const startZ=inst.GetWorldInfo().GetTotalZElevation();coplanarInstances.push(inst);let endIndex=i+1;for(;endIndex< +len;++endIndex){const nextInst=instances[endIndex];const nextWi=nextInst.GetWorldInfo();if(!nextWi.IsVisible()||!nextWi.IsInViewport3D(viewFrustum))continue;if(nextWi.GetTotalZElevation()!==startZ)break;if(!nextInst.RendersToOwnZPlane()){postRenderInstances.push(nextInst);continue}if(nextWi.GetDepth()>0)postRenderInstances.push(nextInst);coplanarInstances.push(nextInst)}if(coplanarInstances.length===1&&!coplanarInstances[0].MustMitigateZFighting()){this._DrawInstanceMaybeWithEffects(inst,wi,renderer, +renderTarget);for(let j=0,lenj=postRenderInstances.length;j0)if(this._IsPointBehindNearPlane(bbLeft,bbTop,topZ)|| +this._IsPointBehindNearPlane(bbRight,bbTop,topZ)||this._IsPointBehindNearPlane(bbRight,bbBottom,topZ)||this._IsPointBehindNearPlane(bbLeft,bbBottom,topZ))return null}else if(topZ>=this.GetCameraZ())return null;let [stlx,stly]=this.LayerToDrawSurface(bbLeft,bbTop,z);let [sbrx,sbry]=this.LayerToDrawSurface(bbRight,bbBottom,z);if(this.GetAngle()!==0||depth>0||this.Has3DCamera()){const [strx,stry]=this.LayerToDrawSurface(bbRight,bbTop,z);const [sblx,sbly]=this.LayerToDrawSurface(bbLeft,bbBottom,z);if(depth> +0){const [stlxTop,stlyTop]=this.LayerToDrawSurface(bbLeft,bbTop,topZ);const [strxTop,stryTop]=this.LayerToDrawSurface(bbRight,bbTop,topZ);const [sbrxTop,sbryTop]=this.LayerToDrawSurface(bbRight,bbBottom,topZ);const [sblxTop,sblyTop]=this.LayerToDrawSurface(bbLeft,bbBottom,topZ);let temp=Math.min(stlx,sbrx,strx,sblx,stlxTop,strxTop,sbrxTop,sblxTop);sbrx=Math.max(stlx,sbrx,strx,sblx,stlxTop,strxTop,sbrxTop,sblxTop);stlx=temp;temp=Math.min(stly,sbry,stry,sbly,stlyTop,stryTop,sbryTop,sblyTop);sbry=Math.max(stly, +sbry,stry,sbly,stlyTop,stryTop,sbryTop,sblyTop);stly=temp}else{let temp=Math.min(stlx,sbrx,strx,sblx);sbrx=Math.max(stlx,sbrx,strx,sblx);stlx=temp;temp=Math.min(stly,sbry,stry,sbly);sbry=Math.max(stly,sbry,stry,sbly);stly=temp}}tmpRect.set(stlx,stly,sbrx,sbry);return tmpRect}_GetViewFrustum(){if(this._isViewFrustumChanged){this._UpdateViewFrustum();this._isViewFrustumChanged=false}return this._viewFrustum}_UpdateViewFrustum(){const renderer=this._runtime.GetRenderer();const matP=this._GetProjectionMatrix(renderer); +const matMV=this._GetModelViewMatrix(renderer);this._viewFrustum.CalculatePlanes(matMV,matP)}_IsPointBehindNearPlane(x,y,z){return this._GetViewFrustum().IsBehindNearPlane(x,y,z)}_SaveToJson(){const o={"d":this.IsDynamic(),"s":this.GetOwnScale(),"a":this.GetOwnAngle(),"v":this._IsVisibleFlagSet(),"i":this.IsInteractive(),"html":this.IsHTMLElementsLayer(),"bc":this._backgroundColor.toJSON(),"t":this.IsTransparent(),"sx":this._scrollX,"sy":this._scrollY,"hosp":this._hasOwnScrollPosition,"px":this.GetParallaxX(), +"py":this.GetParallaxY(),"c":this._color.toJSON(),"sr":this.GetScaleRate(),"fx":this._effectList.SaveToJson(),"cg":this._createdGlobalUids};return o}_LoadFromJson(o){this._isDynamic=!!o["d"];this._scale=o["s"];this._angle=o["a"];this._isVisible=!!o["v"];this._isInteractive=o.hasOwnProperty("i")?o["i"]:true;this._isHTMLElementsLayer=!!o["html"];this._backgroundColor.setFromJSON(o["bc"]);this._isTransparent=!!o["t"];if(o.hasOwnProperty("sx"))this._scrollX=o["sx"];if(o.hasOwnProperty("sy"))this._scrollY= +o["sy"];if(o.hasOwnProperty("hosp"))this._hasOwnScrollPosition=!!o["hosp"];this._parallaxX=o["px"];this._parallaxY=o["py"];this._color.setFromJSON(o["c"]);this._UpdatePremultipliedColor();this._scaleRate=o["sr"];C3.shallowAssignArray(this._createdGlobalUids,o["cg"]);C3.shallowAssignArray(this._initialInstances,this._startupInitialInstances);const tempSet=new Set(this._createdGlobalUids);let j=0;for(let i=0,len=this._initialInstances.length;i{const firstZIndex=f.GetWorldInfo().GetSceneGraphZIndex(); +const secondZIndex=s.GetWorldInfo().GetSceneGraphZIndex();return firstZIndex-secondZIndex});return}if(inst.HasChildren()){const instances=[...inst.allChildren()];instances.push(inst);instances.sort((f,s)=>{const firstZIndex=f.GetWorldInfo().GetSceneGraphZIndex();const secondZIndex=s.GetWorldInfo().GetSceneGraphZIndex();return firstZIndex-secondZIndex});for(const instanceToAdd of instances){if(!instanceToAdd.IsInContainer())continue;for(const instanceToAddSibling of instanceToAdd.siblings()){if(instances.includes(instanceToAddSibling))continue; +const siblingAndChildren=[...instanceToAddSibling.allChildren()];siblingAndChildren.push(instanceToAddSibling);siblingAndChildren.sort((f,s)=>{const firstZIndex=f.GetWorldInfo().GetSceneGraphZIndex();const secondZIndex=s.GetWorldInfo().GetSceneGraphZIndex();return firstZIndex-secondZIndex});if(!siblingAndChildren||!siblingAndChildren.length)continue;instances.splice(instances.length,0,...siblingAndChildren)}}for(const instance of instances)if(instance.GetPlugin().IsWorldType())this._AddInstance(instance, +true)}else{if(inst.GetPlugin().IsWorldType())this._AddInstance(inst,true);if(!inst.IsInContainer())return;for(const sibling of inst.siblings()){const siblingAndChildren=[...sibling.allChildren()];siblingAndChildren.push(sibling);siblingAndChildren.sort((f,s)=>{const firstZIndex=f.GetWorldInfo().GetSceneGraphZIndex();const secondZIndex=s.GetWorldInfo().GetSceneGraphZIndex();return firstZIndex-secondZIndex});if(!siblingAndChildren||!siblingAndChildren.length)continue;for(const instance of siblingAndChildren)if(instance.GetPlugin().IsWorldType())this._AddInstance(instance, +true)}}}}; + +} + +// layouts/layout.js +{ +'use strict';const C3=self.C3;const C3Debugger=self.C3Debugger;const assert=self.assert;const tempDestRect=C3.New(C3.Rect);const tempSrcRect=C3.New(C3.Rect);const tempLayoutRect=C3.New(C3.Rect);const tempColor=C3.New(C3.Color);const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const tempRender3dList=[];const tempInstanceList1=[];const tempInstanceList2=[];const tempInstanceList3=[];function vec3EqualsXYZ(v,x,y,z){return v[0]===Math.fround(x)&&v[1]===Math.fround(y)&&v[2]===Math.fround(z)} +let lastLayerPreparedForDrawing=null;function MaybePrepareLayerDraw(layer,renderer){if(lastLayerPreparedForDrawing===layer)return;layer.PrepareForDraw(renderer);lastLayerPreparedForDrawing=layer} +C3.Layout=class Layout extends C3.DefendedBase{constructor(layoutManager,index,data){super();this._layoutManager=layoutManager;this._runtime=layoutManager.GetRuntime();this._name=data[0];this._originalWidth=data[1];this._originalHeight=data[2];this._width=data[1];this._height=data[2];this._isUnboundedScrolling=!!data[3];this._isOrthographicProjection=!!data[4];this._vanishingPointX=data[5];this._vanishingPointY=data[6];this._eventSheetName=data[7];this._eventSheet=null;this._sid=data[8];this._index= +index;this._scrollX=0;this._scrollY=0;this._scale=1;this._angle=0;this._initialObjectClasses=new Set;this._textureLoadedTypes=new Set;this._textureLoadPendingPromises=new Set;this._createdInstances=[];this._createdPersistedInstances=[];this._createdPersistedInstancesToDataMap=new Map;this._createdPersistedIndexToInstanceMap=new Map;this._initialNonWorld=[];this._is3dCameraEnabled=false;this._cam3dposition=vec3.create();this._cam3dlook=vec3.create();this._cam3dup=vec3.create();this._rootLayers=[]; +this._allLayersFlat=[];this._layersByName=new Map;this._layersBySid=new Map;this._pendingSetHTMLLayerCount=-1;const canvasManager=this._runtime.GetCanvasManager();this._effectList=C3.New(C3.EffectList,this,data[11]);this._effectChain=C3.New(C3.Gfx.EffectChain,canvasManager.GetEffectChainManager(),{drawContent:(renderer,effectChain)=>{const layout=effectChain.GetContentObject();const renderSurface=layout.GetRenderTarget();renderer.ResetColor();renderer.DrawRenderTarget(renderSurface);renderer.InvalidateRenderTarget(renderSurface); +canvasManager.ReleaseAdditionalRenderTarget(renderSurface)},getShaderParameters:index=>this.GetEffectList()._GetEffectChainShaderParametersForIndex(index)});this._needsRebuildEffectChainSteps=true;this._wasFullScreenQualityLow=false;this._curRenderTarget=null;this._persistData={};this._persistedIntances=new Map;this._isFirstVisit=true;this._iLayout=new self.ILayout(this);this._userScriptDispatcher=C3.New(C3.Event.Dispatcher);for(const layerData of data[9])this._rootLayers.push(C3.Layer.CreateFromExportData(this, +null,layerData));this._ReindexLayers();for(const layer of this.allLayers())layer._InitInitialInstances();for(const instData of data[10]){const objectClass=this._runtime.GetObjectClassByIndex(instData[1]);if(!objectClass)throw new Error("missing nonworld object class");if(!objectClass.GetDefaultInstanceData())objectClass.SetDefaultInstanceData(instData);this._initialNonWorld.push(instData);this._AddInitialObjectClass(objectClass)}}Release(){for(const l of this._allLayersFlat)l.Release();C3.clearArray(this._allLayersFlat); +this._textureLoadPendingPromises.clear();this._eventSheet=null;this._layoutManager=null;this._runtime=null}GetRuntime(){return this._runtime}GetName(){return this._name}GetSID(){return this._sid}GetIndex(){return this._index}GetEffectList(){return this._effectList}GetEffectChain(){this._MaybeRebuildEffectChainSteps();return this._effectChain}_MaybeRebuildEffectChainSteps(){const isFullscreenQualityLow=this._runtime.GetCanvasManager().GetCurrentFullscreenScalingQuality()==="low";if(!this._needsRebuildEffectChainSteps&& +this._wasFullScreenQualityLow===isFullscreenQualityLow&&!this._effectChain.NeedsRebuild())return;const activeEffectTypes=this.GetEffectList().GetActiveEffectTypes();this._effectChain.BuildSteps(activeEffectTypes.map(e=>e.GetShaderProgram()),{indexMap:activeEffectTypes.map(e=>e.GetIndex()),forcePostDraw:isFullscreenQualityLow,useFullSurface:true});this._needsRebuildEffectChainSteps=false;this._wasFullScreenQualityLow=isFullscreenQualityLow}UpdateActiveEffects(){this.GetEffectList().UpdateActiveEffects(); +this._needsRebuildEffectChainSteps=true}GetMinLayerScale(){let m=this._allLayersFlat[0].GetNormalScale();for(let i=1,len=this._allLayersFlat.length;irbound)x=rbound;if(xbbound)y=bbound;if(y1||vpY<0||vpY>1}SetPerspectiveProjection(){if(!this._isOrthographicProjection)return;this._isOrthographicProjection=false;this._SetAllLayersProjectionChanged();this._SetAllLayersMVChanged();this._runtime.UpdateRender()}SetOrthographicProjection(){if(this._isOrthographicProjection)return; +this._isOrthographicProjection=true;this._SetAllLayersProjectionChanged();this._SetAllLayersMVChanged();this._runtime.UpdateRender()}IsOrthographicProjection(){return this._isOrthographicProjection}IsPerspectiveProjection(){return!this.IsOrthographicProjection()}Set3DCameraEnabled(e){e=!!e;if(this._is3dCameraEnabled===e)return;this._is3dCameraEnabled=e;this._SetAllLayersMVChanged();this._runtime.UpdateRender()}Is3DCameraEnabled(){return this._is3dCameraEnabled}Set3DCameraOrientation(camX,camY,camZ, +lookX,lookY,lookZ,upX,upY,upZ){if(vec3EqualsXYZ(this._cam3dposition,camX,camY,camZ)&&vec3EqualsXYZ(this._cam3dlook,lookX,lookY,lookZ)&&vec3EqualsXYZ(this._cam3dup,upX,upY,upZ))return;vec3.set(this._cam3dposition,camX,camY,camZ);vec3.set(this._cam3dlook,lookX,lookY,lookZ);vec3.set(this._cam3dup,upX,upY,upZ);this.Set3DCameraChanged()}Set3DCameraChanged(){this._SetAllLayersMVChanged();this._runtime.UpdateRender()}Get3DCameraPosition(){return this._cam3dposition}Get3DCameraLookAt(){return this._cam3dlook}Get3DCameraUpVector(){return this._cam3dup}GetScale(){return this._scale}SetScale(s){if(this._scale=== +s)return;this._scale=s;this._SetAllLayersMVChanged();this.BoundScrolling();this._runtime.UpdateRender()}SetAngle(a){a=C3.clampAngle(a);if(this._angle===a)return;this._angle=a;this._SetAllLayersMVChanged();this._runtime.UpdateRender()}GetAngle(){return this._angle}GetWidth(){return this._width}SetWidth(w){if(!isFinite(w)||w<1)return;this._width=w}GetHeight(){return this._height}SetHeight(h){if(!isFinite(h)||h<1)return;this._height=h}GetEventSheet(){return this._eventSheet}_GetRootLayers(){return this._rootLayers}*allLayers(){for(const rootLayer of this._rootLayers)yield*rootLayer.selfAndAllSubLayers()}GetLayers(){return this._allLayersFlat}GetLayerCount(){return this._allLayersFlat.length}GetLayer(p){if(typeof p=== +"number")return this.GetLayerByIndex(p);else return this.GetLayerByName(p.toString())}GetLayerByIndex(i){i=C3.clamp(Math.floor(i),0,this._allLayersFlat.length-1);return this._allLayersFlat[i]}GetLayerByName(name){return this._layersByName.get(name.toLowerCase())||null}HasLayerByName(name){return!!this.GetLayerByName(name)}GetLayerBySID(sid){return this._layersBySid.get(sid)||null}_SetAllLayersProjectionChanged(){for(const layer of this._allLayersFlat)layer._SetProjectionMatrixChanged()}_SetAllLayersMVChanged(){for(const layer of this._allLayersFlat)layer._SetMVMatrixChanged()}AddLayer(layerName, +insertBy,where){if(this.HasLayerByName(layerName))throw new Error(`layer name '${layerName}' already in use`);if(!insertBy&&where<2)throw new Error("invalid insert position");const parentLayer=where>=2?insertBy:insertBy.GetParentLayer();const layer=C3.New(C3.Layer,this,parentLayer,{name:layerName,sid:Math.floor(Math.random()*1E15),isDynamic:true});this._InsertLayer(layer,insertBy,where);this.GetRuntime().UpdateRender();this._ReindexAndUpdateAllLayers()}MoveLayer(layer,insertBy,where){if(!insertBy&& +where<2)throw new Error("invalid insert position");if(layer===insertBy&&where<2)return;this._RemoveLayer(layer);this._InsertLayer(layer,insertBy,where);this.GetRuntime().UpdateRender();this._ReindexAndUpdateAllLayers()}RemoveLayer(layer){if(this._RemoveLayer(layer)){const eventSheetManager=this._runtime.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);layer.Release();eventSheetManager.BlockFlushingInstances(false);this.GetRuntime().UpdateRender();this._ReindexAndUpdateAllLayers()}}RemoveAllDynamicLayers(){const toRemove= +new Set;for(const layer of this.allLayers())if(layer.IsDynamic()&&!layer.HasAnyDynamicParentLayer())toRemove.add(layer);if(toRemove.size===0)return;const eventSheetManager=this._runtime.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);for(const layer of toRemove){this._RemoveLayer(layer);layer.Release()}eventSheetManager.BlockFlushingInstances(false);this.GetRuntime().UpdateRender();this._ReindexAndUpdateAllLayers()}_InsertLayer(layer,insertBy,where){if(where>=2)if(insertBy){if(insertBy=== +layer||insertBy.HasParentLayer(layer))throw new Error(`cannot move layer '${layer.GetName()}' to sub-layer of itself`);insertBy._AddSubLayer(layer,where===2);layer._SetParentLayer(insertBy)}else{if(where===2)this._rootLayers.push(layer);else this._rootLayers.unshift(layer);layer._SetParentLayer(null)}else{const parentLayer=insertBy.GetParentLayer();if(parentLayer){if(insertBy.HasParentLayer(layer))throw new Error(`cannot move layer '${layer.GetName()}' to sub-layer of itself`);parentLayer._InsertSubLayer(layer, +insertBy,where===0);layer._SetParentLayer(parentLayer)}else{let i=this._rootLayers.indexOf(insertBy);if(i===-1)throw new Error("cannot find layer to insert by");if(where===0)++i;this._rootLayers.splice(i,0,layer);layer._SetParentLayer(null)}}}_RemoveLayer(layer){const parentLayer=layer.GetParentLayer();if(parentLayer){parentLayer._RemoveSubLayer(layer);return true}else if(this._rootLayers.length>1){const i=this._rootLayers.indexOf(layer);if(i===-1)throw new Error("cannot find layer to remove");this._rootLayers.splice(i, +1);return true}return false}_ReindexLayers(){this._allLayersFlat=[...this.allLayers()];this._layersByName.clear();this._layersBySid.clear();for(let i=0,len=this._allLayersFlat.length;ii)break}return ret}SaveTransform(){return{"scrollX":this.GetScrollX(),"scrollY":this.GetScrollY(),"scale":this.GetScale(),"angle":this.GetAngle(),"vpX":this.GetVanishingPointX(),"vpY":this.GetVanishingPointY()}}RestoreTransform(t){this.SetScrollX(t["scrollX"]);this.SetScrollY(t["scrollY"]);this.SetScale(t["scale"]);this.SetAngle(t["angle"]);this.SetVanishingPointXY(t["vpX"],t["vpY"])}GetLayoutBackgroundColor(){let firstDrawLayer=this._rootLayers.filter(l=> +l.ShouldDraw())[0];while(firstDrawLayer){if(!firstDrawLayer.IsTransparent()){tempColor.copyRgb(firstDrawLayer.GetBackgroundColor());tempColor.setA(1);return tempColor}else if(firstDrawLayer.UsesOwnTexture()){tempColor.setRgba(0,0,0,0);return tempColor}firstDrawLayer=firstDrawLayer.GetSubLayers().filter(l=>l.ShouldDraw())[0]}tempColor.setRgba(0,0,0,0);return tempColor}IsFirstVisit(){return this._isFirstVisit}_GetInitialObjectClasses(){return[...this._initialObjectClasses]}_AddInitialObjectClass(objectClass){if(objectClass.IsInContainer())for(const containerType of objectClass.GetContainer().GetObjectTypes())this._initialObjectClasses.add(containerType); +else this._initialObjectClasses.add(objectClass)}_GetTextureLoadedObjectTypes(){return[...this._textureLoadedTypes]}_Load(previousLayout,renderer){if(previousLayout===this||!renderer)return Promise.resolve();if(previousLayout){C3.CopySet(this._textureLoadedTypes,previousLayout._textureLoadedTypes);previousLayout._textureLoadedTypes.clear()}const promises=[];for(const oc of this._initialObjectClasses)if(!this._textureLoadedTypes.has(oc)){promises.push(oc.LoadTextures(renderer));this._textureLoadedTypes.add(oc)}return Promise.all(promises)}async MaybeLoadTexturesFor(objectClass){if(objectClass.IsFamily())throw new Error("cannot load textures for family"); +const renderer=this._runtime.GetRenderer();if(!renderer||renderer.IsContextLost()||this._textureLoadedTypes.has(objectClass))return;this._textureLoadedTypes.add(objectClass);const loadPromise=objectClass.LoadTextures(renderer);this._AddPendingTextureLoadPromise(loadPromise);await loadPromise;objectClass.OnDynamicTextureLoadComplete();this._runtime.UpdateRender()}_AddPendingTextureLoadPromise(promise){this._textureLoadPendingPromises.add(promise);promise.then(()=>this._textureLoadPendingPromises.delete(promise)).catch(()=> +this._textureLoadPendingPromises.delete(promise))}WaitForPendingTextureLoadsToComplete(){return Promise.all([...this._textureLoadPendingPromises])}MaybeUnloadTexturesFor(objectClass){if(objectClass.IsFamily()||objectClass.GetInstanceCount()>0)throw new Error("cannot unload textures");const renderer=this._runtime.GetRenderer();if(!renderer||!this._textureLoadedTypes.has(objectClass))return;this._textureLoadedTypes.delete(objectClass);objectClass.ReleaseTextures(renderer)}_Unload(nextLayout,renderer){if(nextLayout=== +this||!renderer)return;for(const oc of this._textureLoadedTypes)if(!oc.IsGlobal()&&!nextLayout._initialObjectClasses.has(oc)){oc.ReleaseTextures();this._textureLoadedTypes.delete(oc)}}_OnRendererContextLost(){this._textureLoadedTypes.clear()}async _StartRunning(isFirstLayout){const runtime=this._runtime;const layoutManager=this._layoutManager;const eventSheetManager=runtime.GetEventSheetManager();if(this._eventSheetName){this._eventSheet=eventSheetManager.GetEventSheetByName(this._eventSheetName); +this._eventSheet._UpdateDeepIncludes()}layoutManager._SetMainRunningLayout(this);this._width=this._originalWidth;this._height=this._originalHeight;this._scrollX=runtime.GetOriginalViewportWidth()/2;this._scrollY=runtime.GetOriginalViewportHeight()/2;this.BoundScrolling();this._SetAllLayersProjectionChanged();this._SetAllLayersMVChanged();this._ReindexHTMLLayers();await this._runtime.GetCanvasManager().SetHTMLLayerCount(this.GetHTMLLayerCount(),true);this._MoveGlobalObjectsToThisLayout(isFirstLayout); +this._runtime.SetUsingCreatePromises(true);this._CreateInitialInstances();if(!this._isFirstVisit)this._CreatePersistedInstances();this._CreateAndLinkContainerInstances(this._createdInstances);this._CreateAndLinkContainerInstances(this._createdPersistedInstances);this._CreateInitialNonWorldInstances();layoutManager.ClearPendingChangeLayout();runtime.FlushPendingInstances();this._runtime.SetUsingCreatePromises(false);const createPromises=this._runtime.GetCreatePromises();await Promise.all(createPromises); +C3.clearArray(createPromises);if(!runtime.IsLoadingState()){for(const inst of this._createdInstances)inst.SetupInitialSceneGraphConnections();for(const inst of this._createdPersistedInstances)inst.SetupPersistedSceneGraphConnections(this._createdPersistedInstancesToDataMap,this._createdPersistedIndexToInstanceMap);for(const [sidStr,typeData]of Object.entries(this._persistData)){const objectClass=this._runtime.GetObjectClassBySID(parseInt(sidStr,10));if(!objectClass||objectClass.IsFamily()||!objectClass.HasPersistBehavior())continue; +C3.clearArray(typeData)}for(const inst of this._createdInstances)inst._TriggerOnCreated();for(const inst of this._createdPersistedInstances)inst._TriggerOnCreated()}C3.clearArray(this._createdInstances);C3.clearArray(this._createdPersistedInstances);this._createdPersistedInstancesToDataMap.clear();this._createdPersistedIndexToInstanceMap.clear();await Promise.all([...this._initialObjectClasses].map(oc=>oc.PreloadTexturesWithInstances(this._runtime.GetRenderer())));if(isFirstLayout){runtime.Dispatcher().dispatchEvent(new C3.Event("beforefirstlayoutstart")); +await runtime.DispatchUserScriptEventAsyncWait(new C3.Event("beforeprojectstart"))}await this.DispatchRuntimeUserScriptEventAsyncWait(new C3.Event("beforeanylayoutstart"));runtime.Dispatcher().dispatchEvent(new C3.Event("beforelayoutstart"));await this.DispatchUserScriptEventAsyncWait(new C3.Event("beforelayoutstart"));if(!runtime.IsLoadingState())await runtime.TriggerAsync(C3.Plugins.System.Cnds.OnLayoutStart,null,null);runtime.Dispatcher().dispatchEvent(new C3.Event("afterlayoutstart"));await this.DispatchUserScriptEventAsyncWait(new C3.Event("afterlayoutstart")); +await this.DispatchRuntimeUserScriptEventAsyncWait(new C3.Event("afteranylayoutstart"));if(isFirstLayout){runtime.Dispatcher().dispatchEvent(new C3.Event("afterfirstlayoutstart"));await runtime.DispatchUserScriptEventAsyncWait(new C3.Event("afterprojectstart"))}eventSheetManager._RunQueuedTriggers(layoutManager);await this.WaitForPendingTextureLoadsToComplete();this._isFirstVisit=false}_MoveGlobalObjectsToThisLayout(isFirstLayout){for(const objectClass of this._runtime.GetAllObjectClasses()){if(objectClass.IsFamily()|| +!objectClass.IsWorldType())continue;for(const inst of objectClass.GetInstances()){const wi=inst.GetWorldInfo();const oldLayer=wi.GetLayer();const layerIndex=C3.clamp(oldLayer.GetIndex(),0,this._allLayersFlat.length-1);const newLayer=this._allLayersFlat[layerIndex];wi._SetLayer(newLayer,true);newLayer._MaybeAddInstance(inst)}}if(!isFirstLayout)for(const layer of this._allLayersFlat)layer._SortInstancesByLastCachedZIndex(false)}_CreateInitialInstances(){for(const layer of this._allLayersFlat){layer.CreateInitialInstances(this._createdInstances); +layer._Start()}}_CreatePersistedInstances(){let uidsChanged=false;for(const [sidStr,typeData]of Object.entries(this._persistData)){const objectClass=this._runtime.GetObjectClassBySID(parseInt(sidStr,10));if(!objectClass||objectClass.IsFamily()||!objectClass.HasPersistBehavior())continue;for(const instData of typeData){let layer=null;if(objectClass.IsWorldType()){if(instData.hasOwnProperty("instJson"))layer=this.GetLayerBySID(instData["instJson"]["w"]["l"]);else layer=this.GetLayerBySID(instData["w"]["l"]); +if(!layer)continue}const inst=this._runtime.CreateInstanceFromData(objectClass,layer,false,0,0,true);if(instData.hasOwnProperty("instJson"))inst.LoadFromJson(instData["instJson"]);else inst.LoadFromJson(instData);uidsChanged=true;this._createdPersistedInstances.push(inst);if(instData.hasOwnProperty("instJson")){this._createdPersistedInstancesToDataMap.set(inst,instData);this._createdPersistedIndexToInstanceMap.set(instData["index"],inst)}}}for(const layer of this._allLayersFlat){layer._SortInstancesByLastCachedZIndex(true); +layer.SetZIndicesChanged()}if(uidsChanged){this._runtime.FlushPendingInstances();this._runtime._RefreshUidMap()}}_CreateAndLinkContainerInstances(createdInstances){for(const inst of createdInstances){if(!inst.IsInContainer())continue;const wi=inst.GetWorldInfo();const iid=inst.GetIID();for(const containerType of inst.GetObjectClass().GetContainer().objectTypes()){if(containerType===inst.GetObjectClass())continue;const instances=containerType.GetInstances();if(instances.length>iid)inst._AddSibling(instances[iid]); +else{let s;if(wi)s=this._runtime.CreateInstanceFromData(containerType,wi.GetLayer(),true,wi.GetX(),wi.GetY(),true);else s=this._runtime.CreateInstanceFromData(containerType,null,true,0,0,true);this._runtime.FlushPendingInstances();containerType._UpdateIIDs();inst._AddSibling(s);createdInstances.push(s)}}}}_CreateInitialNonWorldInstances(){for(const instData of this._initialNonWorld){const objectClass=this._runtime.GetObjectClassByIndex(instData[1]);if(!objectClass.IsInContainer())this._runtime.CreateInstanceFromData(instData, +null,true)}}_CreateGlobalNonWorlds(){const createdInstances=[];const initialNonWorld=this._initialNonWorld;let k=0;for(let i=0,len=initialNonWorld.length;il.ShouldDraw());for(let i=0,len=layersToDraw.length;i= +2||tempRender3dList.length===1&&tempRender3dList[0].HasAnyVisibleSubLayer()){this._Draw3DLayers(renderer,destRenderTarget,tempRender3dList);i+=tempRender3dList.length;C3.clearArray(tempRender3dList);continue}C3.clearArray(tempRender3dList)}layer.Draw(renderer,destRenderTarget,canCopyFirstLayer&&i===0);++i}}_DrawLayoutOwnTextureToRenderTarget(renderer,ownRenderTarget){const activeEffectTypes=this._effectList.GetActiveEffectTypes();const runtime=this._runtime;if(activeEffectTypes.length===0){renderer.SetRenderTarget(null); +renderer.SetTextureFillMode();renderer.CopyRenderTarget(ownRenderTarget);renderer.InvalidateRenderTarget(ownRenderTarget);runtime.ReleaseAdditionalRenderTarget(ownRenderTarget)}else{tempLayoutRect.set(0,0,runtime.GetViewportWidth(),runtime.GetViewportHeight());this.GetEffectChain().Render(renderer,null,{contentObject:this,blendMode:3,devicePixelRatio:this._runtime.GetEffectDevicePixelRatioParam(),layerScale:this._runtime.GetEffectLayerScaleParam()*this.GetScale(),layerAngle:this.GetAngle(),layoutRect:tempLayoutRect, +drawSurfaceRect:null,invalidateRenderTargets:true})}}_Draw3DLayers(renderer,renderTarget,layerList){if(!layerList[0].IsTransparent()){tempColor.copyRgb(layerList[0].GetBackgroundColor());tempColor.setA(1);renderer.Clear(tempColor)}const canvasManager=this._runtime.GetCanvasManager();renderer.SetDepthEnabled(true);const fullInstanceList=tempInstanceList1;const coplanarInstances=tempInstanceList2;const postRenderInstances=tempInstanceList3;for(const layer of layerList){layer._UpdateZIndices();layer._AppendAllInstancesIncludingSubLayersInDrawOrder(fullInstanceList)}const firstLayer= +layerList[0];const webglLayerQuery=firstLayer._MaybeStartWebGLProfiling(renderer);firstLayer._MaybeStartWebGPUProfiling(renderer);for(let i=0,len=fullInstanceList.length;i0)postRenderInstances.push(inst);const startZ=inst.GetWorldInfo().GetTotalZElevation();coplanarInstances.push(inst); +let endIndex=i+1;for(;endIndex0)postRenderInstances.push(nextInst);coplanarInstances.push(nextInst)}if(coplanarInstances.length===1&&!coplanarInstances[0].MustMitigateZFighting()){MaybePrepareLayerDraw(wiLayer, +renderer);wiLayer._DrawInstanceMaybeWithEffects(inst,wi,renderer,renderTarget);for(let j=0,lenj=postRenderInstances.length;j=0;--i){const dld=dynamicLayersData[i];const sid=dld["sid"];const layerName=dld["name"];const parentSid=dld["parentSid"];const siblingIndex=dld["siblingIndex"];const layerData=dld["data"];this._ReindexLayers();if(this.HasLayerByName(layerName)||this.GetLayerBySID(sid))continue;let parentLayer;let parentLayerArr;if(parentSid===null){parentLayer=null;parentLayerArr= +this._rootLayers}else{parentLayer=this.GetLayerBySID(parentSid);if(!parentLayer)continue;parentLayerArr=parentLayer.GetSubLayers()}const layer=C3.New(C3.Layer,this,parentLayer,{name:layerName,sid,isDynamic:true});parentLayerArr.push(layer);let arr=reorderLayers.get(parentLayerArr);if(!arr){arr=[];reorderLayers.set(parentLayerArr,arr)}arr.push({layer,siblingIndex});layer._LoadFromJson(layerData)}for(const [parentLayerArr,reorderArr]of reorderLayers){reorderArr.sort((a,b)=>a.siblingIndex-b.siblingIndex); +for(const r of reorderArr){const layer=r.layer;const siblingIndex=r.siblingIndex;let i=parentLayerArr.indexOf(layer);parentLayerArr.splice(i,1);parentLayerArr.splice(siblingIndex,0,layer)}}}this._ReindexAndUpdateAllLayers();this._SetAllLayersProjectionChanged();this._SetAllLayersMVChanged()}GetILayout(){return this._iLayout}UserScriptDispatcher(){return this._userScriptDispatcher}DispatchUserScriptEvent(e){e.layout=this.GetILayout();const runtime=this._runtime;const shouldTime=runtime.IsDebug()&& +!runtime.GetEventSheetManager().IsInEventEngine();if(shouldTime)C3Debugger.StartMeasuringScriptTime();this._userScriptDispatcher.dispatchEvent(e);if(shouldTime)C3Debugger.AddScriptTime()}DispatchUserScriptEventAsyncWait(e){e.layout=this.GetILayout();return this._userScriptDispatcher.dispatchEventAndWaitAsync(e)}DispatchRuntimeUserScriptEventAsyncWait(e){e.layout=this.GetILayout();return this._runtime.DispatchUserScriptEventAsyncWait(e)}_LogLayerTree(){this._LogLayerList(this._rootLayers)}_LogLayerList(layersArr, +indent=0){const layersRev=layersArr.slice(0);layersRev.reverse();for(const layer of layersRev){console.log(`${"\t".repeat(indent)}- ${layer.GetName()}`);this._LogLayerList(layer.GetSubLayers(),indent+1)}}}; + +} + +// layouts/layoutManager.js +{ +'use strict';const C3=self.C3; +C3.LayoutManager=class LayoutManager extends C3.DefendedBase{constructor(runtime){super();this._runtime=runtime;this._allLayouts=[];this._layoutsByName=new Map;this._layoutsBySid=new Map;this._mainRunningLayout=null;this._runningSubLayouts=[];this._firstLayout=null;this._isEndingLayout=0;this._pendingChangeLayout=null}Release(){this._runtime=null;this._mainRunningLayout=null;this._firstLayout=null;this._pendingChangeLayout=null;C3.clearArray(this._allLayouts);this._layoutsByName.clear();this._layoutsBySid.clear(); +C3.clearArray(this._runningSubLayouts)}Create(layoutData){const layout=C3.New(C3.Layout,this,this._allLayouts.length,layoutData);this._allLayouts.push(layout);this._layoutsByName.set(layout.GetName().toLowerCase(),layout);this._layoutsBySid.set(layout.GetSID(),layout)}GetRuntime(){return this._runtime}SetFirstLayout(layout){this._firstLayout=layout}GetFirstLayout(){if(this._firstLayout)return this._firstLayout;if(this._allLayouts.length)return this._allLayouts[0];throw new Error("no first layout"); +}GetLayoutByName(name){return this._layoutsByName.get(name.toLowerCase())||null}GetLayoutBySID(sid){return this._layoutsBySid.get(sid)||null}GetLayoutByIndex(index){index=C3.clamp(Math.floor(index),0,this._allLayouts.length-1);return this._allLayouts[index]}GetLayout(p){if(typeof p==="number")return this.GetLayoutByIndex(p);else return this.GetLayoutByName(p.toString())}GetAllLayouts(){return this._allLayouts}_SetMainRunningLayout(layout){this._mainRunningLayout=layout}GetMainRunningLayout(){return this._mainRunningLayout}_AddRunningSubLayout(layout){if(this._runningSubLayouts.includes(layout))throw new Error("layout already running"); +this._runningSubLayouts.push(layout)}_RemoveRunningSubLayout(layout){const i=this._runningSubLayouts.indexOf(layout);if(i===-1)throw new Error("layout not running");this._runningSubLayouts.splice(i,1)}*runningLayouts(){if(this._mainRunningLayout)yield this._mainRunningLayout;if(this._runningSubLayouts.length)yield*this._runningSubLayouts}IsLayoutRunning(layout){return this._mainRunningLayout===layout||this._runningSubLayouts.includes(layout)}SetIsEndingLayout(e){if(e)this._isEndingLayout++;else{if(this._isEndingLayout<= +0)throw new Error("already unset");this._isEndingLayout--}}IsEndingLayout(){return this._isEndingLayout>0}ChangeMainLayout(layout){this._pendingChangeLayout=layout}ClearPendingChangeLayout(){this._pendingChangeLayout=null}IsPendingChangeMainLayout(){return!!this._pendingChangeLayout}GetPendingChangeMainLayout(){return this._pendingChangeLayout}SetAllLayerProjectionChanged(){const runningLayout=this.GetMainRunningLayout();if(!runningLayout)return;runningLayout._SetAllLayersProjectionChanged()}SetAllLayerMVChanged(){const runningLayout= +this.GetMainRunningLayout();if(!runningLayout)return;runningLayout._SetAllLayersMVChanged()}}; + +} + +// timelines/timelineManager.js +{ +'use strict';const C3=self.C3;const NAMES_REGEXP=new RegExp("<(.+?)>","g"); +C3.TimelineManager=class TimelineManager extends C3.DefendedBase{constructor(runtime){super();this._runtime=runtime;this._timelineDataManager=C3.New(C3.TimelineDataManager);this._pluginInstance=null;this._timelines=[];this._timelinesByName=new Map;this._objectClassToTimelineMap=new Map;this._timelinesCreatedByTemplate=new Map;this._scheduledTimelines=[];this._playingTimelines=[];this._markedForRemovalTimelines=[];this._hasRuntimeListeners=false;this._changingLayout=false;this._isTickingTimelines= +false;this._tickFunc=()=>this._OnTick();this._tick2Func=()=>this._OnTick2();this._beforeLayoutChange=()=>this._OnBeforeChangeLayout();this._layoutChange=()=>this._OnAfterChangeLayout();this._instanceDestroy=e=>this._OnInstanceDestroy(e.instance);this._beforeLoad=e=>this._OnBeforeLoad();this._afterLoad=e=>this._OnAfterLoad();this._afterLayoutStart=e=>this._OnAfterLayoutStart();this._destroyedWhileLoadingState=[];this._renderChange=0}Release(){this.RemoveRuntimeListeners();this._tickFunc=null;this._tick2Func= +null;this._beforeLayoutChange=null;this._layoutChange=null;this._instanceDestroy=null;this._afterLoad=null;for(const timeline of this._timelines){timeline.Stop();timeline.Release()}C3.clearArray(this._timelines);this._timelines=null;this._timelineDataManager.Release();this._timelineDataManager=null;C3.clearArray(this._scheduledTimelines);this._scheduledTimelines=null;C3.clearArray(this._playingTimelines);this._playingTimelines=null;C3.clearArray(this._markedForRemovalTimelines);this._markedForRemovalTimelines= +null;this._timelinesByName.clear();this._timelinesByName=null;this._objectClassToTimelineMap.clear();this._objectClassToTimelineMap=null;this._timelinesCreatedByTemplate.clear();this._timelinesCreatedByTemplate=null;C3.clearArray(this._destroyedWhileLoadingState);this._destroyedWhileLoadingState=null;this._runtime=null}AddRuntimeListeners(){const dispatcher=this._runtime.Dispatcher();dispatcher.addEventListener("pretick",this._tickFunc);dispatcher.addEventListener("tick2",this._tick2Func);dispatcher.addEventListener("beforelayoutchange", +this._beforeLayoutChange);dispatcher.addEventListener("layoutchange",this._layoutChange);dispatcher.addEventListener("instancedestroy",this._instanceDestroy);dispatcher.addEventListener("beforeload",this._beforeLoad);dispatcher.addEventListener("afterload",this._afterLoad);dispatcher.addEventListener("afterlayoutstart",this._afterLayoutStart)}RemoveRuntimeListeners(){const dispatcher=this._runtime.Dispatcher();dispatcher.removeEventListener("pretick",this._tickFunc);dispatcher.removeEventListener("tick2", +this._tick2Func);dispatcher.removeEventListener("beforelayoutchange",this._beforeLayoutChange);dispatcher.removeEventListener("layoutchange",this._layoutChange);dispatcher.removeEventListener("instancedestroy",this._instanceDestroy);dispatcher.removeEventListener("beforeload",this._beforeLoad);dispatcher.removeEventListener("afterload",this._afterLoad);dispatcher.removeEventListener("afterlayoutstart",this._afterLayoutStart)}Create(timelineData){this._timelineDataManager.Add(timelineData);const timeline= +C3.TimelineState.CreateInitial(timelineData,this);this.Add(timeline);this.SetTimelineObjectClassesToMap(timeline);this._timelinesCreatedByTemplate.set(timeline.GetName(),0)}CreateFromTemplate(template){const timelineDataManager=this.GetTimelineDataManager();const templateName=template.GetTemplateName();const timelineDataItem=timelineDataManager.Get(templateName);const timeline=C3.TimelineState.CreateFromTemplate(`${templateName}:${this._timelinesCreatedByTemplate.get(templateName)}`,timelineDataItem, +this);this._IncreaseTemplateTimelinesCount(templateName);this.Add(timeline);return timeline}_IncreaseTemplateTimelinesCount(templateName){this._timelinesCreatedByTemplate.set(templateName,this._timelinesCreatedByTemplate.get(templateName)+1)}_SetCreatedTemplateTimelinesCount(){for(const timeline of this._timelines){if(timeline.IsTemplate())continue;const templateName=timeline.GetTemplateName();this._IncreaseTemplateTimelinesCount(templateName)}}_ClearCreatedTemplateTimelinesCount(){for(const templateName of this._timelinesCreatedByTemplate.keys())this._timelinesCreatedByTemplate.set(templateName, +0)}Add(timeline){this._timelines.push(timeline);this._timelinesByName.set(timeline.GetName().toLowerCase(),timeline)}Remove(timeline){timeline.Removed();if(timeline.IsTemplate())return;C3.arrayFindRemove(this._timelines,timeline);C3.arrayFindRemove(this._scheduledTimelines,timeline);C3.arrayFindRemove(this._playingTimelines,timeline);C3.arrayFindRemove(this._markedForRemovalTimelines,timeline);this._timelinesByName.delete(timeline.GetName().toLowerCase());this.RemoveTimelineFromObjectClassMap(timeline); +if(!timeline.IsReleased())timeline.Release()}Trigger(method){this._runtime.Trigger(method,this._pluginInstance,null)}GetRuntime(){return this._runtime}GetTimelineDataManager(){return this._timelineDataManager}SetPluginInstance(inst){this._pluginInstance=inst}GetPluginInstance(){return this._pluginInstance}*GetTimelines(){for(const timeline of this._timelines)yield timeline}*GetPlayingTimelines(){for(const timeline of this._playingTimelines)yield timeline}SetTimelineObjectClassToMap(objectClass,timeline){if(!this._objectClassToTimelineMap.has(objectClass))this._objectClassToTimelineMap.set(objectClass, +new Set);this._objectClassToTimelineMap.get(objectClass).add(timeline)}SetTimelineObjectClassesToMap(timeline){for(const objectClass of timeline.GetObjectClasses())this.SetTimelineObjectClassToMap(objectClass,timeline)}RemoveTimelineFromObjectClassMap(timeline){for(const [objectClass,timelines]of this._objectClassToTimelineMap.entries())if(timelines.has(timeline)){timelines.delete(timeline);if(timelines.size===0)this._objectClassToTimelineMap.delete(objectClass)}}GetTimelinesForObjectClass(objectClass){if(!this._objectClassToTimelineMap.has(objectClass))return; +return this._objectClassToTimelineMap.get(objectClass)}GetTimelineOfTemplateForInstances(templateTimeline,instancesObject){if(!instancesObject)return;for(const timeline of this._timelines){const found=instancesObject.every(io=>{return timeline.HasTrackInstance(io.instance,io.trackId)});if(found)if(timeline.GetName().includes(templateTimeline.GetName()))return timeline}}GetTimelineByName(name){return this._timelinesByName.get(name.toLowerCase())||null}GetScheduledOrPlayingTimelineByName(name){for(const timeline of this._scheduledTimelines)if(timeline.GetName()=== +name)return timeline;for(const timeline of this._playingTimelines)if(timeline.GetName()===name)return timeline;return null}*GetTimelinesByName(name){if(NAMES_REGEXP.test(name)){NAMES_REGEXP.lastIndex=0;let match;const uniqueNames=new Set;do{match=NAMES_REGEXP.exec(name);if(match){const names=match[1].split(",");for(const name of names)uniqueNames.add(name)}}while(match);for(const name of uniqueNames.values()){const timeline=this.GetTimelineByName(name);if(timeline)yield timeline}uniqueNames.clear()}else{const timeline= +this.GetTimelineByName(name);if(timeline)yield timeline}}*GetTimelinesByTags(tags){for(const timeline of this._timelines)if(timeline.HasTags(tags))yield timeline}AddScheduledTimeline(timeline){if(!this._scheduledTimelines.includes(timeline))this._scheduledTimelines.push(timeline);this._MaybeEnableRuntimeListeners()}RemovePlayingTimeline(timeline){C3.arrayFindRemove(this._playingTimelines,timeline);this._MaybeDisableRuntimeListeners()}ScheduleTimeline(timeline){if(this._playingTimelines.includes(timeline)){timeline.SetPlaying(true); +timeline.SetScheduled(false);timeline.SetMarkedForRemoval(false)}else{timeline.SetPlaying(false);timeline.SetScheduled(true);timeline.SetMarkedForRemoval(false);if(!this._scheduledTimelines.includes(timeline))this._scheduledTimelines.push(timeline)}this._MaybeEnableRuntimeListeners()}DeScheduleTimeline(timeline){timeline.SetPlaying(false);timeline.SetScheduled(false);timeline.ResolvePlayPromise();C3.arrayFindRemove(this._scheduledTimelines,timeline);this._MaybeDisableRuntimeListeners()}CompleteTimeline(timeline){timeline.SetPlaying(false); +timeline.SetScheduled(false);if(this._playingTimelines.includes(timeline)){timeline.SetMarkedForRemoval(true);this._markedForRemovalTimelines.push(timeline);C3.arrayFindRemove(this._playingTimelines,timeline)}if(this._scheduledTimelines.includes(timeline))timeline.SetMarkedForRemoval(true)}CompleteTimelineBeforeChangeOfLayout(timeline){timeline.SetPlaying(false);timeline.SetScheduled(false);timeline.SetMarkedForRemoval(false);timeline.SetPlaybackRate(1);C3.arrayFindRemove(this._playingTimelines,timeline)}CompleteTimelineAndResolve(timeline){this.CompleteTimeline(timeline); +timeline.ResolvePlayPromise()}_OnTick(){if(this.GetRuntime().IsLoadingState())return;if(!this._hasRuntimeListeners)return;if(this._changingLayout)return;this._isTickingTimelines=true;while(this._scheduledTimelines.length){const t=this._scheduledTimelines.pop();if(t.IsMarkedForRemoval()){t.SetInitialStateForce();this._markedForRemovalTimelines.push(t)}else{t.SetInitialState();this._playingTimelines.push(t)}if(t.GetRenderChange()!==0)this._renderChange=1}const dt=this._runtime._GetDtFast();const dt1= +this._runtime.GetDt1();const ts=this._runtime.GetTimeScale();for(let i=this._playingTimelines.length-1;i>=0;i--){const t=this._playingTimelines[i];if(t)t.Tick(dt,ts,dt1)}this._isTickingTimelines=false;if(this._renderChange!==0)this.GetRuntime().UpdateRender()}_OnTick2(){if(this.GetRuntime().IsLoadingState())return;if(!this._hasRuntimeListeners)return;if(this._changingLayout)return;let timelinesToRemove;for(let i=0,l=this._markedForRemovalTimelines.length;i +t)){this._MaybeExecuteTimelineFinishTriggers(timeline);this.Remove(timeline)}for(const timeline of this._playingTimelines.map(t=>t)){this._MaybeExecuteTimelineFinishTriggers(timeline);this.Remove(timeline)}}_OnAfterLoad(){for(const destroyedInstance of this._destroyedWhileLoadingState)this._OnInstanceDestroy(destroyedInstance);C3.clearArray(this._destroyedWhileLoadingState);for(const timeline of this._timelines)timeline._OnAfterLoad()}_OnAfterLayoutStart(){const layoutManager=this._runtime.GetLayoutManager(); +const runningLayout=layoutManager.GetMainRunningLayout();if(!runningLayout)return;for(const timeline of this._timelines){const startOnLayout=timeline.GetStartOnLayout();if(!startOnLayout)continue;if(runningLayout.GetName()===startOnLayout)this.ScheduleTimeline(timeline)}}_SaveToJson(){return{"timelinesJson":this._SaveTimelinesToJson(),"scheduledTimelinesJson":this._SaveScheduledTimelinesToJson(),"playingTimelinesJson":this._SavePlayingTimelinesToJson(),"markedForRemovalTimelinesJson":this._SaveMarkedForRemovalTimelinesToJson(), +"hasRuntimeListeners":this._hasRuntimeListeners,"changingLayout":this._changingLayout,"isTickingTimelines":this._isTickingTimelines}}_LoadFromJson(o){if(!o)return;this._ClearCreatedTemplateTimelinesCount();this._LoadTimelinesFromJson(o["timelinesJson"]);this._LoadScheduledTimelinesFromJson(o["scheduledTimelinesJson"]);this._LoadPlayingTimelinesFromJson(o["playingTimelinesJson"]);this._LoadMarkedForRemovalTimelinesFromJson(o["markedForRemovalTimelinesJson"]);this._hasRuntimeListeners=!o["hasRuntimeListeners"]; +this._changingLayout=!!o["changingLayout"];this._isTickingTimelines=!!o["isTickingTimelines"];this._SetCreatedTemplateTimelinesCount();this._MaybeEnableRuntimeListeners();this._MaybeDisableRuntimeListeners()}_SaveTimelinesToJson(){return this._timelines.map(timelineState=>timelineState._SaveToJson())}_LoadTimelinesFromJson(timelinesJson){for(const timelineJson of timelinesJson){let timeline=this.GetTimelineByName(timelineJson["name"]);if(timeline)timeline._LoadFromJson(timelineJson);else{const templateName= +this._GetTemplateNameFromJson(timelineJson);if(!templateName)continue;const templateTimeline=this.GetTimelineByName(templateName);timeline=this.CreateFromTemplate(templateTimeline);timeline._LoadFromJson(timelineJson)}if(!timeline.HasTracks())this.Remove(timeline)}}_GetTemplateNameFromJson(timelineJson){const name=timelineJson["name"];const nameParts=name.split(":");if(!nameParts||nameParts.length!==2)return null;return nameParts[0]}_SaveScheduledTimelinesToJson(){return this._SaveTimelines(this._scheduledTimelines)}_LoadScheduledTimelinesFromJson(scheduledTimelinesJson){this._LoadTimelines(scheduledTimelinesJson, +this._scheduledTimelines)}_SavePlayingTimelinesToJson(){return this._SaveTimelines(this._playingTimelines)}_LoadPlayingTimelinesFromJson(playingTimelinesJson){this._LoadTimelines(playingTimelinesJson,this._playingTimelines)}_SaveMarkedForRemovalTimelinesToJson(){return this._SaveTimelines(this._markedForRemovalTimelines)}_LoadMarkedForRemovalTimelinesFromJson(markedForRemovalTimelinesJson){this._LoadTimelines(markedForRemovalTimelinesJson,this._markedForRemovalTimelines)}_IsTimelineInJson(timeline, +json){if(!json)return false;for(const name of json)if(name===timeline.GetName())return true;return false}_SaveTimelines(collection){return collection.map(t=>t.GetName())}_LoadTimelines(timelinesJson,collection){const timelinesToRemove=new Set;for(const timeline of collection)if(!this._IsTimelineInJson(timeline,timelinesJson))timelinesToRemove.add(timeline);C3.arrayRemoveAllInSet(collection,timelinesToRemove);if(timelinesJson){const ff=tn=>t=>t.GetName()===tn;for(const name of timelinesJson){const timeline= +this.GetTimelineByName(name);if(timeline){const t=collection.find(ff(name));if(!t)collection.push(timeline)}}}}}; + +} + +// timelines/timelineInfo.js +{ +'use strict';const C3=self.C3;const STEPS=100;const LENGTH_STEP_SIZE=.01;const BEZIER_STEP_SIZE=30;const TANGENT_RESULT=[0,0];const MAP_RESULT=[0,0];const PROJECTION_RESULT=[0,0,0,0,0]; +C3.TimelineInfo=class TimelineInfo{constructor(timeline,trackId){this._initialized=false;this._timeline=timeline;this._segments=[];let trackState=null;if(trackId)trackState=this._timeline.GetTrackById(trackId);else trackState=C3.first(this._timeline.GetTracks());if(!trackState)return;const xTrack=trackState.GetPropertyTrack("offsetX");const yTrack=trackState.GetPropertyTrack("offsetY");if(!xTrack||!yTrack)return;this._xTrack=xTrack;this._yTrack=yTrack;const xPropertyKeyframes=xTrack.GetPropertyKeyframeDataItemArrayIncludingDisabled(); +const yPropertyKeyframes=yTrack.GetPropertyKeyframeDataItemArrayIncludingDisabled();for(let i=1,len=Math.min(xPropertyKeyframes.length,yPropertyKeyframes.length);if[3]-s[3]);return ret[0]}Tangent(t,segmentIndex){return this._segments[segmentIndex].Tangent(t)}TangentAngle(x,y,t,segmentIndex){return this._segments[segmentIndex].TangentAngle(x,y,t)}}; +C3.TimelineCubicBezierSegmentInfo=class TimelineCubicBezierSegmentInfo{constructor(startX,startY,endX,endY,index){this._index=index;const startXAddon=startX.GetAddOn("cubic-bezier");const endXAddon=endX.GetAddOn("cubic-bezier");const startYAddon=startY.GetAddOn("cubic-bezier");const endYAddon=endY.GetAddOn("cubic-bezier");this._aX=startX.GetValueWithResultMode();this._aY=startY.GetValueWithResultMode();this._bX=startX.GetValueWithResultMode()+startXAddon.GetStartAnchor();this._bY=startY.GetValueWithResultMode()+ +startYAddon.GetStartAnchor();this._cX=endX.GetValueWithResultMode()+endXAddon.GetEndAnchor();this._cY=endY.GetValueWithResultMode()+endYAddon.GetEndAnchor();this._dX=endX.GetValueWithResultMode();this._dY=endY.GetValueWithResultMode();this._initialized=false;this._len=STEPS;this._arcLengths=new Array(this._len+1);this._arcLengths[0]=0;this._length=0;this._lut=[];this._CalculateLength()}Release(){C3.clearArray(this._arcLengths);this._arcLengths=null;C3.clearArray(this._lut);this._lut=null}GetType(){return"cubic-bezier"}GetIndex(){return this._index}GetStepCount(){return Math.floor(this._length/ +BEZIER_STEP_SIZE)}GetStepIncrement(){return 1/this.GetStepCount()}SetOrigin(ox,oy){this._originX=ox;this._originY=oy;this._arcLengths=new Array(this._len+1);this._arcLengths[0]=0;this._CalculateLength()}Map(u){if(!this._initialized)return NaN;const mt=this._Map(u);MAP_RESULT[0]=this._X(mt);MAP_RESULT[1]=this._Y(mt);return MAP_RESULT}Project(x,y,tRange){const lut=this._GenerateLUT(STEPS);const i=this._FindClosestFromLUT(x,y,lut,tRange);const p=this._RefineProjection(x,y,lut,i);PROJECTION_RESULT[0]= +p.x;PROJECTION_RESULT[1]=p.y;PROJECTION_RESULT[2]=p.t;PROJECTION_RESULT[3]=p.distance;return PROJECTION_RESULT}Tangent(t){const mt=1-t;const a=mt*mt;const b=2*mt*t;const c=t*t;const d0x=3*(this._bX+this._originX-(this._aX+this._originX));const d0y=3*(this._bY+this._originY-(this._aY+this._originY));const d1x=3*(this._cX+this._originX-(this._bX+this._originX));const d1y=3*(this._cY+this._originY-(this._bY+this._originY));const d2x=3*(this._dX+this._originX-(this._cX+this._originX));const d2y=3*(this._dY+ +this._originY-(this._cY+this._originY));const dx=a*d0x+b*d1x+c*d2x;const dy=a*d0y+b*d1y+c*d2y;const m=Math.hypot(dx,dy);TANGENT_RESULT[0]=dx/m;TANGENT_RESULT[1]=dy/m;return TANGENT_RESULT}TangentAngle(x,y,t){const tanget=this.Tangent(t);const angle=C3.angleTo(x,y,x+tanget[0],y+tanget[1]);return angle}_Map(u){if(!this._initialized)return;let targetLength=u*this._arcLengths[this._len];let low=0;let high=this._len;let index=0;while(lowtargetLength)index--;const lengthBefore=this._arcLengths[index];if(lengthBefore===targetLength)return index/this._len;else return(index+(targetLength-lengthBefore)/(this._arcLengths[index+1]-lengthBefore))/this._len}_X(t){if(!this._initialized)return NaN;return self.Ease.GetRuntimeEase("cubicbezier")(t,this._aX+this._originX,this._bX+this._originX,this._cX+this._originX,this._dX+this._originX)}_Y(t){if(!this._initialized)return NaN;return self.Ease.GetRuntimeEase("cubicbezier")(t, +this._aY+this._originY,this._bY+this._originY,this._cY+this._originY,this._dY+this._originY)}_GenerateLUT(steps){steps=steps||STEPS;if(this._lut.length===steps)return this._lut;this._lut=[];steps++;for(let i=0;i{p.t=index/(LUT.length-1);p.distance=C3.distanceTo(x,y,p.x, +p.y);if(tRange&&C3.IsArray(tRange)&&C3.IsFiniteNumber(tRange[0])&&C3.IsFiniteNumber(tRange[1])){if(p.t>=tRange[0]&&p.t<=tRange[1])if(p.distanceepsilon)q=null;return q}_CalculateLength(){this._initialized=true;let ox=this._X(0);let oy= +this._Y(0);let clen=0;for(let i=1;i<=this._len;i++){const x=this._X(i*LENGTH_STEP_SIZE);const y=this._Y(i*LENGTH_STEP_SIZE);const dx=ox-x;const dy=oy-y;clen+=Math.hypot(dx,dy);this._arcLengths[i]=clen;ox=x;oy=y}this._length=clen}}; +C3.TimelineLineSegmentInfo=class TimelineLineSegmentInfo{constructor(startX,startY,index){this._index=index;this._targetX=startX.GetValueWithResultMode();this._targetY=startY.GetValueWithResultMode();this._originX=0;this._originY=0}Release(){}GetType(){return"line"}GetIndex(){return this._index}SetOrigin(ox,oy){this._originX=ox;this._originY=oy}GetX(){return this._targetX+this._originX}GetY(){return this._targetY+this._originY}}; + +} + +// timelines/state/timelineState.js +{ +'use strict';const C3=self.C3;const PING_PONG_BEGIN=0;const PING_PONG_END=1; +C3.TimelineState=class Timeline extends C3.DefendedBase{constructor(name,timelineDataItem,timelineManager){super();this._runtime=timelineManager.GetRuntime();this._timelineManager=timelineManager;this._timelineDataItem=timelineDataItem;this._name=name;this._tracks=[];this._tracksLength=0;this._beforeAndAfterTracks=null;this._beforeAndAfterTracksLength=0;this.CreateTrackStates();this._playPromise=null;this._playResolve=null;this._playheadTime=0;this._overshoot=0;this._playbackRate=1;this._pingPongState= +PING_PONG_BEGIN;this._currentRepeatCount=1;this._isPlaying=false;this._isScheduled=false;this._initialStateSet=false;this._complete=true;this._released=false;this._markedForRemoval=false;this._completedTick=-1;this._implicitPause=false;this._isTemplate=false;this._finishedTriggers=false;this._firstTick=false;this._lastDelta=NaN;this._tags=[""];this._stringTags="";this._tagsChanged=false;this._renderChange=0;this._hasNestedContent=0;this._iTimelineState=null}static CreateInitial(timelineDataJson,timelineManager){const timelineDataManager= +timelineManager.GetTimelineDataManager();const nameId=timelineDataManager.GetNameId();const timelineDataItem=timelineDataManager.Get(timelineDataJson[nameId]);const timeline=C3.New(C3.TimelineState,timelineDataJson[nameId],timelineDataItem,timelineManager);timeline.SetIsTemplate(true);return timeline}static CreateFromTemplate(name,timelineDataItem,timelineManager){return C3.New(C3.TimelineState,name,timelineDataItem,timelineManager)}Release(){if(this.IsReleased())return;const dispatcher=this._runtime.Dispatcher(); +this._timelineManager.DeScheduleTimeline(this);this._timelineManager.CompleteTimelineAndResolve(this);for(const track of this._tracks)track.Release();C3.clearArray(this._tracks);this._tracks=null;this._runtime=null;this._timelineManager=null;this._timelineDataItem=null;this._released=true;this._playPromise=null;this._playResolve=null;this.FireReleaseEvent(dispatcher)}FireReleaseEvent(dispatcher){const event=C3.New(C3.Event,"timelinestatereleased");event.timelineState=this;dispatcher.dispatchEvent(event)}GetType(){return 0}CreateTrackStates(){for(const trackDataItem of this._timelineDataItem.GetTrackData().trackDataItems())this._tracksLength= +this._tracks.push(C3.TrackState.Create(this,trackDataItem))}GetTimelineManager(){return this._timelineManager}GetRuntime(){return this._runtime}GetTracks(){return this._tracks}GetSimilarPropertyTracks(instance,sourceAdapter,propertyName,propertyTrack){if(!this._hasNestedContent)return;let ret;for(let i=0;i0}GetPlayPromise(){if(this._playPromise)return this._playPromise;this._playPromise=new Promise(resolve=> +{this._playResolve=resolve});return this._playPromise}ResolvePlayPromise(){if(!this._playPromise)return;this._playResolve();this._playPromise=null;this._playResolve=null}SetTags(tags){this._tags=C3.TimelineState._GetTagArray(tags);this._tagsChanged=true}GetTags(){return this._tags}GetStringTags(){if(this._tagsChanged)this._stringTags=this._tags.join(" ");this._tagsChanged=false;return this._stringTags}HasTags(tags){if(!this._tags)return false;if(!this._tags.length)return false;const t=C3.TimelineState._GetTagArray(tags); +if(!t)return false;if(!t.length)return false;return t.every(C3.TimelineState._HasTag,this)}OnStarted(){if(!C3.Plugins.Timeline||this.constructor!==C3.TimelineState)return;C3.Plugins.Timeline.Cnds.PushTriggerTimeline(this);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineStarted);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineStartedByName);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineStartedByTags);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnAnyTimelineStarted); +C3.Plugins.Timeline.Cnds.PopTriggerTimeline()}OnCompleted(){this._completedTick=this._runtime.GetTickCount()}FinishTriggers(){if(this._finishedTriggers)return;this._finishedTriggers=true;if(!C3.Plugins.Timeline||this.constructor!==C3.TimelineState)return;C3.Plugins.Timeline.Cnds.PushTriggerTimeline(this);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineFinished);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineFinishedByName);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimelineFinishedByTags); +this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnAnyTimelineFinished);C3.Plugins.Timeline.Cnds.PopTriggerTimeline()}SetPlaying(p){this._isPlaying=p}IsCompletedTick(){return this._completedTick===this._runtime.GetTickCount()}IsPlaying(playingOnly=false){if(this.IsCompletedTick())return true;if(this.IsScheduled()&&!playingOnly)return true;return this._isPlaying}_IsPlaying(){return this.IsPlaying(true)}IsPaused(){return this._IsPaused()}_IsPaused(){if(this.IsReleased())return false;if(this.IsScheduled())return false; +if(this._IsPlaying())return false;if(this.IsComplete())return false;return true}SetScheduled(s){this._isScheduled=s}IsScheduled(){return this._isScheduled}SetComplete(c){this._complete=c;const t=this.GetTime();if(t<=0||t>=this.GetTotalTime())this._complete=true}IsComplete(){return this._complete}IsReleased(){return this._released}SetMarkedForRemoval(mfr){this._markedForRemoval=mfr}IsMarkedForRemoval(){return this._markedForRemoval}SetImplicitPause(ip){this._implicitPause=ip}IsImplicitPause(){return this._implicitPause}SetIsTemplate(it){this._isTemplate= +!!it}IsTemplate(){return this._isTemplate}InitialStateSet(){return this._initialStateSet}GetTime(){return this._playheadTime}SetTime(time){const lastGlobalTime=this.GetTime();this._SetTime(time);this.SetComplete(false);if(!this.IsComplete())this.SetImplicitPause(true);if(!this._IsPlaying()&&!this.IsScheduled()&&this._initialStateSet);else if(!this._IsPlaying()&&!this.IsScheduled()&&!this._initialStateSet)this.SetInitialStateFromSetTime();else if(this._IsPlaying())this.Stop();else if(this.IsScheduled()){this._timelineManager.DeScheduleTimeline(this); +this.SetInitialStateFromSetTime()}this._SetUpdateStateBefore();this._Interpolate(this.GetTime(),false,true,true,lastGlobalTime);this._SetUpdateStateAfter();if(this._renderChange)this.GetRuntime().UpdateRender();this._OnSetTime()}_SetTime(time){if(!C3.IsFiniteNumber(time))time=this.GetTotalTime();if(time<0)this._playheadTime=0;else if(time>=this.GetTotalTime())this._playheadTime=this.GetTotalTime();else this._playheadTime=time}_SetTimeAndReset(time){if(!C3.IsFiniteNumber(time))time=this.GetTotalTime(); +if(time<0)this._playheadTime=0;else if(time>=this.GetTotalTime())this._playheadTime=this.GetTotalTime();else this._playheadTime=time;for(const track of this._tracks)track.SetResetState()}_OnSetTime(){if(!C3.Plugins.Timeline||this.constructor!==C3.TimelineState)return;C3.Plugins.Timeline.Cnds.PushTriggerTimeline(this);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimeSet);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimeSetByName);this._timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnTimeSetByTags); +C3.Plugins.Timeline.Cnds.PopTriggerTimeline()}_CanResume(){if(this.GetLoop())return true;else if(this.GetPingPong()&&this._pingPongState===PING_PONG_END)if(this.IsForwardPlayBack()){if(this.GetTime()>=this.GetTotalTime())return false}else{if(this.GetTime()<=0)return false}else if(!this.GetLoop()&&!this.GetPingPong())if(this.IsForwardPlayBack()){if(this.GetTime()>=this.GetTotalTime())return false}else if(this.GetTime()<=0)return false;return true}Resume(){if(this.IsReleased())return;if(this._CanResume())this.Play(true)}Play(resume= +false){if(this.IsReleased())return false;if(this.IsScheduled())return false;if(this._IsPlaying()&&this.IsCompletedTick())return this._SchedulePlayingTimeline();if(this._IsPlaying())return false;if(!this.IsComplete()&&!resume&&!this.IsImplicitPause())return false;return this._ScheduleStoppedTimeline()}_SchedulePlayingTimeline(){this.SetImplicitPause(false);this._timelineManager.RemovePlayingTimeline(this);this._timelineManager.ScheduleTimeline(this);this.GetPlayPromise();return true}_ScheduleStoppedTimeline(){this.SetImplicitPause(false); +this._timelineManager.ScheduleTimeline(this);this.GetPlayPromise();return true}Stop(completed=false){if(this.IsReleased())return;this.SetComplete(completed);this._timelineManager.CompleteTimeline(this);if(this.IsComplete())this.ResolvePlayPromise()}Reset(render=true,beforeChangeLayout=false){if(this.IsReleased())return;if(!this._IsPlaying()&&this.IsScheduled())return this._timelineManager.DeScheduleTimeline(this);if(this.IsComplete())return;this.Stop(true);if(this.IsForwardPlayBack())this._SetTime(0); +else this._SetTime(this.GetTotalTime());const time=this.GetTime();this._SetUpdateStateBefore();if(beforeChangeLayout)this._InterpolateBeforeChangeLayout(time);else this._Interpolate(time,false,false,true);if(render)this._OnSetTime();this._SetUpdateStateAfter();if(this._renderChange&&render)this.GetRuntime().UpdateRender()}ResetBeforeChangeLayout(){this.Reset(false,true)}_InterpolateBeforeChangeLayout(time){this._Interpolate(time,false,false,true,NaN,false,true)}_OnBeforeChangeLayout(){if(this.IsReleased())return true; +if(!this.GetRuntime().IsLoadingState())if(this.HasValidGlobalTracks())return false;this._timelineManager.CompleteTimelineBeforeChangeOfLayout(this);if(!this.GetRuntime().IsLoadingState())this.ResetBeforeChangeLayout();return true}SetInitialStateFromSetTime(){this.SetInitialState(true)}SetInitialStateForce(){this.SetInitialState(false,true);this.SetPlaying(false);this.SetScheduled(false)}SetInitialState(fromSetTime=false,force=false){if(this.IsMarkedForRemoval()&&!force)return;if(fromSetTime){this._finishedTriggers= +false;this._initialStateSet=true;this._firstTick=true;this._SetUpdateStateBefore();for(const track of this._tracks)track.SetInitialState();this._SetUpdateStateAfter()}else{this.SetPlaying(true);this.SetScheduled(false);this.OnStarted();if(this.IsComplete()){this._completedTick=-1;if(this._pingPongState!==PING_PONG_BEGIN)this._playbackRate=Math.abs(this._playbackRate);this._pingPongState=PING_PONG_BEGIN;this._currentRepeatCount=1;this._complete=false;this._finishedTriggers=false;this._initialStateSet= +true;this._firstTick=true;if(this.IsForwardPlayBack())this._SetTime(0);else this._SetTime(this.GetTotalTime());this._SetUpdateStateBefore();for(const track of this._tracks)track.SetInitialState();this._SetUpdateStateAfter()}else{this._firstTick=true;this._finishedTriggers=false;this._SetUpdateStateBefore();for(const track of this._tracks)track.SetResumeState();this._SetUpdateStateAfter()}}}GetRenderChange(){return this._renderChange}_SetUpdateStateBefore(){this._hasNestedContent=0;for(const track of this._tracks)if(track.IsNested())this._hasNestedContent= +1}_SetUpdateStateAfter(){this._renderChange=0;for(const track of this._tracks){track._SetUpdateState();if(this._renderChange===0&&track.GetRenderChange()===1)this._renderChange=1;if(!this._beforeAndAfterTracks&&track.GetNeedsBeforeAndAfter()===1){if(!this._beforeAndAfterTracks)this._beforeAndAfterTracks=[];this._beforeAndAfterTracksLength=this._beforeAndAfterTracks.push(track)}}}Tick(deltaTime,timeScale,deltaTime1){if(this.GetUseSystemTimescale()){if(deltaTime===0&&this._lastDelta===0)return;this._lastDelta= +deltaTime;deltaTime=deltaTime1}else{if(deltaTime1===0&&this._lastDelta===0)return;this._lastDelta=deltaTime1;deltaTime=deltaTime1;timeScale=1}const lastTime=this._playheadTime+this._overshoot;const newDeltaTime=deltaTime*timeScale*this._playbackRate;const newTime=lastTime+newDeltaTime;const totalTime=this._timelineDataItem._totalTime;if(newTime<0){this._playheadTime=0;this._overshoot=-newTime}else if(newTime>=totalTime){this._playheadTime=totalTime;this._overshoot=this._playheadTime-newTime}else{this._playheadTime= +newTime;this._overshoot=0}let complete=false;let ensureValue=false;const loop=this.GetLoop();const pingPong=this.GetPingPong();if(!loop&&!pingPong)if(this._playbackRate>0){if(this._playheadTime>=totalTime)if(this._currentRepeatCount0){if(this._playheadTime>=totalTime){this._SetTimeAndReset(0);ensureValue=true}}else{if(this._playheadTime<=0){this._SetTimeAndReset(totalTime);ensureValue=true}}else if(!loop&&pingPong)if(this._playbackRate>0){if(this._playheadTime>=totalTime){this._SetTime(totalTime);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_END)if(this._currentRepeatCount< +this.GetRepeatCount()){this._currentRepeatCount++;this._pingPongState=PING_PONG_BEGIN}else complete=true;else if(this._pingPongState===PING_PONG_BEGIN)this._pingPongState=PING_PONG_END}}else{if(this._playheadTime<=0){this._SetTime(0);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_END)if(this._currentRepeatCount0){if(this._playheadTime>=totalTime){this._SetTime(totalTime);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;this._pingPongState++;C3.wrap(this._pingPongState,0,2)}}else if(this._playheadTime<=0){this._SetTime(0);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;this._pingPongState++;C3.wrap(this._pingPongState,0,2)}let i;const l=this._tracksLength;if(complete){for(i=0;i< +l;i++)this._tracks[i].SetEndState();this.Stop(true);this.OnCompleted();return}const bal=this._beforeAndAfterTracksLength;for(i=0;i0){if(startOffset<0)this._playheadTime=0;else if(startOffset>=totalTime)this._playheadTime= +totalTime;else this._playheadTime=startOffset;track.Interpolate(startOffset,true,false,ensureValue,this._firstTick,false)}else track.Interpolate(this._playheadTime,true,false,ensureValue,this._firstTick,false)}else for(i=0;i0){t=track.GetStartOffset();this._SetTime(t)}}track.Interpolate(t,isTicking,setTime,ensureValue,this._firstTick,ignoreGlobals)}for(const track of this._tracks)track.AfterInterpolate(); +if(this._firstTick&&onTickCall)this._firstTick=false}AddTrack(){const trackDataItem=this._timelineDataItem.GetTrackData().AddEmptyTrackDataItem();const track=C3.TrackState.Create(this,trackDataItem);this._tracksLength=this._tracks.push(track);return track}Removed(){if(this.IsReleased())return;for(const track of this._tracks)track.TimelineRemoved()}CleanCaches(){for(const track of this._tracks)track.CleanCaches()}ClearTrackInstances(){for(const track of this._tracks)track.ClearInstance()}SetTrackInstance(trackId, +instance,trackIndex){if(!instance)return;if(typeof trackIndex==="number"&&trackIndex>=0){const track=this._tracks[trackIndex];if(!track)return;track.SetInstance(instance);this._timelineManager.SetTimelineObjectClassToMap(instance.GetObjectClass(),this);return}for(const track of this._tracks){if(!track.IsInstanceTrack())continue;if(trackId){if(track.GetId()!==trackId)continue;track.SetInstance(instance);this._timelineManager.SetTimelineObjectClassToMap(instance.GetObjectClass(),this);break}else{if(track.HasInstance())continue; +track.SetInstance(instance);this._timelineManager.SetTimelineObjectClassToMap(instance.GetObjectClass(),this);break}}}HasTrackInstance(instance,trackId){for(const track of this._tracks){if(!track.IsInstanceTrack())continue;if(trackId){if(trackId===track.GetId()&&instance===track.GetInstance())return true}else if(instance===track.GetInstance())return true}return false}HasValidTracks(){return this._tracks.some(t=>{if(t.IsInstanceTrack())return t.CanInstanceBeValid();else return true})}HasValidGlobalTracks(){return this._tracks.some(t=> +{if(t.IsInstanceTrack()){if(!t.CanInstanceBeValid())return false;const objectClass=t.GetObjectClass();if(!objectClass)return false;return objectClass.IsGlobal()}else return false})}GetPropertyTrack(propertyName){for(const track of this.GetTracks())for(const propertyTrack of track.GetPropertyTracks())if(propertyTrack.GetPropertyName()===propertyName)return propertyTrack}GetTrackFromInstance(instance){for(const track of this._tracks)if(instance===track.GetInstance())return track;return null}GetKeyframeWithTags(tags){let tagsArray= +tags?tags.split(" "):[];const tagsSet=new Set(tagsArray.map(t=>t.toLowerCase().trim()));tagsArray=[...tagsSet.values()];for(const track of this.GetTracks())for(const keyframeDataItem of track.GetKeyframeDataItems()){const hasAllTags=tagsArray.every(t=>keyframeDataItem.HasTag(t));if(hasAllTags)return keyframeDataItem}}GetObjectClasses(){const ret=[];for(const track of this.GetTracks())ret.push(track.GetObjectClass());return ret.filter(oc=>oc)}_OnAfterLoad(){for(const track of this.GetTracks())track._OnAfterLoad()}_SaveToJson(){return{"tracksJson":this._SaveTracksToJson(), +"name":this._name,"playheadTime":this.GetTime(),"playbackRate":this._playbackRate,"pingPongState":this._pingPongState,"currentRepeatCount":this._currentRepeatCount,"isPlaying":this._isPlaying,"isScheduled":this._isScheduled,"initialStateSet":this._initialStateSet,"finishedTriggers":this._finishedTriggers,"complete":this._complete,"released":this._released,"markedForRemoval":this._markedForRemoval,"completedTick":this._completedTick,"implicitPause":this._implicitPause,"isTemplate":this._isTemplate, +"tags":this._tags.join(" "),"stringTags":this._stringTags,"tagsChanged":this._tagsChanged,"firstTick":this._firstTick}}_LoadFromJson(o){if(!o)return;this._LoadTracksFromJson(o["tracksJson"]);this._name=o["name"];this._playheadTime=o["playheadTime"];this._playbackRate=o["playbackRate"];this._pingPongState=o["pingPongState"];this._currentRepeatCount=o["currentRepeatCount"];this._isPlaying=!!o["isPlaying"];this._isScheduled=!!o["isScheduled"];this._initialStateSet=!!o["initialStateSet"];this._finishedTriggers= +o.hasOwnProperty("finishedTriggers")?!!o["finishedTriggers"]:false;this._complete=!!o["complete"];this._released=!!o["released"];this._markedForRemoval=!!o["markedForRemoval"];this._completedTick=o["completedTick"];this._implicitPause=!!o["implicitPause"];this._isTemplate=!!o["isTemplate"];this._tags=o["tags"].split(" ");this._stringTags=o["stringTags"];this._tagsChanged=!!o["tagsChanged"];this._firstTick=!!o["firstTick"]}_SaveTracksToJson(){return this._tracks.map(trackState=>trackState._SaveToJson())}_LoadTracksFromJson(tracksJson){this.ClearTrackInstances(); +tracksJson.forEach((trackJson,i)=>{const track=this._tracks[i];track._LoadFromJson(trackJson)});this._tracks.filter(track=>track.CanInstanceBeValid())}static _HasTag(tag){const tags=this.GetTags();if(tag==="")return tags.length===1&&tags[0]==="";return tags.map(t=>t.toLowerCase()).includes(tag.toLowerCase())}static _GetTagArray(tags){if(C3.IsArray(tags))return tags.slice(0);if(C3.IsString(tags))return tags.split(" ");throw new Error("invalid tags");}GetITimelineState(){if(!this._iTimelineState)this._iTimelineState= +C3.New(self.ITimelineState,this);return this._iTimelineState}}; + +} + +// timelines/state/trackState.js +{ +'use strict';const C3=self.C3;const INSTANCE_TRACK=0;const VALUE_TRACK=1;const AUDIO_TRACK=2; +C3.TrackState=class Track extends C3.DefendedBase{constructor(timeline,trackDataItem){super();this._timeline=timeline;this._trackDataItem=trackDataItem;this._trackData=trackDataItem.GetTrackData();this._instanceUid=NaN;this._objectClassIndex=NaN;this._instance=null;this._worldInfo=null;this._isNested=trackDataItem.GetStartOffset()>0;this._initialStateOfNestedSet=false;this._endStateOfNestedSet=false;this._instanceUidToLoad=NaN;this._lastKeyframeDataItem=null;this._keyframeDataItems=this._trackDataItem.GetKeyframeData().GetKeyframeDataItemArray(); +this._propertyTracks=[];this.CreatePropertyTrackStates();this._worldInfoChange=0;this._renderChange=0;this._needsBeforeAndAfter=0}static Create(timeline,trackDataItem){return C3.New(C3.TrackState,timeline,trackDataItem)}Release(){this._keyframeDataItems=null;for(const propertyTrack of this._propertyTracks)propertyTrack.Release();C3.clearArray(this._propertyTracks);this._propertyTracks=null;this._timeline=null;this._instance=null;this._worldInfo=null;this._trackDataItem=null;this._lastKeyframeDataItem= +null}CreatePropertyTrackStates(){for(const propertyTrackDataItem of this._trackDataItem.GetPropertyTrackData().propertyTrackDataItems())this._propertyTracks.push(C3.PropertyTrackState.Create(this,propertyTrackDataItem))}TimelineRemoved(){for(const propertyTrack of this._propertyTracks)propertyTrack.TimelineRemoved()}CleanCaches(){for(const propertyTrack of this._propertyTracks)propertyTrack.CleanCaches();this._instance=null;this._worldInfo=null}GetTimeline(){return this._timeline}GetRuntime(){return this._timeline.GetRuntime()}GetKeyframeDataItems(){if(this._keyframeDataItems)return this._keyframeDataItems; +this._keyframeDataItems=this._trackDataItem.GetKeyframeData().GetKeyframeDataItemArray();return this._keyframeDataItems}GetPropertyTracks(){return this._propertyTracks}GetPropertyTrack(propertyName){for(let i=0;ipt.GetNeedsBeforeAndAfter());if(nba)this._needsBeforeAndAfter= +1;this._lastKeyframeDataItem=this._GetLastKeyFrameBeforeTime(time);this._initialStateOfNestedSet=false;this._endStateOfNestedSet=false;this.Interpolate(time);this.OnKeyframeReached(this._GetLastKeyFrameBeforeTime(time))}SetResumeState(){this.MaybeGetInstance();if(!this.IsInstanceValid()&&this.IsInstanceTrack())return;const playbackDirection=this._timeline.IsForwardPlayBack();const time=this._timeline.GetTime()-this.GetStartOffset();this._lastKeyframeDataItem=this._GetLastKeyFrameBeforeTime(time); +for(const propertyTrack of this._propertyTracks)propertyTrack.SetResumeState(time)}SetEndState(){if(this.GetTimeline().IsComplete())return;this.MaybeGetInstance();if(!this.IsInstanceValid()&&this.IsInstanceTrack())return;if(!this._isNested){const time=this._timeline.GetTime();const totalTime=this.GetStartOffset()+this.GetLocalTotalTime();if(time>=totalTime)this.Interpolate(this.GetLocalTotalTime(),true,false,true,false,false,true);else if(time<=0)this.Interpolate(0,true,false,true,false,false,true)}}_SetUpdateState(){for(let i= +0,l=this._propertyTracks.length;ithis.GetLocalTotalTime())return;for(const propertyTrack of this._propertyTracks)propertyTrack.SetInitialState();this._initialStateOfNestedSet=true}MaybeSetEndStateOfNestedTrack(time,isTicking){if(!isTicking)return;if(!this._isNested)return;if(this._endStateOfNestedSet)return;const timeline=this.GetTimeline();if(timeline.IsForwardPlayBack()){if(time>=this.GetLocalTotalTime()){for(const propertyTrack of this._propertyTracks)propertyTrack.Interpolate(this.GetLocalTotalTime(), +false,true);this._endStateOfNestedSet=true}}else if(time<=0){for(const propertyTrack of this._propertyTracks)propertyTrack.Interpolate(0,false,true);this._endStateOfNestedSet=true}}MaybeTriggerKeyframeReachedConditions(time,isTicking,firstTick){if(firstTick)return;if(!isTicking)return;if(!C3.Plugins.Timeline)return;const timeline=this.GetTimeline();const nextKeyframe=this._lastKeyframeDataItem.GetNext();const lastTime=this._lastKeyframeDataItem.GetTime();const nextTime=nextKeyframe?nextKeyframe.GetTime(): +timeline.GetTotalTime();if(time<=lastTime||time>=nextTime){this._lastKeyframeDataItem=this._trackData.GetFirstKeyFrameDataItemLowerOrEqualThan(time,this._trackDataItem);if(timeline.IsForwardPlayBack()){if(nextKeyframe)this.OnKeyframeReached(this._lastKeyframeDataItem)}else{const nextKeyframe=this._lastKeyframeDataItem.GetNext();if(nextKeyframe)this.OnKeyframeReached(nextKeyframe)}}}_GetLastKeyFrameBeforeTime(time){const keyframeDataItem=this._trackData.GetKeyFrameDataItemAtTime(time,this._trackDataItem); +if(keyframeDataItem)return keyframeDataItem;else return this._trackData.GetFirstKeyFrameDataItemLowerOrEqualThan(time,this._trackDataItem)}OnKeyframeReached(keyframeDataItem){if(!C3.Plugins.Timeline)return;const timeline=this.GetTimeline();const timelineManager=timeline.GetTimelineManager();C3.Plugins.Timeline.Cnds.PushTriggerTimeline(timeline);C3.Plugins.Timeline.Cnds.PushTriggerKeyframe(keyframeDataItem);timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnAnyKeyframeReached);timelineManager.Trigger(C3.Plugins.Timeline.Cnds.OnKeyframeReached); +C3.Plugins.Timeline.Cnds.PopTriggerTimeline(timeline);C3.Plugins.Timeline.Cnds.PopTriggerKeyframe(keyframeDataItem)}AddKeyframe(){const keyframeData=this._trackDataItem.GetKeyframeData();const keyframeDataItem=keyframeData.AddEmptyKeyframeDataItem();return keyframeDataItem}AddPropertyTrack(){const propertyTrackData=this._trackDataItem.GetPropertyTrackData();const propertyTrackDataItem=propertyTrackData.AddEmptyPropertyTrackDataItem();const propertyTrack=C3.PropertyTrackState.Create(this,propertyTrackDataItem); +this._propertyTracks.push(propertyTrack);return propertyTrack}DeleteKeyframes(match){const keyframeData=this._trackDataItem.GetKeyframeData();keyframeData.DeleteKeyframeDataItems(match)}DeletePropertyKeyframes(match){for(const propertyTrack of this._propertyTracks)propertyTrack.DeletePropertyKeyframes(match)}SaveState(){for(const propertyTrack of this._propertyTracks)propertyTrack.SaveState()}CompareInitialStateWithCurrent(){this.MaybeGetInstance();if(!this.IsInstanceValid()&&this.IsInstanceTrack())return; +for(const propertyTrack of this._propertyTracks)propertyTrack.CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){this.MaybeGetInstance();if(!this.IsInstanceValid()&&this.IsInstanceTrack())return;let difference=false;for(const propertyTrack of this._propertyTracks){const diff=propertyTrack.CompareSaveStateWithCurrent();if(!difference&&diff)difference=true}if(difference){const keyframeDataItem=this.AddKeyframe();keyframeDataItem.SetTime(this.GetTimeline().GetTime());keyframeDataItem.SetEase("noease"); +keyframeDataItem.SetEnable(true);keyframeDataItem.SetTags("")}}_OnAfterLoad(){if(!isNaN(this._instanceUidToLoad))this._LoadInstanceFromJson(this._instanceUidToLoad);this._instanceUidToLoad=NaN}_SaveToJson(){const instance=this.GetInstance();const uid=instance?instance.GetUID():this.GetInstanceUID();return{"propertyTracksJson":this._SavePropertyTracksToJson(),"lastKeyframeDataItemJson":this._SaveLastKeyframeDataItemToJson(),"initialStateOfNestedSet":this._initialStateOfNestedSet,"endStateOfNestedSet":this._endStateOfNestedSet, +"instanceUid":uid}}_LoadFromJson(o){if(!o)return;this._LoadPropertyTracksFromJson(o["propertyTracksJson"]);this._LoadLastKeyframeDataItemFromJson(o["lastKeyframeDataItemJson"]);this._instanceUidToLoad=o["instanceUid"];this._initialStateOfNestedSet=false;if(o.hasOwnProperty["initialStateOfNestedSet"])this._initialStateOfNestedSet=o["initialStateOfNestedSet"];this._endStateOfNestedSet=false;if(o.hasOwnProperty["endStateOfNestedSet"])this._endStateOfNestedSet=o["endStateOfNestedSet"];for(const propertyTrack of this._propertyTracks){if(this._worldInfoChange=== +0&&propertyTrack.GetWorldInfoChange()===1)this._worldInfoChange=1;if(this._renderChange===0&&propertyTrack.GetRenderChange()===1)this._renderChange=1}this._needsBeforeAndAfter=0;if(this._propertyTracks.some(pt=>pt.GetNeedsBeforeAndAfter()))this._needsBeforeAndAfter=1}_SaveLastKeyframeDataItemToJson(){const keyframeData=this._trackDataItem.GetKeyframeData();return keyframeData.GetKeyframeDataItemIndex(this._lastKeyframeDataItem)}_SavePropertyTracksToJson(){return this._propertyTracks.map(propertyTrackState=> +propertyTrackState._SaveToJson())}_LoadPropertyTracksFromJson(propertyTracksJson){propertyTracksJson.forEach((propertyTrackJson,i)=>{const propertyTrack=this._propertyTracks[i];propertyTrack._LoadFromJson(propertyTrackJson)})}_LoadInstanceFromJson(uid){if(!C3.IsFiniteNumber(uid))return;const instance=this.GetRuntime().GetInstanceByUID(uid);if(!instance)return;const timeline=this.GetTimeline();timeline.SetTrackInstance(this._trackDataItem.GetId(),instance,this.GetTrackIndexInTimeline())}_LoadLastKeyframeDataItemFromJson(lastKeyframeDataItemIndex){const keyframeData= +this._trackDataItem.GetKeyframeData();this._lastKeyframeDataItem=keyframeData.GetKeyframeDataItemFromIndex(lastKeyframeDataItemIndex)}}; + +} + +// timelines/state/propertyTrackState.js +{ +'use strict';const C3=self.C3; +C3.PropertyTrackState=class PropertyTrack extends C3.DefendedBase{constructor(track,propertyTrackDataItem){super();this._track=track;this._propertyTrackDataItem=propertyTrackDataItem;this._propertyTrackData=propertyTrackDataItem.GetPropertyTrackData();this._worldInfoChange=0;this._renderChange=0;this._needsBeforeAndAfter=0;this._sourceAdapter=this.GetSourceAdapter();this._propertyKeyframeDataItems=this._propertyTrackDataItem.GetPropertyKeyframeData().GetPropertyKeyframeDataItemArray();this._lastPropertyKeyframeDataItem= +null;this._absoluteValueObject=null}static Create(track,propertyTrackDataItem){return C3.New(C3.PropertyTrackState,track,propertyTrackDataItem)}Release(){this._track=null;if(this._sourceAdapter){this._sourceAdapter.Release();this._sourceAdapter=null}this._propertyKeyframeDataItems=null;this._propertyTrackDataItem=null;this._propertyTrackData=null}GetWorldInfoChange(){return this._worldInfoChange}GetRenderChange(){return this._renderChange}GetNeedsBeforeAndAfter(){return this._needsBeforeAndAfter}HasAbsoluteValueObject(){return!!this._absoluteValueObject}SetAbsoluteValueObject(avo){this._absoluteValueObject= +avo}GetAbsoluteValueObject(){return this._absoluteValueObject}GetTrack(){return this._track}GetPropertyTrackDataItem(){return this._propertyTrackDataItem}GetPropertyTrackData(){return this._propertyTrackData}GetTimeline(){return this._track.GetTimeline()}GetRuntime(){return this._track.GetRuntime()}GetInstance(){return this._track.GetInstance()}GetSourceAdapter(){if(this._sourceAdapter)return this._sourceAdapter;const id=this._propertyTrackDataItem.GetSourceAdapterId();let ret;switch(id){case "behavior":ret= +new C3.PropertyTrackState.BehaviorSourceAdapter(this);break;case "effect":ret=new C3.PropertyTrackState.EffectSourceAdapter(this);this._renderChange=1;break;case "instance-variable":ret=new C3.PropertyTrackState.InstanceVariableSourceAdapter(this);break;case "plugin":ret=new C3.PropertyTrackState.PluginSourceAdapter(this);this._renderChange=1;break;case "world-instance":ret=new C3.PropertyTrackState.PropertySourceAdapter(this);this._renderChange=1;this._worldInfoChange=1;break;case "value":ret=new C3.PropertyTrackState.ValueSourceAdapter(this); +break;case "audio":ret=new C3.PropertyTrackState.AudioSourceAdapter(this);break}this._sourceAdapter=ret;return this._sourceAdapter}GetSourceAdapterId(){return this._propertyTrackDataItem.GetSourceAdapterId()}SetSourceAdapterId(said){this._propertyTrackDataItem.SetSourceAdapterId(said)}GetSourceAdapterArgs(){return this._propertyTrackDataItem.GetSourceAdapterArguments()}SetSourceAdapterArgs(sargs){this._propertyTrackDataItem.SetSourceAdapterArguments(sargs)}GetSourceAdapterValue(){return this.GetSourceAdapter().GetValue()}GetPropertyName(){return this._propertyTrackDataItem.GetProperty()}SetPropertyName(pn){this._propertyTrackDataItem.SetProperty(pn)}GetPropertyType(){return this._propertyTrackDataItem.GetType()}SetPropertyType(pt){this._propertyTrackDataItem.SetType(pt)}GetPropertyKeyframeType(){return this.GetPropertyTrackData().GetFirstPropertyKeyframeDataItem(this._propertyTrackDataItem).GetType()}GetMin(){return this._propertyTrackDataItem.GetMin()}SetMin(min){this._propertyTrackDataItem.SetMin(min)}GetMax(){return this._propertyTrackDataItem.GetMax()}SetMax(max){this._propertyTrackDataItem.SetMax(max)}GetEnable(){return this._propertyTrackDataItem.GetEnable()}SetEnable(e){this._propertyTrackDataItem.SetEnable(e)}GetInterpolationMode(){return this._propertyTrackDataItem.GetInterpolationMode()}SetInterpolationMode(im){this._propertyTrackDataItem.SetInterpolationMode(im)}GetResultMode(){return this._propertyTrackDataItem.GetResultMode()}SetResultMode(rm){this._propertyTrackDataItem.SetResultMode(rm)}SetEase(e){for(const propertyKeyframeDataItem of this.GetPropertyKeyframeDataItems())propertyKeyframeDataItem.SetEase(e)}CanHavePropertyKeyframes(){return this._propertyTrackDataItem.CanHavePropertyKeyframes()}GetPropertyKeyframeDataItems(){if(this._propertyKeyframeDataItems)return this._propertyKeyframeDataItems; +this._propertyKeyframeDataItems=this._propertyTrackDataItem.GetPropertyKeyframeData().GetPropertyKeyframeDataItemArray();return this._propertyKeyframeDataItems}GetPropertyKeyframeDataItemArrayIncludingDisabled(){return this._propertyTrackDataItem.GetPropertyKeyframeData().GetPropertyKeyframeDataItemArrayIncludingDisabled()}GetPropertyKeyFrameDataItemAtTime(time){return this._propertyTrackData.GetPropertyKeyFrameDataItemAtTime(time,this._propertyTrackDataItem)}GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time){return this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time, +this._propertyTrackDataItem)}GetPropertyKeyframeDataItemPairForTime(time){let start=this._propertyTrackData.GetPropertyKeyFrameDataItemAtTime(time,this._propertyTrackDataItem);let end;if(start)end=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemHigherThan(time,this._propertyTrackDataItem);else{start=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);end=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemHigherOrEqualThan(time,this._propertyTrackDataItem)}return{start, +end}}*GetPropertyKeyframeValues(){for(const propertyKeyframeDataItem of this.GetPropertyKeyframeDataItems())yield propertyKeyframeDataItem.GetValueWithResultMode()}*GetPropertyKeyframeTimes(){for(const propertyKeyframeDataItem of this.GetPropertyKeyframeDataItems())yield propertyKeyframeDataItem.GetTime()}TimelineRemoved(){this.GetSourceAdapter().TimelineRemoved()}CleanCaches(){this.GetSourceAdapter().CleanCaches()}GetCurrentState(){return this.GetSourceAdapter().GetCurrentState()}SetResetState(){this.GetSourceAdapter().SetResetState()}SetInitialState(time){this.GetSourceAdapter().SetInitialState(); +this._lastPropertyKeyframeDataItem=this._GetLastPropertyKeyFrameBeforeTime(time);this._SetUpdateState()}SetResumeState(time){this.GetSourceAdapter().SetResumeState();this._lastPropertyKeyframeDataItem=this._GetLastPropertyKeyFrameBeforeTime(time)}_SetUpdateState(){const track=this.GetTrack();this._needsBeforeAndAfter=0;if(track.IsInstanceTrack()){const timeline=this.GetTimeline();const instance=track.GetInstance();const sourceAdapter=this.GetSourceAdapter();const propertyName=this.GetPropertyName(); +const mayNeedBeforeAndAfterInterpolate=sourceAdapter.MayNeedBeforeAndAfterInterpolate();if(mayNeedBeforeAndAfterInterpolate){const similarPropertyTracks=timeline.GetSimilarPropertyTracks(instance,sourceAdapter,propertyName,this);if(similarPropertyTracks&&similarPropertyTracks.length)this._needsBeforeAndAfter=1}else this._needsBeforeAndAfter=0}}_GetLastPropertyKeyFrameBeforeTime(time){const timeline=this.GetTimeline();const propertyKeyframeDataItem=this._propertyTrackData.GetPropertyKeyFrameDataItemAtTime(time, +this._propertyTrackDataItem);if(propertyKeyframeDataItem)return propertyKeyframeDataItem;else if(timeline.IsForwardPlayBack())return this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);else return this._propertyTrackData.GetFirstPropertyKeyFrameDataItemHigherOrEqualThan(time,this._propertyTrackDataItem)}BeforeInterpolate(){this._sourceAdapter.BeforeInterpolate()}Interpolate(time,setTime=false,ensureValue=false,endState=false){let start;let end; +let propertyKeyframeReached=false;if(setTime)start=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);else{if(this._lastPropertyKeyframeDataItem){const timeline=this.GetTimeline();const nextPropertyKeyframe=this._lastPropertyKeyframeDataItem.GetNext();const lastTime=this._lastPropertyKeyframeDataItem.GetTime();const nextTime=nextPropertyKeyframe?nextPropertyKeyframe.GetTime():timeline.GetTotalTime();if(time<=lastTime||time>=nextTime){this._lastPropertyKeyframeDataItem= +this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);propertyKeyframeReached=true}}else{this._lastPropertyKeyframeDataItem=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);propertyKeyframeReached=true}start=this._lastPropertyKeyframeDataItem}if(start)end=start.GetNext();this._sourceAdapter.Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time){if(this._lastPropertyKeyframeDataItem){const timeline= +this.GetTimeline();const nextPropertyKeyframe=this._lastPropertyKeyframeDataItem.GetNext();const lastTime=this._lastPropertyKeyframeDataItem.GetTime();const nextTime=nextPropertyKeyframe?nextPropertyKeyframe.GetTime():timeline.GetTotalTime();if(time<=lastTime||time>=nextTime)this._lastPropertyKeyframeDataItem=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem)}else this._lastPropertyKeyframeDataItem=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time, +this._propertyTrackDataItem);const start=this._lastPropertyKeyframeDataItem;const end=start.GetNext();return this._sourceAdapter.GetInterpolatedValue(time,start,end)}GetInterpolatedValueFast(time,start,end){return this._sourceAdapter.GetInterpolatedValue(time,start,end)}AfterInterpolate(){this._sourceAdapter.AfterInterpolate()}static GetStartPropertyKeyframeForTime(time,propertyTrack){const propertyTrackDataItem=propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack._propertyTrackData; +return propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,propertyTrackDataItem)}static GetEndPropertyKeyframeForTime(time,propertyTrack){const propertyTrackDataItem=propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack._propertyTrackData;return propertyTrackData.GetFirstPropertyKeyFrameDataItemHigherOrEqualThan(time,propertyTrackDataItem)}AddPropertyKeyframe(){const propertyKeyframeData=this._propertyTrackDataItem.GetPropertyKeyframeData();const propertyKeyframeDataItem= +propertyKeyframeData.AddEmptyPropertyKeyframeDataItem();this._lastPropertyKeyframeDataItem=null;return propertyKeyframeDataItem}DeletePropertyKeyframes(match){this._lastPropertyKeyframeDataItem=null;const propertyKeyframeData=this._propertyTrackDataItem.GetPropertyKeyframeData();propertyKeyframeData.DeletePropertyKeyframeDataItems(match)}SaveState(){this.GetSourceAdapter().SaveState()}CompareInitialStateWithCurrent(){const difference=this.GetSourceAdapter().CompareInitialStateWithCurrent();if(difference){const propertyKeyframeDataItem= +this._propertyTrackData.GetFirstPropertyKeyframeDataItem(this._propertyTrackDataItem);const currentState=this.GetSourceAdapter().GetCurrentState();propertyKeyframeDataItem.SetAbsoluteValue(currentState)}}CompareSaveStateWithCurrent(){const difference=this.GetSourceAdapter().CompareSaveStateWithCurrent();if(difference)this.AddPropertyKeyframeAtCurrentTime();this.GetSourceAdapter().ClearSaveState();return difference}AddPropertyKeyframeAtCurrentTime(){const time=this.GetTimeline().GetTime();const sourceAdapter= +this.GetSourceAdapter();const startPropertyKeyframe=C3.PropertyTrackState.GetStartPropertyKeyframeForTime(time,this);const propertyKeyframeDataItem=this.AddPropertyKeyframe();propertyKeyframeDataItem.SetType(startPropertyKeyframe.GetType());propertyKeyframeDataItem.SetTime(time);propertyKeyframeDataItem.SetEase(startPropertyKeyframe.GetEase());propertyKeyframeDataItem.SetEnable(true);propertyKeyframeDataItem.SetValue(sourceAdapter.GetValueAtTime());propertyKeyframeDataItem.SetAbsoluteValue(sourceAdapter.GetCurrentState())}_SaveToJson(){return{"sourceAdapterJson":this.GetSourceAdapter()._SaveToJson()}}_LoadFromJson(o){if(!o)return; +this.GetSourceAdapter()._LoadFromJson(o["sourceAdapterJson"])}}; + +} + +// timelines/state/propertySourceAdapters/propertySourceAdapter.js +{ +'use strict';const C3=self.C3;const NS=C3.PropertyTrackState; +NS.PropertySourceAdapter=class PropertySourceAdapter{constructor(propertyTrack){this._propertyTrack=propertyTrack;this._propertyAdapter=null;this.GetPropertyAdapter()}Release(){if(this._propertyAdapter){this._propertyAdapter.Release();this._propertyAdapter=null}this._propertyTrack=null}MayNeedBeforeAndAfterInterpolate(){return this._propertyAdapter.MayNeedBeforeAndAfterInterpolate()}GetPropertyTrack(){return this._propertyTrack}TimelineRemoved(){if(this._propertyAdapter)this._propertyAdapter.TimelineRemoved()}CleanCaches(){if(this._propertyAdapter)this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;this._propertyAdapter= +this._CreatePropertyAdapter();return this._propertyAdapter}GetEditorIndex(){}GetIndex(){return this.GetEditorIndex()}GetTarget(){}SetResetState(){this.GetPropertyAdapter().SetResetState()}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}BeforeInterpolate(){this._propertyAdapter.BeforeChangeProperty()}Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const type=this._propertyTrack.GetPropertyKeyframeType(); +let value;switch(type){case "numeric":{value=NS.NumericTypeAdapter.Interpolate(time,start,end,this._propertyTrack);break}case "angle":{value=NS.AngleTypeAdapter.Interpolate(time,start,end,this._propertyTrack);break}case "boolean":{value=NS.BooleanTypeAdapter.Interpolate(time,start,end,this._propertyTrack);break}case "color":{value=NS.ColorTypeAdapter.Interpolate(time,start,end,this._propertyTrack);break}case "text":{value=NS.TextTypeAdapter.Interpolate(time,start,end,this._propertyTrack);break}}this._propertyAdapter.ChangeProperty(time, +value,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time,start,end){switch(this._propertyTrack.GetPropertyKeyframeType()){case "numeric":return NS.NumericTypeAdapter.Interpolate(time,start,end,this._propertyTrack);case "angle":return NS.AngleTypeAdapter.Interpolate(time,start,end,this._propertyTrack);case "boolean":return NS.BooleanTypeAdapter.Interpolate(time,start,end,this._propertyTrack);case "color":return NS.ColorTypeAdapter.Interpolate(time,start,end,this._propertyTrack); +case "text":return NS.TextTypeAdapter.Interpolate(time,start,end,this._propertyTrack)}}AfterInterpolate(){this._propertyAdapter.AfterChangeProperty()}SaveState(){this.GetPropertyAdapter().SetSaveState()}ClearSaveState(){this.GetPropertyAdapter().ClearSaveState()}GetCurrentState(){return this.GetPropertyAdapter().GetCurrentState()}CompareInitialStateWithCurrent(){return this.GetPropertyAdapter().CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){return this.GetPropertyAdapter().CompareSaveStateWithCurrent()}GetValueAtTime(){const propertyTrack= +this._propertyTrack;const track=propertyTrack.GetTrack();const time=track.GetTimeline().GetTime();const start=NS.GetStartPropertyKeyframeForTime(time,propertyTrack);const end=start.GetNext();const type=propertyTrack.GetPropertyKeyframeType();switch(type){case "numeric":{return NS.NumericTypeAdapter.Interpolate(time,start,end,propertyTrack)}case "angle":{return NS.AngleTypeAdapter.Interpolate(time,start,end,propertyTrack)}case "boolean":{return NS.BooleanTypeAdapter.Interpolate(time,start,end,propertyTrack)}case "color":{return NS.ColorTypeAdapter.Interpolate(time, +start,end,propertyTrack)}case "text":{return NS.TextTypeAdapter.Interpolate(time,start,end,propertyTrack)}}}_CreatePropertyAdapter(){const pt=this._propertyTrack;const type=pt.CanHavePropertyKeyframes()?pt.GetPropertyKeyframeType():"";switch(type){case "combo":case "boolean":case "text":case "string":{return new NS.PropertyInterpolationAdapter.NoInterpolationAdapter(this)}case "numeric":case "number":case "angle":{if(this._propertyTrack.GetPropertyType()==="combo")return new NS.PropertyInterpolationAdapter.NoInterpolationAdapter(this); +return new NS.PropertyInterpolationAdapter.NumericInterpolationAdapter(this)}case "color":case "offsetColor":{return new NS.PropertyInterpolationAdapter.ColorInterpolationAdapter(this)}default:{return new NS.PropertyInterpolationAdapter.NumericInterpolationAdapter(this)}}}_SaveToJson(){return{"propertyAdapterJson":this.GetPropertyAdapter()._SaveToJson()}}_LoadFromJson(o){if(!o)return;this.GetPropertyAdapter()._LoadFromJson(o["propertyAdapterJson"])}}; + +} + +// timelines/state/propertySourceAdapters/instanceVariableSourceAdapter.js +{ +'use strict';const C3=self.C3;const INDEX=0; +class InstanceVariableSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack);this._updatedIndex=NaN}GetEditorIndex(){return this._propertyTrack.GetPropertyTrackDataItem().GetSourceAdapterArguments()[INDEX]}GetIndex(){if(this._updatedIndex)return this._updatedIndex;return super.GetIndex()}GetTarget(){return this._propertyTrack.GetTrack().GetInstance()}UpdateInstanceVariableIndex(index){const i=this._propertyTrack.GetPropertyTrackDataItem().GetSourceAdapterArguments()[INDEX];if(i=== +index)return;this._updatedIndex=index}Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached){if(!this.GetPropertyAdapter().CanChange(start.GetValue()))return;super.Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time,start,end){if(!this.GetPropertyAdapter().CanChange(start.GetValue()))return;return super.GetInterpolatedValue(time,start,end)}_SaveToJson(){return Object.assign(super._SaveToJson(),{"index":this._updatedIndex})}_LoadFromJson(o){if(!o)return; +super._LoadFromJson(o);this._updatedIndex=o["index"]}}C3.PropertyTrackState.InstanceVariableSourceAdapter=InstanceVariableSourceAdapter; + +} + +// timelines/state/propertySourceAdapters/behaviorSourceAdapter.js +{ +'use strict';const C3=self.C3;const SID=0;const INDEX=1;const NAME=2; +class BehaviorSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack);this._sid=NaN}GetEditorIndex(){const dataItem=this._propertyTrack.GetPropertyTrackDataItem();return dataItem.GetSourceAdapterArguments()[INDEX]}GetTarget(){const dataItem=this._propertyTrack.GetPropertyTrackDataItem();const track=this._propertyTrack.GetTrack();const sid=this._sid?this._sid:dataItem.GetSourceAdapterArguments()[SID];const instance=track.GetInstance();const index= +instance.GetBehaviorIndexBySID(sid);const behaviorInstance=instance.GetBehaviorInstances()[index];return behaviorInstance.GetSdkInstance()}GetBehaviorType(objectClass){const dataItem=this._propertyTrack.GetPropertyTrackDataItem();const name=dataItem.GetSourceAdapterArguments()[NAME];return objectClass.GetBehaviorTypeByName(name)}UpdateBehaviorTypeSid(sid){const dataItem=this._propertyTrack.GetPropertyTrackDataItem();if(dataItem.GetSourceAdapterArguments()[SID]===sid)return;this._sid=sid}Interpolate(time, +start,end,setTime,ensureValue,endState,propertyKeyframeReached){const track=this._propertyTrack.GetTrack();const instance=track.GetInstance();if(!this.GetBehaviorType(instance.GetObjectClass()))return;super.Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time,start,end){const track=this._propertyTrack.GetTrack();const instance=track.GetInstance();if(!this.GetBehaviorType(instance.GetObjectClass()))return;return super.GetInterpolatedValue(time, +start,end)}_SaveToJson(){return Object.assign(super._SaveToJson(),{"sid":this._sid})}_LoadFromJson(o){if(!o)return;super._LoadFromJson(o);this._sid=o["sid"]}}C3.PropertyTrackState.BehaviorSourceAdapter=BehaviorSourceAdapter; + +} + +// timelines/state/propertySourceAdapters/effectSourceAdapter.js +{ +'use strict';const C3=self.C3;const NAME=0;const INDEX=1; +class EffectSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack)}GetEditorIndex(){return this._propertyTrack.GetPropertyTrackDataItem().GetSourceAdapterArguments()[INDEX]}GetTarget(){const pTrack=this._propertyTrack;const track=pTrack.GetTrack();const worldInfo=track.GetWorldInfo();const instanceEffectList=worldInfo.GetInstanceEffectList();const effectList=instanceEffectList.GetEffectList();const effectType=this.GetEffectType(effectList); +const effectIndex=effectType.GetIndex();if(instanceEffectList.IsEffectIndexActive(effectIndex))return instanceEffectList.GetEffectParametersForIndex(effectIndex);return null}GetEffectType(effectList){const pTrack=this._propertyTrack;const name=pTrack.GetPropertyTrackDataItem().GetSourceAdapterArguments()[NAME];return effectList.GetEffectTypeByName(name)}Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached){if(!this._IsEffectActive())return;super.Interpolate(time,start,end, +setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time,start,end){if(!this._IsEffectActive())return;return super.GetInterpolatedValue(time,start,end)}_IsEffectActive(){const pTrack=this._propertyTrack;const track=pTrack.GetTrack();const worldInfo=track.GetWorldInfo();const instanceEffectList=worldInfo.GetInstanceEffectList();const effectList=instanceEffectList.GetEffectList();const effectType=this.GetEffectType(effectList);if(!effectType)return;const effectIndex=effectType.GetIndex(); +return instanceEffectList.IsEffectIndexActive(effectIndex)}}C3.PropertyTrackState.EffectSourceAdapter=EffectSourceAdapter; + +} + +// timelines/state/propertySourceAdapters/pluginSourceAdapter.js +{ +'use strict';const C3=self.C3;const INDEX=0; +class PluginSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack)}GetEditorIndex(){return this._propertyTrack.GetPropertyTrackDataItem().GetSourceAdapterArguments()[INDEX]}GetTarget(){return this._propertyTrack.GetTrack().GetInstance().GetSdkInstance()}Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const track=this._propertyTrack.GetTrack();const templatePlugin=track.GetObjectClass().GetPlugin();const currentPlugin= +track.GetInstance().GetObjectClass().GetPlugin();if(templatePlugin!==currentPlugin)return;super.Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}GetInterpolatedValue(time,start,end){const track=this._propertyTrack.GetTrack();const templatePlugin=track.GetObjectClass().GetPlugin();const currentPlugin=track.GetInstance().GetObjectClass().GetPlugin();if(templatePlugin!==currentPlugin)return;return super.GetInterpolatedValue(time,start,end)}GetOptionalCallbacks(){const track= +this._propertyTrack.GetTrack();const plugin=track.GetObjectClass().GetPlugin();if(C3.Plugins.Sprite&&plugin instanceof C3.Plugins.Sprite)if(this._propertyTrack.GetPropertyName()==="initial-frame"||this._propertyTrack.GetPropertyName()==="initial-animation")switch(this._propertyTrack.GetResultMode()){case "relative":{return null}case "absolute":{return null}}}}C3.PropertyTrackState.PluginSourceAdapter=PluginSourceAdapter; + +} + +// timelines/state/propertySourceAdapters/valueSourceAdapter.js +{ +'use strict';const C3=self.C3; +class ValueSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack);this._value=0;this._init=false}MayNeedBeforeAndAfterInterpolate(){return false}SetInitialState(){const propertyTrackData=this._propertyTrack.GetPropertyTrackData();let propertyTrackDataItem=this._propertyTrack.GetPropertyTrackDataItem();propertyTrackDataItem=propertyTrackData.GetFirstPropertyKeyframeDataItem(propertyTrackDataItem);this._value=propertyTrackDataItem.GetValueWithResultMode()}SetResumeState(){}GetValue(){if(!this._init)this._propertyTrack.Interpolate(0);return this._value}Interpolate(time, +start,end,setTime,ensureValue,endState,propertyKeyframeReached){this._value=C3.PropertyTrackState.NumericTypeAdapter.Interpolate(time,start,end,this._propertyTrack);this._init=true}SaveState(){}ClearSaveState(){}GetCurrentState(){return this._value}CompareInitialStateWithCurrent(){return false}CompareSaveStateWithCurrent(){return false}_SaveToJson(){return{"value":this._value,"init":this._init}}_LoadFromJson(o){if(!o)return;this._value=o["value"];this._init=o.hasOwnProperty("init")?o["init"]:true}} +C3.PropertyTrackState.ValueSourceAdapter=ValueSourceAdapter; + +} + +// timelines/state/propertySourceAdapters/audioSourceAdapter.js +{ +'use strict';const C3=self.C3;const PROJECT_FILE=0;const PROJECT_FILE_NAME=0;const PROJECT_FILE_TYPE=1;const START_OFFSET=1;const AUDIO_DURATION=2;const AUDIO_TAG=3; +class AudioSourceAdapter extends C3.PropertyTrackState.PropertySourceAdapter{constructor(propertyTrack){super(propertyTrack);this._audioPlaybackStarted=false;this._sdkInstance=null;this._actions=null;this._expressions=null;this._timeline=this._propertyTrack.GetTimeline();this._track=this._propertyTrack.GetTrack();this._sourceAdapterArgs=this._propertyTrack.GetSourceAdapterArgs();this._fileArgs=this._sourceAdapterArgs[PROJECT_FILE];this._startOffsetTime=this._sourceAdapterArgs[START_OFFSET];if(this._sourceAdapterArgs[AUDIO_TAG])this._audioTag= +this._sourceAdapterArgs[AUDIO_TAG];else this._audioTag=Math.random().toString(36).slice(2);this._pauseTime=NaN;this._pauseVolume=NaN;this._volume=NaN;this._audioSource=null;this._Initialize()}Release(){super.Release();this._sdkInstance=null;this._actions=null;this._expressions=null;this._timeline=null;this._track=null;this._sourceAdapterArgs=null;this._fileArgs=null;this._audioSource=null}_Initialize(){if(!self.C3.Plugins.Audio)return;const runtime=this._propertyTrack.GetRuntime();const audioObjectClass= +runtime.GetSingleGlobalObjectClassByCtor(self.C3.Plugins.Audio);if(audioObjectClass)this._sdkInstance=audioObjectClass.GetSingleGlobalInstance().GetSdkInstance();this._actions=self.C3.Plugins.Audio.Acts;this._expressions=self.C3.Plugins.Audio.Exps}_MaybeSetAudioSource(){if(this._audioSource)return;const track=this._propertyTrack.GetTrack();const audioSourcePropertyTrack=track.GetPropertyTrack("audioSource");if(audioSourcePropertyTrack)this._audioSource=audioSourcePropertyTrack.GetSourceAdapter()}_GetPauseVolume(){const track= +this._propertyTrack.GetTrack();const volumePropertyTrack=track.GetPropertyTrack("volume");if(volumePropertyTrack)return volumePropertyTrack.GetSourceAdapter()._pauseVolume;else return this._pauseVolume}TimelineRemoved(){super.TimelineRemoved();this._audioPlaybackStarted=false;if(this._sdkInstance){if(this._expressions){this._pauseTime=this._expressions.PlaybackTime.call(this._sdkInstance,this._audioTag);this._pauseVolume=this._expressions.Volume.call(this._sdkInstance,this._audioTag)}if(this._actions)this._actions.Stop.call(this._sdkInstance, +this._audioTag)}}GetAudioTag(){return this._audioTag}GetVolume(){return this._volume}SetVolume(v){this._volume=v}SetInitialState(){super.SetInitialState();this._pauseTime=NaN;this._audioPlaybackStarted=false}SetResumeState(){super.SetResumeState();const timeline=this._propertyTrack.GetTimeline();const time=timeline.GetTime();this._pauseTime=time-this._startOffsetTime;switch(this._propertyTrack.GetPropertyName()){case "audioSource":{break}case "volume":{this._pauseVolume=this._propertyTrack.GetInterpolatedValue(time); +break}}this._audioPlaybackStarted=false}Interpolate(time,start,end,setTime,ensureValue,endState,propertyKeyframeReached){if(!this._sdkInstance)return;switch(this._propertyTrack.GetPropertyName()){case "audioSource":{if(!this._timeline.IsForwardPlayBack())return;if(setTime){if(this._actions)this._actions.Stop.call(this._sdkInstance,this._audioTag);return}if(time{const propertyTrackDataItem= +this._propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=this._propertyTrack.GetPropertyTrackData();return propertyTrackData.GetFirstPropertyKeyframeDataItem(propertyTrackDataItem)},()=>{const propertyTrackDataItem=this._propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=this._propertyTrack.GetPropertyTrackData();return propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem)});return propertyKeyframeDataItem.GetAbsoluteValue()}_CurrentKeyframeGetter(){const timeline= +this._propertyTrack.GetTimeline();const time=timeline.GetTime()-this._propertyTrack.GetTrack().GetStartOffset();const propertyKeyframe=this._PickTimelinePlaybackMode(()=>{const propertyTrackDataItem=this._propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=this._propertyTrack.GetPropertyTrackData();return propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,propertyTrackDataItem)},()=>{const propertyTrackDataItem=this._propertyTrack.GetPropertyTrackDataItem();const propertyTrackData= +this._propertyTrack.GetPropertyTrackData();const ret=propertyTrackData.GetFirstPropertyKeyFrameDataItemHigherOrEqualThan(time,propertyTrackDataItem);if(!ret)return propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);return ret});return propertyKeyframe.GetAbsoluteValue()}_PickTimelinePlaybackMode(forwardFunc,backwardFunc){const timeline=this._propertyTrack.GetTimeline();return timeline.IsForwardPlayBack()?forwardFunc():backwardFunc()}_PickResultMode(relativeFunc,absoluteFunc){const resultMode= +this._propertyTrack.GetResultMode();return resultMode==="relative"?relativeFunc():absoluteFunc()}_PickFirstAbsoluteUpdate(firstFunc,otherFunc){if(this.GetFirstAbsoluteUpdate()){this.SetFirstAbsoluteUpdate(false);return firstFunc()}else return otherFunc()}_GetAbsoluteInitialValue(keyframeValue){}_GetIndex(){return this._sourceAdapter.GetIndex()}_GetTarget(){if(this._target)return this._target;this._target=this._sourceAdapter.GetTarget();return this._target}_PickSource(bFunc,eFunc,ivFunc,pFunc,wiFunc, +aFunc){const id=this._propertyTrack.GetSourceAdapterId();switch(id){case "behavior":return bFunc();case "effect":return eFunc();case "instance-variable":return ivFunc();case "plugin":return pFunc();case "world-instance":return wiFunc();case "audio":return aFunc()}}_SaveToJson(){return{"firstAbsoluteUpdate":this._firstAbsoluteUpdate,"saveState":this._saveState}}_LoadFromJson(o){if(!o)return;this._firstAbsoluteUpdate=o["firstAbsoluteUpdate"];this._saveState=o["saveState"]}_GetPropertyKeyframeStubs(propertyTracks, +firstOnly=false){const ret=[];for(const propertyTrack of propertyTracks){const startOffset=propertyTrack.GetTrack().GetStartOffset();for(const propertyKeyframeDataItem of propertyTrack.GetPropertyKeyframeDataItems())if(firstOnly&&propertyKeyframeDataItem.GetTime()===0)ret.push({time:startOffset+propertyKeyframeDataItem.GetTime(),value:propertyKeyframeDataItem.GetAbsoluteValue()});else if(!firstOnly)ret.push({time:startOffset+propertyKeyframeDataItem.GetTime(),value:propertyKeyframeDataItem.GetAbsoluteValue()})}return ret.sort((f, +s)=>f.time-s.time)}_GetLastPropertyKeyframeStub(timeline,time,propertyKeyframeStubs){return this._GetPropertyKeyframeStubLowerThanPlayhead(time,propertyKeyframeStubs)}_GetPropertyKeyframeStubLowerThanPlayhead(time,propertyKeyframeStubs){for(let i=propertyKeyframeStubs.length-1;i>=0;i--){const stubTime=propertyKeyframeStubs[i].time;if(stubTime<=time)return propertyKeyframeStubs[i]}return null}}; + +} + +// timelines/state/propertyInterpolationAdapters/colorInterpolationAdapter.js +{ +'use strict';const C3=self.C3;const TMP_COLORS_MAP=new Map;const TMP_COLOR=[0,0,0]; +class ColorInterpolationAdapter extends C3.PropertyTrackState.PropertyInterpolationAdapter{constructor(sourceAdapter){super(sourceAdapter)}SetResetState(){}SetInitialState(){}SetResumeState(){}GetCurrentState(){const id=this._propertyTrack.GetSourceAdapterId();const target=this._GetTarget();const index=this._GetIndex();switch(id){case "behavior":return this._ToColorArray(target.GetPropertyValueByIndex(index));case "effect":return this._ToColorArray(target[index]);case "plugin":return this._ToColorArray(target.GetPropertyValueByIndex(index)); +case "world-instance":return this._ToColorArray(this._Getter())}}CompareInitialStateWithCurrent(){const firstKeyframeColor=this._FirstKeyframeGetter();return!this._CompareColors(firstKeyframeColor,this._Getter())}CompareSaveStateWithCurrent(){if(C3.IsNullOrUndefined(this._saveState))return false;return!this._CompareColors(this._saveState,this._Getter())}_CompareColors(fColor,sColor){fColor=this._GetColorFromArray(fColor);sColor=this._GetColorFromArray(sColor);return fColor.equalsIgnoringAlpha(sColor)}_FirstKeyframeGetter(){const color= +super._FirstKeyframeGetter();return this._GetColorFromArray(color)}_CurrentKeyframeGetter(){const color=super._CurrentKeyframeGetter();return this._GetColorFromArray(color)}_GetAbsoluteInitialValue(value){}_ToColorArray(color){if(C3.IsInstanceOf(color,C3.Color))return color.toArray().slice(0,3);return color.slice(0,3)}_GetColorFromArray(color){if(C3.IsInstanceOf(color,C3.Color))return color;return new C3.Color(color[0],color[1],color[2],1)}CanChange(value){return true}MayNeedBeforeAndAfterInterpolate(){return true}BeforeChangeProperty(){const timeline= +this._propertyTrack.GetTimeline();const instance=this._propertyTrack.GetInstance();const sourceAdapter=this._propertyTrack.GetSourceAdapter();const propertyTracks=timeline.GetSimilarPropertyTracks(instance,sourceAdapter,this._property,this._propertyTrack);if(propertyTracks&&propertyTracks.length>1){if(!TMP_COLORS_MAP.has(instance))TMP_COLORS_MAP.set(instance,new Map);const instanceMap=TMP_COLORS_MAP.get(instance);const id=this._propertyTrack.GetSourceAdapterId();if(!instanceMap.has(id))instanceMap.set(id, +new Map);const sourceMap=instanceMap.get(id);if(!sourceMap.has(this._property))sourceMap.set(this._property,{used:false,color:new C3.Color(0,0,0,1)})}}_GetTmpColor(instance,sourceId,propertyName){const tmpColorObj=TMP_COLORS_MAP.get(instance).get(sourceId).get(propertyName);tmpColorObj.used=true;return tmpColorObj.color}ChangeProperty(time,value,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const timeline=this._propertyTrack.GetTimeline();const track=this._propertyTrack.GetTrack(); +const instance=this._propertyTrack.GetInstance();const sourceAdapter=this._propertyTrack.GetSourceAdapter();const sourceAdapterId=this._propertyTrack.GetSourceAdapterId();const property=this._property;const propertyTracks=timeline.GetSimilarPropertyTracks(instance,sourceAdapter,property,this._propertyTrack);if(propertyTracks&&propertyTracks.length>1){const propertyKeyframeStubs=this._GetPropertyKeyframeStubs(propertyTracks,true);const stub=this._GetLastPropertyKeyframeStub(timeline,timeline.GetTime(), +propertyKeyframeStubs);if(stub){const startOffset=track.GetStartOffset();const t=stub.time-startOffset;if(t===0)this._GetTmpColor(instance,sourceAdapterId,this._property).addRgb(value[0],value[1],value[2]);else{if(t<0)return;const r=value[0];const g=value[1];const b=value[2];const v=this._propertyTrack.Interpolate(t,false,true);const dr=C3.Color.DiffChannel(r,v[0]);const dg=C3.Color.DiffChannel(g,v[1]);const db=C3.Color.DiffChannel(b,v[2]);this._GetTmpColor(instance,sourceAdapterId,this._property).addRgb(dr, +dg,db)}}}else this._Setter(value[0],value[1],value[2])}AfterChangeProperty(){const instance=this._propertyTrack.GetInstance();if(!TMP_COLORS_MAP.has(instance))return;const instanceMap=TMP_COLORS_MAP.get(instance);const id=this._propertyTrack.GetSourceAdapterId();if(!instanceMap.has(id))return;const sourceMap=instanceMap.get(id);if(!sourceMap.has(this._property))return;const tmpColorObj=sourceMap.get(this._property);const used=tmpColorObj.used;const color=tmpColorObj.color;if(used)this._Setter(color.getR(), +color.getG(),color.getB());if(sourceMap.size===0)instanceMap.delete(id);if(instanceMap.size===0)TMP_COLORS_MAP.delete(instance)}_Getter(){const id=this._propertyTrack.GetSourceAdapterId();const target=this._GetTarget();const index=this._GetIndex();switch(id){case "behavior":return this._GetColorFromArray(target.GetPropertyValueByIndex(index));case "effect":return target[index].clone();case "plugin":return this._GetColorFromArray(target.GetPropertyValueByIndex(index));case "world-instance":return this.GetWorldInfo().GetUnpremultipliedColor().clone()}}_Setter(r, +g,b){const id=this._propertyTrack.GetSourceAdapterId();const target=this._GetTarget();const index=this._GetIndex();switch(id){case "behavior":TMP_COLOR[0]=r;TMP_COLOR[1]=g;TMP_COLOR[2]=b;target.SetPropertyValueByIndex(index,TMP_COLOR);break;case "effect":target[index].setRgb(r,g,b);break;case "plugin":TMP_COLOR[0]=r;TMP_COLOR[1]=g;TMP_COLOR[2]=b;target.SetPropertyValueByIndex(index,TMP_COLOR);break;case "world-instance":this.GetWorldInfo().SetUnpremultipliedColorRGB(r,g,b);break}}_SaveToJson(){}_LoadFromJson(o){}} +C3.PropertyTrackState.PropertyInterpolationAdapter.ColorInterpolationAdapter=ColorInterpolationAdapter; + +} + +// timelines/state/propertyInterpolationAdapters/noInterpolationAdapter.js +{ +'use strict';const C3=self.C3;const NS=C3.PropertyTrackState; +class NoInterpolationAdapter extends C3.PropertyTrackState.PropertyInterpolationAdapter{constructor(sourceAdapter){super(sourceAdapter)}SetResetState(){}SetInitialState(){}SetResumeState(){}GetCurrentState(){return this._Getter()}CompareInitialStateWithCurrent(){const firstKeyframeValue=this._FirstKeyframeGetter();return firstKeyframeValue!==this.GetCurrentState()}CompareSaveStateWithCurrent(){if(C3.IsNullOrUndefined(this._saveState))return false;return this._saveState!==this.GetCurrentState()}MayNeedBeforeAndAfterInterpolate(){return false}ChangeProperty(time, +value,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const propertyTrack=this._propertyTrack;const track=propertyTrack.GetTrack();const id=propertyTrack.GetSourceAdapterId();const timeline=propertyTrack.GetTimeline();const instance=track.GetInstance();const sourceAdapter=propertyTrack.GetSourceAdapter();const property=this._property;const propertyTracks=timeline.GetSimilarPropertyTracks(instance,sourceAdapter,property,propertyTrack);if(propertyTracks&&propertyTracks.length>1){const propertyKeyframeStubs= +this._GetPropertyKeyframeStubs(propertyTracks);const t=time+track.GetStartOffset();const stub=this._GetLastPropertyKeyframeStub(timeline,t,propertyKeyframeStubs);if(stub)value=stub.value}const type=propertyTrack.GetPropertyKeyframeType();switch(type){case "numeric":{if(!NS.NumericTypeAdapter.WillChange(this._GetIndex(),this._GetTarget(),value,id))return;break}case "angle":{if(!NS.AngleTypeAdapter.WillChange(this._GetIndex(),this._GetTarget(),value,id))return;break}case "boolean":{if(!NS.BooleanTypeAdapter.WillChange(this._GetIndex(), +this._GetTarget(),value,id))return;break}case "color":{if(!NS.ColorTypeAdapter.WillChange(this._GetIndex(),this._GetTarget(),value,id))return;break}case "text":{if(!NS.TextTypeAdapter.WillChange(this._GetIndex(),this._GetTarget(),value,id))return;break}}this._Setter(value)}_Getter(){const id=this._propertyTrack.GetSourceAdapterId();const target=this._GetTarget();const index=this._GetIndex();switch(id){case "behavior":return target.GetPropertyValueByIndex(index);case "effect":return target[index]; +case "instance-variable":return target.GetInstanceVariableValue(index);case "plugin":return target.GetPropertyValueByIndex(index)}}_Setter(value){const id=this._propertyTrack.GetSourceAdapterId();const target=this._GetTarget();const index=this._GetIndex();switch(id){case "behavior":target.SetPropertyValueByIndex(index,value);break;case "effect":target[index]=value;break;case "instance-variable":target.SetInstanceVariableValue(index,value);break;case "plugin":target.SetPropertyValueByIndex(index,value); +break}}}C3.PropertyTrackState.PropertyInterpolationAdapter.NoInterpolationAdapter=NoInterpolationAdapter; + +} + +// timelines/state/propertyInterpolationAdapters/numericInterpolationAdapter.js +{ +'use strict';const C3=self.C3;const NS=C3.PropertyTrackState.PropertyInterpolationAdapter;const INSTANCE_FUNC_MAP=new Map;const add=(prop,setter,absolute_setter,getter,round,fRound=false,init=null,reset=null)=>{INSTANCE_FUNC_MAP.set(prop,{setter,absolute_setter,getter,round,fRound,init,reset})};add("offsetX",(wi,v,t,a)=>{if(a._propertyTrack.GetResultMode()==="relative")wi.OffsetX(v,t.GetTimeline().GetTransformWithSceneGraph());else wi.OffsetX(v)},(wi,v)=>wi.SetX(v),wi=>wi.GetX(),true); +add("offsetY",(wi,v,t,a)=>{if(a._propertyTrack.GetResultMode()==="relative")wi.OffsetY(v,t.GetTimeline().GetTransformWithSceneGraph());else wi.OffsetY(v)},(wi,v)=>wi.SetY(v),wi=>wi.GetY(),true); +add("offsetWidth",(wi,v,t,a,noChanges)=>{if(v===0)return;const isRelative=a._propertyTrack.GetResultMode()==="relative";const isTween=a._typeAdapter.GetType()===1;if((isRelative||isTween)&&wi.HasParent()&&wi.GetTransformWithParentWidth()){if(isNaN(a._absoluteToFactor)){const parents=[];let parent=wi.GetParent();while(parent){parents.push(parent);parent=parent.GetParent()}parents.reverse();const get_track=(wi,t)=>{return t.GetTimeline().GetTrackFromInstance(wi.GetInstance())};const get_original_size= +(wi,t)=>{const track=get_track(wi,t);if(track)return track.GetOriginalWidth();const sdki=wi.GetInstance().GetSdkInstance();if(sdki.IsOriginalSizeKnown())return sdki.GetOriginalWidth();return wi._GetSceneGraphInfo()._GetStartWidth()};const get_last_property_keyframe_value=(wi,t,propertyName,defaultValue=0)=>{const track=get_track(wi,t);if(!track)return defaultValue;const propertyTrack=track.GetPropertyTrack(propertyName);if(!propertyTrack)return defaultValue;const parentPropertyKeyframeData=propertyTrack.GetPropertyTrackDataItem().GetPropertyKeyframeData(); +if(!parentPropertyKeyframeData)return defaultValue;const parentLastPropertyKeyframeDataItem=parentPropertyKeyframeData.GetLastPropertyKeyframeDataItem();if(!parentLastPropertyKeyframeDataItem)return defaultValue;return parentLastPropertyKeyframeDataItem.GetValue()};let absoluteToFactor;if(isTween){let p=parents[parents.length-1];absoluteToFactor=p.GetWidth()}else{let p=parents[0];const ownStartSize=p._GetSceneGraphInfo()._GetStartWidth();const ownStartScale=p._GetSceneGraphInfo().GetStartScaleX(); +absoluteToFactor=ownStartSize*ownStartScale;absoluteToFactor+=get_last_property_keyframe_value(p,t,"offsetWidth");absoluteToFactor+=get_original_size(p,t)*get_last_property_keyframe_value(p,t,"offsetScaleX");for(let i=1;iwi.SetWidth(v),wi=>wi.GetWidth(),true); +add("offsetHeight",(wi,v,t,a,noChanges)=>{if(v===0)return;const isRelative=a._propertyTrack.GetResultMode()==="relative";const isTween=a._typeAdapter.GetType()===1;if((isRelative||isTween)&&wi.HasParent()&&wi.GetTransformWithParentHeight()){if(isNaN(a._absoluteToFactor)){const parents=[];let parent=wi.GetParent();while(parent){parents.push(parent);parent=parent.GetParent()}parents.reverse();const get_track=(wi,t)=>{return t.GetTimeline().GetTrackFromInstance(wi.GetInstance())};const get_original_size= +(wi,t)=>{const track=get_track(wi,t);if(track)return track.GetOriginalHeight();const sdki=wi.GetInstance().GetSdkInstance();if(sdki.IsOriginalSizeKnown())return sdki.GetOriginalHeight();return wi._GetSceneGraphInfo()._GetStartHeight()};const get_last_property_keyframe_value=(wi,t,propertyName,defaultValue=0)=>{const track=t.GetTimeline().GetTrackFromInstance(wi.GetInstance());if(!track)return defaultValue;const propertyTrack=track.GetPropertyTrack(propertyName);if(!propertyTrack)return defaultValue; +const parentPropertyKeyframeData=propertyTrack.GetPropertyTrackDataItem().GetPropertyKeyframeData();if(!parentPropertyKeyframeData)return defaultValue;const parentLastPropertyKeyframeDataItem=parentPropertyKeyframeData.GetLastPropertyKeyframeDataItem();if(!parentLastPropertyKeyframeDataItem)return defaultValue;return parentLastPropertyKeyframeDataItem.GetValue()};let absoluteToFactor;if(isTween){let p=parents[parents.length-1];absoluteToFactor=p.GetHeight()}else{let p=parents[0];const ownStartSize= +p._GetSceneGraphInfo()._GetStartHeight();const ownStartScale=p._GetSceneGraphInfo().GetStartScaleY();absoluteToFactor=ownStartSize*ownStartScale;absoluteToFactor+=get_last_property_keyframe_value(p,t,"offsetHeight");absoluteToFactor+=get_original_size(p,t)*get_last_property_keyframe_value(p,t,"offsetScaleY");for(let i=1;iwi.SetHeight(v),wi=>wi.GetHeight(),true);add("offsetAngle",(wi,v,t,a,noChanges)=>{wi.OffsetAngle(v)},(wi,v)=>wi.SetAngle(v),wi=>wi.GetAngle(),false,true); +add("offsetOpacity",(wi,v,t,a,noChanges)=>{const opacityFactor=a._opacityFactor?a._opacityFactor:1;v/=opacityFactor;const o=wi.GetOpacity();const nv=o+v;const min=0;const max=1;if(a._clampAccumulator===0){if(nv>max)a._clampAccumulator+=nv-max;else if(nv0&&a._clampAccumulator>0){if(nv>max)a._clampAccumulator+=nv-max}else if(v>0&&a._clampAccumulator<0){a._clampAccumulator+=v;if(a._clampAccumulator>0)a._clampAccumulator= +0}else if(v<0&&a._clampAccumulator>0){a._clampAccumulator+=v;if(a._clampAccumulator<0)a._clampAccumulator=0}else if(v<0&&a._clampAccumulator<0)if(nv{wi.SetOpacity(v)},wi=>{return wi.GetOpacity()},false,true,(a,wi,t)=>{a._clampAccumulator=0;switch(a._propertyTrack.GetResultMode()){case "relative":{const propertyTrackData=a._propertyTrack.GetPropertyTrackData();const propertyTrackDataItem=a._propertyTrack.GetPropertyTrackDataItem();const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData(); +const propertyKeyframeDataItems=propertyKeyframeData.GetPropertyKeyframeDataItemArray();let startingAbsoluteOpacity=a.GetWorldInfo().GetOpacity();let currentAbsoluteOpacity=startingAbsoluteOpacity;for(const propertyKeyframeDataItem of propertyKeyframeDataItems){const time=propertyKeyframeDataItem.GetTime();const currentRelativeOpacity=a._propertyTrack.GetInterpolatedValue(time);currentAbsoluteOpacity=startingAbsoluteOpacity+currentRelativeOpacity;currentAbsoluteOpacity=C3.clamp(currentAbsoluteOpacity, +0,1)}a._totalForewardOpacityDelta=startingAbsoluteOpacity-currentAbsoluteOpacity;a._totalForewardOpacityDelta=Math.round((a._totalForewardOpacityDelta+Number.EPSILON)*100)/100;currentAbsoluteOpacity=startingAbsoluteOpacity;for(let i=propertyKeyframeDataItems.length-1;i>=0;i--){const time=propertyKeyframeDataItems[i].GetTime();const currentRelativeOpacity=a._propertyTrack.GetInterpolatedValue(time);currentAbsoluteOpacity-=currentRelativeOpacity;currentAbsoluteOpacity=C3.clamp(currentAbsoluteOpacity, +0,1)}a._totalBackwardOpacityDelta=currentAbsoluteOpacity;a._totalBackwardOpacityDelta=Math.round((a._totalBackwardOpacityDelta+Number.EPSILON)*100)/100;break}case "absolute":{break}}const isRelative=a._propertyTrack.GetResultMode()==="relative";const isTween=a._typeAdapter.GetType()===1;if((isRelative||isTween)&&wi.HasParent()&&wi.GetTransformWithParentOpacity()){const parents=[];let parent=wi.GetParent();while(parent){parents.push(parent);parent=parent.GetParent()}parents.reverse();const get_last_property_keyframe_value= +(wi,t,propertyName)=>{const track=t.GetTimeline().GetTrackFromInstance(wi.GetInstance());if(!track)return 0;const propertyTrack=track.GetPropertyTrack(propertyName);if(!propertyTrack)return 0;const parentPropertyKeyframeData=propertyTrack.GetPropertyTrackDataItem().GetPropertyKeyframeData();if(!parentPropertyKeyframeData)return 0;const parentLastPropertyKeyframeDataItem=parentPropertyKeyframeData.GetLastPropertyKeyframeDataItem();if(!parentLastPropertyKeyframeDataItem)return 0;return parentLastPropertyKeyframeDataItem.GetValue()}; +let opacityFactor=parents[0]._GetSceneGraphInfo().GetStartOpacity();opacityFactor+=get_last_property_keyframe_value(parents[0],t,"offsetOpacity");for(let i=1;i{switch(a._propertyTrack.GetResultMode()){case "relative":{a._clampAccumulator=0;const wi=a.GetWorldInfo();let currentOpacity=wi.GetOpacity();currentOpacity=Math.round((currentOpacity+Number.EPSILON)* +100)/100;if(a._propertyTrack.GetTimeline().IsForwardPlayBack()){wi.SetOpacity(currentOpacity+a._totalForewardOpacityDelta);a._lastValue=0}else{wi.SetOpacity(currentOpacity-a._totalBackwardOpacityDelta);a._lastValue=a.GetSourceAdapter().GetValueAtTime()}break}case "absolute":{break}}});add("offsetOriginX",(wi,v)=>wi.OffsetOriginX(v),(wi,v)=>wi.SetOriginX(v),wi=>wi.GetOriginX(),false);add("offsetOriginY",(wi,v)=>wi.OffsetOriginY(v),(wi,v)=>wi.SetOriginY(v),wi=>wi.GetOriginY(),false); +add("offsetZElevation",(wi,v)=>wi.OffsetZElevation(v),(wi,v)=>wi.SetZElevation(v),wi=>wi.GetZElevation(),true); +add("offsetScaleX",(wi,v,t,a)=>{if(v===0)return;const mirrorFactor=wi.GetWidth()<0?-1:1;if(a._propertyTrack.GetResultMode()==="relative"&&wi.HasParent()&&wi.GetTransformWithParentWidth()){const value=t.GetOriginalWidth()*mirrorFactor*v;if(isNaN(a._absoluteToFactor))INSTANCE_FUNC_MAP.get("offsetWidth").setter(wi,1,t,a,true);wi.OffsetWidth(value/a._absoluteToFactor,true)}else wi.OffsetWidth(t.GetOriginalWidth()*mirrorFactor*v)},(wi,v,t)=>{wi.SetWidth(t.GetOriginalWidth()*v)},(wi,t)=>{const mirrorFactor= +wi.GetWidth()<0?-1:1;if(wi.GetTransformWithParentWidth()){const parentWi=wi.GetParent();const parentTrack=t.GetTimeline().GetTrackFromInstance(parentWi.GetInstance());let parentScale=NaN;if(parentTrack)parentScale=parentWi.GetWidth()/parentTrack.GetOriginalWidth();else{const sdki=parentWi.GetInstance().GetSdkInstance();if(sdki.IsOriginalSizeKnown())parentScale=parentWi.GetWidth()/sdki.GetOriginalWidth();else parentScale=1}return wi.GetWidth()*mirrorFactor/(t.GetOriginalWidth()*parentScale)}else return wi.GetWidth()* +mirrorFactor/t.GetOriginalWidth()},false); +add("offsetScaleY",(wi,v,t,a)=>{if(v===0)return;const flipFactor=wi.GetHeight()<0?-1:1;if(a._propertyTrack.GetResultMode()==="relative"&&wi.HasParent()&&wi.GetTransformWithParentHeight()){const value=t.GetOriginalHeight()*flipFactor*v;if(isNaN(a._absoluteToFactor))INSTANCE_FUNC_MAP.get("offsetHeight").setter(wi,1,t,a,true);wi.OffsetHeight(value/a._absoluteToFactor,true)}else wi.OffsetHeight(t.GetOriginalHeight()*flipFactor*v)},(wi,v,t)=>{wi.SetHeight(t.GetOriginalHeight()*v)},(wi,t)=>{const flipFactor= +wi.GetHeight()<0?-1:1;if(wi.GetTransformWithParentHeight()){const parentWi=wi.GetParent();const parentTrack=t.GetTimeline().GetTrackFromInstance(parentWi.GetInstance());let parentScale=NaN;if(parentTrack)parentScale=parentWi.GetHeight()/parentTrack.GetOriginalHeight();else{const sdki=parentWi.GetInstance().GetSdkInstance();if(sdki.IsOriginalSizeKnown())parentScale=parentWi.GetHeight()/sdki.GetOriginalHeight();else parentScale=1}return wi.GetHeight()*flipFactor/(t.GetOriginalHeight()*parentScale)}else return wi.GetHeight()* +flipFactor/t.GetOriginalHeight()},false); +class NumericInterpolationAdapter extends C3.PropertyTrackState.PropertyInterpolationAdapter{constructor(sourceAdapter){super(sourceAdapter);this._lastValue=0;this._clampAccumulator=0;this._totalForewardOpacityDelta=0;this._totalBackwardOpacityDelta=0;this._opacityFactor=NaN;this._absoluteToFactor=NaN;this._angleReflectMirrorOrFlip=undefined;this._angleReflectMirrorAndFlip=undefined;this._instance_getter=null;this._instance_setter=null;this._instance_absolute_setter=null;this._reset_action=null;this._init_action= +null;this._source_adapter_getter=null;this._source_adapter_setter=null;this._source_adapter_absolute_setter=null;this._round=false;this._fRound=false;if(C3.IsInstanceOf(this._propertyTrack.GetTimeline(),C3.TweenState))this._typeAdapter=new C3.PropertyTrackState.PropertyInterpolationAdapter.NumericInterpolationAdapterForTween(this);else this._typeAdapter=new C3.PropertyTrackState.PropertyInterpolationAdapter.NumericInterpolationAdapterForTimeline(this);const property=this._propertyTrack.GetPropertyName(); +switch(this._propertyTrack.GetSourceAdapterId()){case "world-instance":{const p=INSTANCE_FUNC_MAP.get(property);this._instance_getter=p.getter;this._instance_setter=p.setter;this._instance_absolute_setter=p.absolute_setter;this._round=p.round;this._fRound=p.fRound;this._init_action=p.init;this._reset_action=p.reset;break}case "audio":{this._source_adapter_getter=sourceAdapter.Getter;this._source_adapter_setter=sourceAdapter.Setter;this._source_adapter_absolute_setter=sourceAdapter.AbsoluteSetter; +this._round=!!sourceAdapter.DoesRounding();this._fRound=false;break}}}Release(){this._typeAdapter=null;this._instance_getter=null;this._instance_setter=null;this._instance_absolute_setter=null;this._reset_action=null;this._init_action=null;this._source_adapter_getter=null;this._source_adapter_setter=null;this._source_adapter_absolute_setter=null;super.Release()}MayNeedBeforeAndAfterInterpolate(){return this._typeAdapter.MayNeedBeforeAndAfterInterpolate()}GetLastValue(){return this._lastValue}SetLastValue(v){this._lastValue= +v}SetResetState(){if(this._reset_action)this._reset_action(this)}SetInitialState(){const initValue=this._typeAdapter.SetInitialState();if(typeof initValue==="number")this._lastValue=initValue;if(this._init_action){const wi=this.GetWorldInfo();const track=this._propertyTrack.GetTrack();this._init_action(this,wi,track)}}SetResumeState(){const resumeValue=this._typeAdapter.SetResumeState();if(typeof resumeValue==="number")this._lastValue=resumeValue}GetCurrentState(){return this._Getter()}CompareInitialStateWithCurrent(){const firstKeyframeValue= +this._FirstKeyframeGetter();return firstKeyframeValue!==this.GetCurrentState()}CompareSaveStateWithCurrent(){if(C3.IsNullOrUndefined(this._saveState))return false;return this._saveState!==this.GetCurrentState()}BeforeChangeProperty(){this._typeAdapter.BeforeChangeProperty()}ChangeProperty(time,value,start,end,setTime,ensureValue,endState,propertyKeyframeReached){return this._typeAdapter.ChangeProperty(time,value,start,end,setTime,ensureValue,endState,propertyKeyframeReached)}AfterChangeProperty(){this._typeAdapter.AfterChangeProperty()}_Getter(){const target= +this._GetTarget();const index=this._GetIndex();const wi=this.GetWorldInfo();const track=this._propertyTrack.GetTrack();const id=this._propertyTrack.GetSourceAdapterId();switch(id){case "behavior":return target.GetPropertyValueByIndex(index);case "effect":return target[index];case "instance-variable":return target.GetInstanceVariableValue(index);case "plugin":return target.GetPropertyValueByIndex(index);case "world-instance":return this._instance_getter(wi,track);case "audio":return this._source_adapter_getter.call(this.GetSourceAdapter(), +wi,track)}}_Setter(value,start,end){const target=this._GetTarget();const index=this._GetIndex();const wi=this.GetWorldInfo();const track=this._propertyTrack.GetTrack();const id=this._propertyTrack.GetSourceAdapterId();switch(id){case "behavior":target.OffsetPropertyValueByIndex(index,value);break;case "effect":target[index]+=value;break;case "instance-variable":target.SetInstanceVariableOffset(index,value);break;case "plugin":target.OffsetPropertyValueByIndex(index,value,this.GetSourceAdapter().GetOptionalCallbacks()); +break;case "world-instance":this._instance_setter(wi,value,track,this);break;case "audio":this._source_adapter_setter.call(this.GetSourceAdapter(),wi,value,track,this);break}}_SetterAbsolute(value,propertyKeyframeReached,endState){let mode=this._propertyTrack.GetInterpolationMode();mode=mode==="default"?"continuous":mode;if(mode==="discrete"&&!propertyKeyframeReached)return;if(mode==="discrete"&&endState){const timeline=this._propertyTrack.GetTimeline();const time=timeline.GetTime();const propertyKeyframeDataItem= +this._propertyTrack.GetPropertyKeyFrameDataItemAtTime(time);if(!propertyKeyframeDataItem)return}const target=this._GetTarget();const index=this._GetIndex();const wi=this.GetWorldInfo();const track=this._propertyTrack.GetTrack();const id=this._propertyTrack.GetSourceAdapterId();switch(id){case "behavior":target.SetPropertyValueByIndex(index,value);break;case "effect":target[index]=value;break;case "instance-variable":target.SetInstanceVariableValue(index,value);break;case "plugin":target.SetPropertyValueByIndex(index, +value,this.GetSourceAdapter().GetOptionalCallbacks());break;case "world-instance":this._instance_absolute_setter(wi,value,track);break;case "audio":this._source_adapter_absolute_setter.call(this.GetSourceAdapter(),wi,value,track);break}}_MaybeEnsureValue(time,start,end,setTime,lastValue,currentValue,forceEndValue,endState){this._typeAdapter._MaybeEnsureValue(time,start,end,setTime,lastValue,currentValue,forceEndValue,endState)}_AddDelta(value,start,end,forceEndValue,endState){switch(this._propertyTrack.GetPropertyType()){case "angle":{value= +C3.toDegrees(value);break}default:{value=value;break}}const stringValue=value.toString();const decimalsString=stringValue.split(".")[1]||"";const decimalPlaces=decimalsString.length;const v=this._Getter();let rv;if(decimalPlaces===0)if(this._round)rv=Math.round(v);else if(this._fRound)switch(this._propertyTrack.GetPropertyType()){case "angle":{rv=C3.toRadians(Math.round(C3.toDegrees(v)));break}default:{rv=Number(C3.toFixed(v,2));break}}else rv=v;else if(this._round)rv=Number(C3.toFixed(v,decimalPlaces)); +else if(this._fRound)rv=v;else rv=v;this._Setter(rv-v,start,end);switch(this._propertyTrack.GetPropertyName()){case "offsetWidth":case "offsetScaleX":{const wi=this.GetWorldInfo();const ov=wi.GetWidth();const nv=Number(C3.toFixed(ov,2));wi.OffsetWidth(nv-ov);break}case "offsetHeight":case "offsetScaleY":{const wi=this.GetWorldInfo();const ov=wi.GetHeight();const nv=Number(C3.toFixed(ov,2));wi.OffsetHeight(nv-ov);break}}}_SaveToJson(){return Object.assign(super._SaveToJson(),{"v":this._lastValue,"a":this._clampAccumulator, +"fod":this._totalForewardOpacityDelta,"bod":this._totalBackwardOpacityDelta,"of":this._opacityFactor,"sf":this._absoluteToFactor,"armorf":this._angleReflectMirrorOrFlip,"armandf":this._angleReflectMirrorAndFlip})}_LoadFromJson(o){if(!o)return;super._LoadFromJson(o);this._lastValue=o["v"];this._clampAccumulator=o["a"];this._totalForewardOpacityDelta=C3.IsFiniteNumber(o["fod"])?o["fod"]:0;this._totalBackwardOpacityDelta=C3.IsFiniteNumber(o["bod"])?o["bod"]:0;this._opacityFactor=C3.IsFiniteNumber(o["of"])? +o["of"]:NaN;this._absoluteToFactor=C3.IsFiniteNumber(o["sf"])?o["sf"]:NaN;this._angleReflectMirrorOrFlip=C3.IsFiniteNumber(o["armorf"])?o["armorf"]:undefined;this._angleReflectMirrorAndFlip=C3.IsFiniteNumber(o["armandf"])?o["armandf"]:undefined}}C3.PropertyTrackState.PropertyInterpolationAdapter.NumericInterpolationAdapter=NumericInterpolationAdapter; + +} + +// timelines/state/propertyInterpolationAdapters/numericInterpolationAdapterForTimeline.js +{ +'use strict';const C3=self.C3; +class AbsoluteValueObject{constructor(propertyTracks){this._used=false;this._value=0;this._propertyKeyframeReached=false;this._endState=false;this._propertyTracks=propertyTracks;for(let i=0,l=this._propertyTracks.length;i{return adapter._PickTimelinePlaybackMode(()=>0,()=>adapter.GetSourceAdapter().GetValueAtTime())},()=>{})}SetResumeState(){}MayNeedBeforeAndAfterInterpolate(){const adapter= +this._numericInterpolationAdapter;const propertyTrack=this._numericInterpolationAdapter.GetPropertyTrack();switch(propertyTrack.GetResultMode()){case "relative":{return false}case "absolute":{return true}}}BeforeChangeProperty(){const adapter=this._numericInterpolationAdapter;const propertyTrack=this._numericInterpolationAdapter.GetPropertyTrack();const property=propertyTrack.GetPropertyName();switch(propertyTrack.GetResultMode()){case "relative":{break}case "absolute":{if(propertyTrack.HasAbsoluteValueObject()){const valueObj= +propertyTrack.GetAbsoluteValueObject();valueObj.Reset()}else{const timeline=propertyTrack.GetTimeline();const instance=propertyTrack.GetInstance();const sourceAdapter=propertyTrack.GetSourceAdapter();const similarPropertyTracks=timeline.GetSimilarPropertyTracks(instance,sourceAdapter,property,propertyTrack);if(similarPropertyTracks&&similarPropertyTracks.length>1)new AbsoluteValueObject(similarPropertyTracks)}break}}}ChangeProperty(time,value,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const adapter= +this._numericInterpolationAdapter;const propertyTrack=this._numericInterpolationAdapter.GetPropertyTrack();switch(propertyTrack.GetResultMode()){case "relative":{const lastValue=adapter.GetLastValue();adapter._Setter(value-lastValue,start,end);if(ensureValue)this._MaybeEnsureValue(time,start,end,setTime,lastValue,value);adapter.SetLastValue(value);break}case "absolute":{const timeline=propertyTrack.GetTimeline();const track=propertyTrack.GetTrack();const instance=propertyTrack.GetInstance();const sourceAdapter= +propertyTrack.GetSourceAdapter();if(propertyTrack.HasAbsoluteValueObject()){const absoluteValueObject=propertyTrack.GetAbsoluteValueObject();const similarpropertyTracks=absoluteValueObject.GetPropertyTracks();const propertyKeyframeStubs=adapter._GetPropertyKeyframeStubs(similarpropertyTracks,true);const stub=adapter._GetLastPropertyKeyframeStub(timeline,timeline.GetTime(),propertyKeyframeStubs);if(stub){const startOffset=track.GetStartOffset();const t=stub.time-startOffset;if(t===0){absoluteValueObject.SetEndState(endState); +absoluteValueObject.SetPropertyKeyframeReached(propertyKeyframeReached);absoluteValueObject.SetUsed();absoluteValueObject.SetValue(absoluteValueObject.GetValue()+value)}else{if(t<0)return;const v=propertyTrack.GetInterpolatedValue(t);absoluteValueObject.SetEndState(endState);absoluteValueObject.SetPropertyKeyframeReached(propertyKeyframeReached);absoluteValueObject.SetUsed();absoluteValueObject.SetValue(absoluteValueObject.GetValue()+(value-v))}}}else adapter._SetterAbsolute(value,propertyKeyframeReached, +endState);break}}}AfterChangeProperty(){const adapter=this._numericInterpolationAdapter;const propertyTrack=this._numericInterpolationAdapter.GetPropertyTrack();switch(propertyTrack.GetResultMode()){case "relative":{break}case "absolute":{if(propertyTrack.HasAbsoluteValueObject()){const absoluteValueObject=propertyTrack.GetAbsoluteValueObject();if(absoluteValueObject.GetUsed())adapter._SetterAbsolute(absoluteValueObject.GetValue(),absoluteValueObject.GetPropertyKeyframeReached(),absoluteValueObject.GetEndState())}break}}}_MaybeEnsureValue(time, +start,end,setTime,lastValue,currentValue){const adapter=this._numericInterpolationAdapter;if(setTime)return;if(start&&time===start.GetTime())adapter._AddDelta(start.GetValueWithResultMode(),start,end);else if(end&&time===end.GetTime())adapter._AddDelta(end.GetValueWithResultMode(),start,end);else if(currentValue-lastValue===0)adapter._AddDelta(start.GetValueWithResultMode(),start,end)}}C3.PropertyTrackState.PropertyInterpolationAdapter.NumericInterpolationAdapterForTimeline=NumericInterpolationAdapterForTimeline; + +} + +// timelines/state/propertyInterpolationAdapters/numericInterpolationAdapterForTween.js +{ +'use strict';const C3=self.C3; +class NumericInterpolationAdapterForTween{constructor(numericInterpolationAdapter){this._numericInterpolationAdapter=numericInterpolationAdapter}Release(){this._numericInterpolationAdapter=null}GetType(){return 1}SetInitialState(){const adapter=this._numericInterpolationAdapter;adapter.SetFirstAbsoluteUpdate(true);return this._GetAbsoluteInitialValue(adapter._FirstKeyframeGetter())}SetResumeState(){const adapter=this._numericInterpolationAdapter;if(adapter._FirstKeyframeGetter()===adapter._CurrentKeyframeGetter())return; +adapter.SetFirstAbsoluteUpdate(true);return this._GetAbsoluteInitialValue(adapter._CurrentKeyframeGetter())}MayNeedBeforeAndAfterInterpolate(){return false}BeforeChangeProperty(){}ChangeProperty(time,value,start,end,setTime,ensureValue,endState,propertyKeyframeReached){const adapter=this._numericInterpolationAdapter;const lastValue=adapter.GetLastValue();switch(adapter.GetPropertyTrack().GetResultMode()){case "relative":{adapter._Setter(value-lastValue,start,end);if(ensureValue)this._MaybeEnsureValue(time, +start,end,setTime,lastValue,value,false,endState);break}case "absolute":{if(adapter.GetFirstAbsoluteUpdate()){adapter.SetFirstAbsoluteUpdate(false);adapter._Setter(lastValue,start,end)}else if(time===0&&adapter.GetPropertyTrack().GetTimeline().GetTotalTime()===0)adapter._SetterAbsolute(value,true,false);else{adapter._Setter(value-lastValue,start,end);if(ensureValue)this._MaybeEnsureValue(time,start,end,setTime,lastValue,value,this._ForceEndValue(),endState)}break}}adapter.SetLastValue(value)}AfterChangeProperty(){}_GetAbsoluteInitialValue(keyframeValue){const adapter= +this._numericInterpolationAdapter;return keyframeValue-adapter.GetCurrentState()}_ForceEndValue(){const adapter=this._numericInterpolationAdapter;const inst=adapter.GetWorldInfo().GetInstance();const runtime=adapter.GetPropertyTrack().GetRuntime();const timelineManager=runtime.GetTimelineManager();let activeTimelineCount=0;for(const timeline of timelineManager.GetPlayingTimelines())if(timeline.GetType()===0){if(timeline.HasTrackInstance(inst))activeTimelineCount++}else if(timeline.GetType()===1)if(timeline.GetInstance()=== +inst)activeTimelineCount++;return activeTimelineCount<=1}_MaybeEnsureValue(time,start,end,setTime,lastValue,currentValue,forceEndValue,endState){const adapter=this._numericInterpolationAdapter;if(setTime)if(start&&time===start.GetTime())adapter._AddDelta(start.GetValueWithResultMode(),start,end,forceEndValue,endState);else if(end&&time===end.GetTime())adapter._AddDelta(end.GetValueWithResultMode(),start,end,forceEndValue,endState);else{if(!end)adapter._AddDelta(start.GetValueWithResultMode(),start, +end,forceEndValue,endState)}else if(start&&time===start.GetTime())adapter._AddDelta(start.GetValueWithResultMode(),start,end,forceEndValue,endState);else if(end&&time===end.GetTime())adapter._AddDelta(end.GetValueWithResultMode(),start,end,forceEndValue,endState);else if(currentValue-lastValue===0)adapter._AddDelta(start.GetValueWithResultMode(),start,end,forceEndValue,endState)}}C3.PropertyTrackState.PropertyInterpolationAdapter.NumericInterpolationAdapterForTween=NumericInterpolationAdapterForTween; + +} + +// timelines/state/propertyTypeAdapters/numericTypeAdapter.js +{ +'use strict';const C3=self.C3;const Ease=self.Ease; +C3.PropertyTrackState.NumericTypeAdapter=class NumericTypeAdapter{constructor(){}static WillChange(index,source,newValue,type){let oldValue;switch(type){case "behavior":oldValue=source.GetPropertyValueByIndex(index);break;case "effect":oldValue=source[index];break;case "instance-variable":oldValue=source.GetInstanceVariableValue(index);break;case "plugin":oldValue=source.GetPropertyValueByIndex(index);break}if(oldValue===newValue)return false;return true}static Interpolate(time,start,end,propertyTrack){if(!end){let propertyTrackDataItem= +propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack.GetPropertyTrackData();propertyTrackDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);return propertyTrackDataItem.GetValueWithResultMode()}let mode=propertyTrack.GetInterpolationMode();if(mode==="default")mode="continuous";if(propertyTrack.GetPropertyType()==="combo")mode="discrete";if(mode==="discrete")return start.GetValueWithResultMode();else if(mode==="continuous"||mode==="step"){const step= +propertyTrack.GetTimeline().GetStep();if(mode==="step"&&step!==0){const s=1/step;time=Math.floor(time*s)/s}const sv=start.GetValueWithResultMode();const ev=end.GetValueWithResultMode();const startAddon=start.GetAddOn("cubic-bezier");const endAddon=end.GetAddOn("cubic-bezier");const doCubicBezier=startAddon&&startAddon.GetStartEnable()&&endAddon&&endAddon.GetEndEnable();if(!doCubicBezier&&sv===ev)return sv;const st=start.GetTime();const et=end.GetTime();if(mode==="step"&&step!==0)time=C3.clamp(time, +st,et);const n=C3.normalize(time,st,et);const e=start.GetEase();let ret;if(doCubicBezier){const dt=et-st;ret=Ease.GetRuntimeEase(e)(dt*n,0,1,dt);ret=Ease.GetRuntimeEase("cubicbezier")(ret,sv,sv+startAddon.GetStartAnchor(),ev+endAddon.GetEndAnchor(),ev)}else ret=Ease.GetRuntimeEase(e)((et-st)*n,sv,ev-sv,et-st);if(propertyTrack.GetPropertyType()==="integer")return Math.floor(ret);return ret}}}; + +} + +// timelines/state/propertyTypeAdapters/angleTypeAdapter.js +{ +'use strict';const C3=self.C3; +C3.PropertyTrackState.AngleTypeAdapter=class AngleTypeAdapter{constructor(){}static WillChange(index,source,newValue,type){let oldValue;switch(type){case "behavior":oldValue=source.GetPropertyValueByIndex(index);break;case "effect":oldValue=source[index];break;case "instance-variable":oldValue=source.GetInstanceVariableValue(index);break;case "plugin":oldValue=source.GetPropertyValueByIndex(index);break}if(oldValue===newValue)return false;return true}static Interpolate(time,start,end,propertyTrack){if(!end){let propertyTrackDataItem= +propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack.GetPropertyTrackData();propertyTrackDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);return propertyTrackDataItem.GetValueWithResultMode()}let mode=propertyTrack.GetInterpolationMode();if(mode==="default")mode="continuous";if(propertyTrack.GetPropertyType()==="combo")mode="discrete";if(mode==="discrete")return start.GetValueWithResultMode();else if(mode==="continuous"||mode==="step"){const step= +propertyTrack.GetTimeline().GetStep();if(mode==="step"&&step!==0){const s=1/step;time=Math.floor(time*s)/s}const st=start.GetTime();const et=end.GetTime();const sv=start.GetValueWithResultMode();const ev=end.GetValueWithResultMode();if(mode==="step"&&step!==0)time=C3.clamp(time,st,et);const angleAddon=start.GetAddOn("angle");if(angleAddon){const revolutions=angleAddon.GetRevolutions();if(sv===ev&&revolutions===0)return sv;const n=C3.normalize(time,st,et);const easeFunc=self.Ease.GetRuntimeEase(start.GetEase()); +const easeRes=easeFunc(n,0,1,1);switch(angleAddon.GetDirection()){case "closest":return C3.angleLerp(sv,ev,easeRes,revolutions);case "clockwise":return C3.angleLerpClockwise(sv,ev,easeRes,revolutions);case "anti-clockwise":return C3.angleLerpAntiClockwise(sv,ev,easeRes,revolutions)}}else{if(sv===ev)return sv;const n=C3.normalize(time,st,et);const easeFunc=self.Ease.GetRuntimeEase(start.GetEase());return C3.angleLerp(sv,ev,easeFunc(n,0,1,1))}}}}; + +} + +// timelines/state/propertyTypeAdapters/booleanTypeAdapter.js +{ +'use strict';const C3=self.C3; +C3.PropertyTrackState.BooleanTypeAdapter=class BooleanTypeAdapter{constructor(){}static WillChange(index,source,newValue,type){let oldValue;switch(type){case "behavior":oldValue=source.GetPropertyValueByIndex(index);break;case "effect":oldValue=source[index];break;case "instance-variable":oldValue=source.GetInstanceVariableValue(index);break;case "plugin":oldValue=source.GetPropertyValueByIndex(index);break}if(!!oldValue===!!newValue)return false;return true}static Interpolate(time,start,end,propertyTrack){if(!end){let propertyTrackDataItem= +propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack.GetPropertyTrackData();propertyTrackDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);return propertyTrackDataItem.GetValueWithResultMode()?1:0}return start.GetValueWithResultMode()?1:0}}; + +} + +// timelines/state/propertyTypeAdapters/colorTypeAdapter.js +{ +'use strict';const C3=self.C3;const TEMP_COLOR_ARRAY=[0,0,0];const TEMP_COLOR_ARRAY_2=[0,0,0];const TEMP_COLOR_ARRAY_3=[0,0,0]; +C3.PropertyTrackState.ColorTypeAdapter=class ColorTypeAdapter{constructor(){}static WillChange(index,source,newValue,type){let oldValue;switch(type){case "behavior":oldValue=source.GetPropertyValueByIndex(index);break;case "effect":oldValue=source[index];break;case "instance-variable":oldValue=source.GetInstanceVariableValue(index);break;case "plugin":oldValue=source.GetPropertyValueByIndex(index);break}if(Array.isArray(newValue)){TEMP_COLOR_ARRAY[0]=newValue[0];TEMP_COLOR_ARRAY[1]=newValue[1];TEMP_COLOR_ARRAY[2]= +newValue[2]}else{TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(newValue);TEMP_COLOR_ARRAY[0]=Math.floor(TEMP_COLOR_ARRAY_3.getR()*255);TEMP_COLOR_ARRAY[1]=Math.floor(TEMP_COLOR_ARRAY_3.getG()*255);TEMP_COLOR_ARRAY[2]=Math.floor(TEMP_COLOR_ARRAY_3.getB()*255)}if(Array.isArray(oldValue)){TEMP_COLOR_ARRAY_2[0]=oldValue[0];TEMP_COLOR_ARRAY_2[1]=oldValue[1];TEMP_COLOR_ARRAY_2[2]=oldValue[2]}else{TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(oldValue);TEMP_COLOR_ARRAY_2[0]=Math.floor(TEMP_COLOR_ARRAY_3.getR()* +255);TEMP_COLOR_ARRAY_2[1]=Math.floor(TEMP_COLOR_ARRAY_3.getG()*255);TEMP_COLOR_ARRAY_2[2]=Math.floor(TEMP_COLOR_ARRAY_3.getB()*255)}if(TEMP_COLOR_ARRAY[0]!==TEMP_COLOR_ARRAY_2[0])return true;if(TEMP_COLOR_ARRAY[1]!==TEMP_COLOR_ARRAY_2[1])return true;if(TEMP_COLOR_ARRAY[2]!==TEMP_COLOR_ARRAY_2[2])return true;return false}static Interpolate(time,start,end,propertyTrack){if(!end){let propertyTrackDataItem=propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack.GetPropertyTrackData(); +propertyTrackDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);const color=propertyTrackDataItem.GetValueWithResultMode();TEMP_COLOR_ARRAY[0]=color[0];TEMP_COLOR_ARRAY[1]=color[1];TEMP_COLOR_ARRAY[2]=color[2];return TEMP_COLOR_ARRAY}let mode=propertyTrack.GetInterpolationMode();if(mode==="default")mode="continuous";if(mode==="discrete"){const color=start.GetValueWithResultMode();TEMP_COLOR_ARRAY[0]=color[0];TEMP_COLOR_ARRAY[1]=color[1];TEMP_COLOR_ARRAY[2]=color[2]; +return TEMP_COLOR_ARRAY}else if(mode==="continuous"||mode==="step"){const step=propertyTrack.GetTimeline().GetStep();if(mode==="step"&&step!==0){const s=1/step;time=Math.floor(time*s)/s}const st=start.GetTime();const et=end.GetTime();const sv=start.GetValueWithResultMode();const ev=end.GetValueWithResultMode();if(mode==="step"&&step!==0)time=C3.clamp(time,st,et);const n=C3.normalize(time,st,et);const e=start.GetEase();const sr=sv[0];const sg=sv[1];const sb=sv[2];const er=ev[0];const eg=ev[1];const eb= +ev[2];const easeFunc=self.Ease.GetRuntimeEase(e);const d=et-st;const dn=d*n;if(sr===er)TEMP_COLOR_ARRAY[0]=sr;else TEMP_COLOR_ARRAY[0]=easeFunc(dn,sr,er-sr,d);if(sg===eg)TEMP_COLOR_ARRAY[1]=sg;else TEMP_COLOR_ARRAY[1]=easeFunc(dn,sg,eg-sg,d);if(sb===eb)TEMP_COLOR_ARRAY[2]=sb;else TEMP_COLOR_ARRAY[2]=easeFunc(dn,sb,eb-sb,d);return TEMP_COLOR_ARRAY}}}; + +} + +// timelines/state/propertyTypeAdapters/textTypeAdapter.js +{ +'use strict';const C3=self.C3; +C3.PropertyTrackState.TextTypeAdapter=class TextTypeAdapter{constructor(){}static WillChange(index,source,newValue,type){let oldValue;switch(type){case "behavior":oldValue=source.GetPropertyValueByIndex(index);break;case "effect":oldValue=source[index];break;case "instance-variable":oldValue=source.GetInstanceVariableValue(index);break;case "plugin":oldValue=source.GetPropertyValueByIndex(index);break}if(oldValue===newValue)return false;return true}static Interpolate(time,start,end,propertyTrack){if(!end){let propertyTrackDataItem= +propertyTrack.GetPropertyTrackDataItem();const propertyTrackData=propertyTrack.GetPropertyTrackData();propertyTrackDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);return propertyTrackDataItem.GetValueWithResultMode()}return start.GetValueWithResultMode()}}; + +} + +// timelines/data/timelineDataManager.js +{ +'use strict';const C3=self.C3; +C3.TimelineDataManager=class TimelineDataManager{constructor(){this._timelineDataItems=new Map}Release(){for(const timelineDataItem of this._timelineDataItems.values())timelineDataItem.Release();this._timelineDataItems.clear();this._timelineDataItems=null}Add(data){const timelineDataItem=new C3.TimelineDataItem(data);const name=timelineDataItem.GetName();this._timelineDataItems.set(name,timelineDataItem)}Get(name){return this._timelineDataItems.get(name)}GetNameId(){return 0}static _CreateDataItems(items,jsonItems, +dataItemConstructor,dataContainer){if(!jsonItems)return;for(const jsonItem of jsonItems)C3.TimelineDataManager._CreateDataItem("create",jsonItem,items,dataItemConstructor,dataContainer)}static _CreateDataItemsIncludingDisabled(items,jsonItems,dataItemConstructor,dataContainer){if(!jsonItems)return;for(const jsonItem of jsonItems)C3.TimelineDataManager._CreateDataItem("create-including-disabled",jsonItem,items,dataItemConstructor,dataContainer)}static _LoadDataItemsFromJson(items,jsonItems,dataItemConstructor, +dataContainer){if(items.length)jsonItems.forEach((jsonItem,index)=>{items[index]._LoadFromJson(jsonItem)});else jsonItems.forEach(jsonItem=>{C3.TimelineDataManager._CreateDataItem("load",jsonItem,items,dataItemConstructor,dataContainer)})}static _CreateDataItem(mode,json,items,dataItemConstructor,dataContainer){let dataItem;if(typeof dataItemConstructor==="function")switch(mode){case "load":dataItem=new dataItemConstructor(null,dataContainer);break;case "create":dataItem=new dataItemConstructor(json, +dataContainer);break;case "create-including-disabled":dataItem=new dataItemConstructor(json,dataContainer);break}else if(typeof dataItemConstructor==="object"){const prop=dataItemConstructor.prop;const value=json[prop];const cnstrctr=dataItemConstructor.map.get(value);switch(mode){case "load":dataItem=new cnstrctr(null,dataContainer);break;case "create":dataItem=new cnstrctr(json,dataContainer);break;case "create-including-disabled":dataItem=new cnstrctr(json,dataContainer);break}}switch(mode){case "load":dataItem._LoadFromJson(json); +items.push(dataItem);break;case "create":if(typeof dataItem.GetEnable==="function"&&!dataItem.GetEnable())return dataItem.Release();items.push(dataItem);break;case "create-including-disabled":items.push(dataItem);break}}}; + +} + +// timelines/data/timelineData.js +{ +'use strict';const C3=self.C3;const NAME=0;const TOTAL_TIME=1;const STEP=2;const INTERPOLATION_MODE=3;const RESULT_MODE=4;const TRACKS=5;const LOOP=6;const PING_PONG=7;const REPEAT_COUNT=8;const START_ON_LAYOUT=9;const TRANSFORM_WITH_SCENE_GRAPH=10;const USE_SYSTEM_TIMESCALE=11; +C3.TimelineDataItem=class TimelineDataItem{constructor(timelineDataJson){this._name="";this._totalTime=NaN;this._step=0;this._interpolationMode="default";this._resultMode="default";this._loop=false;this._pingPong=false;this._repeatCount=1;this._trackData=null;this._startOnLayout="";this._transformWithSceneGraph=false;this._useSystemTimescale=true;if(!timelineDataJson)return;this._name=timelineDataJson[NAME];this._totalTime=timelineDataJson[TOTAL_TIME];this._step=timelineDataJson[STEP];this._interpolationMode= +timelineDataJson[INTERPOLATION_MODE];this._resultMode=timelineDataJson[RESULT_MODE];this._loop=!!timelineDataJson[LOOP];this._pingPong=!!timelineDataJson[PING_PONG];this._repeatCount=timelineDataJson[REPEAT_COUNT];this._startOnLayout=timelineDataJson[START_ON_LAYOUT];this._transformWithSceneGraph=!!timelineDataJson[TRANSFORM_WITH_SCENE_GRAPH];this._useSystemTimescale=!!timelineDataJson[USE_SYSTEM_TIMESCALE];this._trackData=new C3.TrackData(timelineDataJson[TRACKS],this)}Release(){this._trackData.Release(); +this._trackData=null}GetTrackData(){if(!this._trackData)this._trackData=new C3.TrackData(null,this);return this._trackData}GetName(){return this._name}SetName(n){this._name=n}GetTotalTime(){return this._totalTime}SetTotalTime(tt){this._totalTime=tt}GetStep(){return this._step}SetStep(s){this._step=s}GetInterpolationMode(){return this._interpolationMode}SetInterpolationMode(im){this._interpolationMode=im}GetResultMode(){return this._resultMode}SetResultMode(rm){this._resultMode=rm}GetLoop(){return this._loop}SetLoop(l){this._loop= +l}GetPingPong(){return this._pingPong}SetPingPong(p){this._pingPong=p}GetRepeatCount(){return this._repeatCount}SetRepeatCount(rc){this._repeatCount=rc}GetStartOnLayout(){return this._startOnLayout}GetTransformWithSceneGraph(){return this._transformWithSceneGraph}GetUseSystemTimescale(){return this._useSystemTimescale}_SaveToJson(){return{"trackDataJson":this._trackData._SaveToJson(),"name":this._name,"totalTime":this._totalTime,"step":this._step,"interpolationMode":this._interpolationMode,"resultMode":this._resultMode, +"loop":this._loop,"pingPong":this._pingPong,"repeatCount":this._repeatCount,"startOnLayout":this._startOnLayout,"transformWithSceneGraph":!!this._transformWithSceneGraph,"useSystemTimescale":this._useSystemTimescale}}_LoadFromJson(o){if(!o)return;this.GetTrackData()._LoadFromJson(o["trackDataJson"]);this._name=o["name"];this._totalTime=o["totalTime"];this._step=o["step"];this._interpolationMode=o["interpolationMode"];this._resultMode=o["resultMode"];this._loop=o["loop"];this._pingPong=o["pingPong"]; +this._repeatCount=o["repeatCount"];this._startOnLayout=o["startOnLayout"];this._transformWithSceneGraph=!!o["transformWithSceneGraph"];this._useSystemTimescale=!!o["useSystemTimescale"]}}; + +} + +// timelines/data/trackData.js +{ +'use strict';const C3=self.C3;const WI_DATA=0;const OC_INDEX=1;const WI_UID=2;const INTERPOLATION_MODE=1;const RESULT_MODE=2;const ENABLED=3;const KEYFRAMES=4;const PROPERTY_TRACKS=5;const ID=6;const NESTED_DATA=7;const START_OFFSET=0;const LOCAL_TOTAL_TIME=1;const WI_ADDITIONAL_DATA=8;const ORIGINAL_WIDTH=0;const ORIGINAL_HEIGHT=1;const TRACK_TYPE=9;const TRACK_NAME=10; +class TrackDataItem{constructor(trackDataJson,trackData){this._trackData=trackData;this._instanceData=null;this._additionalInstanceData=null;this._instanceUid=NaN;this._objectClassIndex=NaN;this._interpolationMode="default";this._resultMode="default";this._enabled=false;this._keyframeData=null;this._propertyTrackData=null;this._id="";this._nestedData=null;this._startOffset=0;this._localTotalTime=this._trackData.GetTimelineDataItem().GetTotalTime();this._type=0;this._name="";if(!trackDataJson)return; +if(trackDataJson[WI_DATA]){this._instanceData=trackDataJson[WI_DATA];this._instanceUid=trackDataJson[WI_DATA][WI_UID];this._objectClassIndex=trackDataJson[WI_DATA][OC_INDEX]}this._interpolationMode=trackDataJson[INTERPOLATION_MODE];this._resultMode=trackDataJson[RESULT_MODE];this._enabled=!!trackDataJson[ENABLED];if(trackDataJson[ID])this._id=trackDataJson[ID];if(trackDataJson[NESTED_DATA]){this._nestedData=trackDataJson[NESTED_DATA];this._startOffset=trackDataJson[NESTED_DATA][START_OFFSET];this._localTotalTime= +trackDataJson[NESTED_DATA][LOCAL_TOTAL_TIME]}if(trackDataJson[WI_ADDITIONAL_DATA])this._additionalInstanceData=trackDataJson[WI_ADDITIONAL_DATA];if(trackDataJson[WI_ADDITIONAL_DATA])this._additionalInstanceData=trackDataJson[WI_ADDITIONAL_DATA];if(trackDataJson[TRACK_TYPE])this._type=trackDataJson[TRACK_TYPE];if(trackDataJson[TRACK_NAME])this._name=trackDataJson[TRACK_NAME];this._keyframeData=new C3.KeyframeData(trackDataJson[KEYFRAMES],this);this._propertyTrackData=new C3.PropertyTrackData(trackDataJson[PROPERTY_TRACKS], +this)}Release(){this._instanceData=null;this._trackData=null;if(this._keyframeData){this._keyframeData.Release();this._keyframeData=null}if(this._propertyTrackData){this._propertyTrackData.Release();this._propertyTrackData=null}this._nestedData=null}GetTrackData(){return this._trackData}GetKeyframeData(){if(!this._keyframeData)this._keyframeData=new C3.KeyframeData(null,this);return this._keyframeData}GetPropertyTrackData(){if(!this._propertyTrackData)this._propertyTrackData=new C3.PropertyTrackData(null, +this);return this._propertyTrackData}GetInstanceData(){return this._instanceData}GetObjectClassIndex(){return this._objectClassIndex}SetObjectClassIndex(index){this._objectClassIndex=index}GetInstanceUID(){return this._instanceUid}SetInstanceUID(uid){this._instanceUid=uid}GetInterpolationMode(){return this._interpolationMode}SetInterpolationMode(im){this._interpolationMode=im}GetResultMode(){return this._resultMode}SetResultMode(rm){this._resultMode=rm}GetEnable(){return this._enabled}SetEnable(e){this._enabled= +!!e}GetId(){return this._id}GetStartOffset(){return this._startOffset}GetLocalTotalTime(){return this._localTotalTime}SetLocalTotalTime(t){this._localTotalTime=t}GetOriginalWidth(){return this._additionalInstanceData[ORIGINAL_WIDTH]}SetOriginalWidth(w){if(!this._additionalInstanceData)this._additionalInstanceData=[];this._additionalInstanceData[ORIGINAL_WIDTH]=w}GetOriginalHeight(){if(!this._additionalInstanceData)this._additionalInstanceData=[];return this._additionalInstanceData[ORIGINAL_HEIGHT]}SetOriginalHeight(h){if(!this._additionalInstanceData)this._additionalInstanceData= +[];this._additionalInstanceData[ORIGINAL_HEIGHT]=h}GetType(){return this._type}GetName(){return this._name}_SaveToJson(){return{"keyframeDataJson":this._keyframeData._SaveToJson(),"propertyTrackDataJson":this._propertyTrackData._SaveToJson(),"instanceData":this._instanceData,"additionalInstanceData":this._additionalInstanceData,"instanceUid":this._instanceUid,"objectClassIndex":this._objectClassIndex,"interpolationMode":this._interpolationMode,"resultMode":this._resultMode,"enabled":this._enabled, +"id":this._id,"nestedData":this._nestedData,"type":this._type,"name":this._name}}_LoadFromJson(o){if(!o)return;this._instanceData=o["instanceData"];this._instanceUid=o["instanceUid"];this._objectClassIndex=o["objectClassIndex"];this._interpolationMode=o["interpolationMode"];this._resultMode=o["resultMode"];this._enabled=o["enabled"];this._id=o["id"];this._type=o["type"]?o["type"]:0;this._name=o["name"]?o["name"]:"";this._localTotalTime=this._trackData.GetTimelineDataItem().GetTotalTime();if(o["nestedData"]){this._nestedData= +o["nestedData"];this._startOffset=this._nestedData[START_OFFSET];this._localTotalTime=this._nestedData[LOCAL_TOTAL_TIME]}if(o["additionalInstanceData"])this._additionalInstanceData=o["additionalInstanceData"];this.GetKeyframeData()._LoadFromJson(o["keyframeDataJson"]);this.GetPropertyTrackData()._LoadFromJson(o["propertyTrackDataJson"])}} +C3.TrackData=class TrackData{constructor(tracksDataJson,timelineDataItem){this._timelineDataItem=timelineDataItem;this._trackDataItems=[];C3.TimelineDataManager._CreateDataItems(this._trackDataItems,tracksDataJson,TrackDataItem,this)}Release(){this._timelineDataItem=null;for(const trackDataItem of this._trackDataItems)trackDataItem.Release();C3.clearArray(this._trackDataItems);this._trackDataItems=null}GetTimelineDataItem(){return this._timelineDataItem}AddEmptyTrackDataItem(){const trackDataItem= +new TrackDataItem(null,this);this._trackDataItems.push(trackDataItem);return trackDataItem}GetFirstKeyframeDataItem(trackDataItem){return trackDataItem.GetKeyframeData().GetKeyframeDataItemArray()[0]}GetLastKeyframeDataItem(trackDataItem){const keyframeDataItems=trackDataItem.GetKeyframeData().GetKeyframeDataItemArray();return keyframeDataItems.at(-1)}GetKeyFrameDataItemAtTime(time,trackDataItem){const keyframeDataItems=trackDataItem.GetKeyframeData().GetKeyframeDataItemArray();const l=keyframeDataItems.length; +for(let i=0;itime)return keyframeDataItem}}GetFirstKeyFrameDataItemHigherOrEqualThan(time,trackDataItem){const keyframeDataItems= +trackDataItem.GetKeyframeData().GetKeyframeDataItemArray();const l=keyframeDataItems.length;for(let i=0;i=time)return keyframeDataItem}}GetFirstKeyFrameDataItemLowerOrEqualThan(time,trackDataItem){const keyframeDataItems=trackDataItem.GetKeyframeData().GetKeyframeDataItemArray();for(let i=keyframeDataItems.length-1;i>=0;i--){const keyframeDataItem=keyframeDataItems[i];if(keyframeDataItem.GetTime()<=time)return keyframeDataItem}}*trackDataItems(){for(const trackDataItem of this._trackDataItems)yield trackDataItem}_SaveToJson(){return{"trackDataItemsJson":this._trackDataItems.map(trackDataItem=> +trackDataItem._SaveToJson())}}_LoadFromJson(o){if(!o)return;C3.TimelineDataManager._LoadDataItemsFromJson(this._trackDataItems,o["trackDataItemsJson"],TrackDataItem,this)}}; + +} + +// timelines/data/propertyTrackData.js +{ +'use strict';const C3=self.C3;const SOURCE_DATA=0;const SOURCE=0;const PROPERTY=1;const TYPE=2;const MIN=3;const MAX=4;const INTERPOLATION_MODE=5;const RESULT_MODE=6;const ENABLED=7;const PROPERTY_KEYFRAMES=8;const CAN_HAVE_PROPERTY_KEYFRAMES=9; +class PropertyTrackDataItem{constructor(propertyTrackDataJson,propertyTrackData){this._propertyTrackData=propertyTrackData;this._sourceAdapterId="";this._sourceAdapterArguments=null;this._property=null;this._type=null;this._min=NaN;this._max=NaN;this._interpolationMode="default";this._resultMode="default";this._enabled=false;this._propertyKeyframeData=null;this._canHavePropertyKeyframes=true;if(!propertyTrackDataJson)return;this._sourceAdapterId=propertyTrackDataJson[SOURCE_DATA][SOURCE];this._sourceAdapterArguments= +propertyTrackDataJson[SOURCE_DATA].slice(1);this._property=propertyTrackDataJson[PROPERTY];this._type=propertyTrackDataJson[TYPE];this._min=propertyTrackDataJson[MIN];this._max=propertyTrackDataJson[MAX];this._interpolationMode=propertyTrackDataJson[INTERPOLATION_MODE];this._resultMode=propertyTrackDataJson[RESULT_MODE];this._enabled=!!propertyTrackDataJson[ENABLED];this._propertyKeyframeData=new C3.PropertyKeyframeData(propertyTrackDataJson[PROPERTY_KEYFRAMES],this);this._canHavePropertyKeyframes= +propertyTrackDataJson[CAN_HAVE_PROPERTY_KEYFRAMES]}Release(){this._propertyKeyframeData.Release();this._propertyKeyframeData=null;this._propertyTrackData=null;this._sourceAdapterArguments=null}GetPropertyTrackData(){return this._propertyTrackData}GetPropertyKeyframeData(){if(!this._propertyKeyframeData)this._propertyKeyframeData=new C3.PropertyKeyframeData(null,this);return this._propertyKeyframeData}GetSourceAdapterId(){return this._sourceAdapterId}SetSourceAdapterId(said){this._sourceAdapterId= +said}GetSourceAdapterArguments(){return this._sourceAdapterArguments}SetSourceAdapterArguments(sargs){this._sourceAdapterArguments=sargs}GetProperty(){return this._property}SetProperty(p){this._property=p}GetType(){return this._type}SetType(t){this._type=t}GetMin(){return this._min}SetMin(min){this._min=min}GetMax(){return this._max}SetMax(max){this._max=max}GetInterpolationMode(){return this._interpolationMode}SetInterpolationMode(im){this._interpolationMode=im}GetResultMode(){return this._resultMode}SetResultMode(rm){this._resultMode= +rm}GetEnable(){return this._enabled}SetEnable(e){this._enabled=!!e}CanHavePropertyKeyframes(){return!!this._canHavePropertyKeyframes}_SaveToJson(){return{"propertyKeyframeDataJson":this._propertyKeyframeData._SaveToJson(),"sourceAdapterId":this._sourceAdapterId,"sourceAdapterArguments":this._sourceAdapterArguments,"property":this._property,"type":this._type,"min":this._min,"max":this._max,"interpolationMode":this._interpolationMode,"resultMode":this._resultMode,"enabled":this._enabled,"canHavePropertyKeyframes":this._canHavePropertyKeyframes}}_LoadFromJson(o){if(!o)return; +this._sourceAdapterId=o["sourceAdapterId"];this._sourceAdapterArguments=o["sourceAdapterArguments"];this._property=o["property"];this._type=o["type"];this._min=o["min"];this._max=o["max"];this._interpolationMode=o["interpolationMode"];this._resultMode=o["resultMode"];this._enabled=o["enabled"];this._canHavePropertyKeyframes=o["canHavePropertyKeyframes"];this.GetPropertyKeyframeData()._LoadFromJson(o["propertyKeyframeDataJson"])}} +C3.PropertyTrackData=class PropertyTrackData{constructor(propertyTracksDataJson,trackDataItem){this._trackDataItem=trackDataItem;this._propertyTrackDataItems=[];C3.TimelineDataManager._CreateDataItems(this._propertyTrackDataItems,propertyTracksDataJson,PropertyTrackDataItem,this)}Release(){this._trackDataItem=null;for(const propertyTrackDataItem of this._propertyTrackDataItems)propertyTrackDataItem.Release();C3.clearArray(this._propertyTrackDataItems);this._propertyTrackDataItems=null}GetTrackDataItem(){return this._trackDataItem}AddEmptyPropertyTrackDataItem(){const propertyTrackDataItem= +new PropertyTrackDataItem(null,this);this._propertyTrackDataItems.push(propertyTrackDataItem);return propertyTrackDataItem}GetFirstPropertyKeyframeDataItem(propertyTrackDataItem){const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData();return propertyKeyframeData.GetPropertyKeyframeDataItemArray()[0]}GetLastPropertyKeyframeDataItem(propertyTrackDataItem){const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData();const propertyKeyframeDataItems=propertyKeyframeData.GetPropertyKeyframeDataItemArray(); +return propertyKeyframeDataItems.at(-1)}GetPropertyKeyFrameDataItemAtTime(time,propertyTrackDataItem){const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData();const propertyKeyframeDataItems=propertyKeyframeData.GetPropertyKeyframeDataItemArray();const l=propertyKeyframeDataItems.length;for(let i=0;itime)return propertyKeyframeDataItem}}GetFirstPropertyKeyFrameDataItemHigherOrEqualThan(time,propertyTrackDataItem){const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData(); +const propertyKeyframeDataItems=propertyKeyframeData.GetPropertyKeyframeDataItemArray();const l=propertyKeyframeDataItems.length;for(let i=0;i=time)return propertyKeyframeDataItem}}GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,propertyTrackDataItem){const propertyKeyframeData=propertyTrackDataItem.GetPropertyKeyframeData();const propertyKeyframeDataItems=propertyKeyframeData.GetPropertyKeyframeDataItemArray(); +for(let i=propertyKeyframeDataItems.length-1;i>=0;i--){const propertyKeyframeDataItem=propertyKeyframeDataItems[i];if(propertyKeyframeDataItem.GetTime()<=time)return propertyKeyframeDataItem}}*propertyTrackDataItems(){for(const propertyTrackDataItem of this._propertyTrackDataItems)yield propertyTrackDataItem}_SaveToJson(){return{"propertyTrackDataItemsJson":this._propertyTrackDataItems.map(propertyTrackDataItem=>propertyTrackDataItem._SaveToJson())}}_LoadFromJson(o){if(!o)return;C3.TimelineDataManager._LoadDataItemsFromJson(this._propertyTrackDataItems, +o["propertyTrackDataItemsJson"],PropertyTrackDataItem,this)}}; + +} + +// timelines/data/keyframeData.js +{ +'use strict';const C3=self.C3;const TIME=0;const EASE=1;const ENABLE=2;const TAGS=3; +class KeyframeDataItem{constructor(keyframeDataJson,keyframeData){this._keyframeData=keyframeData;this._time=-1;this._ease="noease";this._enable=false;this._tags=null;this._lowerTags=null;if(!keyframeDataJson)return;this._time=keyframeDataJson[TIME];this._ease=keyframeDataJson[EASE];this._enable=!!keyframeDataJson[ENABLE];const tagStr=keyframeDataJson[TAGS];this._tags=tagStr?tagStr.split(" "):[];this._lowerTags=new Set(this._tags.map(t=>t.toLowerCase()));this._next=null}Release(){this._keyframeData= +null;C3.clearArray(this._tags);this._tags=null;this._lowerTags.clear();this._lowerTags=null;this._next=null}GetKeyframeData(){return this._keyframeData}GetNext(){return this._next}SetNext(next){this._next=next}GetTime(){return this._time}SetTime(t){this._time=t;this._keyframeData._LinkKeyframeDataItems()}GetEase(){return this._ease}SetEase(e){this._ease=e}GetEnable(){return this._enable}SetEnable(e){this._enable=!!e}GetTags(){return this._tags}SetTags(t){this._tags=t?t.split(" "):[];this._lowerTags= +new Set(this._tags.map(t=>t.toLowerCase()))}GetLowerTags(){return this._lowerTags}HasTag(tag){return this._lowerTags.has(tag.toLowerCase())}_SaveToJson(){return{"time":this._time,"ease":this._ease,"enable":this._enable,"tags":this._tags}}_LoadFromJson(o){if(!o)return;this._time=o["time"];this._ease=o["ease"];this._enable=o["enable"];this._tags=o["tags"];this._lowerTags=new Set(this._tags.map(t=>t.toLowerCase()))}} +C3.KeyframeData=class KeyframeData{constructor(keyframesDataJson,trackDataItem){this._trackDataItem=trackDataItem;this._keyframeDataItems=[];C3.TimelineDataManager._CreateDataItems(this._keyframeDataItems,keyframesDataJson,KeyframeDataItem,this);this._LinkKeyframeDataItems()}Release(){this._trackDataItem=null;for(const keyframeDataItem of this._keyframeDataItems)keyframeDataItem.Release();C3.clearArray(this._keyframeDataItems);this._keyframeDataItems=null}_LinkKeyframeDataItems(){this._keyframeDataItems.sort((first, +second)=>first.GetTime()-second.GetTime());for(let i=0;ia.GetTime()-b.GetTime())}GetKeyframeDataItemIndex(keyframeDataItem){return this._keyframeDataItems.indexOf(keyframeDataItem)}GetKeyframeDataItemFromIndex(index){return this._keyframeDataItems[index]}*keyframeDataItems(){for(const keyframeDataItem of this._keyframeDataItems)yield keyframeDataItem}*keyframeDataItemsReverse(){for(let i= +this._keyframeDataItems.length-1;i>=0;i--)yield this._keyframeDataItems[i]}_SaveToJson(){return{"keyframeDataItemsJson":this._keyframeDataItems.map(keyframeDataItem=>keyframeDataItem._SaveToJson())}}_LoadFromJson(o){if(!o)return;C3.TimelineDataManager._LoadDataItemsFromJson(this._keyframeDataItems,o["keyframeDataItemsJson"],KeyframeDataItem,this);this._LinkKeyframeDataItems()}}; + +} + +// timelines/data/propertyKeyframeData.js +{ +'use strict';const C3=self.C3;const VALUE_DATA=0;const VALUE_DATA_VALUE=0;const VALUE_DATA_ABSOLUTE_VALUE=1;const VALUE_DATA_TYPE=2;const TIME=1;const EASE=2;const ENABLE=3;const ADDONS=4;const PATH_MODE=5; +class PropertyKeyframeDataItem{constructor(propertyKeyframeDataJson,propertyKeyframeData){this._propertyKeyframeData=propertyKeyframeData;this._value=null;this._aValue=null;this._type="";this._time=NaN;this._ease="noease";this._enable=false;this._addonData=null;this._addonInstance=undefined;this._pathMode="line";if(!propertyKeyframeDataJson)return;this._value=propertyKeyframeDataJson[VALUE_DATA][VALUE_DATA_VALUE];this._aValue=propertyKeyframeDataJson[VALUE_DATA][VALUE_DATA_ABSOLUTE_VALUE];this._type= +propertyKeyframeDataJson[VALUE_DATA][VALUE_DATA_TYPE];this._time=propertyKeyframeDataJson[TIME];this._ease=propertyKeyframeDataJson[EASE];this._enable=!!propertyKeyframeDataJson[ENABLE];this._pathMode=propertyKeyframeDataJson[PATH_MODE];this._addonData=null;if(!!propertyKeyframeDataJson[ADDONS])this._addonData=new C3.AddonData(propertyKeyframeDataJson[ADDONS],this);this._next=null;this._prev=null}Release(){this._propertyKeyframeData=null;if(this._addonData){this._addonData.Release();this._addonData= +null}this._next=null;this._prev=null}GetAddonData(){return this._addonData}SetNext(next){this._next=next}GetNext(){return this._next}SetPrevious(prev){this._prev=prev}GetPrevious(){return this._prev}GetValue(){return this._value}SetValue(value){if(this._type==="color"&&C3.IsFiniteNumber(value)){this._value[0]=C3.GetRValue(value);this._value[1]=C3.GetGValue(value);this._value[2]=C3.GetBValue(value)}else this._value=value}GetAbsoluteValue(){return this._aValue}SetAbsoluteValue(aValue){if(this._type=== +"color"&&C3.IsFiniteNumber(aValue)){this._aValue[0]=C3.GetRValue(aValue);this._aValue[1]=C3.GetGValue(aValue);this._aValue[2]=C3.GetBValue(aValue)}else this._aValue=aValue}GetValueWithResultMode(){const rm=this._propertyKeyframeData.GetPropertyTrackDataItem().GetResultMode();if(rm==="relative")return this.GetValue();else if(rm==="absolute")return this.GetAbsoluteValue()}GetType(){return this._type}SetType(t){this._type=t}GetTime(){return this._time}SetTime(t){this._time=t;this._propertyKeyframeData._LinkPropertyKeyframeDataItems()}GetEase(){return this._ease}SetEase(e){this._ease= +e}GetEnable(){return this._enable}SetEnable(e){this._enable=!!e}GetPathMode(){return this._pathMode}GetAddOn(id){if(!this._addonData)return;if(this._addonInstance||this._addonInstance===null)return this._addonInstance;const addonArray=this._addonData.GetAddDataItemArray();if(!addonArray){this._addonInstance=null;return this._addonInstance}const len=addonArray.length;for(let i=0;ifirst.GetTime()-second.GetTime());for(let i=0;i=0)current.SetPrevious(dataItems[i-1])}dataItems=this._propertyKeyframeDataItemsIncludingDisabled;dataItems.sort((first,second)=>first.GetTime()-second.GetTime());for(let i=0;i=0)current.SetPrevious(dataItems[i-1])}}AddEmptyPropertyKeyframeDataItem(){const propertyKeyframeDataItem=new PropertyKeyframeDataItem(null,this);this._propertyKeyframeDataItems.push(propertyKeyframeDataItem);this._LinkPropertyKeyframeDataItems();return propertyKeyframeDataItem}DeletePropertyKeyframeDataItems(match){for(const propertyKeyframeDataItem of this._propertyKeyframeDataItems){if(!match(propertyKeyframeDataItem))continue;const index= +this._propertyKeyframeDataItems.indexOf(propertyKeyframeDataItem);if(index===-1)continue;propertyKeyframeDataItem.Release();this._propertyKeyframeDataItems.splice(index,1)}this.SortPropertyKeyFrameDataItems();this._LinkPropertyKeyframeDataItems()}SortPropertyKeyFrameDataItems(){this._propertyKeyframeDataItems.sort((a,b)=>a.GetTime()-b.GetTime())}GetPropertyTrackDataItem(){return this._propertyTrackDataItem}GetPropertyKeyframeDataItemCount(){return this._propertyKeyframeDataItems.length}GetLastPropertyKeyframeDataItem(){return this._propertyKeyframeDataItems[this._propertyKeyframeDataItems.length- +1]}GetPropertyKeyframeDataItemArray(){return this._propertyKeyframeDataItems}GetPropertyKeyframeDataItemArrayIncludingDisabled(){return this._propertyKeyframeDataItemsIncludingDisabled}*propertyKeyframeDataItems(){for(const propertyKeyframeDataItem of this._propertyKeyframeDataItems)yield propertyKeyframeDataItem}*propertyKeyframeDataItemsReverse(){for(let i=this._propertyKeyframeDataItems.length-1;i>=0;i--)yield this._propertyKeyframeDataItems[i]}_SaveToJson(){const propertyKeyframeDataItems=this._propertyKeyframeDataItems; +const propertyKeyframeDataItemsIncludingDisabled=this._propertyKeyframeDataItemsIncludingDisabled;return{"propertyKeyframeDataItemsJson":propertyKeyframeDataItems.map(propertyTrackDataItem=>{return propertyTrackDataItem._SaveToJson()}),"propertyKeyframeDataItemsIncludingDisabledJson":propertyKeyframeDataItemsIncludingDisabled.map(propertyTrackDataItem=>{return propertyTrackDataItem._SaveToJson()})}}_LoadFromJson(o){if(!o)return;C3.TimelineDataManager._LoadDataItemsFromJson(this._propertyKeyframeDataItems, +o["propertyKeyframeDataItemsJson"],PropertyKeyframeDataItem,this);C3.TimelineDataManager._LoadDataItemsFromJson(this._propertyKeyframeDataItemsIncludingDisabled,o["propertyKeyframeDataItemsIncludingDisabledJson"],PropertyKeyframeDataItem,this);this._LinkPropertyKeyframeDataItems()}}; + +} + +// timelines/data/propertyKeyframeAddonData.js +{ +'use strict';const C3=self.C3;const ADDON_ID=0;const ADDON_DATA=1;class AddonDataItem{constructor(addonDataJson,addonData){this._addonData=addonData;this._id=addonDataJson[ADDON_ID];this._data=addonDataJson[ADDON_DATA]}Release(){this._addonData=null;this._data=null}GetAddonData(){return this._addonData}GetId(){return this._id}_SaveToJson(){return{"id":this._id,"data":this._data}}_LoadFromJson(o){if(!o)return;this._id=o["id"];this._data=o["data"]}}const START_ANCHOR=0;const START_ENABLE=1; +const END_ANCHOR=2;const END_ENABLE=3; +class AddonDataCubicBezierItem extends AddonDataItem{constructor(addonDataJson,addonData){super(addonDataJson,addonData);this._startAnchor=this._data[START_ANCHOR];this._startEnable=!!this._data[START_ENABLE];this._endAnchor=this._data[END_ANCHOR];this._endEnable=!!this._data[END_ENABLE]}Release(){super.Release()}GetStartAnchor(){return this._startAnchor}GetStartEnable(){return this._startEnable}GetEndAnchor(){return this._endAnchor}GetEndEnable(){return this._endEnable}_SaveToJson(){return Object.assign(super._SaveToJson(),{"startAnchor":this._startAnchor, +"startEnable":!!this._startEnable,"endAnchor":this._endAnchor,"endEnable":!!this._endEnable})}_LoadFromJson(o){if(!o)return;super._LoadFromJson(o);this._startAnchor=o["startAnchor"];this._startEnable=!!o["startEnable"];this._endAnchor=o["endAnchor"];this._endEnable=!!o["endEnable"]}}const DIRECTION=0;const REVOLUTIONS=1; +class AddonDataAngleItem extends AddonDataItem{constructor(addonDataJson,addonData){super(addonDataJson,addonData);this._direction=this._data[DIRECTION];this._revolutions=this._data[REVOLUTIONS]}Release(){super.Release()}GetDirection(){return this._direction}GetRevolutions(){return this._revolutions}_SaveToJson(){return Object.assign(super._SaveToJson(),{"direction":this._direction,"revolutions":this._revolutions})}_LoadFromJson(o){if(!o)return;super._LoadFromJson(o);this._direction=o["direction"]; +this._revolutions=o["revolutions"]}} +C3.AddonData=class AddonData{constructor(addonsDataJson,propertyKeyframeDataItem){this._propertyKeyframeDataItem=propertyKeyframeDataItem;this._addonDataItems=[];C3.TimelineDataManager._CreateDataItems(this._addonDataItems,addonsDataJson,{prop:0,map:new Map([["cubic-bezier",AddonDataCubicBezierItem],["angle",AddonDataAngleItem]])},this)}Release(){this._propertyKeyframeDataItem=null;for(const addonDataItem of this._addonDataItems)addonDataItem.Release();C3.clearArray(this._addonDataItems);this._addonDataItems= +null}GetPropertyKeyframeDataItem(){return this._propertyKeyframeDataItem}GetAddDataItemArray(){return this._addonDataItems}*addonDataItems(){for(const addonDataItem of this._addonDataItems)yield addonDataItem}_SaveToJson(){return{"addonDataItemsJson":this._addonDataItems.map(addonDataItem=>addonDataItem._SaveToJson())}}_LoadFromJson(o){if(!o)return;C3.TimelineDataManager._LoadDataItemsFromJson(this._addonDataItems,o["addonDataItemsJson"],{prop:"id",map:new Map([["cubic-bezier",AddonDataCubicBezierItem], +["angle",AddonDataAngleItem]])},this)}}; + +} + +// timelines/tweens/tweenState.js +{ +'use strict';const C3=self.C3;const INITIAL_VALUE_MODE_START_VALUE="start-value";const INITIAL_VALUE_MODE_CURRENT_STATE="current-state";const PING_PONG_BEGIN=0;const PING_PONG_END=1;let createdTweens=0; +C3.TweenState=class Tween extends C3.TimelineState{constructor(tweenDataItem,timelineManager){super(`tween-${createdTweens++}`,tweenDataItem,timelineManager);this._id="";this._destroyInstanceOnComplete=false;this._initialValueMode=INITIAL_VALUE_MODE_START_VALUE;this._instance=null;this._on_completed_callbacks=null;this._on_started_callbacks=null;this._track=null;this._iTweenState=null}FireReleaseEvent(dispatcher){const event=C3.New(C3.Event,"tweenstatereleased");event.tweenState=this;dispatcher.dispatchEvent(event)}GetType(){return 1}CreateTrackStates(){for(const trackDataItem of this._timelineDataItem.GetTrackData().trackDataItems())this._tracks.push(C3.TweenTrackState.Create(this, +trackDataItem));this._track=this._tracks[0]}AddTrack(){const trackDataItem=this._timelineDataItem.GetTrackData().AddEmptyTrackDataItem();const track=C3.TweenTrackState.Create(this,trackDataItem);this._tracks.push(track);this._CacheTrack();return track}_CacheTrack(){this._track=this._tracks[0]}GetPropertyTrack(propertyName){return this._track.GetPropertyTracks()[0]}SetPropertyType(type){this._propertyType=type}GetInstance(){const tracks=this.GetTracks();if(!tracks||!tracks.length)return;const track= +tracks[0];this._track=track;if(!track)return;const instance=track.GetInstance();return track.IsInstanceValid()?instance:undefined}AddStartedCallback(c){if(!this._on_started_callbacks)this._on_started_callbacks=[];this._on_started_callbacks.push(c)}AddCompletedCallback(c){if(!this._on_completed_callbacks)this._on_completed_callbacks=[];this._on_completed_callbacks.push(c)}RemoveStartedCallback(c){if(!this._on_started_callbacks)return;const index=this._on_started_callbacks.indexOf(c);if(index!==-1)this._on_started_callbacks.splice(index, +1)}RemoveCompletedCallback(c){if(!this._on_completed_callbacks)return;const index=this._on_completed_callbacks.indexOf(c);if(index!==-1)this._on_completed_callbacks.splice(index,1)}SetStartValue(startValue,propertyName){for(const track of this._tracks)for(const propertyTrack of track._propertyTracks){if(propertyTrack.GetPropertyName()!==propertyName)continue;const propertyTrackData=propertyTrack.GetPropertyTrackData();const propertyTrackDataItem=propertyTrack.GetPropertyTrackDataItem();const propertyKeyframeDataItem= +propertyTrackData.GetFirstPropertyKeyframeDataItem(propertyTrackDataItem);propertyKeyframeDataItem.SetValue(startValue);propertyKeyframeDataItem.SetAbsoluteValue(startValue)}}_GetPropertyTrackState(propertyName){for(const track of this._tracks)for(const propertyTrack of track._propertyTracks)if(propertyTrack.GetPropertyName()===propertyName)return propertyTrack}BeforeSetEndValues(properties){for(const propertyName of properties){const propertyTrackState=this._GetPropertyTrackState(propertyName);this.SetStartValue(propertyTrackState.GetCurrentState(), +propertyName)}if(this.IsForwardPlayBack()){const newTotalTime=this.GetTotalTime()-this.GetTime();this.SetTotalTime(newTotalTime);for(const track of this._tracks)track.SetLocalTotalTime(newTotalTime);this._SetTime(0)}else{const newTotalTime=this.GetTime();this.SetTotalTime(newTotalTime);for(const track of this._tracks)track.SetLocalTotalTime(newTotalTime);this._SetTime(newTotalTime)}this.SetInitialStateFromSetTime()}SetEndValue(endValue,propertyName){const propertyTrackState=this._GetPropertyTrackState(propertyName); +const propertyTrackData=propertyTrackState.GetPropertyTrackData();const propertyTrackDataItem=propertyTrackState.GetPropertyTrackDataItem();const propertyKeyframeDataItem=propertyTrackData.GetLastPropertyKeyframeDataItem(propertyTrackDataItem);propertyKeyframeDataItem.SetTime(this.GetTotalTime());propertyKeyframeDataItem.SetValue(endValue);propertyKeyframeDataItem.SetAbsoluteValue(endValue)}SetId(id){this._id=id}GetId(){return this._id}SetInitialValueMode(initialValueMode){this._initialValueMode= +initialValueMode}GetInitialValueMode(){return this._initialValueMode}SetDestroyInstanceOnComplete(releaseOnComplete){this._destroyInstanceOnComplete=releaseOnComplete}GetDestroyInstanceOnComplete(){return this._destroyInstanceOnComplete}OnStarted(){if(this._on_started_callbacks)for(const c of this._on_started_callbacks)c(this);if(this.IsComplete())return;for(const track of this._tracks)track.CompareSaveStateWithCurrent()}OnCompleted(){this._completedTick=this._runtime.GetTickCount()}FinishTriggers(){if(this._finishedTriggers)return; +this._finishedTriggers=true;if(this._on_completed_callbacks)for(const c of this._on_completed_callbacks)c(this)}SetTime(time){this._DeleteIntermediateKeyframes();super.SetTime(time)}_SetTimeAndReset(time){if(!C3.IsFiniteNumber(time))time=this.GetTotalTime();if(time<0)this._playheadTime=0;else if(time>=this.GetTotalTime())this._playheadTime=this.GetTotalTime();else this._playheadTime=time;this._track.SetResetState()}SetInitialState(fromSetTime){if(!this.InitialStateSet()&&this.GetInitialValueMode()=== +INITIAL_VALUE_MODE_CURRENT_STATE)for(const track of this._tracks)track.CompareInitialStateWithCurrent();super.SetInitialState(fromSetTime)}Stop(completed=false){super.Stop(completed);if(this.IsComplete())return;for(const track of this._tracks)track.SaveState()}Reset(render=true,beforeChangeLayout=false){this._DeleteIntermediateKeyframes();super.Reset(render,beforeChangeLayout)}_DeleteIntermediateKeyframes(){for(const track of this._tracks){const del=kf=>{const time=kf.GetTime();const totalTime=this.GetTotalTime(); +return time!==0&&time!==totalTime};track.DeleteKeyframes(del);track.DeletePropertyKeyframes(del)}}_OnBeforeChangeLayout(){if(this.IsReleased())return true;const instance=this.GetInstance();if(instance&&instance.GetObjectClass().IsGlobal())return false;this._timelineManager.CompleteTimelineBeforeChangeOfLayout(this);this.ResetBeforeChangeLayout();return true}Tick(deltaTime,timeScale,deltaTime1){if(!this._instance)this._instance=this.GetInstance();if(!this._instance||this._instance.IsDestroyed()){this.Stop(true); +this.OnCompleted();return}const instanceTimeScale=this._instance.GetTimeScale();if(instanceTimeScale!==-1)deltaTime=deltaTime1*instanceTimeScale;if(deltaTime===0&&this._lastDelta===0)return;this._lastDelta=deltaTime;const lastTime=this._playheadTime+this._overshoot;const newDeltaTime=deltaTime*this._playbackRate;const newTime=lastTime+newDeltaTime;const totalTime=this._timelineDataItem._totalTime;if(newTime<0){this._playheadTime=0;this._overshoot=-newTime}else if(newTime>=totalTime){this._playheadTime= +totalTime;this._overshoot=this._playheadTime-newTime}else{this._playheadTime=newTime;this._overshoot=0}let complete=false;let ensureValue=false;const loop=this.GetLoop();const pingPong=this.GetPingPong();if(!loop&&!pingPong)if(this._playbackRate>0){if(this._playheadTime>=totalTime)if(this._currentRepeatCount0){if(this._playheadTime>=totalTime){this._SetTimeAndReset(0);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenLoop); +this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensLoop);ensureValue=true}}else{if(this._playheadTime<=0){this._SetTimeAndReset(totalTime);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensLoop);ensureValue=true}}else if(!loop&&pingPong)if(this._playbackRate>0){if(this._playheadTime>=totalTime){this._SetTime(totalTime);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_END)if(this._currentRepeatCount< +this.GetRepeatCount()){this._currentRepeatCount++;this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong);this._pingPongState=PING_PONG_BEGIN}else{this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong);complete=true}else if(this._pingPongState===PING_PONG_BEGIN){this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong); +this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong);this._pingPongState=PING_PONG_END}}}else{if(this._playheadTime<=0){this._SetTime(0);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_END)if(this._currentRepeatCount0){if(this._playheadTime>= +totalTime){this._SetTime(totalTime);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_BEGIN){this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong)}if(this._pingPongState===PING_PONG_END){this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong)}this._pingPongState++; +this._pingPongState=C3.wrap(this._pingPongState,0,2)}}else if(this._playheadTime<=0){this._SetTime(0);this.SetPlaybackRate(this.GetPlaybackRate()*-1);ensureValue=true;if(this._pingPongState===PING_PONG_BEGIN){this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong)}if(this._pingPongState===PING_PONG_END){this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensLoop);this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnAnyTweenPingPong); +this._TweenTrigger(C3.Behaviors.Tween.Cnds.OnTweensPingPong)}this._pingPongState++;this._pingPongState=C3.wrap(this._pingPongState,0,2)}if(complete){this._track.SetEndState();this.Stop(true);this.OnCompleted();return}this._track.Interpolate(this._playheadTime,true,false,ensureValue,this._firstTick,false);if(this._firstTick)this._firstTick=false}_TweenTrigger(method){const inst=this.GetInstance();const behInst=inst.GetBehaviorSdkInstanceFromCtor(C3.Behaviors.Tween);behInst.PushTriggerTween(this);this._runtime.Trigger(method, +inst,behInst.GetBehaviorType());behInst.PopTriggerTween()}_SaveToJson(){const ret=super._SaveToJson();const tweenDataItem=this.GetTimelineDataItem();return Object.assign(ret,{"tweenDataItemJson":tweenDataItem._SaveToJson(),"id":this._id,"destroyInstanceOnComplete":this._destroyInstanceOnComplete,"initialValueMode":this._initialValueMode})}_LoadFromJson(o){if(!o)return;const tweenDataItem=this.GetTimelineDataItem();tweenDataItem._LoadFromJson(o["tweenDataItemJson"]);super._LoadFromJson(o);this._id= +o["id"];this._destroyInstanceOnComplete=o["destroyInstanceOnComplete"];this._initialValueMode=o["initialValueMode"];this._CacheTrack()}static IsPlaying(tween){return tween.IsPlaying()}static IsPaused(tween){return tween.IsPaused()}static IsPing(tween){if(!tween.GetPingPong())return false;return tween.GetPingPongState()===PING_PONG_BEGIN}static IsPong(tween){if(!tween.GetPingPong())return false;return tween.GetPingPongState()===PING_PONG_END}static Build(config){const timelineManager=config.runtime.GetTimelineManager(); +const tweenDataItem=new C3.TimelineDataItem;if(config.json){tweenDataItem._LoadFromJson(config.json["tweenDataItemJson"]);const tween=new C3.TweenState(tweenDataItem,timelineManager);tween._LoadFromJson(config.json);return tween}else{const tween=new C3.TweenState(tweenDataItem,timelineManager);if(!C3.IsArray(config.propertyTracksConfig))config.propertyTracksConfig=[config.propertyTracksConfig];tween.SetId(config.id);tween.SetTags(config.tags);tween.SetInitialValueMode(config.initialValueMode);tween.SetDestroyInstanceOnComplete(config.releaseOnComplete); +tween.SetLoop(config.loop);tween.SetPingPong(config.pingPong);tween.SetTotalTime(config.time);tween.SetStep(0);tween.SetInterpolationMode("default");tween.SetResultMode(config.propertyTracksConfig[0].resultMode);tween.SetRepeatCount(config.repeatCount);const track=tween.AddTrack();track.SetInstanceUID(config.instance.GetUID());track.SetInterpolationMode("default");track.SetResultMode(config.propertyTracksConfig[0].resultMode);track.SetEnable(true);track.SetObjectClassIndex(config.instance.GetObjectClass().GetIndex()); +const sdkIntance=config.instance.GetSdkInstance();const w=sdkIntance.IsOriginalSizeKnown()?sdkIntance.GetOriginalWidth():config.instance.GetWorldInfo().GetWidth();const h=sdkIntance.IsOriginalSizeKnown()?sdkIntance.GetOriginalHeight():config.instance.GetWorldInfo().GetHeight();track.SetOriginalWidth(w);track.SetOriginalHeight(h);const startKeyframeDataItem=track.AddKeyframe();startKeyframeDataItem.SetTime(0);startKeyframeDataItem.SetEase("noease");startKeyframeDataItem.SetEnable(true);startKeyframeDataItem.SetTags(""); +const endKeyframeDataItem=track.AddKeyframe();endKeyframeDataItem.SetTime(config.time);endKeyframeDataItem.SetEase("noease");endKeyframeDataItem.SetEnable(true);endKeyframeDataItem.SetTags("");for(const propertyTrackConfig of config.propertyTracksConfig){const propertyTrack=track.AddPropertyTrack();propertyTrack.SetSourceAdapterId(propertyTrackConfig.sourceId);propertyTrack.SetSourceAdapterArgs(propertyTrackConfig.sourceArgs);propertyTrack.SetPropertyName(propertyTrackConfig.property);propertyTrack.SetPropertyType(propertyTrackConfig.type); +propertyTrack.SetMin(NaN);propertyTrack.SetMax(NaN);propertyTrack.SetInterpolationMode("default");propertyTrack.SetResultMode(propertyTrackConfig.resultMode);propertyTrack.SetEnable(true);const startPropertyKeyframeDataItem=propertyTrack.AddPropertyKeyframe();startPropertyKeyframeDataItem.SetType(propertyTrackConfig.valueType);startPropertyKeyframeDataItem.SetTime(0);startPropertyKeyframeDataItem.SetEase(propertyTrackConfig.ease);startPropertyKeyframeDataItem.SetEnable(true);startPropertyKeyframeDataItem.SetValue(propertyTrackConfig.startValue); +startPropertyKeyframeDataItem.SetAbsoluteValue(propertyTrackConfig.startValue);const endPropertyKeyframeDataItem=propertyTrack.AddPropertyKeyframe();endPropertyKeyframeDataItem.SetType(propertyTrackConfig.valueType);endPropertyKeyframeDataItem.SetTime(config.time);endPropertyKeyframeDataItem.SetEase(propertyTrackConfig.ease);endPropertyKeyframeDataItem.SetEnable(true);endPropertyKeyframeDataItem.SetValue(propertyTrackConfig.endValue);endPropertyKeyframeDataItem.SetAbsoluteValue(propertyTrackConfig.endValue); +propertyTrack.GetSourceAdapter()}return tween}}static SetInstanceUID(tween,uid){if(!isNaN(uid))for(const tweenTrackState of tween.GetTracks())tweenTrackState.SetInstanceUID(uid)}GetITweenState(behInst,opts){if(!this._iTweenState)this._iTweenState=C3.New(self.ITweenState,this,behInst,opts);return this._iTweenState}}; + +} + +// timelines/tweens/tweenTrackState.js +{ +'use strict';const C3=self.C3; +C3.TweenTrackState=class TweenTrack extends C3.TrackState{constructor(timeline,trackDataItem){super(timeline,trackDataItem);this._firstPropertyTrack=null;this._secondPropertyTrack=null}static Create(timeline,trackDataItem){return C3.New(C3.TweenTrackState,timeline,trackDataItem)}_CachePropertyTracks(){if(this._propertyTracks.length===1)this._firstPropertyTrack=this._propertyTracks[0];else{this._firstPropertyTrack=this._propertyTracks[0];this._secondPropertyTrack=this._propertyTracks[1]}}CreatePropertyTrackStates(){for(const propertyTrackDataItem of this._trackDataItem.GetPropertyTrackData().propertyTrackDataItems())this._propertyTracks.push(C3.TweenPropertyTrackState.Create(this,propertyTrackDataItem)); +this._CachePropertyTracks()}AddPropertyTrack(){const propertyTrackData=this._trackDataItem.GetPropertyTrackData();const propertyTrackDataItem=propertyTrackData.AddEmptyPropertyTrackDataItem();const propertyTrack=C3.TweenPropertyTrackState.Create(this,propertyTrackDataItem);this._propertyTracks.push(propertyTrack);this._CachePropertyTracks();return propertyTrack}SetInitialState(){this.MaybeGetInstance();if(!this.IsInstanceValid()&&this.IsInstanceTrack())return;const timeline=this.GetTimeline();const isForwardPlayBack= +timeline.IsForwardPlayBack();const time=isForwardPlayBack?0:this.GetLocalTotalTime();for(const propertyTrack of this._propertyTracks){propertyTrack.SetInitialState(time);if(this._worldInfoChange===0&&propertyTrack.GetWorldInfoChange()===1)this._worldInfoChange=1;if(this._renderChange===0&&propertyTrack.GetRenderChange()===1)this._renderChange=1}this._needsBeforeAndAfter=0;const nba=this._propertyTracks.some(pt=>pt.GetNeedsBeforeAndAfter());if(nba)this._needsBeforeAndAfter=1;this._lastKeyframeDataItem= +this._GetLastKeyFrameBeforeTime(time);this._initialStateOfNestedSet=false;this._endStateOfNestedSet=false;this.Interpolate(time)}BeforeInterpolate(){}Interpolate(time,isTicking=false,setTime=false,ensureValue=false,firstTick=false,ignoreGlobals=false,endState=false){if(!this._instance)this.GetInstance();if(!this._instance)return;const instanceValid=!this._instance.IsDestroyed();if(!instanceValid)return false;if(ignoreGlobals&&this.GetObjectClass().IsGlobal())return false;if(this._secondPropertyTrack){this._firstPropertyTrack.Interpolate(time, +setTime,ensureValue,endState);this._secondPropertyTrack.Interpolate(time,setTime,ensureValue,endState)}else this._firstPropertyTrack.Interpolate(time,setTime,ensureValue,endState);if(this._firstPropertyTrack.GetWorldInfoChange()!==0){if(!this._worldInfo)this._worldInfo=this._instance.GetWorldInfo();if(this._worldInfo)this._worldInfo.SetBboxChanged()}}AfterInterpolate(){}_LoadFromJson(o){super._LoadFromJson(o);this._CachePropertyTracks()}}; + +} + +// timelines/tweens/tweenPropertyTrackState.js +{ +'use strict';const C3=self.C3; +C3.TweenPropertyTrackState=class TweenPropertyTrackState extends C3.PropertyTrackState{constructor(track,propertyTrackDataItem){super(track,propertyTrackDataItem);this._basic=false}static Create(track,propertyTrackDataItem){return C3.New(C3.TweenPropertyTrackState,track,propertyTrackDataItem)}Interpolate(time,setTime=false,ensureValue=false,endState=false){let start;let end;if(this._basic){start=this._propertyKeyframeDataItems[0];end=this._propertyKeyframeDataItems[1]}else if(setTime){start=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time, +this._propertyTrackDataItem);end=start.GetNext()}else{if(this._lastPropertyKeyframeDataItem){const timeline=this.GetTimeline();const nextPropertyKeyframe=this._lastPropertyKeyframeDataItem.GetNext();const lastTime=this._lastPropertyKeyframeDataItem.GetTime();const nextTime=nextPropertyKeyframe?nextPropertyKeyframe.GetTime():timeline.GetTotalTime();if(time<=lastTime||time>=nextTime)this._lastPropertyKeyframeDataItem=this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem)}else this._lastPropertyKeyframeDataItem= +this._propertyTrackData.GetFirstPropertyKeyFrameDataItemLowerOrEqualThan(time,this._propertyTrackDataItem);start=this._lastPropertyKeyframeDataItem;end=start.GetNext()}this._sourceAdapter.Interpolate(time,start,end,setTime,ensureValue,endState)}AddPropertyKeyframe(){const propertyKeyframeData=this._propertyTrackDataItem.GetPropertyKeyframeData();const propertyKeyframeDataItem=propertyKeyframeData.AddEmptyPropertyKeyframeDataItem();this._lastPropertyKeyframeDataItem=null;this._basic=this.GetPropertyKeyframeDataItems().length<= +2;return propertyKeyframeDataItem}DeletePropertyKeyframes(match){this._lastPropertyKeyframeDataItem=null;const propertyKeyframeData=this._propertyTrackDataItem.GetPropertyKeyframeData();propertyKeyframeData.DeletePropertyKeyframeDataItems(match);this._basic=this.GetPropertyKeyframeDataItems().length<=2}_SaveToJson(){return{"sourceAdapterJson":this.GetSourceAdapter()._SaveToJson(),"basic":this._basic}}_LoadFromJson(o){if(!o)return;this.GetSourceAdapter()._LoadFromJson(o["sourceAdapterJson"]);this._basic= +o["basic"]}}; + +} + +// timelines/transitions/transition.js +{ +'use strict';const C3=self.C3;const Ease=self.Ease;const NAME=0;const TRANSITION_KEYFRAMES=1;const LINEAR=2; +C3.Transition=class Transition extends C3.DefendedBase{constructor(data,addCustomEase=true){super();this._name=data[NAME];this._linear=data[LINEAR];this._transitionKeyframes=[];for(const transitionKeyframeData of data[TRANSITION_KEYFRAMES]){const transitionKeyframe=C3.TransitionKeyframe.Create(this,transitionKeyframeData);this._transitionKeyframes.push(transitionKeyframe)}for(let i=0;ithis.Interpolate(t,sv,dv,tt),null,{transition:this})}static Create(data){return C3.New(C3.Transition,data)}Release(){for(const transitionKeyframe of this._transitionKeyframes)transitionKeyframe.Release();C3.clearArray(this._transitionKeyframes);this._transitionKeyframes= +null;this._precalculatedSamples.clear();this._precalculatedSamples=null;this._transitionKeyframeCache.clear();this._transitionKeyframeCache=null}MakeLinear(linear){this._linear=!!linear}GetTransitionKeyFrameAt(x){const transitionKeyframe=this._transitionKeyframeCache.get(x);if(transitionKeyframe)return transitionKeyframe;for(const transitionKeyframe of this._transitionKeyframes)if(transitionKeyframe.GetValueX()===x){this._transitionKeyframeCache.set(x,transitionKeyframe);return transitionKeyframe}}GetFirstTransitionKeyFrameLowerOrEqualThan(x){for(let i= +this._transitionKeyframes.length-1;i>=0;i--){const transitionKeyframe=this._transitionKeyframes[i];const vx=transitionKeyframe.GetValueX();if(vx<=x){let ret=transitionKeyframe;if(vxthis._OnInstanceDestroy(e.instance)}Release(){this.RemoveRuntimeListeners();if(this._templateDataMap){for(const objectClassTemplatesMap of this._templateDataMap.values())objectClassTemplatesMap.clear();this._templateDataMap.clear()}this._templateDataMap=null;this._runtime=null}Create(templateInstanceData){if(!this._templateDataMap)this._templateDataMap= +new Map;if(!templateInstanceData)return;const templateData=templateInstanceData[0][16];const templateName=templateData[0];const objectClassIndex=templateInstanceData[1];if(!this._templateDataMap.has(objectClassIndex))this._templateDataMap.set(objectClassIndex,new Map);const objectClassTemplatesMap=this._templateDataMap.get(objectClassIndex);objectClassTemplatesMap.set(templateName,templateInstanceData)}AddRuntimeListeners(){const dispatcher=this._runtime.Dispatcher();if(dispatcher)dispatcher.addEventListener("instancedestroy", +this._instanceDestroy)}RemoveRuntimeListeners(){const dispatcher=this._runtime.Dispatcher();if(dispatcher)dispatcher.removeEventListener("instancedestroy",this._instanceDestroy)}HasTemplates(){if(!this._templateDataMap)return false;return this._templateDataMap.size!==0}GetTemplateData(objectClass_or_index,templateName){let index=0;if(objectClass_or_index instanceof C3.ObjectClass)index=objectClass_or_index.GetIndex();else index=objectClass_or_index;if(!this._templateDataMap.has(index))return;const ret= +this._templateDataMap.get(index).get(templateName);if(ret)return JSON.parse(JSON.stringify(ret));return undefined}MapInstanceToTemplateName(inst,templateName){if(!this._instanceToTemplateNameMap)this._instanceToTemplateNameMap=new WeakMap;if(this._instanceToTemplateNameMap.has(inst))return;this._instanceToTemplateNameMap.set(inst,templateName)}GetInstanceTemplateName(inst){if(!this._instanceToTemplateNameMap)return"";const ret=this._instanceToTemplateNameMap.get(inst);if(ret)return ret;return""}_OnInstanceDestroy(inst){if(!this._instanceToTemplateNameMap)return; +if(!this._instanceToTemplateNameMap.has(inst))return;this._instanceToTemplateNameMap.delete(inst)}}; + +} + +// flowcharts/flowchartManager.js +{ +'use strict';const C3=self.C3;C3.FlowchartManager=class FlowchartManager{constructor(runtime){this._runtime=runtime;this._flowchartDataManager=new C3.FlowchartDataManager}Release(){this._flowchartDataManager.Release();this._flowchartDataManager=null;this._runtime=null}GetRuntime(){return this._runtime}Create(flowchartData){this._flowchartDataManager.Add(flowchartData)}GetFlowchartDataItemByName(flowchartName){return this._flowchartDataManager.Get(flowchartName)}HasFlowcharts(){return this._flowchartDataManager.HasFlowcharts()}}; + +} + +// flowcharts/state/flowchartState.js +{ +'use strict';const C3=self.C3; +C3.FlowchartState=class Flowchart{constructor(flowchartName,tag,startNodeTag,flowchartDataItem,flowchartManager,pluginInstance,pluginUID){this._runtime=flowchartManager.GetRuntime();this._flowchartManager=flowchartManager;this._flowchartName=flowchartName;this._startNodeTag=startNodeTag;this._flowchartDataItem=flowchartDataItem;this._tag=tag;this._pluginInstance=pluginInstance;this._pluginUID=pluginUID??pluginInstance.GetInstance().GetUID();this._SetStartFlowchartNode();this._currentFlowchartNodeId= +this._startFlowchartNode?.GetFlowchartId()??-1;this._previousFlowchartNodeIds=[];this._previousFlowchartState=null;this._previousFlowchartStateStartNodeId=NaN;this._referenceFlowchartStates=null;this._currentReferenceFlowchartState=null;this._rootFlowchartState=null;this._previousFlowchartStateTag="";this._referenceFlowchartStatesJson=null;this._currentReferenceFlowchartStateTag="";this._rootFlowchartStateTag="";this._triggerCount=0;this._markForRelease=false;this._released=false}Release(){if(this._released)return; +C3.clearArray(this._previousFlowchartNodeIds);this._previousFlowchartNodeIds=null;this._runtime=null;this._flowchartManager=null;this._flowchartDataItem=null;this._pluginInstance=null;this._previousFlowchartState=null;this._previousFlowchartStateStartNodeId=NaN;if(this._referenceFlowchartStates)this._referenceFlowchartStates.clear();this._referenceFlowchartStates=null;this._currentReferenceFlowchartState=null;this._rootFlowchartState=null;this._previousFlowchartStateTag="";this._referenceFlowchartStatesJson= +null;this._currentReferenceFlowchartStateTag="";this._rootFlowchartStateTag="";this._released=true}WasReleased(){return this._released}GetFlowchartManager(){return this._flowchartManager}GetRuntime(){return this._runtime}GetName(){return this._flowchartName}GetFlowchartDataItem(){return this._flowchartDataItem}GetTag(){return this._tag}GetPluginInstance(){if(!this._pluginInstance)this._pluginInstance=this._runtime.GetInstanceByUID(this._pluginUID).GetSdkInstance();return this._pluginInstance}GetCurrentNode(){return this.GetFlowchartElementById(this._currentFlowchartNodeId)}GetCurrentNodeTag(){const currentFlowchartNode= +this.GetCurrentNode();if(!currentFlowchartNode)return"";return currentFlowchartNode.GetTag()}GetCurrentNodeParent(indexOrTag){const currentFlowchartNode=this.GetCurrentNode();if(!currentFlowchartNode)return;if(C3.IsFiniteNumber(indexOrTag)){const parentFlowchartIds=currentFlowchartNode.GetParentFlowchartIds();const newFlowchartNodeId=parentFlowchartIds?parentFlowchartIds[indexOrTag]:undefined;if(C3.IsFiniteNumber(newFlowchartNodeId))return this.GetFlowchartElementById(newFlowchartNodeId)}if(typeof indexOrTag=== +"string")for(const parentFlowchartId of currentFlowchartNode.GetParentFlowchartIds()){const parentFlowchartNode=this.GetFlowchartElementById(parentFlowchartId);if(parentFlowchartNode.GetTag()===indexOrTag)return this.GetFlowchartElementById(parentFlowchartNode.GetFlowchartId())}}GetCurrentNodeParentTag(index){const currentParentFlowchartNode=this.GetCurrentNodeParent(index);if(!currentParentFlowchartNode)return"";return currentParentFlowchartNode.GetTag()}GetCurrentNodeParentIndex(tag){const currentParentFlowchartNode= +this.GetCurrentNodeParent(tag);if(!currentParentFlowchartNode)return-1;const parentFlowchartIds=currentParentFlowchartNode.GetParentFlowchartIds();if(!parentFlowchartIds)return-1;return parentFlowchartIds.indexOf(currentParentFlowchartNode.GetFlowchartId())}GetCurrentNodeParentCount(){const currentFlowchartNode=this.GetCurrentNode();if(!currentFlowchartNode)return 0;const parentFlowchartIds=currentFlowchartNode.GetParentFlowchartIds();if(!parentFlowchartIds)return 0;return parentFlowchartIds.length}GetFlowchartElementById(flowchartElementId){return this._flowchartDataItem.GetFlowchartElementById(flowchartElementId)}Reset(){const rootFlowchartState= +this._GetRootFlowchartState();rootFlowchartState._Reset(true)}_Reset(setFlowchart){if(this._GetReferenceFlowchartStates()){for(const [flowchartName,flowchartState]of this._GetReferenceFlowchartStates().entries())flowchartState._Reset(false);this._GetReferenceFlowchartStates().clear()}this._referenceFlowchartStates=null;this._previousFlowchartState=null;this._previousFlowchartStateStartNode=null;this._currentReferenceFlowchartState=null;this._previousFlowchartStateTag="";this._referenceFlowchartStatesJson= +null;this._currentReferenceFlowchartStateTag="";this._rootFlowchartStateTag="";this._previousFlowchartNodeIds=[];if(setFlowchart){this._flowchartManager.SetCurrentFlowchartState(this);const startFlowchartId=this._startFlowchartNode.GetFlowchartId();if(startFlowchartId!==this._currentFlowchartNodeId)this._GotoFlowchartNode(startFlowchartId)}else this._currentFlowchartNodeId=this._startFlowchartNode.GetFlowchartId()}GetCurrentNodeOutputCount(){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(this._currentFlowchartNodeId); +if(!flowchartNodeDataItem)return 0;return flowchartNodeDataItem.GetFlowchartNodeOutputData().GetFlowchartNodeOutputDataItemCount()}GetCurrentNodeOutputNameAt(index){const flowchartNodeOutputDataItem=this._GetFlowchartNodeOutputAt(index);if(!flowchartNodeOutputDataItem)return"";return flowchartNodeOutputDataItem.GetName()}GetCurrentNodeOutputValueAt(indexOrName){let flowchartNodeOutputDataItem;if(C3.IsFiniteNumber(indexOrName))flowchartNodeOutputDataItem=this._GetFlowchartNodeOutputAt(indexOrName); +if(typeof indexOrName==="string")flowchartNodeOutputDataItem=this._GetFlowchartNodeOutputByName(indexOrName);if(typeof indexOrName!=="number"&&typeof indexOrName!=="string")console.warn("[Flowcharts] unexpected argument type in GetCurrentNodeOutputValueAt expression");if(!flowchartNodeOutputDataItem)return"";return flowchartNodeOutputDataItem.GetValue()}GotoNextFlowchartNode(indexOrName){let flowchartNodeOutputDataItem;if(C3.IsFiniteNumber(indexOrName))flowchartNodeOutputDataItem=this._GetFlowchartNodeOutputAt(indexOrName); +if(typeof indexOrName==="string")flowchartNodeOutputDataItem=this._GetFlowchartNodeOutputByName(indexOrName);const newFlowchartNodeId=flowchartNodeOutputDataItem.GetConnectedFlowchartNodeFlowchartId();if(!C3.IsFiniteNumber(newFlowchartNodeId))return;this._previousFlowchartNodeIds.push(this._currentFlowchartNodeId);this._GotoFlowchartNode(newFlowchartNodeId)}GotoAnyFlowchartNode(nodeTag){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartNodeByTag(nodeTag);if(!flowchartNodeDataItem)return; +const newFlowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(flowchartNodeDataItem.GetFlowchartId());if(!newFlowchartNodeDataItem)return;this._previousFlowchartNodeIds.push(this._currentFlowchartNodeId);this._GotoFlowchartNode(newFlowchartNodeDataItem.GetFlowchartId())}GotoPreviousFlowchartNode(){const previousFlowchartNodeId=this._previousFlowchartNodeIds.pop();if(C3.IsFiniteNumber(previousFlowchartNodeId))this._GotoFlowchartNode(previousFlowchartNodeId);else if(this._GetPreviousFlowchartState()){this._flowchartManager.SetCurrentFlowchartState(this._GetPreviousFlowchartState(), +true,false,false);this._GetPreviousFlowchartState()._GotoFlowchartNode(this._GetPreviousFlowchartStateStartNodeId());this._GetRootFlowchartState()._SetCurrentReferenceFlowchart(this._GetPreviousFlowchartState())}}GotoParentFlowchartNode(indexOrTag){const currentFlowchartNode=this.GetCurrentNode();if(!currentFlowchartNode)return;const flowchartNodeId=currentFlowchartNode.GetFlowchartId();const parentFlowchartNode=this.GetCurrentNodeParent(indexOrTag);if(parentFlowchartNode){this._previousFlowchartNodeIds.push(this._currentFlowchartNodeId); +this._GotoFlowchartNode(parentFlowchartNode.GetFlowchartId())}}HasOutput(outputIndexOrName){if(C3.IsFiniteNumber(outputIndexOrName)){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(this._currentFlowchartNodeId);const flowchartNodeOutputDataItems=flowchartNodeDataItem.GetFlowchartNodeOutputData().GetFlowchartNodeOutputDataItems();return!!flowchartNodeOutputDataItems[outputIndexOrName]}if(typeof outputIndexOrName==="string"){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(this._currentFlowchartNodeId); +const flowchartNodeOutputDataItems=flowchartNodeDataItem.GetFlowchartNodeOutputData().GetFlowchartNodeOutputDataItems();for(let i=0;i0}PushIsTriggerState(){this._triggerCount++}PopIsTriggerState(){this._triggerCount--;if(this._triggerCount===0&&this._markForRelease)this._flowchartManager.RemoveFlowchartState(this)}_GotoFlowchartNode(newFlowchartNodeId){const previousFlowchartNodeId= +this._currentFlowchartNodeId;const inst=this.GetPluginInstance().GetInstance();this.PushIsTriggerState();this._flowchartManager.PushFlowchartState(this);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnBeforeAnyNodeChange,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnBeforeTaggedNodeChange,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnBeforeAnyNodeChangeInFlowchart,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnBeforeTaggedNodeChangeInFlowchart,inst);this._currentFlowchartNodeId= +newFlowchartNodeId;this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnAnyNodeChange,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnTaggedNodeChange,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnAnyNodeChangeInFlowchart,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnTaggedNodeChangeInFlowchart,inst);this._flowchartManager.PopFlowchartState();this.PopIsTriggerState();if(this.WasReleased())return;const currentFlowchartNodeElement=this.GetFlowchartElementById(this._currentFlowchartNodeId); +if(currentFlowchartNodeElement.GetType()==="reference"){const flowchartName=currentFlowchartNodeElement.GetReferenceFlowchartName();if(this._HasReferenceFlowchartState(currentFlowchartNodeElement)){this._previousFlowchartNodeIds.pop();const referenceFlowchartState=this._GetReferenceFlowchartState(currentFlowchartNodeElement);this._flowchartManager.SetCurrentFlowchartState(referenceFlowchartState,true,true,false);referenceFlowchartState._SetPreviousFlowchart(this,previousFlowchartNodeId);const rootFlowchartState= +this._GetRootFlowchartState();rootFlowchartState._SetCurrentReferenceFlowchart(referenceFlowchartState)}else{const flowchartStartNode=currentFlowchartNodeElement.GetReferenceFlowchartStartNodeTag();if(flowchartName){this._previousFlowchartNodeIds.pop();let flowchartTag=currentFlowchartNodeElement.GetReferenceFlowchartTag();if(!flowchartTag){flowchartTag=`${flowchartName}-ref`;let flowchartState=this._flowchartManager.GetFlowchartState(flowchartTag);while(flowchartState){flowchartTag=C3.IncrementNumberAtEndOf(flowchartTag); +flowchartState=this._flowchartManager.GetFlowchartState(flowchartTag)}}else{let flowchartState=this._flowchartManager.GetFlowchartState(flowchartTag);while(flowchartState){flowchartTag=C3.IncrementNumberAtEndOf(flowchartTag);flowchartState=this._flowchartManager.GetFlowchartState(flowchartTag)}}const flowchartState=this._flowchartManager.AddFlowchartState(flowchartName,flowchartStartNode,flowchartTag,this._pluginInstance,true);flowchartState._SetPreviousFlowchart(this,previousFlowchartNodeId);this._SetReferenceFlowchartState(currentFlowchartNodeElement, +flowchartState);const rootFlowchartState=this._GetRootFlowchartState();flowchartState._SetRootFlowchartState(rootFlowchartState);rootFlowchartState._SetCurrentReferenceFlowchart(flowchartState)}}}}_GetFlowchartNodeOutputAt(index){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(this._currentFlowchartNodeId);if(!flowchartNodeDataItem)return null;const flowchartNodeOutputDataItems=flowchartNodeDataItem.GetFlowchartNodeOutputData().GetFlowchartNodeOutputDataItems();if(!flowchartNodeOutputDataItems)return null; +const flowchartNodeOutputDataItem=flowchartNodeOutputDataItems[index];if(!flowchartNodeOutputDataItem)return null;return flowchartNodeOutputDataItem}_GetFlowchartNodeOutputByName(outputName){const flowchartNodeDataItem=this._flowchartDataItem.GetFlowchartElementById(this._currentFlowchartNodeId);if(!flowchartNodeDataItem)return null;const flowchartNodeOutputDataItem=flowchartNodeDataItem.GetFlowchartNodeOutputData().GetFlowchartNodeOutputDataItemByName(outputName);if(!flowchartNodeOutputDataItem)return null; +return flowchartNodeOutputDataItem}_SetStartFlowchartNode(startNodeId){if(typeof startNodeId==="number"){let startFlowchartNode=this.GetFlowchartElementById(startNodeId);if(!startFlowchartNode)startFlowchartNode=this._flowchartDataItem.GetFlowchartStartNode();this._startFlowchartNode=startFlowchartNode}else{let startFlowchartNode=this._flowchartDataItem.GetFlowchartNodeByTag(this._startNodeTag);if(!startFlowchartNode)startFlowchartNode=this._flowchartDataItem.GetFlowchartStartNode();this._startFlowchartNode= +startFlowchartNode}}_SaveToJson(){if(this._markForRelease)return null;return{"flowchartName":this._flowchartName,"flowchartTag":this._tag,"startNodeTag":this._startNodeTag,"currentNodeId":this._currentFlowchartNodeId,"previousNodeIds":this._previousFlowchartNodeIds,"pluginUID":this._pluginInstance.GetInstance().GetUID(),"reference":{"previousFlowchartTag":this._GetPreviousFlowchartState()?this._GetPreviousFlowchartState().GetTag():"","previousStartNodeId":C3.IsFiniteNumber(this._GetPreviousFlowchartStateStartNodeId())? +this._GetPreviousFlowchartStateStartNodeId():NaN,"referencesJson":this._GetFlowchartReferencesJson(),"currentReferenceFlowchartTag":this.GetCurrentReferenceFlowchart()?this.GetCurrentReferenceFlowchart().GetTag():"","rootFlowchartTag":this._GetRootFlowchartState()?this._GetRootFlowchartState().GetTag():""}}}_GetFlowchartReferencesJson(){if(!this._HasReferenceFlowchartStates())return null;const ret=[];for(const [flowchartNodeElement,flowchartState]of this._GetReferenceFlowchartStates().entries())ret.push({"flowchartElementId":flowchartNodeElement.GetFlowchartId(), +"flowchartStateTag":flowchartState.GetTag()});if(!ret.length)return null;return ret}_LoadFromJson(o){if(!o)return;this._flowchartName=o["flowchartName"];this._tag=o["flowchartTag"];this._startNodeTag=o["startNodeTag"];this._currentFlowchartNodeId=o["currentNodeId"];this._previousFlowchartNodeIds=o["previousNodeIds"];this._pluginUID=o["pluginUID"];if(o.hasOwnProperty("reference")){const referenceJson=o["reference"];this._previousFlowchartStateTag=referenceJson["previousFlowchartTag"];this._previousFlowchartStateStartNodeId= +referenceJson["previousStartNodeId"];this._referenceFlowchartStatesJson=referenceJson["referencesJson"];this._currentReferenceFlowchartStateTag=referenceJson["currentReferenceFlowchartTag"];this._rootFlowchartStateTag=referenceJson["rootFlowchartTag"]}this._SetStartFlowchartNode()}_GetPreviousFlowchartState(){if(typeof this._previousFlowchartStateTag==="string"&&this._previousFlowchartStateTag){this._previousFlowchartState=this._flowchartManager.GetFlowchartState(this._previousFlowchartStateTag); +this._previousFlowchartStateTag=""}return this._previousFlowchartState}_GetPreviousFlowchartStateStartNodeId(){return this._previousFlowchartStateStartNodeId}_SetPreviousFlowchart(previousFlowchartState,previousFlowchartStartNode){this._previousFlowchartState=previousFlowchartState;this._previousFlowchartStateStartNodeId=previousFlowchartStartNode}GetCurrentReferenceFlowchart(){if(typeof this._currentReferenceFlowchartStateTag==="string"&&this._currentReferenceFlowchartStateTag){this._currentReferenceFlowchartState= +this._flowchartManager.GetFlowchartState(this._currentReferenceFlowchartStateTag);this._currentReferenceFlowchartStateTag=""}return this._currentReferenceFlowchartState}_SetCurrentReferenceFlowchart(referenceFlowchartState){this._currentReferenceFlowchartState=referenceFlowchartState;if(this._currentReferenceFlowchartState===this)this._currentReferenceFlowchartState=null}_GetRootFlowchartState(){if(typeof this._rootFlowchartStateTag==="string"&&this._rootFlowchartStateTag){this._rootFlowchartState= +this._flowchartManager.GetFlowchartState(this._rootFlowchartStateTag);this._rootFlowchartStateTag=""}if(this._rootFlowchartState)return this._rootFlowchartState;return this}_SetRootFlowchartState(rootFlowchartState){this._rootFlowchartState=rootFlowchartState}_HasReferenceFlowchartStates(){this._RebuildReferenceFlowchartStates();return!!this._referenceFlowchartStates}_HasReferenceFlowchartState(flowchartNodeElement){this._RebuildReferenceFlowchartStates();return this._referenceFlowchartStates&&this._referenceFlowchartStates.has(flowchartNodeElement)}_RebuildReferenceFlowchartStates(){if(this._referenceFlowchartStatesJson){if(this._referenceFlowchartStates)this._referenceFlowchartStates.clear(); +if(!this._referenceFlowchartStates)this._referenceFlowchartStates=new Map;for(const referenceFlowchartStateJson of this._referenceFlowchartStatesJson){const flowchartState=this._flowchartManager.GetFlowchartState(referenceFlowchartStateJson["flowchartStateTag"]);const flowchartElement=flowchartState.GetFlowchartElementById(referenceFlowchartStateJson["flowchartElementId"]);this._referenceFlowchartStates.set(flowchartElement,flowchartState)}this._referenceFlowchartStatesJson=null}}_GetReferenceFlowchartStates(){this._RebuildReferenceFlowchartStates(); +return this._referenceFlowchartStates}_GetReferenceFlowchartState(flowchartNodeElement){this._RebuildReferenceFlowchartStates();return this._referenceFlowchartStates.get(flowchartNodeElement)}_SetReferenceFlowchartState(flowchartNodeElement,flowchartState){if(!this._referenceFlowchartStates)this._referenceFlowchartStates=new Map;this._referenceFlowchartStates.set(flowchartNodeElement,flowchartState)}}; + +} + +// flowcharts/state/flowchartStateManager.js +{ +'use strict';const C3=self.C3; +C3.FlowchartStateManager=class FlowchartStateManager{constructor(runtime){this._runtime=runtime;this._flowchartStates=new Map;this._currentFlowchartState=null;this._flowchartStateStack=[]}Release(){C3.clearArray(this._flowchartStateStack);this._flowchartStateStack=null;this._flowchartStates.clear();this._flowchartStates=null;this._currentFlowchartState=null;this._runtime=null}GetRuntime(){return this._runtime}AddFlowchartState(flowchartName,startNodeTag,flowchartTag,pluginInstance,setAsCurrent,pluginUID){const flowchartDataItem= +this._runtime.GetFlowchartManager().GetFlowchartDataItemByName(flowchartName);if(!flowchartDataItem){console.warn(`[Flowcharts] no flowchart found with name '${flowchartName}'`);return}if(this._flowchartStates.has(flowchartTag)){console.warn(`[Flowcharts] there already is a flowchart with the tag '${flowchartTag}'`);return}const flowchartState=new C3.FlowchartState(flowchartName,flowchartTag,startNodeTag,flowchartDataItem,this,pluginInstance,pluginUID);this._flowchartStates.set(flowchartTag,flowchartState); +if(setAsCurrent)this.SetCurrentFlowchartState(flowchartState,true);return flowchartState}RemoveFlowchartState(flowchartState){flowchartState.MarkForRelease();if(flowchartState.IsInTriggerState())return;const flowchartTag=flowchartState.GetTag();this._flowchartStates.delete(flowchartTag);flowchartState.Release();if(this._currentFlowchartState===flowchartState)this._currentFlowchartState=null}ResetFlowchartState(flowchartState){flowchartState.Reset()}GetFlowchartState(flowchartTag){return this._flowchartStates.get(flowchartTag)}PushFlowchartState(flowchartState){this._flowchartStateStack.push(flowchartState)}PopFlowchartState(){this._flowchartStateStack.pop()}SetCurrentFlowchartState(flowchartState, +triggerNodeChange=false,setStartNode=false,gotoCurrentReference=true){if(gotoCurrentReference){const currentReferenceFlowchartState=flowchartState.GetCurrentReferenceFlowchart();flowchartState=currentReferenceFlowchartState?currentReferenceFlowchartState:flowchartState}if(flowchartState===this._currentFlowchartState)return;this._TriggerBeforeFlowchartChange();this._TriggerAfterFlowchartChange(flowchartState,triggerNodeChange,setStartNode)}GetCurrentFlowchartState(tag){if(typeof tag==="string")return this.GetFlowchartState(tag); +else if(this._flowchartStateStack.length)return this._flowchartStateStack[this._flowchartStateStack.length-1];else return this._currentFlowchartState}_TriggerBeforeFlowchartChange(){if(!this._currentFlowchartState)return;if(this._currentFlowchartState.WasReleased())return;const inst=this._currentFlowchartState.GetPluginInstance().GetInstance();this._currentFlowchartState.PushIsTriggerState();this.PushFlowchartState(this._currentFlowchartState);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnBeforeFlowchartChange, +inst);this.PopFlowchartState();this._currentFlowchartState.PopIsTriggerState()}_TriggerAfterFlowchartChange(flowchartState,triggerNodeChange=false,setStartNode=false){this._currentFlowchartState=flowchartState;if(!this._currentFlowchartState)return;if(this._currentFlowchartState.WasReleased())return;const inst=this._currentFlowchartState.GetPluginInstance().GetInstance();this._currentFlowchartState.PushIsTriggerState();this.PushFlowchartState(this._currentFlowchartState);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnFlowchartChange, +inst);if(setStartNode===true||typeof setStartNode==="number")this._currentFlowchartState._SetStartFlowchartNode(setStartNode);if(triggerNodeChange){this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnAnyNodeChange,inst);this._runtime.Trigger(C3.Plugins.Flowchart.Cnds.OnTaggedNodeChange,inst)}this.PopFlowchartState();this._currentFlowchartState.PopIsTriggerState()}_SaveToJson(){return{"flowchartJsonObjects":[...this._flowchartStates.values()].map(fs=>fs._SaveToJson()),"currentFlowchartTag":this._currentFlowchartState? +this._currentFlowchartState.GetTag():null}}_LoadFromJson(o){if(!o)return;const newFlowchartStates=new Map;for(const flowchartJsonObject of o["flowchartJsonObjects"]){const flowchartTag=flowchartJsonObject["flowchartTag"];if(this._flowchartStates.has(flowchartTag)){const flowchartState=this._flowchartStates.get(flowchartTag);flowchartState._LoadFromJson(flowchartJsonObject);newFlowchartStates.set(flowchartTag,flowchartState)}else{const flowchartState=this.AddFlowchartState(flowchartJsonObject["flowchartName"], +flowchartJsonObject["startNodeTag"],flowchartJsonObject["flowchartTag"],null,false,flowchartJsonObject["pluginUID"]);flowchartState._LoadFromJson(flowchartJsonObject);newFlowchartStates.set(flowchartJsonObject["flowchartTag"],flowchartState)}}for(const [tag,state]of this._flowchartStates.entries()){if(newFlowchartStates.has(tag))continue;state.Release()}this._flowchartStates.clear();this._flowchartStates=newFlowchartStates;const currentFlowchartTag=this._flowchartStates.get(o["currentFlowchartTag"]); +if(currentFlowchartTag)this.SetCurrentFlowchartState(currentFlowchartTag,true)}}; + +} + +// flowcharts/data/flowchartDataManager.js +{ +'use strict';const C3=self.C3; +C3.FlowchartDataManager=class FlowchartDataManager{constructor(){this._flowchartDataItems=new Map}Release(){for(const flowchartDataItem of this._flowchartDataItems.values())flowchartDataItem.Release();this._flowchartDataItems.clear();this._flowchartDataItems=null}Add(data){const flowchartDataItem=new C3.FlowchartDataItem(data);const name=flowchartDataItem.GetName();this._flowchartDataItems.set(name,flowchartDataItem)}Get(name){return this._flowchartDataItems.get(name)}HasFlowcharts(){return!!this._flowchartDataItems.size}static CreateDataItems(items,jsonItems, +dataItemConstructor,dataContainer){if(!jsonItems)return;for(const jsonItem of jsonItems){const dataItem=new dataItemConstructor(jsonItem,dataContainer);items.push(dataItem)}}}; + +} + +// flowcharts/data/flowchartData.js +{ +'use strict';const C3=self.C3;const NAME=0;const NODES=1;C3.FlowchartDataItem=class FlowchartDataItem{constructor(flowchartDataJson){this._name=flowchartDataJson[NAME];this._flowchartNodeData=new C3.FlowchartNodeData(flowchartDataJson[NODES],this)}Release(){this._flowchartNodeData.Release();this._flowchartNodeData=null}GetFlowchartNodeData(){return this._flowchartNodeData}GetFlowchartElementById(id){return this._flowchartNodeData.GetFlowchartElementById(id)}GetFlowchartNodeByTag(tag){return this._flowchartNodeData.GetFlowchartNodeByTag(tag)}GetFlowchartStartNode(){return this._flowchartNodeData.GetFlowchartStartNode()}GetName(){return this._name}}; + +} + +// flowcharts/data/flowchartNodeData.js +{ +'use strict';const C3=self.C3;const FLOWCHART_ID=0;const TAG=1;const PARENT_FLOWCHART_IDS=2;const PARENT_OUTPUT_FLOWCHART_IDS=3;const CHILDREN_FLOWCHART_IDS=4;const OUTPUTS=5;const IS_START=6;const TYPE=7;const REFERENCE_FLOWCHART=8;const REFERENCE_FLOWCHART_START_NODE=9;const REFERENCE_FLOWCHART_TAG=10; +class FlowchartNodeDataItem{constructor(flowchartNodeJson,flowchartNodeData){this._flowchartNodeData=flowchartNodeData;this._type=flowchartNodeJson[TYPE];this._flowchartId=flowchartNodeJson[FLOWCHART_ID];this._tag=flowchartNodeJson[TAG];this._parentFlowchartIds=flowchartNodeJson[PARENT_FLOWCHART_IDS];this._parentOutputFlowchartIds=null;this._childrenFlowchartIds=null;if(this._type==="dictionary"){this._parentOutputFlowchartIds=flowchartNodeJson[PARENT_OUTPUT_FLOWCHART_IDS];this._childrenFlowchartIds= +flowchartNodeJson[CHILDREN_FLOWCHART_IDS]}this._isStart=flowchartNodeJson[IS_START];this._referenceFlowchartName=null;this._referenceFlowchartStartNodeTag=null;this._referenceFlowchartTag=null;if(this._type==="reference"){this._referenceFlowchartName=flowchartNodeJson[REFERENCE_FLOWCHART];this._referenceFlowchartStartNodeTag=flowchartNodeJson[REFERENCE_FLOWCHART_START_NODE];this._referenceFlowchartTag=flowchartNodeJson[REFERENCE_FLOWCHART_TAG]}this._flowchartNodeOutputData=new C3.FlowchartNodeOutputData(flowchartNodeJson[OUTPUTS], +this)}Release(){this._flowchartNodeData=null}GetFlowchartNodeData(){return this._flowchartNodeData}GetFlowchartNodeOutputData(){return this._flowchartNodeOutputData}GetFlowchartId(){return this._flowchartId}GetTag(){return this._tag}GetIsStart(){return this._isStart}GetParentFlowchartIds(){return this._parentFlowchartIds}GetParentOutputFlowchartIds(){return this._parentOutputFlowchartIds}GetChildrenFlowchartIds(){return this._childrenFlowchartIds}GetType(){return this._type}GetReferenceFlowchartName(){return this._referenceFlowchartName}GetReferenceFlowchartStartNodeTag(){return this._referenceFlowchartStartNodeTag}GetReferenceFlowchartTag(){return this._referenceFlowchartTag}} +C3.FlowchartNodeData=class FlowchartNodeData{constructor(flowchartNodesDataJson,flowchartDataItem){this._flowchartDataItem=flowchartDataItem;this._flowchartNodeItems=[];this._flowchartNodeItemsIdMap=new Map;this._flowchartNodeItemsTagMap=new Map;this._flowchartNodeStartItem=null;C3.FlowchartDataManager.CreateDataItems(this._flowchartNodeItems,flowchartNodesDataJson,FlowchartNodeDataItem,this);for(const flowchartNodeItem of this._flowchartNodeItems){const flowchartId=flowchartNodeItem.GetFlowchartId(); +const tag=flowchartNodeItem.GetTag();const isStart=flowchartNodeItem.GetIsStart();this._flowchartNodeItemsIdMap.set(flowchartId,flowchartNodeItem);if(tag)this._flowchartNodeItemsTagMap.set(tag,flowchartNodeItem);if(isStart)this._flowchartNodeStartItem=flowchartNodeItem;const flowchartNodeOutputData=flowchartNodeItem.GetFlowchartNodeOutputData();for(const flowchartNodeOutputDataItem of flowchartNodeOutputData.flowchartNodeOutputDataItems()){const flowchartId=flowchartNodeOutputDataItem.GetFlowchartId(); +this._flowchartNodeItemsIdMap.set(flowchartId,flowchartNodeOutputDataItem)}}}Release(){this._flowchartDataItem=null;for(const flowchartNodeDataItem of this._flowchartNodeItems)flowchartNodeDataItem.Release();C3.clearArray(this._flowchartNodeItems);this._flowchartNodeItems=null}GetFlowchartDataItem(){return this._flowchartDataItem}GetFlowchartElementById(id){return this._flowchartNodeItemsIdMap.get(id)}GetFlowchartNodeByTag(tag){return this._flowchartNodeItemsTagMap.get(tag)}GetFlowchartStartNode(){return this._flowchartNodeStartItem}*flowchartNodeDataItems(){for(const flowchartNodeDataItem of this._flowchartNodeItems)yield flowchartNodeDataItem}}; + +} + +// flowcharts/data/flowchartNodeOutputData.js +{ +'use strict';const C3=self.C3;const FLOWCHART_ID=0;const NAME=1;const VALUE=2;const CONNECTED_FLOWCHART_NODE_FLOWCHART_ID=3; +class FlowchartNodeDataOutputItem{constructor(flowchartNodeOutputJson,flowchartNodeOutputData){this._flowchartNodeOutputData=flowchartNodeOutputData;this._flowchartId=flowchartNodeOutputJson[FLOWCHART_ID];this._name=flowchartNodeOutputJson[NAME];this._value=flowchartNodeOutputJson[VALUE];this._connectedFlowchartNodeFlowchartId=flowchartNodeOutputJson[CONNECTED_FLOWCHART_NODE_FLOWCHART_ID]}Release(){this._flowchartNodeOutputData=null}GetFlowchartNodeOutputData(){return this._flowchartNodeOutputData}GetFlowchartId(){return this._flowchartId}GetName(){return this._name}GetValue(){return this._value}GetConnectedFlowchartNodeFlowchartId(){return this._connectedFlowchartNodeFlowchartId}} +C3.FlowchartNodeOutputData=class FlowchartNodeOutputData{constructor(flowchartNodeOuputsDataJson,flowchartDataNodeItem){this._flowchartDataNodeItem=flowchartDataNodeItem;this._flowchartNodeOutputItems=[];this._flowchartNodeOutputItemsNameMap=new Map;C3.FlowchartDataManager.CreateDataItems(this._flowchartNodeOutputItems,flowchartNodeOuputsDataJson,FlowchartNodeDataOutputItem,this);for(const flowchartNodeOutputItem of this._flowchartNodeOutputItems)this._flowchartNodeOutputItemsNameMap.set(flowchartNodeOutputItem.GetName(), +flowchartNodeOutputItem)}Release(){this._flowchartDataNodeItem=null;for(const flowchartNodeDataItem of this._flowchartNodeOutputItems)flowchartNodeDataItem.Release();C3.clearArray(this._flowchartNodeOutputItems);this._flowchartNodeOutputItems=null}GetFlowchartNodeDataItem(){return this._flowchartDataNodeItem}GetFlowchartNodeOutputDataItemCount(){return this._flowchartNodeOutputItems.length}GetFlowchartNodeOutputDataItems(){return this._flowchartNodeOutputItems}GetFlowchartNodeOutputDataItemByName(outputName){return this._flowchartNodeOutputItemsNameMap.get(outputName)}*flowchartNodeOutputDataItems(){for(const flowchartNodeDataItem of this._flowchartNodeOutputItems)yield flowchartNodeDataItem}}; + +} + +// events/stacks/solStack.js +{ +'use strict';const C3=self.C3; +C3.SolStack=class SolStack extends C3.DefendedBase{constructor(objectClass){super();this._objectClass=objectClass;this._stack=[];this._stack.push(C3.New(C3.Sol,this));this._index=0;this._current=this._stack[0]}Release(){for(const s of this._stack)s.Release();C3.clearArray(this._stack);this._current=null;this._objectClass=null}GetObjectClass(){return this._objectClass}GetCurrentSol(){return this._current}GetOneBelowCurrentSol(){return this._stack[this._index-1]}Clear(){this.GetCurrentSol().Clear()}PushClean(){const stack=this._stack; +const index=++this._index;if(index===stack.length){const sol=C3.New(C3.Sol,this);stack.push(sol);this._current=sol}else{const sol=stack[index];sol.Reset();this._current=sol}}PushCopy(){const stack=this._stack;const index=++this._index;if(index===stack.length)stack.push(C3.New(C3.Sol,this));const sol=stack[index];sol.Copy(stack[index-1]);this._current=sol}Pop(){this._current=this._stack[--this._index]}RemoveInstances(s){const stack=this._stack;for(let i=0,len=stack.length;i=0}GetCurrent(){return this._stack[this._index]}Push(){++this._index;if(this._index=== +this._stack.length){const ret=C3.New(C3.Loop,this);this._stack.push(ret);return ret}else{const ret=this._stack[this._index];ret.Reset();return ret}}Pop(){--this._index}FindByName(name){const stack=this._stack;for(let i=this._index;i>=0;--i){const loop=stack[i];if(loop.GetName()===name)return loop}return null}_GetStack(){return this._stack.slice(0,this._index+1)}}; + +} + +// events/stacks/loop.js +{ +'use strict';const C3=self.C3;C3.Loop=class Loop extends C3.DefendedBase{constructor(loopStack){super();this._loopStack=loopStack;this._name="";this._index=0;this._isStopped=false;this._end=NaN}Reset(){this._name="";this._index=0;this._isStopped=false;this._end=NaN}SetName(name){this._name=name}GetName(){return this._name}SetIndex(i){this._index=i}GetIndex(){return this._index}Stop(){this._isStopped=true}IsStopped(){return this._isStopped}SetEnd(e){this._end=e}GetEnd(){return this._end}}; + +} + +// events/stacks/arrayStack.js +{ +'use strict';const C3=self.C3;C3.ArrayStack=class ArrayStack extends C3.DefendedBase{constructor(){super();this._stack=[];this._index=-1}Release(){C3.clearArray(this._stack)}GetCurrent(){return this._stack[this._index]}Push(){++this._index;if(this._index===this._stack.length){const ret=[];this._stack.push(ret);return ret}else return this._stack[this._index]}Pop(){--this._index}}; + +} + +// events/eventSheetManager.js +{ +'use strict';const C3=self.C3;const assert=self.assert;function SortSolArray(a,b){return a.GetIndex()-b.GetIndex()}function IsSolArrayIdentical(a,b){for(let i=0,len=a.length;ithis._InvokeFunctionFromJS(name,params)}Release(){this.ClearAllScheduledWaits();this._eventStack.Release(); +this._eventStack=null;this._localVarStack.Release();this._localVarStack=null;C3.clearArray(this._queuedTriggers);C3.clearArray(this._queuedDebugTriggers);this._runtime=null;C3.clearArray(this._allSheets);this._sheetsByName.clear()}Create(eventSheetData){const eventSheet=C3.New(C3.EventSheet,this,eventSheetData);this._allSheets.push(eventSheet);this._sheetsByName.set(eventSheet.GetName().toLowerCase(),eventSheet)}_AddTriggerToPostInit(trig){this._triggersToPostInit.push(trig)}_PostInit(){for(const customActionBlock of this._customActionBlocksMap.values())customActionBlock._CheckOverrideState(); +for(const functionBlock of this._functionBlocksByName.values())functionBlock._PostInit();for(const customActionBlock of this._customActionBlocksMap.values())customActionBlock._PostInit();for(const sheet of this._allSheets)sheet._PostInit();for(const sheet of this._allSheets)sheet._UpdateDeepIncludes();for(const trig of this._triggersToPostInit)trig._PostInit(false);C3.clearArray(this._triggersToPostInit);this._localVarStack._SetInitialValues(this._localVarInitialValues)}GetRuntime(){return this._runtime}GetEventSheetByName(name){return this._sheetsByName.get(name.toLowerCase())|| +null}_RegisterGroup(group){this._allGroups.push(group);this._groupsByName.set(group.GetGroupName(),group)}_RegisterEventBlock(eventBlock){this._blocksBySid.set(eventBlock.GetSID(),eventBlock)}_RegisterCondition(condition){this._cndsBySid.set(condition.GetSID(),condition)}_RegisterAction(action){this._actsBySid.set(action.GetSID(),action)}_RegisterFunctionBlock(functionBlock){switch(functionBlock.GetFunctionType()){case 0:this._functionBlocksByName.set(functionBlock.GetFunctionName().toLowerCase(), +functionBlock);break;case 1:this._customActionBlocksMap.set(functionBlock.GetFunctionName().toLowerCase(),functionBlock);break;default:}}_RegisterEventVariable(ev){this._eventVarsBySid.set(ev.GetSID(),ev);if(ev.IsGlobal())this._allGlobalVars.push(ev);else this._allLocalVars.push(ev)}_DeduplicateSolModifierList(arr){if(arr.length>=2)arr.sort(SortSolArray);let candidateList=this._allUniqueSolModifiers.get(arr.length);if(!candidateList){candidateList=[];this._allUniqueSolModifiers.set(arr.length,candidateList)}for(let i= +0,len=candidateList.length;iresolve=r);this._queuedDebugTriggers.push([method,inst,behaviorType,resolve]);return ret}*_RunQueuedDebugTriggersGen(){if(this._runtime.HitBreakpoint())throw new Error("should not be in breakpoint");const layoutManager=this._runtime.GetLayoutManager();while(this._queuedDebugTriggers.length){const [method,inst,behaviorType,resolve]=this._queuedDebugTriggers.shift();const ret=yield*this._DebugTrigger(layoutManager,method,inst,behaviorType);resolve(ret)}}async RunQueuedDebugTriggersAsync(){for(const breakEventObject of this._RunQueuedDebugTriggersGen())await this._runtime.DebugBreak(breakEventObject)}_FastTrigger(layoutManager, +method,inst,value){let ret=false;const layout=layoutManager.GetMainRunningLayout();const eventSheet=layout.GetEventSheet();if(!eventSheet)return;this._executingTriggerDepth++;this._runtime.PushCurrentLayout(layout);const deepIncludes=eventSheet.deepIncludes();for(let i=0,len=deepIncludes.length;i0}_IncTriggerDepth(){return++this._executingTriggerDepth}_DecTriggerDepth(){--this._executingTriggerDepth}IsRunningEvents(){return this._runningEventsDepth>0}IsInEventEngine(){return this.IsRunningEvents()||this.IsInTrigger()}_RunQueuedTriggers(layoutManager){for(const [method,inst,behaviorType]of this._queuedTriggers)this._Trigger(layoutManager, +method,inst,behaviorType);C3.clearArray(this._queuedTriggers)}BlockFlushingInstances(e){if(e)this._blockFlushingDepth++;else this._blockFlushingDepth--}IsFlushingBlocked(){return this._blockFlushingDepth>0}ClearSol(solModifiers){for(let i=0,len=solModifiers.length;i0){for(const t of pushSet)t.GetSolStack().PushClean();return[...pushSet]}else return null}AddScheduledWait(){const w=C3.New(C3.ScheduledWait,this);this._scheduledWaits.push(w);return w}scheduledWaits(){return this._scheduledWaits}RunScheduledWaits(){if(!this._scheduledWaits.length)return;const frame=this.GetCurrentEventStackFrame();let didAnyRun=false;this._runningEventsDepth++;for(let i=0, +len=this._scheduledWaits.length;iw.ShouldRelease());for(const w of toRelease)w.Release()}ClearAllScheduledWaits(){for(const w of this._scheduledWaits)w.Release();C3.clearArray(this._scheduledWaits)}RemoveInstancesFromScheduledWaits(s){for(const w of this._scheduledWaits)w.RemoveInstances(s)}AddAsyncActionPromise(p){this._asyncActionPromises.push(p)}ClearAsyncActionPromises(){C3.clearArray(this._asyncActionPromises)}GetPromiseForAllAsyncActions(){const ret= +Promise.all(this._asyncActionPromises);this._asyncActionPromises=[];return ret}_SaveToJson(){return{"groups":this._SaveGroupsToJson(),"cnds":this._SaveCndsToJson(),"acts":this._SaveActsToJson(),"vars":this._SaveVarsToJson(),"waits":this._SaveScheduledWaitsToJson()}}_LoadFromJson(o){this._LoadGroupsFromJson(o["groups"]);this._LoadCndsFromJson(o["cnds"]);this._LoadActsFromJson(o["acts"]);this._LoadVarsFromJson(o["vars"]);this._LoadScheduledWaitsFromJson(o["waits"])}_SaveGroupsToJson(){const o={};for(const group of this.GetAllGroups())o[group.GetSID().toString()]= +group.IsGroupActive();return o}_LoadGroupsFromJson(o){for(const [sidStr,data]of Object.entries(o)){const sid=parseInt(sidStr,10);const group=this.GetEventGroupBySID(sid);if(group)group.SetGroupActive(data)}}_SaveCndsToJson(){const o={};for(const [sid,cnd]of this._cndsBySid){const data=cnd._SaveToJson();if(data)o[sid.toString()]=data}return o}_LoadCndsFromJson(o){const map=new Map;for(const [sidStr,data]of Object.entries(o))map.set(parseInt(sidStr,10),data);for(const [sid,cnd]of this._cndsBySid)cnd._LoadFromJson(map.get(sid)|| +null)}_SaveActsToJson(){const o={};for(const [sid,act]of this._actsBySid){const data=act._SaveToJson();if(data)o[sid.toString()]=data}return o}_LoadActsFromJson(o){const map=new Map;for(const [sidStr,data]of Object.entries(o))map.set(parseInt(sidStr,10),data);for(const [sid,act]of this._actsBySid)act._LoadFromJson(map.get(sid)||null)}_SaveVarsToJson(){const o={};for(const [sid,eventVar]of this._eventVarsBySid)if(!eventVar.IsConstant()&&(eventVar.IsGlobal()||eventVar.IsStatic()))o[sid.toString()]= +eventVar.GetValue();return o}_LoadVarsFromJson(o){for(const [sidStr,data]of Object.entries(o)){const sid=parseInt(sidStr,10);const eventVar=this.GetEventVariableBySID(sid);if(eventVar)eventVar.SetValue(data)}}_SaveScheduledWaitsToJson(){return this._scheduledWaits.filter(w=>!w.IsPromise()).map(w=>w._SaveToJson())}_LoadScheduledWaitsFromJson(arr){this.ClearAllScheduledWaits();for(const data of arr){const sw=C3.ScheduledWait._CreateFromJson(this,data);if(sw)this._scheduledWaits.push(sw)}}_GetPerfRecords(){return[...this._runtime.GetLayoutManager().runningLayouts()].map(l=> +l.GetEventSheet()).filter(eventSheet=>eventSheet).map(e=>e._GetPerfRecord())}FindFirstFunctionBlockParent(parent){while(parent){const scopeParent=parent.GetScopeParent();if(scopeParent instanceof C3.FunctionBlock)return scopeParent;parent=scopeParent}return null}_InvokeFunctionFromJS(name,params){if(!Array.isArray(params))params=[];const functionBlock=this.GetFunctionBlockByName(name.toLowerCase());if(!functionBlock)return null;if(!functionBlock.IsEnabled())return functionBlock.GetDefaultReturnValue(); +const functionParameters=functionBlock.GetFunctionParameters();if(params.length1;if(isRecursive)eventSheetManager.GetLocalVarStack().Push();const frame=eventStack.Push(trigger);if(inst){const objectClass=trigger.GetConditions()[index].GetObjectClass();const sol=objectClass.GetCurrentSol();sol.SetSinglePicked(inst);if(inst.IsInContainer())inst.SetSiblingsSinglePicked()}let okToRun=true;if(trigger.GetParent()){const parents=trigger.GetTriggerParents();for(let i=0,len=parents.length;i< +len;++i)if(!parents[i].RunPreTrigger(frame)){okToRun=false;break}}if(okToRun){if(trigger.IsOrBlock())trigger.RunOrBlockTrigger(frame,index);else trigger.Run(frame);ret=frame.GetLastEventTrue()}eventStack.Pop();if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();eventSheetManager.PopSol(trigger.GetSolModifiersIncludingParents());if(currentEvent)eventSheetManager.PopSol(currentEvent.GetSolModifiersIncludingParents());if(!currentEvent&&triggerDepth===1){eventSheetManager.ClearAsyncActionPromises(); +if(!eventSheetManager.IsFlushingBlocked())runtime.FlushPendingInstances()}return ret}*_DebugExecuteTrigger(inst,trigger,index){const runtime=this._runtime;const eventSheetManager=this._eventSheetManager;const currentEvent=eventSheetManager.GetCurrentEvent();const eventStack=eventSheetManager.GetEventStack();const triggerDepth=eventSheetManager.GetTriggerDepth();let ret=false;if(currentEvent)eventSheetManager.PushCleanSol(currentEvent.GetSolModifiersIncludingParents());eventSheetManager.PushCleanSol(trigger.GetSolModifiersIncludingParents()); +const isRecursive=triggerDepth>1;if(isRecursive)eventSheetManager.GetLocalVarStack().Push();const frame=eventStack.Push(trigger);if(inst){const objectClass=trigger.GetConditions()[index].GetObjectClass();const sol=objectClass.GetCurrentSol();sol.SetSinglePicked(inst);if(inst.IsInContainer())inst.SetSiblingsSinglePicked()}let okToRun=true;if(trigger.GetParent()){const parents=trigger.GetTriggerParents();for(let i=0,len=parents.length;i0){let hasAnyActionWithReturnType=false;for(const a of this._actions){a._PostInit();if(a.HasReturnType())hasAnyActionWithReturnType=true}if(hasAnyActionWithReturnType){this._RunActions=this._RunActions_ReturnValue; +this._DebugRunActions=this._DebugRunActions_ReturnValue}else{this._RunActions=this._RunActions_Fast;this._DebugRunActions=this._DebugRunActions_Fast}}const subEvents=this._subEvents;for(let i=0,len=subEvents.length;ic.DebugCanRunFast());dd.canRunAllActionsFast=this._actions.every(a=>a.DebugCanRunFast());dd.canRunAllSubEventsFast=this._subEvents.every(s=>s.DebugCanRunFast());dd.canRunSelfFast=dd.canRunAllConditionsFast&&dd.canRunAllActionsFast&&dd.canRunAllSubEventsFast}_UpdateCanRunFastRecursive(){let e=this;do{e._UpdateCanRunFast(); +e=e.GetParent()}while(e)}_IdentifyTopLevelGroup(){if(!this.IsGroup())return;let p=this.GetParent();this._isTopLevelGroup=true;while(p){if(!p.IsGroup()){this._isTopLevelGroup=false;break}p=p.GetParent()}}_IdentifySolModifiersIncludingParents(){const allObjectClasses=this._runtime.GetAllObjectClasses();if(this._solModifiers===allObjectClasses)this._solModifiersIncludingParents=allObjectClasses;else{this._solModifiersIncludingParents=C3.cloneArray(this._solModifiers);let p=this.GetParent();while(p){for(const o of p._solModifiers)this._AddParentSolModifier(o); +p=p.GetParent()}const eventSheetManager=this.GetEventSheetManager();this._solModifiers=eventSheetManager._DeduplicateSolModifierList(this._solModifiers);this._solModifiersIncludingParents=eventSheetManager._DeduplicateSolModifierList(this._solModifiersIncludingParents)}}_IdentifyTriggerParents(){if(!this.HasAnyTriggeredCondition())return;this._triggerParents=[];let p=this.GetParent();while(p){this._triggerParents.push(p);p=p.GetParent()}this._triggerParents.reverse()}SetSolWriterAfterCnds(){this._isSolWriterAfterCnds= +true;if(this._parent)this._parent.SetSolWriterAfterCnds()}IsSolWriterAfterCnds(){return this._isSolWriterAfterCnds}GetSolModifiers(){return this._solModifiers}GetSolModifiersIncludingParents(){if(!this._hasGotSolModifiersIncludingParents){this._hasGotSolModifiersIncludingParents=true;this._IdentifySolModifiersIncludingParents()}return this._solModifiersIncludingParents}HasSolModifier(objectClass){return this._solModifiers.includes(objectClass)}GetTriggerParents(){return this._triggerParents}GetEventSheet(){return this._eventSheet}GetEventSheetManager(){return this._eventSheet.GetEventSheetManager()}GetRuntime(){return this._runtime}GetParent(){return this._parent}_SetScopeParent(p){this._scopeParent= +p}GetScopeParent(){return this._scopeParent||this._parent}GetDisplayNumber(){return this._displayNumber}IsDebugBreakable(){return this._debugData&&this._debugData.isBreakable}IsDebugBreakpoint(){return this.IsDebugBreakable()&&this._debugData.isBreakpoint}_SetDebugBreakpoint(b){this._debugData.isBreakpoint=!!b;this._UpdateCanRunFastRecursive()}IsGroup(){return this._isGroup}IsTopLevelGroup(){return this._isTopLevelGroup}IsElseBlock(){return this._isElseBlock}HasElseBlock(){return this._hasElseBlock}GetGroupName(){return this._groupName}IsGroupActive(){return this._isGroupActive}ResetInitialActivation(){this.SetGroupActive(this._isInitiallyActive)}SetGroupActive(a){a= +!!a;if(!this._isGroup)throw new Error("not a group");if(this._isGroupActive===a)return;this._isGroupActive=a;for(const include of this._containedIncludes)include.UpdateActive();if(this._containedIncludes.length){const currentLayout=this._runtime.GetCurrentLayout();const mainEventSheet=currentLayout.GetEventSheet();if(mainEventSheet)mainEventSheet._UpdateDeepIncludes()}}GetSID(){return this._sid}IsOrBlock(){return this._isOrBlock}IsTrigger(){return this._conditions.length&&this._conditions[0].IsTrigger()}IsForFunctionBlock(){return this._scopeParent&& +this._scopeParent instanceof C3.FunctionBlock}HasAnyTriggeredCondition(){return this.IsForFunctionBlock()||this._conditions.some(c=>c.IsTrigger())}GetConditions(){return this._conditions}GetConditionCount(){return this._conditions.length}GetConditionAt(i){i=Math.floor(i);if(i<0||i>=this._conditions.length)throw new RangeError("invalid condition index");return this._conditions[i]}GetConditionByDebugIndex(i){return this.GetConditionAt(i)}IsFirstConditionOfType(cnd){let i=cnd.GetIndex();if(i===0)return true; +--i;const objectClass=cnd.IsSystemOrSingleGlobalCondition()?cnd.GetFirstObjectParameterObjectClass():cnd.GetObjectClass();for(;i>=0;--i){const c=this._conditions[i];if(objectClass===c.GetObjectClass()||c.IsSystemOrSingleGlobalCondition()&&c.GetFirstObjectParameterObjectClass()===objectClass)return false}return true}GetActions(){return this._actions}GetActionCount(){return this._actions.length}GetActionAt(i){i=Math.floor(i);if(i<0||i>=this._actions.length)throw new RangeError("invalid action index"); +return this._actions[i]}GetActionByDebugIndex(i){i=Math.floor(i);const ret=this._actions.find(a=>a.GetDebugIndex()===i);if(!ret)throw new RangeError("invalid action debug index");return ret}_HasActionIndex(i){i=Math.floor(i);return i>=0&&ie instanceof C3.EventVariable)}RunPreTrigger(frame){frame.SetCurrentEvent(this);const conditions=this._conditions;let isAnyTrue=conditions.length=== +0;for(let i=0,len=conditions.length;i0)if(isRecursive){const paramResults=parameters.map(p=>p.Get(0));eventSheetManager.GetLocalVarStack().Push();this._scopeParent.SetFunctionParameters(paramResults)}else this._scopeParent.EvaluateFunctionParameters(parameters);else if(isRecursive)eventSheetManager.GetLocalVarStack().Push()}RunAsFunctionCall(combinedSolModifiers, +parameters,isCopyPicked,pickInfo){let ret;let asyncId;const hasAnySolModifiers=combinedSolModifiers.length>0;let extraPopSolModifiers=null;const runtime=this._runtime;const eventStack=this._eventStack;const eventSheetManager=runtime.GetEventSheetManager();const triggerDepth=eventSheetManager._IncTriggerDepth();const isRecursive=triggerDepth>1;this._EvaluateFunctionCallParameters(eventSheetManager,parameters,isRecursive);if(hasAnySolModifiers)if(isCopyPicked)eventSheetManager.PushCopySol(combinedSolModifiers); +else eventSheetManager.PushCleanSol(combinedSolModifiers);if(pickInfo!==null){if(pickInfo.copyFromObjectClass){const copyFromSol=isCopyPicked?pickInfo.copyFromObjectClass.GetCurrentSol():pickInfo.copyFromObjectClass.GetSolStack().GetOneBelowCurrentSol();const copyToSol=pickInfo.copyToObjectClass.GetCurrentSol();copyToSol.SetArrayPicked(copyFromSol.GetInstances());copyToSol.ClearElseInstances();if(!isCopyPicked)pickInfo.copyToObjectClass.ApplySolToContainer()}else if(pickInfo.pickObjectClass){const objectClassSol= +pickInfo.pickObjectClass.GetCurrentSol();objectClassSol.SetArrayPicked(pickInfo.pickInstances);objectClassSol.ClearElseInstances()}if(pickInfo.pushCleanSolDynamic)extraPopSolModifiers=eventSheetManager.PushCleanSolDynamic(combinedSolModifiers)}const frame=eventStack.Push(this);if(isCopyPicked)frame.SetDynamicSolModifiers(combinedSolModifiers);if(this._CheckParentsOKToRun(frame)){frame.SetCurrentEvent(this);const isAsync=this._scopeParent.IsAsync();if(isAsync)[asyncId,ret]=this._scopeParent.StartAsyncFunctionCall(); +this._RunAndBlock(frame);if(isAsync)this._scopeParent.MaybeFinishAsyncFunctionCall(asyncId)}eventStack.Pop();if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();if(extraPopSolModifiers!==null)eventSheetManager.PopSol(extraPopSolModifiers);if(hasAnySolModifiers)eventSheetManager.PopSol(combinedSolModifiers);eventSheetManager._DecTriggerDepth();return ret}*DebugRunAsFunctionCall(combinedSolModifiers,parameters,isCopyPicked,pickInfo){let ret;let asyncId;if(this.IsDebugBreakpoint()||this._runtime.DebugBreakNext())yield this; +const hasAnySolModifiers=combinedSolModifiers.length>0;let extraPopSolModifiers=null;const runtime=this._runtime;const eventStack=this._eventStack;const eventSheetManager=runtime.GetEventSheetManager();const triggerDepth=eventSheetManager._IncTriggerDepth();const isRecursive=triggerDepth>1;this._EvaluateFunctionCallParameters(eventSheetManager,parameters,isRecursive);if(hasAnySolModifiers)if(isCopyPicked)eventSheetManager.PushCopySol(combinedSolModifiers);else eventSheetManager.PushCleanSol(combinedSolModifiers); +if(pickInfo!==null){if(pickInfo.copyFromObjectClass){const copyFromSol=isCopyPicked?pickInfo.copyFromObjectClass.GetCurrentSol():pickInfo.copyFromObjectClass.GetSolStack().GetOneBelowCurrentSol();const copyToSol=pickInfo.copyToObjectClass.GetCurrentSol();copyToSol.SetArrayPicked(copyFromSol.GetInstances());copyToSol.ClearElseInstances();if(!isCopyPicked)pickInfo.copyToObjectClass.ApplySolToContainer()}else if(pickInfo.pickObjectClass){const objectClassSol=pickInfo.pickObjectClass.GetCurrentSol(); +objectClassSol.SetArrayPicked(pickInfo.pickInstances);objectClassSol.ClearElseInstances()}if(pickInfo.pushCleanSolDynamic)extraPopSolModifiers=eventSheetManager.PushCleanSolDynamic(combinedSolModifiers)}const frame=eventStack.Push(this);if(isCopyPicked)frame.SetDynamicSolModifiers(combinedSolModifiers);if(yield*this._DebugCheckParentsOKToRun(frame)){frame.SetCurrentEvent(this);const isAsync=this._scopeParent.IsAsync();if(isAsync)[asyncId,ret]=this._scopeParent.StartAsyncFunctionCall();yield*this._DebugRunAndBlock(frame); +if(isAsync)this._scopeParent.MaybeFinishAsyncFunctionCall(asyncId)}eventStack.Pop();if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();if(extraPopSolModifiers!==null)eventSheetManager.PopSol(extraPopSolModifiers);if(hasAnySolModifiers)eventSheetManager.PopSol(combinedSolModifiers);eventSheetManager._DecTriggerDepth();return ret}RunAsMappedFunctionCall(paramResults,isCopyPicked){const solModifiers=this.GetSolModifiersIncludingParents();const hasAnySolModifiers=solModifiers.length>0;const runtime= +this._runtime;const eventStack=this._eventStack;const eventSheetManager=runtime.GetEventSheetManager();const triggerDepth=eventSheetManager._IncTriggerDepth();const isRecursive=triggerDepth>1;if(isRecursive)eventSheetManager.GetLocalVarStack().Push();this._scopeParent.SetFunctionParameters(paramResults);if(hasAnySolModifiers)if(isCopyPicked)eventSheetManager.PushCopySol(solModifiers);else eventSheetManager.PushCleanSol(solModifiers);const frame=eventStack.Push(this);if(this._CheckParentsOKToRun(frame)){frame.SetCurrentEvent(this); +this._RunAndBlock(frame)}eventStack.Pop();if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();if(hasAnySolModifiers)eventSheetManager.PopSol(solModifiers);eventSheetManager._DecTriggerDepth()}*DebugRunAsMappedFunctionCall(paramResults,isCopyPicked){if(this.IsDebugBreakpoint()||this._runtime.DebugBreakNext())yield this;const solModifiers=this.GetSolModifiersIncludingParents();const hasAnySolModifiers=solModifiers.length>0;const runtime=this._runtime;const eventStack=this._eventStack;const eventSheetManager= +runtime.GetEventSheetManager();const triggerDepth=eventSheetManager._IncTriggerDepth();const isRecursive=triggerDepth>1;if(isRecursive)eventSheetManager.GetLocalVarStack().Push();this._scopeParent.SetFunctionParameters(paramResults);if(hasAnySolModifiers)if(isCopyPicked)eventSheetManager.PushCopySol(solModifiers);else eventSheetManager.PushCleanSol(solModifiers);const frame=eventStack.Push(this);if(yield*this._DebugCheckParentsOKToRun(frame)){frame.SetCurrentEvent(this);yield*this._DebugRunAndBlock(frame)}eventStack.Pop(); +if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();if(hasAnySolModifiers)eventSheetManager.PopSol(solModifiers);eventSheetManager._DecTriggerDepth()}RunAsExpressionFunctionCall(combinedSolModifiers,isCopyPicked,returnType,defaultReturnValue,...paramResults){let ret;let asyncId;const hasAnySolModifiers=combinedSolModifiers.length>0;const runtime=this._runtime;const eventStack=this._eventStack;const eventSheetManager=runtime.GetEventSheetManager();const triggerDepth=eventSheetManager._IncTriggerDepth(); +const isRecursive=triggerDepth>1;if(isRecursive)eventSheetManager.GetLocalVarStack().Push();if(paramResults.length>0)this._scopeParent.SetFunctionParameters(paramResults);if(hasAnySolModifiers)if(isCopyPicked)eventSheetManager.PushCopySol(combinedSolModifiers);else eventSheetManager.PushCleanSol(combinedSolModifiers);const frame=eventStack.Push(this);frame.InitCallFunctionExpression(returnType,defaultReturnValue);eventStack.PushExpFunc(frame);runtime.SetDebuggingEnabled(false);if(this._CheckParentsOKToRun(frame)){frame.SetCurrentEvent(this); +const isAsync=this._scopeParent.IsAsync();if(isAsync)[asyncId,ret]=this._scopeParent.StartAsyncFunctionCall();this._RunAndBlock(frame);if(isAsync)this._scopeParent.MaybeFinishAsyncFunctionCall(asyncId)}runtime.SetDebuggingEnabled(true);eventStack.Pop();eventStack.PopExpFunc();if(isRecursive)eventSheetManager.GetLocalVarStack().Pop();if(hasAnySolModifiers)eventSheetManager.PopSol(combinedSolModifiers);eventSheetManager._DecTriggerDepth();return ret||frame.GetFunctionReturnValue()}}; + +} + +// events/eventScript.js +{ +'use strict';const C3=self.C3;const EMPTY_SOL_MODIFIERS=[];let hadUserScriptException=false; +C3.EventScript=class EventScript extends C3.DefendedBase{constructor(eventSheet,parent,data){super();const runtime=eventSheet.GetRuntime();const eventSheetManager=eventSheet.GetEventSheetManager();this._eventSheet=eventSheet;this._eventSheetManager=eventSheetManager;this._runtime=eventSheet.GetRuntime();this._parent=parent;const userMethod=runtime.GetObjectReference(data[1]);this._func=userMethod;this._displayNumber=data[2];this._eventSheet._RegisterEventByDisplayNumber(this,this._displayNumber); +this._debugData=runtime.IsDebug()?{isBreakpoint:data[3][0],isBreakable:data[3][1]}:null}static Create(eventSheet,parent,data){return C3.New(C3.EventScript,eventSheet,parent,data)}_PostInit(){const userMethod=this._func;const localVars=this._runtime.GetEventSheetManager()._GetLocalVariablesScriptInterface(this);this._func=userMethod.bind(null,this._runtime.GetIRuntime(),localVars)}GetParent(){return this._parent}GetScopeParent(){return this._parent}GetEventSheet(){return this._eventSheet}GetDisplayNumber(){return this._displayNumber}IsDebugBreakable(){return this._debugData&& +this._debugData.isBreakable}IsDebugBreakpoint(){return this.IsDebugBreakable()&&this._debugData.isBreakpoint}_SetDebugBreakpoint(b){this._debugData.isBreakpoint=!!b}IsElseBlock(){return false}GetSolModifiers(){return EMPTY_SOL_MODIFIERS}GetSolModifiersIncludingParents(){if(this._parent)return this._parent.GetSolModifiersIncludingParents();else return EMPTY_SOL_MODIFIERS}Run(frame){frame.SetCurrentEvent(this);this._eventSheetManager.AddAsyncActionPromise(this._RunUserScript())}async _RunUserScript(){try{await this._func()}catch(err){console.error(`Unhandled exception running script %c${this.GetEventSheet().GetName()}, event ${this.GetDisplayNumber()}:`, +"font-size: 1.2em; font-weight: bold;",err);if(self.C3Debugger)self.C3Debugger._SetLastErrorScript(this);if(!hadUserScriptException){console.info(`%cTip:%c run this to highlight in Construct the last script that had an error: %cgoToLastErrorScript()`,"font-weight: bold; text-decoration: underline","","font-weight: bold");hadUserScriptException=true}}}*DebugRun(frame){frame.SetCurrentEvent(this);if(this.IsDebugBreakpoint()||this._runtime.DebugBreakNext())yield this;this.Run(frame)}DebugCanRunFast(){return!this.IsDebugBreakpoint()&& +!this._runtime.DebugBreakNext()}static HadUserScriptException(){return hadUserScriptException}static SetHadUserScriptException(){hadUserScriptException=true}}; + +} + +// events/functionBlock.js +{ +'use strict';const C3=self.C3;const assert=self.assert; +C3.FunctionBlock=class FunctionBlock extends C3.DefendedBase{constructor(eventSheet,parent,data){super();this._eventSheet=eventSheet;this._runtime=eventSheet.GetRuntime();this._parent=parent;this._functionType=0;this._functionName="";this._returnType=0;this._functionParameters=[];this._isEnabled=true;this._aceName="";this._objectClass=null;this._hasOverrides=false;this._innerLocalVariables=[];this._isCopyPicked=false;this._isAsync=false;this._nextAsyncId=0;this._currentAsyncId=-1;this._asyncMap=new Map; +this._eventBlock=C3.EventBlock.Create(eventSheet,parent,data);this._eventBlock._SetScopeParent(this)}InitFunctionBlock(funcData){this._functionType=0;this._functionName=funcData[0];this._returnType=funcData[1];this._functionParameters=funcData[2].map(paramData=>C3.EventVariable.Create(this._eventSheet,this,paramData));this._isEnabled=funcData[3];this._isAsync=funcData[4];this._isCopyPicked=funcData[5]}InitCustomACEBlock(funcData){this._functionType=1;this._aceName=funcData[1];this._objectClass=this._runtime.GetObjectClassByIndex(funcData[2]); +this._eventBlock._AddSolModifier(this._objectClass);this._functionName=this._objectClass.GetName()+"."+this._aceName;this._returnType=funcData[3];this._functionParameters=funcData[4].map(paramData=>C3.EventVariable.Create(this._eventSheet,this,paramData));this._isEnabled=funcData[5];this._isAsync=funcData[6];this._isCopyPicked=funcData[7];this._objectClass.AddCustomAction(this)}static CreateFunctionBlock(eventSheet,parent,data){const ret=C3.New(C3.FunctionBlock,eventSheet,parent,data);const funcData= +data[1];ret.InitFunctionBlock(funcData);return ret}static CreateCustomACEBlock(eventSheet,parent,data){const ret=C3.New(C3.FunctionBlock,eventSheet,parent,data);const funcData=data[1];ret.InitCustomACEBlock(funcData);return ret}_CheckOverrideState(){if(this._objectClass&&this._objectClass.IsFamily())for(const objectType of this._objectClass.GetFamilyMembers())if(objectType.HasOwnCustomActionByName(this._aceName)){this._hasOverrides=true;break}}_PostInit(){for(const fp of this._functionParameters)fp._PostInit(); +this._eventBlock._PostInit(false)}GetFunctionType(){return this._functionType}_GetAllLocalVariablesInScope(){return this._functionParameters}GetFunctionParameters(){return this._functionParameters}GetFunctionParameterCount(){return this._functionParameters.length}_RegisterLocalVariable(localVariable){this._innerLocalVariables.push(localVariable)}_GetAllInnerLocalVariables(){return this._innerLocalVariables}EvaluateFunctionParameters(parameters){const functionParameters=this._functionParameters;for(let i= +0,len=functionParameters.length;ip.GetValue())}GetParent(){return this._parent}GetScopeParent(){return this._parent}GetFunctionName(){return this._functionName}GetACEName(){return this._aceName}HasCustomACEOverrides(){return this._hasOverrides}GetReturnType(){return this._returnType}GetObjectClass(){return this._objectClass}IsEnabled(){return this._isEnabled}GetDefaultReturnValue(){switch(this._returnType){case 0:return null; +case 2:return"";default:return 0}}GetEventBlock(){return this._eventBlock}IsCopyPicked(){return this._isCopyPicked}IsAsync(){return this._isAsync}StartAsyncFunctionCall(){const asyncId=this._nextAsyncId++;this._currentAsyncId=asyncId;let resolve;const promise=new Promise(r=>resolve=r);this._asyncMap.set(asyncId,{resolve,pauseCount:0});return[asyncId,promise]}MaybeFinishAsyncFunctionCall(asyncId){const info=this._asyncMap.get(asyncId);if(info.pauseCount===0){info.resolve();this._asyncMap.delete(asyncId)}this._currentAsyncId= +-1}PauseCurrentAsyncFunction(){const info=this._asyncMap.get(this._currentAsyncId);info.pauseCount++;return this._currentAsyncId}ResumeAsyncFunction(asyncId){this._currentAsyncId=asyncId;const info=this._asyncMap.get(asyncId);info.pauseCount--}RunAsFamilyCustomActionWithOverrides(combinedSolModifiers,parameters){const objectTypeMap=new Map;const familyInstances=[];for(const inst of this._objectClass.GetCurrentSol().GetInstances()){const objectType=inst.GetObjectClass();if(objectType.HasOwnCustomActionByName(this._aceName)){const arr= +objectTypeMap.get(objectType);if(Array.isArray(arr))arr.push(inst);else objectTypeMap.set(objectType,[inst])}else familyInstances.push(inst)}if(familyInstances.length>0)this._eventBlock.RunAsFunctionCall(combinedSolModifiers,parameters,this._isCopyPicked,{pickObjectClass:this._objectClass,pickInstances:familyInstances});if(objectTypeMap.size>0)for(const [objectType,arr]of objectTypeMap){const eventBlock=objectType.GetOwnCustomActionByName(this._aceName).GetEventBlock();const allCombinedSolModifiers= +[...(new Set([...combinedSolModifiers,...eventBlock.GetSolModifiers()]))];eventBlock.RunAsFunctionCall(allCombinedSolModifiers,parameters,this._isCopyPicked,{pickObjectClass:objectType,pickInstances:arr})}}*DebugRunAsFamilyCustomActionWithOverrides(combinedSolModifiers,parameters){const objectTypeMap=new Map;const familyInstances=[];for(const inst of this._objectClass.GetCurrentSol().GetInstances()){const objectType=inst.GetObjectClass();if(objectType.HasOwnCustomActionByName(this._aceName)){const arr= +objectTypeMap.get(objectType);if(Array.isArray(arr))arr.push(inst);else objectTypeMap.set(objectType,[inst])}else familyInstances.push(inst)}if(familyInstances.length>0)yield*this._eventBlock.DebugRunAsFunctionCall(combinedSolModifiers,parameters,this._isCopyPicked,{pickObjectClass:this._objectClass,pickInstances:familyInstances});if(objectTypeMap.size>0)for(const [objectType,arr]of objectTypeMap){const eventBlock=objectType.GetOwnCustomActionByName(this._aceName).GetEventBlock();const allCombinedSolModifiers= +[...(new Set([...combinedSolModifiers,...eventBlock.GetSolModifiers()]))];yield*eventBlock.DebugRunAsFunctionCall(allCombinedSolModifiers,parameters,this._isCopyPicked,{pickObjectClass:objectType,pickInstances:arr})}}}; + +} + +// events/eventVariable.js +{ +'use strict';const C3=self.C3;const EMPTY_SOL_MODIFIERS=[]; +C3.EventVariable=class EventVariable extends C3.DefendedBase{constructor(eventSheet,parent,data){super();const eventSheetManager=eventSheet.GetEventSheetManager();this._eventSheet=eventSheet;this._eventSheetManager=eventSheetManager;this._runtime=eventSheet.GetRuntime();this._parent=parent;this._localVarStack=eventSheetManager.GetLocalVarStack();this._name=data[1];this._type=data[2];this._initialValue=data[3];this._isStatic=!!data[4];this._isConstant=!!data[5];this._isFunctionParameter=parent instanceof +C3.FunctionBlock;this._sid=data[6];this._jsPropName=this._runtime.GetJsPropName(data[8]);this._scriptSetter=v=>this.SetValue(v);this._scriptGetter=()=>this.GetValue();this._hasSingleValue=!this._parent||this._isStatic||this._isConstant;this._value=this._initialValue;this._localIndex=-1;if(this.IsBoolean())this._value=this._value?1:0;if(this.IsLocal()&&!this.IsStatic()&&!this.IsConstant())this._localIndex=eventSheetManager._GetNextLocalVarIndex(this);eventSheetManager._RegisterEventVariable(this)}static Create(eventSheet, +parent,data){return C3.New(C3.EventVariable,eventSheet,parent,data)}_PostInit(){if(this.IsLocal()&&!this.IsStatic()&&!this.IsConstant()&&!this.IsFunctionParameter()){const functionBlock=this._eventSheetManager.FindFirstFunctionBlockParent(this);if(functionBlock)functionBlock._RegisterLocalVariable(this)}}GetName(){return this._name}GetJsPropName(){return this._jsPropName}GetParent(){return this._parent}GetScopeParent(){return this.GetParent()}IsGlobal(){return!this.GetParent()}IsLocal(){return!this.IsGlobal()}IsFunctionParameter(){return this._isFunctionParameter}IsStatic(){return this._isStatic}IsConstant(){return this._isConstant}IsNumber(){return this._type=== +0}IsString(){return this._type===1}IsBoolean(){return this._type===2}IsElseBlock(){return false}GetSID(){return this._sid}GetInitialValue(){return this._initialValue}GetSolModifiers(){return EMPTY_SOL_MODIFIERS}Run(frame){if(this.IsLocal()&&!this.IsStatic()&&!this.IsConstant())this.SetValue(this.GetInitialValue())}DebugCanRunFast(){return true}*DebugRun(frame){this.Run(frame)}SetValue(v){if(this.IsNumber()){if(typeof v!=="number")v=parseFloat(v)}else if(this.IsString()){if(typeof v!=="string")v=v.toString()}else if(this.IsBoolean())v= +v?1:0;if(this._hasSingleValue)this._value=v;else this._localVarStack.GetCurrent()[this._localIndex]=v}GetValue(){return this._hasSingleValue?this._value:this._localVarStack.GetCurrent()[this._localIndex]}GetTypedValue(){let ret=this.GetValue();if(this.IsBoolean())ret=!!ret;return ret}ResetToInitialValue(){this._value=this._initialValue}_GetScriptInterfaceDescriptor(){return{configurable:false,enumerable:true,get:this._scriptGetter,set:this._scriptSetter}}}; + +} + +// events/eventInclude.js +{ +'use strict';const C3=self.C3;const assert=self.assert;const EMPTY_SOL_MODIFIERS=[]; +C3.EventInclude=class EventInclude extends C3.DefendedBase{constructor(eventSheet,parent,data){super();const eventSheetManager=eventSheet.GetEventSheetManager();this._eventSheet=eventSheet;this._eventSheetManager=eventSheetManager;this._runtime=eventSheet.GetRuntime();this._parent=parent;this._includeSheet=null;this._includeSheetName=data[1];this._isActive=true}static Create(eventSheet,parent,data){return C3.New(C3.EventInclude,eventSheet,parent,data)}_PostInit(){this._includeSheet=this._eventSheetManager.GetEventSheetByName(this._includeSheetName); +this._eventSheet._AddShallowInclude(this);let p=this.GetParent();while(p){if(p instanceof C3.EventBlock&&p.IsGroup())p._AddContainedInclude(this);p=p.GetParent()}this.UpdateActive();if(this._runtime.IsDebug())this._eventSheet._GetPerfRecord().children.push(this._includeSheet._GetPerfRecord())}GetParent(){return this._parent}GetSolModifiers(){return EMPTY_SOL_MODIFIERS}GetIncludeSheet(){return this._includeSheet}Run(frame){const pushSol=!!this.GetParent();const allObjectClasses=this._runtime.GetAllObjectClasses(); +if(pushSol)this._eventSheetManager.PushCleanSol(allObjectClasses);this._includeSheet.Run();if(pushSol)this._eventSheetManager.PopSol(allObjectClasses)}*DebugRun(frame){const pushSol=!!this.GetParent();const allObjectClasses=this._runtime.GetAllObjectClasses();if(pushSol)this._eventSheetManager.PushCleanSol(allObjectClasses);yield*this._includeSheet.DebugRun();if(pushSol)this._eventSheetManager.PopSol(allObjectClasses)}DebugCanRunFast(){return false}IsActive(){return this._isActive}UpdateActive(){let p= +this.GetParent();while(p){if(p instanceof C3.EventBlock&&p.IsGroup()&&!p.IsGroupActive()){this._isActive=false;return}p=p.GetParent()}this._isActive=true}}; + +} + +// events/expNode.js +{ +'use strict';const C3=self.C3;const assert=self.assert;C3.ExpNode=class ExpNode extends C3.DefendedBase{constructor(owner){super();this._owner=owner;this._runtime=owner.GetRuntime()}_PostInit(){}static CreateNode(owner,data){const type=data[0];const Classes=[BehaviorExpressionNode,ObjectExpressionNode,InstVarExpressionNode,EventVarExpNode,SystemExpressionExpNode,CallFunctionExpressionExpNode];return C3.New(Classes[type],owner,data)}}; +class SystemExpressionExpNode extends C3.ExpNode{constructor(owner,data){super(owner);this._systemPlugin=this._runtime.GetSystemPlugin();this._func=this._runtime.GetObjectReference(data[1]);if(this._func===C3.Plugins.System.Exps.random||this._func===C3.Plugins.System.Exps.choose)this._owner.SetVariesPerInstance()}GetBoundMethod(){return this._systemPlugin._GetBoundACEMethod(this._func,this._systemPlugin)}} +class CallFunctionExpressionExpNode extends C3.ExpNode{constructor(owner,data){super(owner);this._functionBlock=null;this._functionName=data[1];this._owner.SetVariesPerInstance()}_PostInit(){const eventSheetManager=this._runtime.GetEventSheetManager();this._functionBlock=eventSheetManager.GetFunctionBlockByName(this._functionName);this._functionName=null;const myEventBlock=this._owner.GetEventBlock();const callEventBlock=this._functionBlock.GetEventBlock();this._combinedSolModifiers=[...(new Set([...myEventBlock.GetSolModifiersIncludingParents(), +...callEventBlock.GetSolModifiersIncludingParents()]))];this._combinedSolModifiers=eventSheetManager._DeduplicateSolModifierList(this._combinedSolModifiers)}GetBoundMethod(){const functionBlock=this._functionBlock;if(functionBlock.IsEnabled()){const callEventBlock=functionBlock.GetEventBlock();return C3.EventBlock.prototype.RunAsExpressionFunctionCall.bind(callEventBlock,this._combinedSolModifiers,functionBlock.IsCopyPicked(),functionBlock.GetReturnType(),functionBlock.GetDefaultReturnValue())}else{const defaultReturnValue= +functionBlock.GetDefaultReturnValue();return()=>defaultReturnValue}}}function WrapIndex(index,len){if(index>=len)return index%len;else if(index<0){if(index<=-len)index%=len;if(index<0)index+=len;return index}else return index} +class ObjectExpressionNode extends C3.ExpNode{constructor(owner,data){super(owner);this._objectClass=this._runtime.GetObjectClassByIndex(data[1]);this._func=this._runtime.GetObjectReference(data[2]);this._returnsString=!!data[3];this._eventStack=this._runtime.GetEventSheetManager().GetEventStack();this._owner._MaybeVaryFor(this._objectClass)}GetBoundMethod(){return this._objectClass.GetPlugin()._GetBoundACEMethod(this._func,this._objectClass.GetSingleGlobalInstance().GetSdkInstance())}ExpObject(...args){const objectClass= +this._objectClass;const instances=objectClass.GetCurrentSol().GetExpressionInstances();const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(this._owner.GetSolIndex(),len);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(objectClass);return this._func.apply(instances[index].GetSdkInstance(),args)}ExpObject_InstExpr(instIndex,...args){const objectClass=this._objectClass;const instances=objectClass.GetInstances();const len=instances.length;if(len=== +0)return this._returnsString?"":0;const index=WrapIndex(instIndex,len);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(objectClass);return this._func.apply(instances[index].GetSdkInstance(),args)}} +class InstVarExpressionNode extends C3.ExpNode{constructor(owner,data){super(owner);this._objectClass=this._runtime.GetObjectClassByIndex(data[1]);this._varIndex=data[3];this._returnsString=!!data[2];this._owner._MaybeVaryFor(this._objectClass)}ExpInstVar(){const instances=this._objectClass.GetCurrentSol().GetExpressionInstances();const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(this._owner.GetSolIndex(),len);return instances[index]._GetInstanceVariableValueUnchecked(this._varIndex)}ExpInstVar_Family(){const objectClass= +this._objectClass;const instances=objectClass.GetCurrentSol().GetExpressionInstances();const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(this._owner.GetSolIndex(),len);const inst=instances[index];const offset=inst.GetObjectClass().GetFamilyInstanceVariableOffset(objectClass.GetFamilyIndex());return inst._GetInstanceVariableValueUnchecked(this._varIndex+offset)}ExpInstVar_InstExpr(instIndex){const objectClass=this._objectClass;const instances=objectClass.GetInstances(); +const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(instIndex,len);const inst=instances[index];let offset=0;if(objectClass.IsFamily())offset=inst.GetObjectClass().GetFamilyInstanceVariableOffset(objectClass.GetFamilyIndex());return inst._GetInstanceVariableValueUnchecked(this._varIndex+offset)}} +class BehaviorExpressionNode extends C3.ExpNode{constructor(owner,data){super(owner);this._objectClass=this._runtime.GetObjectClassByIndex(data[1]);this._behaviorType=this._objectClass.GetBehaviorTypeByName(data[2]);this._behaviorIndex=this._objectClass.GetBehaviorIndexByName(data[2]);this._func=this._runtime.GetObjectReference(data[3]);this._returnsString=!!data[4];this._eventStack=this._runtime.GetEventSheetManager().GetEventStack();this._owner._MaybeVaryFor(this._objectClass)}ExpBehavior(...args){const objectClass= +this._objectClass;const instances=objectClass.GetCurrentSol().GetExpressionInstances();const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(this._owner.GetSolIndex(),len);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(objectClass);const inst=instances[index];let offset=0;if(objectClass.IsFamily())offset=inst.GetObjectClass().GetFamilyBehaviorOffset(objectClass.GetFamilyIndex());return this._func.apply(inst.GetBehaviorInstances()[this._behaviorIndex+ +offset].GetSdkInstance(),args)}ExpBehavior_InstExpr(instIndex,...args){const objectClass=this._objectClass;const instances=objectClass.GetInstances();const len=instances.length;if(len===0)return this._returnsString?"":0;const index=WrapIndex(instIndex,len);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(objectClass);const inst=instances[index];let offset=0;if(objectClass.IsFamily())offset=inst.GetObjectClass().GetFamilyBehaviorOffset(objectClass.GetFamilyIndex());return this._func.apply(inst.GetBehaviorInstances()[this._behaviorIndex+ +offset].GetSdkInstance(),args)}}class EventVarExpNode extends C3.ExpNode{constructor(owner,data){super(owner);this._eventVar=null;this._eventVarSid=data[1]}_PostInit(){this._eventVar=this._runtime.GetEventSheetManager().GetEventVariableBySID(this._eventVarSid)}GetVar(){return this._eventVar}}; + +} + +// events/parameter.js +{ +'use strict';const C3=self.C3;const assert=self.assert; +C3.Parameter=class Parameter extends C3.DefendedBase{constructor(owner,type,index){super();this._owner=owner;this._index=index;this._type=type;this.Get=null;this._variesPerInstance=false;this._isConstant=false}static Create(owner,data,index){const type=data[0];const Classes=[ExpressionParameter,StringExpressionParameter,FileParameter,ComboParameter,ObjectParameter,LayerExpressionParameter,LayoutParameter,ExpressionParameter,ComboParameter,ComboParameter,InstVarParameter,EventVarParameter,FileParameter, +VariadicParameter,StringExpressionParameter,TimelineParameter,BooleanParameter,FunctionParameter,EaseParameter,TilemapBrushParameter,TemplateExpressionParameter,FlowchartParameter];return C3.New(Classes[type],owner,type,index,data)}_PostInit(){}SetVariesPerInstance(){this._variesPerInstance=true}_MaybeVaryFor(objectClass){if(this._variesPerInstance)return;if(!objectClass)return;if(!objectClass.GetPlugin().IsSingleGlobal())this._variesPerInstance=true}VariesPerInstance(){return this._variesPerInstance}GetIndex(){return this._index}GetRuntime(){return this._owner.GetRuntime()}GetEventBlock(){return this._owner.GetEventBlock()}IsConstant(){return this._isConstant}IsObjectParameter(){return this._type=== +4}};function GetExpressionFunc(number){const ret=self.C3_ExpressionFuncs[number];if(!ret)throw new Error("invalid expression number");return ret} +class ExpressionParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._solIndex=0;const expData=data[1];this._expressionNumber=expData[0];this._numberedNodes=[];this._expressionFunc=null;for(let i=1,len=expData.length;i=this._numberedNodes.length)throw new RangeError("invalid numbered node"); +return this._numberedNodes[i]}_PostInit(){for(const node of this._numberedNodes)node._PostInit();const func=GetExpressionFunc(this._expressionNumber);if(this._numberedNodes.length)this._expressionFunc=func(this);else this._expressionFunc=func}GetSolIndex(){return this._solIndex}GetExpression(solIndex){this._solIndex=solIndex;return this._expressionFunc()}} +class StringExpressionParameter extends ExpressionParameter{constructor(owner,type,index,data){super(owner,type,index,data);this.Get=this.GetStringExpression;if(type===14){this.GetEventBlock().SetAllSolModifiers();if(this._owner instanceof C3.Action)this.GetEventBlock().SetSolWriterAfterCnds()}}GetStringExpression(solIndex){this._solIndex=solIndex;const ret=this._expressionFunc();if(typeof ret==="string")return ret;else return""}_GetFastTriggerValue(){return GetExpressionFunc(this._expressionNumber)()}} +class LayerExpressionParameter extends ExpressionParameter{constructor(owner,type,index,data){super(owner,type,index,data);if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetILayer;else this.Get=this.GetLayer;this._isConstant=false}GetLayer(solIndex){this._solIndex=solIndex;const ret=this._expressionFunc();const layout=this.GetRuntime().GetCurrentLayout();return layout.GetLayer(ret)}GetILayer(solIndex){const layer=this.GetLayer();return layer?layer.GetILayer():null}} +class ComboParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._combo=data[1];this.Get=this.GetCombo;this._isConstant=true}GetCombo(){return this._combo}}class BooleanParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._bool=data[1];this.Get=this.GetBoolean;this._isConstant=true}GetBoolean(){return this._bool}} +class ObjectParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._objectClass=this.GetRuntime().GetObjectClassByIndex(data[1]);if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetIObjectClass;else this.Get=this.GetObjectClass;const eventBlock=this.GetEventBlock();eventBlock._AddSolModifier(this._objectClass);if(this._owner instanceof C3.Action)eventBlock.SetSolWriterAfterCnds();else if(eventBlock.GetParent())eventBlock.GetParent().SetSolWriterAfterCnds(); +this._isConstant=true}GetObjectClass(){return this._objectClass}GetIObjectClass(){return this._objectClass?this._objectClass.GetIObjectClass():null}} +class LayoutParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._layout=this.GetRuntime().GetLayoutManager().GetLayoutByName(data[1]);if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetILayout;else this.Get=this.GetLayout;this._isConstant=true}GetLayout(){return this._layout}GetILayout(){return this._layout?this._layout.GetILayout():null}} +class TimelineParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._timeline=this.GetRuntime().GetTimelineManager().GetTimelineByName(data[1]);if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetITimelineState;else this.Get=this.GetTimeline;this._isConstant=true}GetTimeline(){return this._timeline}GetITimelineState(){return this._timeline?this._timeline.GetITimelineState():null}} +class FileParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._fileInfo=data[1];this.Get=this.GetFile;this._isConstant=true}GetFile(){return this._fileInfo}} +class InstVarParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._instVarIndex=data[1];const ownerObjectClass=this._owner.GetObjectClass();if(this._owner instanceof C3.Condition&&this._owner.IsStatic()){this.Get=this.GetInstanceVariable;this._isConstant=true}else if(ownerObjectClass&&ownerObjectClass.IsFamily()){this.Get=this.GetFamilyInstanceVariable;this.SetVariesPerInstance()}else{this.Get=this.GetInstanceVariable;this._isConstant=true}}GetInstanceVariable(){return this._instVarIndex}GetFamilyInstanceVariable(solIndex){solIndex= +solIndex||0;const familyType=this._owner.GetObjectClass();const sol=familyType.GetCurrentSol();const instances=sol.GetInstances();let realType=null;if(instances.length)realType=instances[solIndex%instances.length].GetObjectClass();else if(sol.HasAnyElseInstances()){const elseInstances=sol.GetElseInstances();realType=elseInstances[solIndex%elseInstances.length].GetObjectClass()}else if(familyType.GetInstanceCount()>0){const familyInstances=familyType.GetInstances();realType=familyInstances[solIndex% +familyInstances.length].GetObjectClass()}else return 0;return this._instVarIndex+realType.GetFamilyInstanceVariableOffset(familyType.GetFamilyIndex())}} +class EventVarParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._eventVarSid=data[1];this._eventVar=null;if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetIEventVariable;else this.Get=this.GetEventVariable;this._isConstant=true}_PostInit(){this._eventVar=this.GetRuntime().GetEventSheetManager().GetEventVariableBySID(this._eventVarSid)}GetEventVariable(){return this._eventVar}GetIEventVariable(){return null}} +class FunctionParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._functionBlockName=data[1];this._functionBlock=null;if(owner.GetImplementationSdkVersion()>=2)this.Get=this.GetIFunction;else this.Get=this.GetFunction;this._isConstant=true}_PostInit(){this._functionBlock=this.GetRuntime().GetEventSheetManager().GetFunctionBlockByName(this._functionBlockName);this._functionBlockName=null}GetFunction(){return this._functionBlock}GetIFunction(){return null}} +class VariadicParameter extends C3.Parameter{constructor(owner,type,index,data){super(owner,type,index);this._subParams=[];this._variadicRet=[];this._isConstant=true;for(let i=1,len=data.length;i0;this._isFastTrigger=data[3]===2;this._isLooping=!!data[4];this._isInverted=!!data[5];this._isStatic=!!data[6];this._sid=data[7];this._isInOrBlock=this._eventBlock.IsOrBlock();this._objectClass=null;this._behaviorType=null;this._behaviorIndex= +-1;this._systemPlugin=null;this.Run=noop;this.DebugRun=noop;this._parameters=[];this._results=[];this._anyParamVariesPerInstance=false;this._savedData=null;this._unsavedData=null;this._debugData=this._runtime.IsDebug()?{isBreakpoint:data[8][0],canDebug:data[8][1]}:null;if(data[0]===-1)this._systemPlugin=this._runtime.GetSystemPlugin();else{this._objectClass=this._runtime.GetObjectClassByIndex(data[0]);if(data[2]){this._behaviorType=this._objectClass.GetBehaviorTypeByName(data[2]);this._behaviorIndex= +this._objectClass.GetBehaviorIndexByName(data[2])}if(this._eventBlock.GetParent())this._eventBlock.GetParent().SetSolWriterAfterCnds()}if(data.length===10){let paramData=data[9];for(let data of paramData){this._parameters.push(C3.Parameter.Create(this,data,this._parameters.length));this._results.push(0)}}if(this._parameters.length===0){this._parameters=EMPTY_PARAMS_ARRAY;this._results=EMPTY_PARAMS_ARRAY}this._eventBlock.GetEventSheetManager()._RegisterCondition(this)}static Create(eventBlock,data, +index){return C3.New(C3.Condition,eventBlock,data,index)}_PostInit(){for(const param of this._parameters){param._PostInit();if(param.VariesPerInstance())this._anyParamVariesPerInstance=true}if(this._isFastTrigger){this.Run=this._RunFastTrigger;this.DebugRun=this._DebugRunFastTrigger}else if(this._systemPlugin){this._SetSystemRunMethod();this.DebugRun=this._DebugRunSystem}else if(this._objectClass.GetPlugin().IsSingleGlobal()){this._SetSingleGlobalRunMethod();this.DebugRun=this._DebugRunSingleGlobal}else if(this._isStatic){this.Run= +this._RunStatic;this.DebugRun=this._DebugRunStatic}else{this.Run=this._RunObject;this.DebugRun=this._DebugRunObject}}_SetSystemRunMethod(){const plugin=this._systemPlugin;const bindThis=this._systemPlugin;this._SetRunMethodForBoundFunc(plugin,bindThis,this._RunSystem)}_SetSingleGlobalRunMethod(){const plugin=this._objectClass.GetPlugin();const bindThis=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();this._SetRunMethodForBoundFunc(plugin,bindThis,this._RunSingleGlobal)}_SetRunMethodForBoundFunc(plugin, +bindThis,fallbackMethod){const func=this._func;const isInverted=this._isInverted;const parameters=this._parameters;if(parameters.length===0){const boundFunc=plugin._GetBoundACEMethod(func,bindThis);if(isInverted)this.Run=function RunSingleCnd_0param(){return C3.xor(boundFunc(),isInverted)};else this.Run=boundFunc}else if(parameters.length===1){const param0=parameters[0];if(!isInverted&¶m0.IsConstant())this.Run=plugin._GetBoundACEMethod_1param(func,bindThis,param0.Get(0));else{const boundFunc= +plugin._GetBoundACEMethod(func,bindThis);this.Run=function RunSingleCnd_1param(){return C3.xor(boundFunc(param0.Get(0)),isInverted)}}}else if(parameters.length===2){const param0=parameters[0];const param1=parameters[1];if(!isInverted&¶m0.IsConstant()&¶m1.IsConstant())this.Run=plugin._GetBoundACEMethod_2params(func,bindThis,param0.Get(0),param1.Get(0));else{const boundFunc=plugin._GetBoundACEMethod(func,bindThis);this.Run=function RunSingleCnd_2params(){return C3.xor(boundFunc(param0.Get(0), +param1.Get(0)),isInverted)}}}else if(parameters.length===3){const param0=parameters[0];const param1=parameters[1];const param2=parameters[2];if(!isInverted&¶m0.IsConstant()&¶m1.IsConstant()&¶m2.IsConstant())this.Run=plugin._GetBoundACEMethod_3params(func,bindThis,param0.Get(0),param1.Get(0),param2.Get(0));else{const boundFunc=plugin._GetBoundACEMethod(func,bindThis);this.Run=function RunSingleCnd_3params(){return C3.xor(boundFunc(param0.Get(0),param1.Get(0),param2.Get(0)),isInverted)}}}else this.Run= +fallbackMethod}GetSID(){return this._sid}_GetFunc(){return this._func}GetObjectClass(){return this._objectClass}GetBehaviorType(){return this._behaviorType}GetImplementationAddon(){if(this._behaviorType)return this._behaviorType.GetBehavior();else if(this._objectClass)return this._objectClass.GetPlugin();else return null}GetImplementationSdkVersion(){const addon=this.GetImplementationAddon();return addon?addon.GetSdkVersion():1}GetEventBlock(){return this._eventBlock}GetRuntime(){return this._runtime}GetIndex(){return this._index}GetDebugIndex(){return this.GetIndex()}IsTrigger(){return this._isTrigger}IsFastTrigger(){return this._isFastTrigger}IsInverted(){return this._isInverted}IsLooping(){return this._isLooping}IsStatic(){return this._isStatic}IsBreakpoint(){return this._debugData.isBreakpoint}IsSystemCondition(){return!!this._systemPlugin}IsSystemOrSingleGlobalCondition(){return this.IsSystemCondition()|| +this._objectClass.GetPlugin().IsSingleGlobal()}GetFirstObjectParameterObjectClass(){for(const p of this._parameters)if(p.IsObjectParameter())return p.GetObjectClass();return null}_SetBreakpoint(b){this._debugData.isBreakpoint=!!b;this._eventBlock._UpdateCanRunFastRecursive()}_DebugReturnsGenerator(){return this._debugData.canDebug}DebugCanRunFast(){return!this.IsBreakpoint()&&!this._runtime.DebugBreakNext()&&!this._DebugReturnsGenerator()}GetSavedDataMap(){if(!this._savedData)this._savedData=new Map; +return this._savedData}GetUnsavedDataMap(){if(!this._unsavedData)this._unsavedData=new Map;return this._unsavedData}_RunSystem(){const results=this._results;EvalParams(this._parameters,results);return C3.xor(this._func.apply(this._systemPlugin,results),this._isInverted)}*_DebugRunSystem(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;if(this._DebugReturnsGenerator()){const results=this._results;EvalParams(this._parameters,results);let ret=this._func.apply(this._systemPlugin,results); +if(C3.IsIterator(ret))ret=yield*ret;return C3.xor(ret,this._isInverted)}else return this.Run()}_RunSingleGlobal(){const results=this._results;EvalParams(this._parameters,results);const inst=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();return C3.xor(this._func.apply(inst,results),this._isInverted)}*_DebugRunSingleGlobal(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;if(this._DebugReturnsGenerator()){const results=this._results;EvalParams(this._parameters,results); +const inst=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();let ret=this._func.apply(inst,results);if(C3.IsIterator(ret))ret=yield*ret;return C3.xor(ret,this._isInverted)}else return this.Run()}_RunFastTrigger(){return true}*_DebugRunFastTrigger(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;return true}_GetStaticConditionThis(){if(this._behaviorType)if(this._behaviorType.GetBehavior().GetSdkVersion()>=2)throw new Error("not yet implemented");else return this._behaviorType; +else if(this._objectClass.GetPlugin().GetSdkVersion()>=2)return this._objectClass.GetIObjectClass();else return this._objectClass}_RunStatic(){const results=this._results;EvalParams(this._parameters,results);const ret=this._func.apply(this._GetStaticConditionThis(),results);this._objectClass.ApplySolToContainer();return ret}*_DebugRunStatic(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;if(this._DebugReturnsGenerator()){const results=this._results;EvalParams(this._parameters, +results);let ret=this._func.apply(this._GetStaticConditionThis(),results);if(C3.IsIterator(ret))ret=yield*ret;this._objectClass.ApplySolToContainer();return ret}else return this.Run()}_RunObject(){const parameters=this._parameters;const results=this._results;const sol=this._objectClass.GetCurrentSol();for(let i=0,len=parameters.length;i= +0;const allInstances=objectClass.GetInstances();const paramsVary=this._anyParamVariesPerInstance;const results=this._results;const func=this._func;const isInverted=this._isInverted;const isInOrBlock=this._isInOrBlock&&!this._isTrigger;sol.ClearArrays();for(let i=0,len=allInstances.length;i=0;const paramsVary=this._anyParamVariesPerInstance;const results=this._results;const func=this._func;const isInverted=this._isInverted;const isInOrBlock=this._isInOrBlock&&!this._isTrigger;const solInstances=sol._GetOwnInstances();const solElseInstances=sol._GetOwnElseInstances();const isUsingElseInstances=isInOrBlock&&!this._eventBlock.IsFirstConditionOfType(this);const arr=isUsingElseInstances?solElseInstances:solInstances; +let k=0;let isAnyTrue=false;for(let i=0,len=arr.length;i=0;const results=this._results;const func=this._func;const isInverted=this._isInverted;for(let i=0,len=solInstances.length;i[arr[0].GetUID(),arr[1].GetUID(),arr[2]]);ex[k]=saveVal}return{"ex":ex}}_LoadFromJson(o){if(this._savedData){this._savedData.clear();this._savedData=null}if(!o)return;const runtime=this._runtime;const ex=o["ex"];if(ex){const map=this.GetSavedDataMap();map.clear(); +for(const [k,v]of Object.entries(ex)){let loadVal=v;if(k==="collmemory")loadVal=C3.New(C3.PairMap,v.map(arr=>[runtime.GetInstanceByUID(arr[0]),runtime.GetInstanceByUID(arr[1]),arr[2]]).filter(arr=>arr[0]&&arr[1]));map.set(k,loadVal)}}}}; + +} + +// events/action.js +{ +'use strict';const C3=self.C3;const assert=self.assert;function EvalParams(parameters,results){for(let i=0,len=parameters.length;i=4?data[3]:-1;this._actionType=data.length>=5?data[4]&255:0;this._flags=data.length>=5?data[4]>>8:0;this._func=null;this._objectClass=null;this._behaviorType=null;this._behaviorIndex=-1;this._systemPlugin=null;this._callFunctionName="";this._callCustomAceObjectClass=null;this._callEventBlock= +null;this.Run=noop;this.DebugRun=noop;this._parameters=[];this._results=[];this._anyParamVariesPerInstance=false;this._savedData=null;this._unsavedData=null;const isScript=data[0]===-3;const debugInfo=isScript?data[2]:data[5];this._debugData=runtime.IsDebug()||isScript?{isBreakpoint:debugInfo[0],canDebug:debugInfo[1],index:debugInfo[2]}:null;if(data[0]===-1){this._systemPlugin=runtime.GetSystemPlugin();this._func=runtime.GetObjectReference(data[1])}else if(data[0]===-2)this._callFunctionName=data[1]; +else if(isScript){const userMethod=runtime.GetObjectReference(data[1]);this._func=userMethod;this.Run=this.RunUserScript;this.DebugRun=this.DebugRunUserScript;this._flags|=FLAG_IS_ASYNC}else{this._objectClass=runtime.GetObjectClassByIndex(data[0]);if(this._flags&FLAG_CUSTOM_ACE){this._callFunctionName=data[1];this._callCustomAceObjectClass=runtime.GetObjectClassByIndex(data[2])}else{if(data[2]){this._behaviorType=this._objectClass.GetBehaviorTypeByName(data[2]);this._behaviorIndex=this._objectClass.GetBehaviorIndexByName(data[2])}this._func= +runtime.GetObjectReference(data[1])}}if(data.length===7){const paramData=data[6];for(const data of paramData){this._parameters.push(C3.Parameter.Create(this,data,this._parameters.length));this._results.push(0)}}if(this._parameters.length===0){this._parameters=EMPTY_PARAMS_ARRAY;this._results=EMPTY_PARAMS_ARRAY}if(this.CanPickAnyObjectClass()){this._eventBlock.SetAllSolModifiers();this._eventBlock.SetSolWriterAfterCnds()}this._eventBlock.GetEventSheetManager()._RegisterAction(this)}static Create(eventBlock, +data,index){return C3.New(C3.Action,eventBlock,data,index)}_PostInit(){for(const param of this._parameters){param._PostInit();if(param.VariesPerInstance())this._anyParamVariesPerInstance=true}if(this._systemPlugin){this._SetSystemRunMethod();this.DebugRun=this._DebugRunSystem}else if(this._callFunctionName){if(this._flags&FLAG_CUSTOM_ACE)this._SetCallCustomActionRunMethod();else this._SetCallFunctionRunMethod();this._callFunctionName="";this._callCustomAceObjectClass=null}else if(this.Run===this.RunUserScript){const userMethod= +this._func;const localVars=this._runtime.GetEventSheetManager()._GetLocalVariablesScriptInterface(this._eventBlock);this._func=userMethod.bind(null,this._runtime.GetIRuntime(),localVars)}else if(this._behaviorType)if(this.IsAsync()){this.Run=this._RunBehavior_Async;this.DebugRun=this._DebugRunBehavior_Async}else{this.Run=this._RunBehavior;this.DebugRun=this._DebugRunBehavior}else if(this._objectClass.GetPlugin().IsSingleGlobal()){this._SetSingleGlobalRunMethod();this.DebugRun=this._DebugRunSingleGlobal}else if(this.IsStatic()){this.Run= +this._RunObject_Static;this.DebugRun=this._DebugRunObject_Static}else if(this.IsAsync()){this.Run=this._RunObject_Async;this.DebugRun=this._DebugRunObject_Async}else if(this.CallBeforeAfterHooks()){this.Run=this._RunObject_BeforeAfterHooks;this.DebugRun=this._DebugRunObject_BeforeAfterHooks}else if(!this._parameters.length){this.Run=this._RunObject_ParamsConst;this.DebugRun=this._DebugRunObject_ParamsConst}else if(this._parameters.every(p=>p.VariesPerInstance())){this.Run=this._RunObject_AllParamsVary; +this.DebugRun=this._DebugRunObject_AllParamsVary}else if(this._anyParamVariesPerInstance){this.Run=this._RunObject_SomeParamsVary;this.DebugRun=this._DebugRunObject_SomeParamsVary}else if(this._parameters.every(p=>p.IsConstant())){EvalParams(this._parameters,this._results);this.Run=this._RunObject_ParamsConst;this.DebugRun=this._DebugRunObject_ParamsConst}else{this.Run=this._RunObject_ParamsDontVary;this.DebugRun=this._DebugRunObject_ParamsDontVary}}_SetSystemRunMethod(){const plugin=this._systemPlugin; +const bindThis=this._systemPlugin;this._SetRunMethodForBoundFunc(plugin,bindThis,this._RunSystem)}_SetSingleGlobalRunMethod(){const plugin=this._objectClass.GetPlugin();const bindThis=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();this._SetRunMethodForBoundFunc(plugin,bindThis,this._RunSingleGlobal)}_SetCallFunctionRunMethod(){const eventSheetManager=this._eventBlock.GetEventSheetManager();const functionBlock=eventSheetManager.GetFunctionBlockByName(this._callFunctionName);if(functionBlock.IsEnabled()){const isCopyPicked= +(this._flags&FLAG_COPYPICKED)!==0;this._callEventBlock=functionBlock.GetEventBlock();let combinedSolModifiers=[...(new Set([...this._eventBlock.GetSolModifiersIncludingParents(),...this._callEventBlock.GetSolModifiersIncludingParents()]))];combinedSolModifiers=eventSheetManager._DeduplicateSolModifierList(combinedSolModifiers);const pickInfo=!functionBlock.IsCopyPicked()&&this._HasCopyPickedParent()?{pushCleanSolDynamic:true}:null;this.Run=C3.EventBlock.prototype.RunAsFunctionCall.bind(this._callEventBlock, +combinedSolModifiers,this._parameters,isCopyPicked,pickInfo);if(this._runtime.IsDebug()){const thiz=this;this.DebugRun=function*DebugRunCallFunction(){if(thiz.IsBreakpoint()||thiz._runtime.DebugBreakNext())yield thiz;const ret=yield*thiz._callEventBlock.DebugRunAsFunctionCall(combinedSolModifiers,thiz._parameters,isCopyPicked,pickInfo);return ret}}else this.DebugRun=noopGenerator}else{this.Run=noop;this.DebugRun=noopGenerator}}_SetCallCustomActionRunMethod(){const eventSheetManager=this._eventBlock.GetEventSheetManager(); +const customAceBlock=eventSheetManager.GetCustomActionBlockByName(this._callCustomAceObjectClass,this._callFunctionName);if(customAceBlock.IsEnabled()){const isCopyPicked=(this._flags&FLAG_COPYPICKED)!==0;this._callEventBlock=customAceBlock.GetEventBlock();let combinedSolModifiers=[...(new Set([...this._eventBlock.GetSolModifiersIncludingParents(),...this._callEventBlock.GetSolModifiersIncludingParents(),this._objectClass,customAceBlock.GetObjectClass()]))];combinedSolModifiers=eventSheetManager._DeduplicateSolModifierList(combinedSolModifiers); +const isOTtoOT=!this._objectClass.IsFamily()&&!customAceBlock.GetObjectClass().IsFamily();const isOTtoFamily=!this._objectClass.IsFamily()&&customAceBlock.GetObjectClass().IsFamily();const isFamilyToFamily=this._objectClass.IsFamily();let pickInfo=null;if(!customAceBlock.IsCopyPicked()&&this._HasCopyPickedParent()){pickInfo=pickInfo||{};pickInfo.pushCleanSolDynamic=true}if(isOTtoFamily||!isCopyPicked){pickInfo=pickInfo||{};pickInfo.copyFromObjectClass=this._objectClass;pickInfo.copyToObjectClass= +customAceBlock.GetObjectClass()}if(isOTtoOT||isOTtoFamily||isFamilyToFamily&&!customAceBlock.HasCustomACEOverrides())this.Run=C3.EventBlock.prototype.RunAsFunctionCall.bind(this._callEventBlock,combinedSolModifiers,this._parameters,isCopyPicked,pickInfo);else if(isFamilyToFamily)this.Run=C3.FunctionBlock.prototype.RunAsFamilyCustomActionWithOverrides.bind(customAceBlock,combinedSolModifiers,this._parameters);else;if(this._runtime.IsDebug()){const thiz=this;if(isOTtoOT||isOTtoFamily||isFamilyToFamily&& +!customAceBlock.HasCustomACEOverrides())this.DebugRun=function*DebugRunCustomAction(){if(thiz.IsBreakpoint()||thiz._runtime.DebugBreakNext())yield thiz;const ret=yield*thiz._callEventBlock.DebugRunAsFunctionCall(combinedSolModifiers,thiz._parameters,isCopyPicked,pickInfo);return ret};else if(isFamilyToFamily)this.DebugRun=function*DebugRunCustomAction(){if(thiz.IsBreakpoint()||thiz._runtime.DebugBreakNext())yield thiz;const ret=yield*customAceBlock.DebugRunAsFamilyCustomActionWithOverrides(combinedSolModifiers, +thiz._parameters);return ret}}else this.DebugRun=noopGenerator}else{this.Run=noop;this.DebugRun=noopGenerator}}_SetRunMethodForBoundFunc(plugin,bindThis,fallbackMethod){const func=this._func;const parameters=this._parameters;if(parameters.length===0)this.Run=plugin._GetBoundACEMethod(func,bindThis);else if(parameters.length===1){const param0=parameters[0];if(param0.IsConstant())this.Run=plugin._GetBoundACEMethod_1param(func,bindThis,param0.Get(0));else{const boundFunc=plugin._GetBoundACEMethod(func, +bindThis);this.Run=function RunSingleAct_1param(){return boundFunc(param0.Get(0))}}}else if(parameters.length===2){const param0=parameters[0];const param1=parameters[1];if(param0.IsConstant()&¶m1.IsConstant())this.Run=plugin._GetBoundACEMethod_2params(func,bindThis,param0.Get(0),param1.Get(0));else{const boundFunc=plugin._GetBoundACEMethod(func,bindThis);this.Run=function RunSingleAct_2params(){return boundFunc(param0.Get(0),param1.Get(0))}}}else if(parameters.length===3){const param0=parameters[0]; +const param1=parameters[1];const param2=parameters[2];if(param0.IsConstant()&¶m1.IsConstant()&¶m2.IsConstant())this.Run=plugin._GetBoundACEMethod_3params(func,bindThis,param0.Get(0),param1.Get(0),param2.Get(0));else{const boundFunc=plugin._GetBoundACEMethod(func,bindThis);this.Run=function RunSingleAct_3params(){return boundFunc(param0.Get(0),param1.Get(0),param2.Get(0))}}}else this.Run=fallbackMethod}GetSID(){return this._sid}IsAsync(){return(this._flags&FLAG_IS_ASYNC)!==0}CanBailOut(){return this._actionType=== +1}CallBeforeAfterHooks(){return this._actionType===2}IsStatic(){return this._actionType===3}CanPickAnyObjectClass(){return(this._flags&FLAG_CANPICKANYOBJECTCLASS)!==0}HasReturnType(){return this.IsAsync()||this.CanBailOut()}GetObjectClass(){return this._objectClass}GetImplementationAddon(){if(this._behaviorType)return this._behaviorType.GetBehavior();else if(this._objectClass)return this._objectClass.GetPlugin();else return null}GetImplementationSdkVersion(){const addon=this.GetImplementationAddon(); +return addon?addon.GetSdkVersion():1}GetEventBlock(){return this._eventBlock}_HasCopyPickedParent(){let parent=this._eventBlock;do{if(parent instanceof C3.FunctionBlock&&parent.IsCopyPicked())return true;parent=parent.GetScopeParent()}while(parent);return false}GetRuntime(){return this._runtime}GetIndex(){return this._index}GetDebugIndex(){return this._debugData.index}IsBreakpoint(){return this._debugData.isBreakpoint}_SetBreakpoint(b){this._debugData.isBreakpoint=!!b;this._eventBlock._UpdateCanRunFastRecursive()}_DebugReturnsGenerator(){return this._debugData.canDebug}DebugCanRunFast(){return!this.IsBreakpoint()&& +!this._runtime.DebugBreakNext()&&!this._DebugReturnsGenerator()}GetSavedDataMap(){if(!this._savedData)this._savedData=new Map;return this._savedData}GetUnsavedDataMap(){if(!this._unsavedData)this._unsavedData=new Map;return this._unsavedData}_RunSystem(){const results=this._results;EvalParams(this._parameters,results);return this._func.apply(this._systemPlugin,results)}*_DebugRunSystem(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;if(this._DebugReturnsGenerator()){const results= +this._results;EvalParams(this._parameters,results);const ret=yield*this._func.apply(this._systemPlugin,results);return ret}else return this.Run()}_RunSingleGlobal(){const results=this._results;EvalParams(this._parameters,results);return this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),results)}*_DebugRunSingleGlobal(){if(this.IsBreakpoint()||this._runtime.DebugBreakNext())yield this;if(this._DebugReturnsGenerator()){const results=this._results;EvalParams(this._parameters, +results);const ret=yield*this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),results);return ret}else return this.Run()}_RunObject_ParamsConst(){const results=this._results;const instances=this._objectClass.GetCurrentSol().GetInstances();for(let i=0,len=instances.length;ilayout.GetWidth()||bbox.getTop()>layout.GetHeight()} +function PickDistance(which,x,y){const sol=this.GetCurrentSol();const instances=sol.GetInstances();if(!instances.length)return false;let inst=instances[0];let wi=inst.GetWorldInfo();let pickme=inst;let dist2=C3.distanceSquared(wi.GetX(),wi.GetY(),x,y);for(let i=1,len=instances.length;idist2){dist2=d2;pickme=inst}}sol.PickOne(pickme);return true} +function SetX(x){const wi=GetWorldInfo(this);if(wi.GetX()===x)return;wi.SetX(x);wi.SetBboxChanged()}function SetY(y){const wi=GetWorldInfo(this);if(wi.GetY()===y)return;wi.SetY(y);wi.SetBboxChanged()}function SetPos(x,y){const wi=GetWorldInfo(this);if(wi.EqualsXY(x,y))return;wi.SetXY(x,y);wi.SetBboxChanged()} +function SetPosToObject(objectClass,imgPt){if(!objectClass)return;const inst=GetInst(this);const otherInst=objectClass.GetPairedInstance(inst);if(!otherInst)return;const [x,y]=otherInst.GetImagePoint(imgPt);const wi=inst.GetWorldInfo();if(wi.GetX()===x&&wi.GetY()===y)return;wi.SetXY(x,y);wi.SetBboxChanged()}function MoveForward(dist){if(dist===0)return;const wi=GetWorldInfo(this);wi.OffsetXY(wi.GetCosAngle()*dist,wi.GetSinAngle()*dist);wi.SetBboxChanged()} +function MoveAtAngle(a,dist){if(dist===0)return;const wi=GetWorldInfo(this);a=C3.toRadians(a);wi.OffsetXY(Math.cos(a)*dist,Math.sin(a)*dist);wi.SetBboxChanged()}function GetX(){return GetWorldInfo(this).GetX()}function GetY(){return GetWorldInfo(this).GetY()}function GetDt(){const inst=GetInst(this);return inst.GetRuntime().GetDt(inst)}function CompareWidth(cmp,w){return C3.compare(GetWorldInfo(this).GetWidth(),cmp,w)} +function CompareHeight(cmp,h){return C3.compare(GetWorldInfo(this).GetHeight(),cmp,h)}function SetWidth(w){const wi=GetWorldInfo(this);if(wi.GetWidth()===w)return;wi.SetWidth(w);wi.SetBboxChanged()}function SetHeight(h){const wi=GetWorldInfo(this);if(wi.GetHeight()===h)return;wi.SetHeight(h);wi.SetBboxChanged()}function SetSize(w,h){const wi=GetWorldInfo(this);if(wi.GetWidth()===w&&wi.GetHeight()===h)return;wi.SetSize(w,h);wi.SetBboxChanged()} +function GetWidth(){return GetWorldInfo(this).GetWidth()}function GetHeight(){return GetWorldInfo(this).GetHeight()}function GetBboxLeft(){return GetWorldInfo(this).GetBoundingBox().getLeft()}function GetBboxTop(){return GetWorldInfo(this).GetBoundingBox().getTop()}function GetBboxRight(){return GetWorldInfo(this).GetBoundingBox().getRight()}function GetBboxBottom(){return GetWorldInfo(this).GetBoundingBox().getBottom()} +function GetBboxMidX(){const bbox=GetWorldInfo(this).GetBoundingBox();return(bbox.getLeft()+bbox.getRight())/2}function GetBboxMidY(){const bbox=GetWorldInfo(this).GetBoundingBox();return(bbox.getTop()+bbox.getBottom())/2}function IsAngleWithin(within,a){return C3.angleDiff(GetWorldInfo(this).GetAngle(),C3.toRadians(a))<=C3.toRadians(within)}function IsAngleClockwiseFrom(a){return C3.angleClockwise(GetWorldInfo(this).GetAngle(),C3.toRadians(a))} +function IsBetweenAngles(a,b){const lower=C3.toRadians(a);const upper=C3.toRadians(b);const angle=GetWorldInfo(this).GetAngle();const obtuse=!C3.angleClockwise(upper,lower);if(obtuse)return!(!C3.angleClockwise(angle,lower)&&C3.angleClockwise(angle,upper));else return C3.angleClockwise(angle,lower)&&!C3.angleClockwise(angle,upper)} +function SetAngle(a){const wi=GetWorldInfo(this);const newAngle=C3.clampAngle(C3.toRadians(a));if(isNaN(newAngle)||wi.GetAngle()===newAngle)return;wi.SetAngle(newAngle);wi.SetBboxChanged()}function RotateClockwise(a){if(isNaN(a)||a===0)return;const wi=GetWorldInfo(this);wi.SetAngle(wi.GetAngle()+C3.toRadians(a));wi.SetBboxChanged()}function RotateCounterclockwise(a){if(isNaN(a)||a===0)return;const wi=GetWorldInfo(this);wi.SetAngle(wi.GetAngle()-C3.toRadians(a));wi.SetBboxChanged()} +function RotateTowardAngle(amt,target){const wi=GetWorldInfo(this);const a=wi.GetAngle();const newAngle=C3.angleRotate(a,C3.toRadians(target),C3.toRadians(amt));if(isNaN(newAngle)||a===newAngle)return;wi.SetAngle(newAngle);wi.SetBboxChanged()} +function RotateTowardPosition(amt,x,y){const wi=GetWorldInfo(this);const a=wi.GetAngle();const dx=x-wi.GetX();const dy=y-wi.GetY();const target=Math.atan2(dy,dx);const newAngle=C3.angleRotate(a,target,C3.toRadians(amt));if(isNaN(newAngle)||a===newAngle)return;wi.SetAngle(newAngle);wi.SetBboxChanged()} +function SetTowardPosition(x,y){const wi=GetWorldInfo(this);const a=wi.GetAngle();const dx=x-wi.GetX();const dy=y-wi.GetY();const newAngle=Math.atan2(dy,dx);if(isNaN(newAngle)||a===newAngle)return;wi.SetAngle(newAngle);wi.SetBboxChanged()}function GetAngle(){return C3.toDegrees(GetWorldInfo(this).GetAngle())}function CompareOpacity(cmp,x){return C3.compare(C3.roundToDp(GetWorldInfo(this).GetOpacity()*100,6),cmp,x)}function IsVisible(){return GetWorldInfo(this).IsVisible()} +function SetVisible(v){const inst=GetInst(this);const wi=inst.GetWorldInfo();if(v===2)v=!wi.IsVisible();else v=v!==0;if(wi.IsVisible()===v)return;wi.SetVisible(v);inst.GetRuntime().UpdateRender()} +function SetOpacity(o){const newOpacity=C3.clamp(o/100,0,1);const inst=GetInst(this);const wi=inst.GetWorldInfo();if(wi.GetTransformWithParentOpacity()){if(wi._GetSceneGraphInfo().GetOwnOpacity()===newOpacity)return}else if(wi.GetOpacity()===newOpacity)return;wi.SetOpacity(newOpacity);inst.GetRuntime().UpdateRender()} +function SetDefaultColor(rgb){tempColor.setFromRgbValue(rgb);const inst=GetInst(this);const wi=inst.GetWorldInfo();if(wi.GetUnpremultipliedColor().equalsIgnoringAlpha(tempColor))return;wi.SetUnpremultipliedColor(tempColor);inst.GetRuntime().UpdateRender()}function GetColor(){const c=GetWorldInfo(this).GetUnpremultipliedColor();return C3.PackRGBAEx(c.getR(),c.getG(),c.getB(),c.getA())}function GetOpacity(){return C3.roundToDp(GetWorldInfo(this).GetOpacity()*100,6)} +function IsOnLayer(layer){if(!layer)return false;return GetWorldInfo(this).GetLayer()===layer} +function PickTopBottom(which){const sol=this.GetCurrentSol();const instances=sol.GetInstances();if(!instances.length)return false;let inst=instances[0];let pickme=inst;for(let i=1,len=instances.length;ipickmeLayerIndex||instLayerIndex===pickmeLayerIndex&&instWi.GetZIndex()> +pickmeWi.GetZIndex())pickme=inst}else if(instLayerIndexCollMemory_RemoveInstance(collMemory,e.instance))}const lsol= +ltype.GetCurrentSol();const rsol=rtype.GetCurrentSol();const linstances=lsol.GetInstances();let rinstances=null;for(let l=0;lCollMemory_RemoveInstance(collMemory,e.instance))}const lsol=ltype.GetCurrentSol();const rsol=rtype.GetCurrentSol(); +const linstances=lsol.GetInstances();let rinstances=null;for(let l=0;l0)parentInstances=parentInstances.concat(parentInstsPendingCreate)}if(parentInstances.length=== +0)return false;const parentInstancesSet=new Set(parentInstances);const pickParents=new Set;for(let i=0,len=myInstances.length;i0)childInstances=childInstances.concat(childInstsPendingCreate)}if(childInstances.length=== +0)return false;const childInstancesSet=new Set(childInstances);const pickChildren=new Set;for(let i=0,len=myInstances.length;i0)childInstances=childInstances.concat(childInstsPendingCreate)}if(childInstances.length=== +0)return false;const childInstancesSet=new Set(childInstances);const pickChildren=[];for(let i=0,len=myInstances.length;ibestVal){bestVal=v;pickInst=inst}}sol.PickOne(pickInst); +return true}function PickByUID(uid){if(this._runtime.GetCurrentCondition().IsInverted())return PickByUID_Inverted(this,uid);else return PickByUID_Normal(this,uid)} +function PickByUID_Normal(objectClass,uid){const inst=objectClass.GetRuntime().GetInstanceByUID(uid);if(!inst)return false;const sol=objectClass.GetCurrentSol();if(!sol.IsSelectAll()&&!sol._GetOwnInstances().includes(inst))return false;if(objectClass.IsFamily()){if(inst.GetObjectClass().BelongsToFamily(objectClass)){sol.PickOne(inst);objectClass.ApplySolToContainer();return true}}else if(inst.GetObjectClass()===objectClass){sol.PickOne(inst);objectClass.ApplySolToContainer();return true}return false} +function PickByUID_Inverted(objectClass,uid){const sol=objectClass.GetCurrentSol();if(sol.IsSelectAll()){sol._SetSelectAll(false);sol.ClearArrays();const instances=objectClass.GetInstances();for(let i=0,len=instances.length;iv.GetValue());if(functionBlock.IsAsync())this._asyncId=functionBlock.PauseCurrentAsyncFunction()}for(const objectClass of allObjectClasses){const sol= +objectClass.GetCurrentSol();if(sol.IsSelectAll()&&!this._event.HasSolModifier(objectClass))continue;this._solModifiers.push(objectClass);this._sols.set(objectClass,C3.New(C3.SolState,sol))}const dynamicSolModifiersSet=eventSheetManager.GetDynamicSolModifiersSet();this._dynamicSolModifiers=dynamicSolModifiersSet.size>0?dynamicSolModifiersSet:null}InitTimer(seconds){this._type="timer";this._Init();this._time=this._eventSheetManager.GetRuntime().GetGameTime()+seconds}InitSignal(tag){this._type="signal"; +this._Init();this._signalTag=tag.toLowerCase()}InitPromise(p){this._type="promise";this._Init();p.then(()=>this.SetSignalled()).catch(err=>{console.warn("[C3 runtime] Promise rejected in 'Wait for previous actions to complete': ",err);this.SetSignalled()})}IsTimer(){return this._type==="timer"}IsSignal(){return this._type==="signal"}IsPromise(){return this._type==="promise"}GetSignalTag(){return this._signalTag}IsSignalled(){return this._isSignalled}SetSignalled(){this._isSignalled=true}_ShouldRun(){if(this.IsTimer())return this._time<= +this._eventSheetManager.GetRuntime().GetGameTime();else return this.IsSignalled()}_RestoreState(frame){frame._Restore(this._event,this._actIndex);for(const [objectClass,solState]of this._sols.entries()){const sol=objectClass.GetCurrentSol();solState._Restore(sol)}if(this._dynamicSolModifiers)frame.SetDynamicSolModifiers([...this._dynamicSolModifiers]);const callingFunctionBlock=this._callingFunctionBlock;if(callingFunctionBlock){callingFunctionBlock.SetFunctionParameters(this._functionParameters); +callingFunctionBlock._GetAllInnerLocalVariables().map((v,index)=>v.SetValue(this._functionInnerLocalVars[index]));if(callingFunctionBlock.IsAsync())callingFunctionBlock.ResumeAsyncFunction(this._asyncId)}}_Run(frame){this._RestoreState(frame);this._event._ResumeActionsAndSubEvents(frame);if(this._callingFunctionBlock&&this._callingFunctionBlock.IsAsync())this._callingFunctionBlock.MaybeFinishAsyncFunctionCall(this._asyncId);this._eventSheetManager.ClearSol(this._solModifiers);this._shouldRelease= +true}async _DebugRun(frame){this._RestoreState(frame);for(const breakEventObject of this._event._DebugResumeActionsAndSubEvents(frame))await this._eventSheetManager.GetRuntime().DebugBreak(breakEventObject);if(this._callingFunctionBlock&&this._callingFunctionBlock.IsAsync())this._callingFunctionBlock.MaybeFinishAsyncFunctionCall(this._asyncId);this._eventSheetManager.ClearSol(this._solModifiers);this._shouldRelease=true}ShouldRelease(){return this._shouldRelease}RemoveInstances(s){for(const solState of this._sols.values())solState.RemoveInstances(s)}_SaveToJson(){const sols= +{};const o={"t":this._time,"st":this._signalTag,"s":this._isSignalled,"ev":this._event.GetSID(),"sm":this._solModifiers.map(oc=>oc.GetSID()),"dsm":this._dynamicSolModifiers?[...this._dynamicSolModifiers].map(oc=>oc.GetSID()):null,"sols":sols};if(this._event._HasActionIndex(this._actIndex))o["act"]=this._event.GetActionAt(this._actIndex).GetSID();for(const [objectClass,solState]of this._sols)sols[objectClass.GetSID().toString()]=solState._SaveToJson();return o}static _CreateFromJson(eventSheetManager, +o){const runtime=eventSheetManager.GetRuntime();const event=eventSheetManager.GetEventBlockBySID(o["ev"]);if(!event)return null;let actIndex=0;if(o.hasOwnProperty("act")){const act=eventSheetManager.GetActionBySID(o["act"]);if(!act)return null;actIndex=act.GetIndex()}const sw=C3.New(C3.ScheduledWait,eventSheetManager);sw._time=o["t"];sw._type=sw._time===-1?"signal":"timer";sw._signalTag=o["st"];sw._isSignalled=o["s"];sw._event=event;sw._actIndex=actIndex;for(const sid of o["sm"]){const objectClass= +runtime.GetObjectClassBySID(sid);if(objectClass)sw._solModifiers.push(objectClass)}if(Array.isArray(o["dsm"]))for(const sid of o["dsm"]){const objectClass=runtime.GetObjectClassBySID(sid);if(objectClass){if(!sw._dynamicSolModifiers)sw._dynamicSolModifiers=new Set;sw._dynamicSolModifiers.add(objectClass)}}for(const [sidStr,solData]of Object.entries(o["sols"])){const sid=parseInt(sidStr,10);const objectClass=runtime.GetObjectClassBySID(sid);if(!objectClass)continue;const solState=C3.New(C3.SolState, +null);solState._LoadFromJson(eventSheetManager,solData);sw._sols.set(objectClass,solState)}return sw}}; + +} + +// events/solState.js +{ +'use strict';const C3=self.C3; +C3.SolState=class SolState extends C3.DefendedBase{constructor(sol){super();this._objectClass=null;this._isSelectAll=true;this._instances=[];if(sol){this._objectClass=sol.GetObjectClass();this._isSelectAll=sol.IsSelectAll();C3.shallowAssignArray(this._instances,sol._GetOwnInstances())}}Release(){this._objectClass=null;C3.clearArray(this._instances)}_Restore(sol){sol._SetSelectAll(this._isSelectAll);C3.shallowAssignArray(sol._GetOwnInstances(),this._instances)}RemoveInstances(s){C3.arrayRemoveAllInSet(this._instances,s)}_SaveToJson(){return{"sa":this._isSelectAll, +"insts":this._instances.map(inst=>inst.GetUID())}}_LoadFromJson(eventSheetManager,o){const runtime=eventSheetManager.GetRuntime();this._isSelectAll=!!o["sa"];C3.clearArray(this._instances);for(const uid of o["insts"]){const inst=runtime.GetInstanceByUID(uid);if(inst)this._instances.push(inst)}}}; + +} + +// sdk/sdkPluginBase.js +{ +'use strict';const C3=self.C3;function GetNextParamMap(paramMap,param){let nextParamMap=paramMap.get(param);if(!nextParamMap){nextParamMap=new Map;paramMap.set(param,nextParamMap)}return nextParamMap} +C3.SDKPluginBase=class SDKPluginBase extends C3.DefendedBase{constructor(opts){super();this._runtime=opts.runtime;this._isSingleGlobal=!!opts.isSingleGlobal;this._isWorldType=!!opts.isWorld;this._isRotatable=!!opts.isRotatable;this._mustPredraw=!!opts.mustPredraw;this._hasEffects=!!opts.hasEffects;this._supportsSceneGraph=!!opts.supportsSceneGraph;this._supportsMesh=!!opts.supportsMesh;this._isHTMLElementType=!!opts.isHTMLElementType;this._is3d=!!opts.is3d;this._sdkVersion=opts.sdkVersion;this._singleGlobalObjectClass= +null;this._boundACEMethodCache=new Map;this._boundACEMethodCache_1param=new Map;this._boundACEMethodCache_2params=new Map;this._boundACEMethodCache_3params=new Map;this._scriptInterfaceClass=opts.scriptInterfaceClass;this._iPlugin=null}Release(){this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}GetConstructor(){if(this.GetSdkVersion()>=2)return this._iPlugin.constructor;else return this.constructor}GetSdkVersion(){return this._sdkVersion}GetScriptInterfaceClass(allowDefault=false){let Class= +this._scriptInterfaceClass;if(allowDefault&&typeof Class!=="function"&&this.GetSdkVersion()>=2)Class=globalThis.ISDKPluginBase;return Class}IsSingleGlobal(){return this._isSingleGlobal}IsWorldType(){return this._isWorldType}IsHTMLElementType(){return this._isHTMLElementType}Is3D(){return this._is3d}IsRotatable(){return this._isRotatable}MustPreDraw(){return this._mustPredraw}HasEffects(){return this._hasEffects}SupportsSceneGraph(){return this._supportsSceneGraph}SupportsMesh(){return this._supportsMesh}_GetBoundACEMethod(func, +bindThis){if(!bindThis)throw new Error("missing 'this' binding");let ret=this._boundACEMethodCache.get(func);if(ret)return ret;ret=func.bind(bindThis);this._boundACEMethodCache.set(func,ret);return ret}_GetBoundACEMethod_1param(func,bindThis,param0){if(!bindThis)throw new Error("missing 'this' binding");const param0map=GetNextParamMap(this._boundACEMethodCache_1param,func);let ret=param0map.get(param0);if(ret)return ret;ret=func.bind(bindThis,param0);param0map.set(param0,ret);return ret}_GetBoundACEMethod_2params(func, +bindThis,param0,param1){if(!bindThis)throw new Error("missing 'this' binding");const param0map=GetNextParamMap(this._boundACEMethodCache_2params,func);const param1map=GetNextParamMap(param0map,param0);let ret=param1map.get(param1);if(ret)return ret;ret=func.bind(bindThis,param0,param1);param1map.set(param1,ret);return ret}_GetBoundACEMethod_3params(func,bindThis,param0,param1,param2){if(!bindThis)throw new Error("missing 'this' binding");const param0map=GetNextParamMap(this._boundACEMethodCache_3params, +func);const param1map=GetNextParamMap(param0map,param0);const param2map=GetNextParamMap(param1map,param1);let ret=param2map.get(param2);if(ret)return ret;ret=func.bind(bindThis,param0,param1,param2);param2map.set(param2,ret);return ret}_SetSingleGlobalObjectClass(objectClass){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");this._singleGlobalObjectClass=objectClass}GetSingleGlobalObjectClass(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");return this._singleGlobalObjectClass}GetSingleGlobalInstance(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin"); +return this._singleGlobalObjectClass.GetSingleGlobalInstance()}_InitScriptInterface(){const sdkVersion=this.GetSdkVersion();C3.AddonManager._PushInitObject(this,sdkVersion);const CustomScriptClass=this.GetScriptInterfaceClass(true);if(CustomScriptClass){this._iPlugin=new CustomScriptClass;if(!(this._iPlugin instanceof self.IPlugin))throw new TypeError("plugin class must derive from IPlugin");}else this._iPlugin=new self.IPlugin;C3.AddonManager._PopInitObject(sdkVersion)}GetIPlugin(){return this._iPlugin}}; + +} + +// sdk/sdkDOMPluginBase.js +{ +'use strict';const C3=self.C3; +C3.SDKDOMPluginBase=class SDKDOMPluginBase extends C3.SDKPluginBase{constructor(opts,DOM_COMPONENT_ID){super(opts);this._domComponentId=DOM_COMPONENT_ID;this._nextElementId=0;this._instMap=new Map;this.AddElementMessageHandler("elem-focused",sdkInst=>sdkInst._OnElemFocused());this.AddElementMessageHandler("elem-blurred",sdkInst=>{if(sdkInst)sdkInst._OnElemBlurred()})}Release(){super.Release()}_AddElement(sdkInst){const elementId=this._nextElementId++;this._instMap.set(elementId,sdkInst);return elementId}_RemoveElement(elementId){this._instMap.delete(elementId)}AddElementMessageHandler(handler, +func){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,handler,e=>{const sdkInst=this._instMap.get(e["elementId"]);func(sdkInst,e)})}}; + +} + +// sdk/sdkTypeBase.js +{ +'use strict';const C3=self.C3; +C3.SDKTypeBase=class SDKTypeBase extends C3.DefendedBase{constructor(objectClass){super();this._objectClass=objectClass;this._runtime=objectClass.GetRuntime();this._plugin=objectClass.GetPlugin()}Release(){this._objectClass=null;this._runtime=null;this._plugin=null}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetImageInfo(){return this._objectClass.GetImageInfo()}OnCreate(){}FinishCondition(f){}BeforeRunAction(method){}AfterRunAction(method){}LoadTextures(renderer){}ReleaseTextures(){}OnDynamicTextureLoadComplete(){}PreloadTexturesWithInstances(renderer){}LoadTilemapData(){}GetScriptInterfaceClass(){return null}DispatchScriptEvent(name,cancelable, +additionalProperties){const e=C3.New(C3.Event,name,cancelable);e.objectClass=this;if(additionalProperties)Object.assign(e,additionalProperties);this.GetObjectClass().DispatchUserScriptEvent(e)}}; + +} + +// sdk/sdkInstanceBase.js +{ +'use strict';const C3=self.C3; +C3.SDKInstanceBase=class SDKInstanceBase extends C3.DefendedBase{constructor(inst,domComponentId){super();this._inst=inst;this._domComponentId=domComponentId;this._wrapperComponentId=null;this._runtime=inst.GetRuntime();this._objectClass=this._inst.GetObjectClass();this._sdkType=this._objectClass.GetSdkType();this._tickFunc=null;this._tick2Func=null;this._isTicking=false;this._isTicking2=false;this._disposables=null;this._wasReleased=false}Release(){this._wasReleased=true;this._StopTicking();this._StopTicking2(); +this._tickFunc=null;this._tick2Func=null;if(this._disposables){this._disposables.Release();this._disposables=null}this._inst=null;this._runtime=null;this._objectClass=null;this._sdkType=null}WasReleased(){return this._wasReleased}GetInstance(){return this._inst}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetPlugin(){return this._sdkType.GetPlugin()}GetSdkType(){return this._sdkType}GetScriptInterface(){return this._inst.GetInterfaceClass()}Trigger(method){return this._runtime.Trigger(method, +this._inst,null)}DebugTrigger(method){return this._runtime.DebugTrigger(method,this._inst,null)}TriggerAsync(method){return this._runtime.TriggerAsync(method,this._inst,null)}FastTrigger(method,value){return this._runtime.FastTrigger(method,this._inst,value)}DebugFastTrigger(method,value){return this._runtime.DebugFastTrigger(method,this._inst,value)}ScheduleTriggers(f){return this._runtime.ScheduleTriggers(f)}AddDOMMessageHandler(handler,func){this._runtime.AddDOMComponentMessageHandler(this._domComponentId, +handler,func)}AddDOMMessageHandlers(list){for(const [handler,func]of list)this.AddDOMMessageHandler(handler,func)}PostToDOM(handler,data){this._runtime.PostComponentMessageToDOM(this._domComponentId,handler,data)}PostToDOMAsync(handler,data){return this._runtime.PostComponentMessageToDOMAsync(this._domComponentId,handler,data)}_PostToDOMMaybeSync(handler,data){if(this._runtime.IsInWorker())this.PostToDOM(handler,data);else return window["c3_runtimeInterface"]["_OnMessageFromRuntime"]({"type":"event", +"component":this._domComponentId,"handler":handler,"data":data,"responseId":null})}SetWrapperExtensionComponentId(componentId){if(!componentId)throw new Error("cannot set empty component id");this._wrapperComponentId=componentId}IsWrapperExtensionAvailable(){if(!this._wrapperComponentId)throw new Error("wrapper extension component id not set");return this._runtime.HasWrapperComponentId(this._wrapperComponentId)}AddWrapperExtensionMessageHandler(handler,func){if(!this._wrapperComponentId)throw new Error("wrapper extension component id not set"); +this._runtime.AddWrapperExtensionMessageHandler(this._wrapperComponentId,handler,func)}AddWrapperExtensionMessageHandlers(list){for(const [handler,func]of list)this.AddWrapperExtensionMessageHandler(handler,func)}SendWrapperExtensionMessage(messageId,params){if(!this._wrapperComponentId)throw new Error("wrapper extension component id not set");this._runtime.SendWrapperExtensionMessage(this._wrapperComponentId,messageId,params)}SendWrapperExtensionMessageAsync(messageId,params){if(!this._wrapperComponentId)throw new Error("wrapper extension component id not set"); +return this._runtime.SendWrapperExtensionMessageAsync(this._wrapperComponentId,messageId,params)}Tick(){}Tick2(){}_StartTicking(){if(this._isTicking)return;if(!this._tickFunc)this._tickFunc=()=>this.Tick();this._runtime.Dispatcher().addEventListener("tick",this._tickFunc);this._isTicking=true}_StopTicking(){if(!this._isTicking)return;this._runtime.Dispatcher().removeEventListener("tick",this._tickFunc);this._isTicking=false}IsTicking(){return this._isTicking}_StartTicking2(){if(this._isTicking2)return; +if(!this._tick2Func)this._tick2Func=()=>this.Tick2();this._runtime.Dispatcher().addEventListener("tick2",this._tick2Func);this._isTicking2=true}_StopTicking2(){if(!this._isTicking2)return;this._runtime.Dispatcher().removeEventListener("tick2",this._tick2Func);this._isTicking2=false}IsTicking2(){return this._isTicking2}GetDebuggerProperties(){return[]}SaveToJson(){return null}LoadFromJson(o){}GetPropertyValueByIndex(index){}SetPropertyValueByIndex(index,value){}OffsetPropertyValueByIndex(index,offset, +opts){if(offset===0)return;const value=this.GetPropertyValueByIndex(index);if(typeof value!=="number")throw new Error("expected number");this.SetPropertyValueByIndex(index,value+offset,opts)}SetPropertyColorOffsetValueByIndex(offset,r,g,b){}CallAction(actMethod,...args){actMethod.call(this,...args)}CallExpression(expMethod,...args){return expMethod.call(this,...args)}GetScriptInterfaceClass(){return null}DispatchScriptEvent(name,cancelable,additionalProperties){if(!this._inst.HasScriptInterface())return; +const scriptInterface=this.GetScriptInterface();const e=C3.New(C3.Event,name,cancelable);e.instance=scriptInterface;if(additionalProperties)Object.assign(e,additionalProperties);scriptInterface.dispatchEvent(e)}MustPreDraw(){return false}}; + +} + +// sdk/sdkWorldInstanceBase.js +{ +'use strict';const C3=self.C3; +C3.SDKWorldInstanceBase=class SDKWorldInstanceBase extends C3.SDKInstanceBase{constructor(inst,domComponentId){super(inst,domComponentId);this._worldInfo=inst.GetWorldInfo();this._renderercontextlost_handler=null;this._renderercontextrestored_handler=null}Release(){if(this._renderercontextlost_handler){const dispatcher=this._runtime.Dispatcher();dispatcher.removeEventListener("renderercontextlost",this._renderercontextlost_handler);dispatcher.removeEventListener("renderercontextrestored",this._renderercontextrestored_handler); +this._renderercontextlost_handler=null;this._renderercontextrestored_handler=null}this._worldInfo=null;super.Release()}HandleWebGLContextLoss(){this.HandleRendererContextLoss()}OnWebGLContextLost(){}OnWebGLContextRestored(){}HandleRendererContextLoss(){if(this._renderercontextlost_handler)return;this._renderercontextlost_handler=()=>this.OnRendererContextLost();this._renderercontextrestored_handler=()=>this.OnRendererContextRestored();const dispatcher=this._runtime.Dispatcher();dispatcher.addEventListener("renderercontextlost", +this._renderercontextlost_handler);dispatcher.addEventListener("renderercontextrestored",this._renderercontextrestored_handler)}OnRendererContextLost(){this.OnWebGLContextLost()}OnRendererContextRestored(){this.OnWebGLContextRestored()}GetWorldInfo(){return this._worldInfo}IsOriginalSizeKnown(){return false}GetOriginalWidth(){if(!this.IsOriginalSizeKnown())throw new Error("original size not known");const imageInfo=this.GetCurrentImageInfo();if(imageInfo)return imageInfo.GetWidth();else;}GetOriginalHeight(){if(!this.IsOriginalSizeKnown())throw new Error("original size not known"); +const imageInfo=this.GetCurrentImageInfo();if(imageInfo)return imageInfo.GetHeight();else;}GetCurrentImageInfo(){return null}GetCurrentSurfaceSize(){const imageInfo=this.GetCurrentImageInfo();if(imageInfo){const texture=imageInfo.GetTexture();if(texture)return[texture.GetWidth(),texture.GetHeight()]}return[100,100]}GetCurrentTexRect(){const imageInfo=this.GetCurrentImageInfo();return imageInfo?imageInfo.GetTexRect():null}GetCurrentTexQuad(){const imageInfo=this.GetCurrentImageInfo();return imageInfo? +imageInfo.GetTexQuad():null}IsCurrentTexRotated(){const imageInfo=this.GetCurrentImageInfo();return imageInfo?imageInfo.IsRotated():false}GetImagePoint(nameOrIndex){const wi=this._inst.GetWorldInfo();return[wi.GetX(),wi.GetY(),wi.GetTotalZElevation()]}LoadTilemapData(data,mapWidth,mapHeight){}TestPointOverlapTile(x,y){}RendersToOwnZPlane(){return true}}; + +} + +// sdk/sdkDOMInstanceBase.js +{ +'use strict';const C3=self.C3;const tempRect=C3.New(C3.Rect); +C3.SDKDOMInstanceBase=class SDKDOMInstanceBase extends C3.SDKWorldInstanceBase{constructor(inst,domComponentId){super(inst,domComponentId);this._elementId=this.GetPlugin()._AddElement(this);this._isElementShowing=true;this._elemHasFocus=false;this._autoFontSize=false;this._autoFontSizeOffset=-.2;this._lastRect=C3.New(C3.Rect,0,0,-1,-1);const canvasManager=this._runtime.GetCanvasManager();this._lastWindowWidth=canvasManager.GetLastWidth();this._lastWindowHeight=canvasManager.GetLastHeight();this._lastHTMLIndex= +-1;this._lastHTMLZIndex=-1;this._isPendingUpdateState=false;this._StartTicking()}Release(){this.GetPlugin()._RemoveElement(this._elementId);this.PostToDOMElement("destroy");this._elementId=-1;super.Release()}_GetElementInDOMMode(){if(this._runtime.IsInWorker())throw new Error("not valid in worker mode");return this._PostToDOMElementMaybeSync("get-element")}PostToDOMElement(handler,data){if(!data)data={};data["elementId"]=this._elementId;this.PostToDOM(handler,data)}_PostToDOMElementMaybeSync(handler, +data){if(!data)data={};data["elementId"]=this._elementId;return this._PostToDOMMaybeSync(handler,data)}PostToDOMElementAsync(handler,data){if(!data)data={};data["elementId"]=this._elementId;return this.PostToDOMAsync(handler,data)}CreateElement(data){if(!data)data={};const wi=this.GetWorldInfo();data["elementId"]=this._elementId;data["isVisible"]=wi.IsVisible();data["htmlIndex"]=wi.GetLayer().GetHTMLIndex();data["htmlZIndex"]=wi.GetHTMLZIndex();Object.assign(data,this.GetElementState());this._isElementShowing= +!!data["isVisible"];this._PostToDOMMaybeSync("create",data);this._UpdatePosition(true)}SetElementVisible(v){v=!!v;if(this._isElementShowing===v)return;this._isElementShowing=v;this.PostToDOMElement("set-visible",{"isVisible":v})}Tick(){this._UpdatePosition(false)}_ShouldPreserveElement(){const fullscreenMode=this._runtime.GetCanvasManager().GetFullscreenMode();return C3.Platform.OS==="Android"&&(fullscreenMode==="scale-inner"||fullscreenMode==="scale-outer"||fullscreenMode==="crop")}_UpdatePosition(first){if(this.GetInstance().IsDestroyed())return; +const wi=this.GetWorldInfo();const layer=wi.GetLayer();const bbox=wi.GetBoundingBox();let [cleft,ctop]=layer.LayerToCanvasCss(bbox.getLeft(),bbox.getTop());let [cright,cbottom]=layer.LayerToCanvasCss(bbox.getRight(),bbox.getBottom());const canvasManager=this._runtime.GetCanvasManager();const rightEdge=canvasManager.GetCssWidth();const bottomEdge=canvasManager.GetCssHeight();if(!wi.IsVisible()||!layer.IsVisible()){this.SetElementVisible(false);return}if(!this._ShouldPreserveElement())if(cright<=0|| +cbottom<=0||cleft>=rightEdge||ctop>=bottomEdge){this.SetElementVisible(false);return}tempRect.set(cleft,ctop,cright,cbottom);const curWinWidth=canvasManager.GetLastWidth();const curWinHeight=canvasManager.GetLastHeight();const curHTMLIndex=layer.GetHTMLIndex();const curHTMLZIndex=wi.GetHTMLZIndex();if(!first&&tempRect.equals(this._lastRect)&&this._lastWindowWidth===curWinWidth&&this._lastWindowHeight===curWinHeight&&this._lastHTMLIndex===curHTMLIndex&&this._lastHTMLZIndex===curHTMLZIndex){this.SetElementVisible(true); +return}this._lastRect.copy(tempRect);this._lastWindowWidth=curWinWidth;this._lastWindowHeight=curWinHeight;this._lastHTMLIndex=curHTMLIndex;this._lastHTMLZIndex=curHTMLZIndex;this.SetElementVisible(true);let fontSize=null;if(this._autoFontSize)fontSize=layer.GetDisplayScale()+this._autoFontSizeOffset;this.PostToDOMElement("update-position",{"left":Math.round(this._lastRect.getLeft()),"top":Math.round(this._lastRect.getTop()),"width":Math.round(this._lastRect.width()),"height":Math.round(this._lastRect.height()), +"htmlIndex":curHTMLIndex,"htmlZIndex":curHTMLZIndex,"fontSize":fontSize})}FocusElement(){this._PostToDOMElementMaybeSync("focus",{"focus":true})}BlurElement(){this._PostToDOMElementMaybeSync("focus",{"focus":false})}_OnElemFocused(){this._elemHasFocus=true}_OnElemBlurred(){this._elemHasFocus=false}IsElementFocused(){return this._elemHasFocus}SetElementCSSStyle(prop,val){this.PostToDOMElement("set-css-style",{"prop":C3.CSSToCamelCase(prop),"val":val})}SetElementAttribute(attribName,value){this.PostToDOMElement("set-attribute", +{"name":attribName,"val":value})}RemoveElementAttribute(attribName){this.PostToDOMElement("remove-attribute",{"name":attribName})}UpdateElementState(){if(this._isPendingUpdateState)return;this._isPendingUpdateState=true;Promise.resolve().then(()=>{this._isPendingUpdateState=false;this.PostToDOMElement("update-state",this.GetElementState())})}GetElementState(){}GetElementId(){return this._elementId}}; + +} + +// sdk/sdkBehaviorBase.js +{ +'use strict';const C3=self.C3;const IBehavior=self.IBehavior; +C3.SDKBehaviorBase=class SDKBehaviorBase extends C3.DefendedBase{constructor(opts){super();this._runtime=opts.runtime;this._myObjectClasses=C3.New(C3.ArraySet);this._myInstances=C3.New(C3.ArraySet);this._sdkVersion=opts.sdkVersion;this._scriptInterfaceClass=opts.scriptInterfaceClass;this._iBehavior=null}Release(){this._myInstances.Release();this._myObjectClasses.Release();this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}GetSdkVersion(){return this._sdkVersion}GetScriptInterfaceClass(allowDefault=false){let Class= +this._scriptInterfaceClass;if(allowDefault&&typeof Class!=="function"&&this.GetSdkVersion()>=2)Class=globalThis.ISDKBehaviorBase;return Class}_AddObjectClass(objectClass){this._myObjectClasses.Add(objectClass)}GetObjectClasses(){return this._myObjectClasses.GetArray()}_AddInstance(inst){this._myInstances.Add(inst)}_RemoveInstance(inst){this._myInstances.Delete(inst)}GetInstances(){return this._myInstances.GetArray()}_InitScriptInterface(){const sdkVersion=this.GetSdkVersion();C3.AddonManager._PushInitObject(this, +sdkVersion);const CustomScriptClass=this.GetScriptInterfaceClass(true);if(CustomScriptClass){this._iBehavior=new CustomScriptClass;if(!(this._iBehavior instanceof IBehavior))throw new TypeError("behavior class must derive from IBehavior");}else this._iBehavior=new IBehavior;C3.AddonManager._PopInitObject(sdkVersion)}GetIBehavior(){return this._iBehavior}}; + +} + +// sdk/sdkBehaviorTypeBase.js +{ +'use strict';const C3=self.C3;C3.SDKBehaviorTypeBase=class SDKBehaviorTypeBase extends C3.DefendedBase{constructor(behaviorType){super();this._runtime=behaviorType.GetRuntime();this._behaviorType=behaviorType;this._objectClass=behaviorType.GetObjectClass();this._behavior=behaviorType.GetBehavior();this._behavior._AddObjectClass(this._objectClass)}Release(){this._runtime=null;this._behaviorType=null;this._objectClass=null;this._behavior=null}OnCreate(){}GetBehaviorType(){return this._behaviorType}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetBehavior(){return this._behavior}}; + +} + +// sdk/sdkBehaviorInstanceBase.js +{ +'use strict';const C3=self.C3; +C3.SDKBehaviorInstanceBase=class SDKBehaviorInstanceBase extends C3.DefendedBase{constructor(behInst,domComponentId){super();this._behInst=behInst;this._domComponentId=domComponentId;this._inst=behInst.GetObjectInstance();this._runtime=behInst.GetRuntime();this._behaviorType=behInst.GetBehaviorType();this._sdkType=this._behaviorType.GetSdkType();this._isTicking=false;this._isTicking2=false;this._isPostTicking=false;this._disposables=null}Release(){this._StopTicking();this._StopTicking2();this._StopPostTicking(); +if(this._disposables){this._disposables.Release();this._disposables=null}this._behInst=null;this._inst=null;this._runtime=null;this._behaviorType=null;this._sdkType=null}GetBehavior(){return this._behaviorType.GetBehavior()}GetBehaviorInstance(){return this._behInst}GetObjectInstance(){return this._inst}GetObjectClass(){return this._inst.GetObjectClass()}GetWorldInfo(){return this._inst.GetWorldInfo()}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetSdkType(){return this._sdkType}GetScriptInterface(){return this._behInst.GetScriptInterface()}Trigger(method){return this._runtime.Trigger(method, +this._inst,this._behaviorType)}DebugTrigger(method){return this._runtime.DebugTrigger(method,this._inst,this._behaviorType)}TriggerAsync(method){return this._runtime.TriggerAsync(method,this._inst,this._behaviorType)}PostCreate(){}Tick(){}Tick2(){}PostTick(){}_StartTicking(){if(this._isTicking)return;this._runtime._AddBehInstToTick(this);this._isTicking=true}_StopTicking(){if(!this._isTicking)return;this._runtime._RemoveBehInstToTick(this);this._isTicking=false}IsTicking(){return this._isTicking}_StartTicking2(){if(this._isTicking2)return; +this._runtime._AddBehInstToTick2(this);this._isTicking2=true}_StopTicking2(){if(!this._isTicking2)return;this._runtime._RemoveBehInstToTick2(this);this._isTicking2=false}IsTicking2(){return this._isTicking2}_StartPostTicking(){if(this._isPostTicking)return;this._runtime._AddBehInstToPostTick(this);this._isPostTicking=true}_StopPostTicking(){if(!this._isPostTicking)return;this._runtime._RemoveBehInstToPostTick(this);this._isPostTicking=false}IsPostTicking(){return this._isPostTicking}GetDebuggerProperties(){return[]}AddDOMMessageHandler(handler, +func){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,handler,func)}OnSpriteFrameChanged(prevFrame,nextFrame){}SaveToJson(){return null}LoadFromJson(o){}GetPropertyValueByIndex(index){}SetPropertyValueByIndex(index,value){}OffsetPropertyValueByIndex(index,offset){if(offset===0)return;const value=this.GetPropertyValueByIndex(index);if(typeof value!=="number")throw new Error("expected number");this.SetPropertyValueByIndex(index,value+offset)}SetPropertyColorOffsetValueByIndex(index, +offsetR,offsetG,offsetB){}CallAction(actMethod,...args){actMethod.call(this,...args)}CallExpression(expMethod,...args){return expMethod.call(this,...args)}GetScriptInterfaceClass(){return null}DispatchScriptEvent(name,cancelable,additionalProperties){if(!this._behInst.HasScriptInterface())return;const scriptInterface=this.GetScriptInterface();const e=C3.New(C3.Event,name,cancelable);e.behaviorInstance=scriptInterface;e.instance=scriptInterface.instance;if(additionalProperties)Object.assign(e,additionalProperties); +scriptInterface.dispatchEvent(e)}}; + +} + +// objects/addonManager.js +{ +'use strict';const C3=self.C3;C3.Plugins={};C3.Behaviors={};const internalApiToken=C3._GetInternalAPIToken();function ValidateInternalAPIToken(token){if(token!==internalApiToken)throw new Error("invalid internal API token");}let initObjectStack=[];let initObjectStack2=[];let initPropertiesStack=[];let originalPushInitObject=null;let originalPopInitObject=null;let originalGetInitObject=null;let originalGetInitObject2=null;const pluginsByCtor=new Map;const behaviorsByCtor=new Map; +C3.AddonManager=class AddonManager extends C3.DefendedBase{constructor(runtime,wrapperComponentIds){super();this._runtime=runtime;this._allPlugins=[];this._systemPlugin=null;this._allBehaviors=[];this._delayCreateBehaviors=new Map;this._solidBehavior=null;this._jumpthruBehavior=null;this._wrapperComponentIds=new Set(wrapperComponentIds)}CreatePlugin(pluginData){const sdkVersion=pluginData[19];const Ctor=this._runtime.GetObjectReference(pluginData[0]);if(!Ctor)throw new Error("missing plugin");C3.AddCommonACEs(pluginData, +Ctor);const PluginClass=sdkVersion>=2?C3.SDKPluginBase:Ctor;const plugin=C3.New(PluginClass,{runtime:this._runtime,isSingleGlobal:pluginData[1],isWorld:pluginData[2],isRotatable:pluginData[5],hasEffects:pluginData[8],mustPredraw:pluginData[9],supportsSceneGraph:pluginData[13],supportsMesh:pluginData[14],isHTMLElementType:pluginData[17],is3d:pluginData[18],sdkVersion,scriptInterfaceClass:sdkVersion>=2?Ctor:null});plugin.OnCreate();this._allPlugins.push(plugin);pluginsByCtor.set(Ctor,plugin)}CreateSystemPlugin(){this._systemPlugin= +C3.New(C3.Plugins.System,{runtime:this._runtime,isSingleGlobal:true});this._systemPlugin.OnCreate()}CreateBehavior(behaviorData){const sdkVersion=behaviorData[1];const Ctor=this._runtime.GetObjectReference(behaviorData[0]);if(!Ctor)throw new Error("missing behavior");this._delayCreateBehaviors.set(Ctor,()=>{const BehaviorClass=sdkVersion>=2?C3.SDKBehaviorBase:Ctor;const behavior=C3.New(BehaviorClass,{runtime:this._runtime,sdkVersion,scriptInterfaceClass:sdkVersion>=2?Ctor:null});behavior.OnCreate(); +this._allBehaviors.push(behavior);behaviorsByCtor.set(Ctor,behavior);if(!this._solidBehavior&&C3.Behaviors.solid&&behavior instanceof C3.Behaviors.solid)this._solidBehavior=behavior;else if(!this._jumpthruBehavior&&C3.Behaviors.jumpthru&&behavior instanceof C3.Behaviors.jumpthru)this._jumpthruBehavior=behavior;behavior._InitScriptInterface()})}_DelayCreateBehavior(Ctor){const initFunc=this._delayCreateBehaviors.get(Ctor);if(!initFunc)return;initFunc();this._delayCreateBehaviors.delete(Ctor)}static _PushInitObject(obj, +sdkVersion=1){if(C3.AddonManager._PushInitObject!==originalPushInitObject)throw new Error(`invalid method`);if(sdkVersion===1)initObjectStack.push(obj);initObjectStack2.push(obj)}static _PopInitObject(sdkVersion=1){if(C3.AddonManager._PopInitObject!==originalPopInitObject)throw new Error(`invalid method`);if(sdkVersion===1)initObjectStack.pop();initObjectStack2.pop()}static _GetInitObject(){if(C3.AddonManager._GetInitObject!==originalGetInitObject)throw new Error(`invalid method`);if(initObjectStack.length=== +0)throw new Error(`no init object set`);return initObjectStack.at(-1)}static _GetInitObject2(token){if(C3.AddonManager._GetInitObject2!==originalGetInitObject2)throw new Error(`invalid method`);ValidateInternalAPIToken(token);if(initObjectStack2.length===0)throw new Error(`no init object set`);return initObjectStack2.at(-1)}static _PushInitProperties(props){initPropertiesStack.push(props)}static _PopInitProperties(){initPropertiesStack.pop()}static _GetInitProperties(){if(initPropertiesStack.length=== +0)throw new Error(`no init properties set`);return initPropertiesStack.at(-1)}_InitAddonScriptInterfaces(){for(const p of this._allPlugins)p._InitScriptInterface()}static GetPluginByConstructorFunction(ctor){return pluginsByCtor.get(ctor)||null}static GetBehaviorByConstructorFunction(ctor){return behaviorsByCtor.get(ctor)||null}GetSystemPlugin(){return this._systemPlugin}GetSolidBehavior(){return this._solidBehavior}GetJumpthruBehavior(){return this._jumpthruBehavior}HasWrapperComponentId(id){return this._wrapperComponentIds.has(id)}}; +originalPushInitObject=C3.AddonManager._PushInitObject;originalPopInitObject=C3.AddonManager._PopInitObject;originalGetInitObject=C3.AddonManager._GetInitObject;originalGetInitObject2=C3.AddonManager._GetInitObject2; + +} + +// objects/imageInfo.js +{ +'use strict';const C3=self.C3;const allImageInfos=new Set; +C3.ImageInfo=class ImageInfo extends C3.DefendedBase{constructor(){super();this._generation=0;this._url="";this._size=0;this._offsetX=0;this._offsetY=0;this._width=0;this._height=0;this._isRotated=false;this._hasMetaData=false;this._imageAsset=null;this._textureState="";this._rcTex=C3.New(C3.Rect);this._quadTex=C3.New(C3.Quad);this._blobUrl="";this._iImageInfo=new self.IImageInfo(this);allImageInfos.add(this)}Release(){this.ReleaseTexture();if(this._imageAsset&&this._imageAsset.GetRefCount()===0)this._imageAsset.Release(); +this._imageAsset=null;allImageInfos.delete(this);this.ReleaseBlobURL()}static OnRendererContextLost(){for(const imageInfo of allImageInfos){imageInfo._textureState="";imageInfo._rcTex.set(0,0,0,0);imageInfo._quadTex.setFromRect(imageInfo._rcTex)}}LoadData(imageData){this._url=imageData[0];this._size=imageData[1];this._offsetX=imageData[2];this._offsetY=imageData[3];this._width=imageData[4];this._height=imageData[5];this._isRotated=imageData[6];this._hasMetaData=true}LoadDynamicAsset(runtime,url){if(this._imageAsset)throw new Error("already loaded asset"); +this._url=url;const opts={};if(C3.IsAbsoluteURL(url))opts.loadPolicy="remote";this.LoadAsset(runtime,opts);return this._imageAsset.Load()}LoadDynamicBlobAsset(runtime,blob){if(this._imageAsset)throw new Error("already loaded asset");this._url="";this._size=blob.size;this._imageAsset=C3.New(C3.ImageAsset,runtime.GetAssetManager(),{blob,size:this._size,loadPolicy:"local"})}ReplaceWith(otherImageInfo){if(otherImageInfo===this)throw new Error("cannot replace with self");this._generation++;this.ReleaseTexture(); +this._url=otherImageInfo._url;this._size=otherImageInfo._size;this._offsetX=otherImageInfo._offsetX;this._offsetY=otherImageInfo._offsetY;this._width=otherImageInfo._width;this._height=otherImageInfo._height;this._isRotated=otherImageInfo._isRotated;this._hasMetaData=otherImageInfo._hasMetaData;this._imageAsset=otherImageInfo._imageAsset;this._textureState=otherImageInfo._textureState;this._rcTex=otherImageInfo._rcTex;this._quadTex=otherImageInfo._quadTex;this.ReleaseBlobURL()}GetURL(){return this._url}GetSize(){return this._size}GetOffsetX(){return this._offsetX}GetOffsetY(){return this._offsetY}IsRotated(){return this._isRotated}GetWidth(){return this._width}GetHeight(){return this._height}GetSheetWidth(){return this._imageAsset.GetWidth()}GetSheetHeight(){return this._imageAsset.GetHeight()}LoadAsset(runtime, +opts){if(this._imageAsset)throw new Error("already got asset");opts=Object.assign({},opts,{url:this.GetURL(),size:this.GetSize()});this._imageAsset=runtime.LoadImage(opts)}IsLoaded(){return this._imageAsset&&this._imageAsset.IsLoaded()}async LoadStaticTexture(renderer,opts){if(!this._imageAsset)throw new Error("no asset");if(this._textureState)throw new Error("already loaded texture");const startGeneration=this._generation;this._textureState="loading";const texture=await this._imageAsset.LoadStaticTexture(renderer, +opts);if(this._generation!==startGeneration)return null;if(!texture){this._textureState="";return null}this._textureState="loaded";if(!this._hasMetaData){this._width=texture.GetWidth();this._height=texture.GetHeight();this._hasMetaData=true}const wr=this._isRotated?this._height:this._width;const hr=this._isRotated?this._width:this._height;this._rcTex.set(this._offsetX,this._offsetY,this._offsetX+wr,this._offsetY+hr);this._rcTex.divide(texture.GetWidth(),texture.GetHeight());this._quadTex.setFromRect(this._rcTex); +if(this._isRotated)this._quadTex.rotatePointsAnticlockwise();return texture}ReleaseTexture(){if(!this._textureState)return;if(this._imageAsset)this._imageAsset.ReleaseTexture();this._textureState="";this._rcTex.set(0,0,0,0);this._quadTex.setFromRect(this._rcTex)}GetTexture(){return this._imageAsset&&this._textureState==="loaded"?this._imageAsset.GetTexture():null}GetTexRect(){return this._rcTex}GetTexQuad(){return this._quadTex}GetIImageInfo(){return this._iImageInfo}GetImageAsset(){return this._imageAsset}async ExtractImageToCanvas(drawable){if(!drawable)drawable= +await this._imageAsset.LoadToDrawable();const canvas=C3.CreateCanvas(this._width,this._height);const ctx=canvas.getContext("2d");if(this._isRotated){ctx.rotate(Math.PI/-2);ctx.translate(-this._height,0);ctx.drawImage(drawable,this._offsetX,this._offsetY,this._height,this._width,0,0,this._height,this._width)}else ctx.drawImage(drawable,this._offsetX,this._offsetY,this._width,this._height,0,0,this._width,this._height);return canvas}async ExtractImageToBlobURL(drawable){if(this._blobUrl)return this._blobUrl; +const canvas=await this.ExtractImageToCanvas(drawable);const blob=await C3.CanvasToBlob(canvas);this._blobUrl=URL.createObjectURL(blob);return this._blobUrl}ReleaseBlobURL(){if(this._blobUrl){URL.revokeObjectURL(this._blobUrl);this._blobUrl=""}}}; + +} + +// objects/animationInfo.js +{ +'use strict';const C3=self.C3; +C3.AnimationInfo=class AnimationInfo extends C3.DefendedBase{constructor(animData){super();this._name=animData[0];this._speed=animData[1];this._isLooping=!!animData[2];this._repeatCount=animData[3];this._repeatTo=animData[4];this._isPingPong=!!animData[5];this._sid=animData[6];this._frames=animData[7].map(frameData=>C3.New(C3.AnimationFrameInfo,frameData));this._iAnimation=new self.IAnimation(this)}static CreateDynamic(runtime,name){const ret=C3.New(C3.AnimationInfo,[name,0,false,0,0,false,Math.floor(Math.random()* +1E15),[]]);ret._frames.push(C3.AnimationFrameInfo.CreateDynamic(runtime));return ret}Release(){for(const f of this._frames)f.Release();C3.clearArray(this._frames)}LoadAllAssets(runtime){for(const f of this._frames)f.GetImageInfo().LoadAsset(runtime)}LoadAllTextures(renderer,opts){return Promise.all(this._frames.map(f=>f.GetImageInfo().LoadStaticTexture(renderer,opts)))}ReleaseAllTextures(){for(const f of this._frames)f.GetImageInfo().ReleaseTexture()}GetName(){return this._name}GetSID(){return this._sid}GetFrameCount(){return this._frames.length}GetFrames(){return this._frames}GetFrameAt(i){i= +Math.floor(i);if(i<0||i>=this._frames.length)throw new RangeError("invalid frame");return this._frames[i]}InsertFrameAt(frame,i){i=Math.floor(i);if(i<0)this._frames.unshift(frame);else if(i>=this._frames.length)this._frames.push(frame);else this._frames.splice(i,0,frame)}RemoveFrameAt(i){i=Math.floor(i);if(i<0||i>=this._frames.length)throw new RangeError("invalid frame");this._frames[i].Release();this._frames.splice(i,1)}GetFrameIndexByTag(tag){for(let i=0,len=this._frames.length;i{const EMPTY_IMAGE_BASE64="iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAAAXNSR0IArs4c6QAAAANQTFRFAAAAp3o92gAAAAF0Uk5TAEDm2GYAAAATSURBVBgZYxgFo2AUjIJRQFcAAAV4AAHcRQIbAAAAAElFTkSuQmCC";const binStr=atob(EMPTY_IMAGE_BASE64);const uint8arr=new Uint8Array(binStr.length);for(let i=0,len=binStr.length;iC3.New(C3.ImagePoint,this,data));this._imagePointsByName=new Map;for(const ip of this._imagePoints)this._imagePointsByName.set(ip.GetName().toLowerCase(),ip);this._collisionPoly=null;const polyPoints= +frameData[11];if(polyPoints.length>=6)this._collisionPoly=C3.New(C3.CollisionPoly,polyPoints);this._tag=frameData[12]?frameData[12]:"";this._iAnimationFrame=new self.IAnimationFrame(this)}static CreateDynamic(runtime){const ret=C3.New(C3.AnimationFrameInfo,["",0,0,0,100,100,false,1,0,0,[],[],""]);ret._imageInfo.LoadDynamicBlobAsset(runtime,EMPTY_IMAGE_BLOB);return ret}Release(){if(this._collisionPoly){this._collisionPoly.Release();this._collisionPoly=null}this._imageInfo.Release();this._imageInfo= +null}GetImageInfo(){return this._imageInfo}GetDuration(){return this._duration}GetOriginX(){return this._origin.getX()}GetOriginY(){return this._origin.getY()}GetCollisionPoly(){return this._collisionPoly}GetImagePointByName(name){return this._imagePointsByName.get(name.toLowerCase())||null}GetImagePointByIndex(index){index=Math.floor(index);if(index<0||index>=this._imagePoints.length)return null;return this._imagePoints[index]}GetImagePointCount(){return this._imagePoints.length}GetTag(){return this._tag}GetIAnimationFrame(){return this._iAnimationFrame}}; + +} + +// objects/imagePoint.js +{ +'use strict';const C3=self.C3;C3.ImagePoint=class ImagePoint extends C3.DefendedBase{constructor(afi,data){super();this._afi=afi;this._name=data[0];this._pos=C3.New(C3.Vector2,data[1],data[2])}Release(){}GetName(){return this._name}GetX(){return this._pos.getX()}GetY(){return this._pos.getY()}GetVec2(){return this._pos}}; + +} + +// objects/objectClass.js +{ +'use strict';const C3=self.C3;const C3Debugger=self.C3Debugger;const IObjectClass=self.IObjectClass;const assert=self.assert; +C3.ObjectClass=class ObjectClass extends C3.DefendedBase{constructor(runtime,index,data){super();const PluginCtor=runtime.GetObjectReference(data[1]);this._runtime=runtime;this._plugin=C3.AddonManager.GetPluginByConstructorFunction(PluginCtor);this._sdkType=null;this._instSdkCtor=PluginCtor.Instance;this._index=index;this._sid=data[11];this._name=data[0];this._jsPropName=this._runtime.GetJsPropName(data[14]);this._isGlobal=!!data[9];this._isFamily=!!data[2];this._isOnLoaderLayout=!!data[10];this._instVars= +data[3].map(arr=>({sid:arr[0],type:arr[1],name:arr[2],jsPropName:runtime.GetJsPropName(arr[3])}));this._behaviorsCount=data[4];this._effectsCount=data[5];this._isWorldType=this._plugin.IsWorldType();this._dispatcher=C3.New(C3.Event.Dispatcher);this._effectList=null;const [collisionCellWidth,collisionCellHeight]=runtime.GetCollisionEngine().GetCollisionCellSize();this._collisionGrid=C3.New(C3.SparseGrid,collisionCellWidth,collisionCellHeight);this._anyCollisionCellChanged=true;this._anyInstanceParallaxed= +false;this._familyMembers=null;this._familyMembersSet=null;this._familyIndex=-1;this._families=null;this._familiesSet=null;this._familyInstVarMap=null;this._familyBehaviorMap=null;this._familyEffectMap=null;this._isInContainer=false;this._container=null;this._behaviorTypes=data[8].map(behaviorTypeData=>C3.BehaviorType.Create(this,behaviorTypeData));this._behaviorTypesIncludingInherited=[];this._behaviorsByName=new Map;this._behaviorNameToIndex=new Map;this._usedBehaviorCtors=new Set;this._customActionMap= +new Map;this._solStack=C3.New(C3.SolStack,this);this._defaultInstanceData=null;this._defaultLayerIndex=0;this._isContained=false;this._container=null;this._imageInfo=null;this._animations=null;this._animationsByName=null;this._animationsBySid=null;this._textureRefCount=0;this._savedData=new Map;this._unsavedData=new Map;this._instances=[];this._iidsStale=true;if(this._plugin.HasEffects())this._effectList=C3.New(C3.EffectList,this,data[12]);if(data[6]){this._imageInfo=C3.New(C3.ImageInfo);this._imageInfo.LoadData(data[6])}if(data[7]){this._animations= +data[7].map(animData=>C3.New(C3.AnimationInfo,animData));this._animationsByName=new Map;this._animationsBySid=new Map;for(const anim of this._animations){this._animationsByName.set(anim.GetName().toLowerCase(),anim);this._animationsBySid.set(anim.GetSID(),anim)}}if(this._isFamily){this._familyMembers=[];this._familyMembersSet=new Set;this._familyIndex=this._runtime._GetNextFamilyIndex()}else{this._families=[];this._familiesSet=new Set;this._familyInstVarMap=[];this._familyBehaviorMap=[];this._familyEffectMap= +[]}const sdkVersion=this._plugin.GetSdkVersion();if(sdkVersion<2){this._sdkType=C3.New(PluginCtor.Type,this,data[15]);if(!(this._sdkType instanceof C3.SDKTypeBase))throw new Error("v1 sdk type must derive from SDKTypeBase");}this._iObjectClass=null;this._instanceUserScriptClass=null;this._userScriptDispatcher=C3.New(C3.Event.Dispatcher);C3.AddonManager._PushInitObject(this,sdkVersion);let CustomScriptClass;if(sdkVersion>=2){CustomScriptClass=PluginCtor.Type;if(!CustomScriptClass)CustomScriptClass= +globalThis.ISDKObjectTypeBase}else CustomScriptClass=this._sdkType.GetScriptInterfaceClass();if(CustomScriptClass){this._iObjectClass=new CustomScriptClass(sdkVersion<2?this:null);if(sdkVersion<2&&!(this._iObjectClass instanceof IObjectClass))throw new TypeError("script interface class must derive from IObjectClass");if(sdkVersion>=2&&!(this._iObjectClass instanceof globalThis.ISDKObjectTypeBase))throw new TypeError("script interface class must derive from ISDKObjectTypeBase");}else this._iObjectClass= +new IObjectClass;C3.AddonManager._PopInitObject(sdkVersion);if(data[13]){const tilemapData=data[13];if(tilemapData){const tilePolyData=tilemapData[0];const maxTileIndex=tilemapData[1];const brushData=tilemapData[2];this._sdkType.LoadTilemapData(tilePolyData,maxTileIndex,brushData)}}if(!this._runtime.UsesLoaderLayout()||this._isFamily||this._isOnLoaderLayout||!this._isWorldType)this.OnCreate();if(this._plugin.IsSingleGlobal()){this._plugin._SetSingleGlobalObjectClass(this);this._CreateSingleGlobalInstance(data)}this._loadInstancesJson= +null}static Create(runtime,index,objectClassData){return C3.New(C3.ObjectClass,runtime,index,objectClassData)}Release(){this._dispatcher.Release();this._dispatcher=null;if(this._imageInfo){this._imageInfo.Release();this._imageInfo=null}if(this._animations){for(const a of this._animations)a.Release();C3.clearArray(this._animations);this._animationsByName.clear();this._animationsBySid.clear()}this._loadInstancesJson=null;this._solStack.Release();this._solStack=null;this._savedData.clear();this._unsavedData.clear(); +this._container=null;this._runtime=null}_LoadFamily(familyData){for(let i=1,len=familyData.length;i0}async LoadTextures(renderer){if(this._isFamily)return; +this._textureRefCount++;if(this._textureRefCount===1)if(this._sdkType)await this._sdkType.LoadTextures(renderer);else await this._iObjectClass._loadTextures(this._runtime.GetCanvasManager().GetIRenderer())}ReleaseTextures(){if(this._isFamily)return;this._textureRefCount--;if(this._textureRefCount<0)throw new Error("released textures too many times");if(this._textureRefCount===0)if(this._sdkType)this._sdkType.ReleaseTextures();else this._iObjectClass._releaseTextures(this._runtime.GetCanvasManager().GetIRenderer())}OnDynamicTextureLoadComplete(){if(this._isFamily)throw new Error("not applicable to family"); +if(this._sdkType)this._sdkType.OnDynamicTextureLoadComplete();else this._iObjectClass._onDynamicTextureLoadComplete()}async PreloadTexturesWithInstances(renderer){if(this._isFamily)return;if(this._sdkType)await this._sdkType.PreloadTexturesWithInstances(renderer);else await this._iObjectClass._preloadTexturesWithInstances(this._runtime.GetCanvasManager().GetIRenderer())}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetJsPropName(){return this._jsPropName}GetIndex(){return this._index}GetSID(){return this._sid}IsFamily(){return this._isFamily}IsGlobal(){return this._isGlobal}IsWorldType(){return this._isWorldType}GetFamilyIndex(){return this._familyIndex}GetBehaviorTypes(){return this._behaviorTypes}GetBehaviorTypesCount(){return this._behaviorsCount}UsesBehaviorByCtor(Ctor){return Ctor&& +this._usedBehaviorCtors.has(Ctor)}GetInstanceVariablesCount(){return this._instVars.length}GetInstanceVariableSIDs(){return this._instVars.map(iv=>iv.sid)}GetInstanceVariableIndexBySID(sid){return this._instVars.findIndex(iv=>iv.sid===sid)}GetInstanceVariableIndexByName(name){return this._instVars.findIndex(iv=>iv.name===name)}_GetAllInstanceVariableNames(){return this._instVars.map(iv=>iv.name)}_GetAllInstanceVariableJsPropNames(){return this._instVars.map(iv=>iv.jsPropName)}GetInstanceVariableType(i){i= +Math.floor(i);if(i<0||i>=this._instVars.length)throw new RangeError("invalid instance variable index");return this._instVars[i].type}GetInstanceVariableName(i){i=Math.floor(i);if(i<0||i>=this._instVars.length)throw new RangeError("invalid instance variable index");return this._instVars[i].name}GetEffectTypesCount(){return this._effectsCount}GetBehaviorTypesIncludingInherited(){return this._behaviorTypesIncludingInherited}GetBehaviorTypeByName(name){return this._behaviorsByName.get(name.toLowerCase())|| +null}GetBehaviorIndexByName(name){const ret=this._behaviorNameToIndex.get(name.toLowerCase());if(typeof ret==="undefined")return-1;else return ret}GetEffectList(){return this._effectList}HasEffects(){return this._plugin.HasEffects()}UsesEffects(){return this._effectList&&this._effectList.HasAnyEffectType()}GetSolStack(){return this._solStack}GetCurrentSol(){return this._solStack.GetCurrentSol()}GetImageInfo(){return this._imageInfo}SetDefaultInstanceData(d){this._defaultInstanceData=d}GetDefaultInstanceData(){return this._defaultInstanceData}_SetDefaultLayerIndex(i){this._defaultLayerIndex= +i}GetDefaultLayerIndex(){return this._defaultLayerIndex}GetAnimations(){return this._animations}GetAnimationCount(){return this._animations.length}GetFamilies(){return this._families}BelongsToFamily(family){return this._familiesSet.has(family)}GetFamilyMembers(){return this._familyMembers}FamilyHasMember(objectType){return this._familyMembersSet.has(objectType)}GetFamilyBehaviorOffset(familyIndex){return this._familyBehaviorMap[familyIndex]}GetFamilyInstanceVariableOffset(familyIndex){return this._familyInstVarMap[familyIndex]}AddCustomAction(customAceBlock){this._customActionMap.set(customAceBlock.GetACEName().toLowerCase(), +customAceBlock)}HasOwnCustomActionByName(name){return!!this.GetOwnCustomActionByName(name)}GetOwnCustomActionByName(name){const ret=this._customActionMap.get(name.toLowerCase());return ret&&ret.IsEnabled()?ret:null}GetAllAnimations(){return this._animations}GetAnimationByName(name){if(!this._animations)throw new Error("no animations");return this._animationsByName.get(name.toLowerCase())||null}GetAnimationBySID(sid){if(!this._animations)throw new Error("no animations");return this._animationsBySid.get(sid)|| +null}AddAnimation(name){if(this.GetAnimationByName(name))throw new Error(`animation name '${name}' already exists`);const anim=C3.AnimationInfo.CreateDynamic(this.GetRuntime(),name);this._animations.push(anim);this._animationsByName.set(anim.GetName().toLowerCase(),anim);this._animationsBySid.set(anim.GetSID(),anim);return anim}RemoveAnimation(name){const anim=this.GetAnimationByName(name);if(!anim)throw new Error(`animation name '${name}' does not exist`);if(this._animations.length===1)throw new Error(`cannot remove last animation`); +const i=this._animations.indexOf(anim);this._animations.splice(i,1);this._animationsByName.delete(anim.GetName().toLowerCase());this._animationsBySid.delete(anim.GetSID());anim.Release()}GetFirstAnimation(){if(!this._animations)throw new Error("no animations");return this._animations[0]}GetFirstAnimationFrame(){return this.GetFirstAnimation().GetFrameAt(0)}GetDefaultInstanceSize(){if(this._animations){const firstFrameInfo=this.GetFirstAnimationFrame().GetImageInfo();return[firstFrameInfo.GetWidth(), +firstFrameInfo.GetHeight()]}else if(this._imageInfo)return[this._imageInfo.GetWidth(),this._imageInfo.GetHeight()];else return[100,100]}GetSingleGlobalInstance(){if(!this._plugin.IsSingleGlobal())throw new Error("not a single-global plugin");return this._instances[0]}GetInstances(){return this._instances}*instances(){yield*this._instances}*instancesIncludingPendingCreate(){yield*this._instances;yield*this._runtime.instancesPendingCreateForObjectClass(this)}GetInstanceCount(){return this._instances.length}_AddInstance(inst){this._instances.push(inst)}_SetIIDsStale(){this._iidsStale= +true}_UpdateIIDs(){if(!this._iidsStale||this._isFamily)return;const instances=this._instances;let i=0;for(let len=instances.length;i0)return instances[inst.GetIID()% +instances.length];else return null}*allCorrespondingInstances(inst,objectClass){const myInstances=this.GetCurrentSol().GetInstances();const myInstanceCount=myInstances.length;const otherSol=objectClass.GetCurrentSol();const otherInstances=objectClass.GetCurrentSol().GetInstances();const otherInstanceCount=otherInstances.length;let index=inst.GetIID();if(objectClass.IsFamily()||!otherSol.IsSelectAll())index=otherInstances.indexOf(inst);const divisor=Math.ceil(myInstanceCount/otherInstanceCount);const remainder= +myInstanceCount%otherInstanceCount;let startIndex=0;let correspondCount=0;if(remainder===0||indexinst.SaveToJson())};if(this._savedData&&this._savedData.size)o["ex"]=C3.ToSuperJSON(this._savedData);return o}_LoadFromJson(o){if(this._savedData){this._savedData.clear();this._savedData=null}const ex=o["ex"];if(ex)this._savedData=C3.FromSuperJSON(ex);const existingInstances=this._instances;const loadInstances=o["instances"];for(let i=0,len=Math.min(existingInstances.length,loadInstances.length);io.IsWorldType())}}; + +} + +// objects/instance.js +{ +'use strict';const C3=self.C3;const C3Debugger=self.C3Debugger;const IInstance=self.IInstance;const originalAddonManager=C3.AddonManager;const EMPTY_ARRAY=[];let nextPuid=0;const savedDataMaps=new WeakMap;const unsavedDataMaps=new WeakMap;const FLAG_DESTROYED=1<<0;const FLAG_TILEMAP=1<<1;const FLAG_MUST_PREDRAW=1<<2;const FLAG_SOLID_ENABLED=1<<3;const FLAG_JUMPTHRU_ENABLED=1<<4;const FLAG_MUST_MITIGATE_Z_FIGHTING=1<<5;const FLAG_IS_DRAWING_WITH_EFFECTS=1<<6; +C3.Instance=class Instance extends C3.DefendedBase{constructor(opts){if(C3.AddonManager!==originalAddonManager)throw new Error(`invalid addon manager`);super();this._runtime=opts.runtime;this._objectType=opts.objectType;this._worldInfo=null;this._sdkInst=null;this._iScriptInterface=null;this._iid=0;this._uid=opts.uid;this._puid=nextPuid++;this._flags=0;this._tagsSet=null;const tagsArray=C3.splitStringAndNormalize(opts.tags);if(tagsArray.length>0)this._tagsSet=new Set(tagsArray);this._instVarValues= +EMPTY_ARRAY;this._behaviorInstances=EMPTY_ARRAY;const behaviorTypes=this._objectType.GetBehaviorTypesIncludingInherited();if(behaviorTypes.length>0)this._behaviorInstances=behaviorTypes.map((behaviorType,index)=>C3.New(C3.BehaviorInstance,{runtime:this._runtime,behaviorType:behaviorType,instance:this,index}));this._siblings=this._objectType.IsInContainer()?[]:null;this._timeScale=-1;this._dispatcher=null;const plugin=this.GetPlugin();if(plugin.MustPreDraw())this._flags|=FLAG_MUST_PREDRAW;if(plugin.IsWorldType()){this._worldInfo= +C3.New(C3.WorldInfo,this,opts.layer);if(opts.worldData)this._worldInfo.Init(opts.worldData);else{this._worldInfo.InitNoData();const [width,height]=this._objectType.GetDefaultInstanceSize();this._worldInfo.SetSize(width,height);if(this.GetObjectClass().UsesEffects())this._worldInfo.GetInstanceEffectList().LoadDefaultEffectParameters()}}if(opts.instVarData)this._LoadInstanceVariableData(opts.instVarData);else this._LoadDefaultInstanceVariables()}Release(){if(this._iScriptInterface){this._iScriptInterface._release(); +this._iScriptInterface=null}if(this._behaviorInstances.length>0){for(const behInst of this._behaviorInstances)behInst.Release();C3.clearArray(this._behaviorInstances)}if(this._sdkInst){this._sdkInst.Release();this._sdkInst=null}const savedData=savedDataMaps.get(this);if(savedData){savedData.clear();savedDataMaps.delete(this)}const unsavedData=unsavedDataMaps.get(this);if(unsavedData){unsavedData.clear();unsavedDataMaps.delete(this)}if(this._siblings)C3.clearArray(this._siblings);if(this._dispatcher){this._dispatcher.Release(); +this._dispatcher=null}if(this._tagsSet)this._tagsSet.clear();this._tagsSet=null;this._runtime=null;this._objectType=null;if(this._instVarValues.length>0)C3.clearArray(this._instVarValues);if(this._worldInfo){this._worldInfo.Release();this._worldInfo=null}}_LoadInstanceVariableData(instVarData){if(instVarData.length>0){this._instVarValues=[];C3.shallowAssignArray(this._instVarValues,instVarData)}}_LoadDefaultInstanceVariables(){const len=this._objectType.GetInstanceVariablesCount();if(len===0)return; +this._instVarValues=[];const typeToInitValue=[0,0,""];for(let i=0;i{const objectClass=objectClass_||inst.GetObjectClass();const instSet=pickMap.get(objectClass);if(instSet)instSet.add(inst);else pickMap.set(objectClass,new Set([inst]))};addInst(this,createdObjectClass);if(this.IsInContainer())for(const s of this.siblings())addInst(s);if(includeHierarchy)for(const c of this.allChildren())addInst(c)}VerifySupportsSceneGraph(){if(!this.GetPlugin().SupportsSceneGraph())throw new Error("object does not support scene graph"); +}HasParent(){return this.GetParent()!==null}GetParent(){const wi=this.GetWorldInfo();if(!wi)return null;const parentWi=wi.GetParent();return parentWi?parentWi.GetInstance():null}GetTopParent(){const wi=this.GetWorldInfo();if(!wi)return null;const parentWi=wi.GetTopParent();return parentWi?parentWi.GetInstance():null}*parents(){const wi=this.GetWorldInfo();if(!wi)return;for(const parentWi of wi.parents())yield parentWi.GetInstance()}HasChild(child){if(!child)return false;for(const c of this.children())if(c=== +child)return true;return false}HasChildren(){const wi=this.GetWorldInfo();return wi?wi.HasChildren():false}GetChildrenOfObjectClass(objectClass){const wi=this.GetWorldInfo();if(!wi)return[];const objectClassName=objectClass.GetName();return wi.GetChildren().map(wi=>wi.GetInstance()).filter(i=>i.GetObjectClass().GetName()===objectClassName)}GetChildren(){const wi=this.GetWorldInfo();if(!wi)return[];return wi.GetChildren().map(wi=>wi.GetInstance())}*children(){const wi=this.GetWorldInfo();if(!wi)return; +for(const childWi of wi.children())yield childWi.GetInstance()}*allChildren(){const wi=this.GetWorldInfo();if(!wi)return;for(const childWi of wi.allChildren())yield childWi.GetInstance()}GetChildCount(){const wi=this.GetWorldInfo();return wi?wi.GetChildCount():0}GetParentCount(){return[...this.parents()].length}GetAllChildCount(){const wi=this.GetWorldInfo();return wi?wi.GetAllChildCount():0}GetChildAt(index){const wi=this.GetWorldInfo();if(!wi)return null;const childWi=wi.GetChildAt(index);return childWi? +childWi.GetInstance():null}GetIndexInParent(){const wi=this.GetWorldInfo();if(!wi)return NaN;const p=wi.GetParent();if(!p)return NaN;return p.GetChildIndex(wi)}AddChild(childInst,opts){this.VerifySupportsSceneGraph();childInst.VerifySupportsSceneGraph();this.GetWorldInfo().AddChild(childInst.GetWorldInfo(),opts||{})}RemoveChild(childInst){const wi=this.GetWorldInfo();if(!wi)return;wi.RemoveChild(childInst.GetWorldInfo())}GetDestroyWithParent(){const wi=this.GetWorldInfo();return wi?wi.GetDestroyWithParent(): +false}SetupInitialSceneGraphConnections(){const wi=this.GetWorldInfo();if(!wi)return;const childrenData=wi.GetSceneGraphChildrenExportData();if(!childrenData)return;for(const childData of childrenData){const child=this._runtime.GetInstanceByUID(childData[2]);if(child){const flags=childData[3];this.AddChild(child,{transformX:!!(flags>>0&1),transformY:!!(flags>>1&1),transformWidth:!!(flags>>2&1),transformHeight:!!(flags>>3&1),transformAngle:!!(flags>>4&1),destroyWithParent:!!(flags>>5&1),transformZElevation:!!(flags>> +6&1),transformOpacity:!!(flags>>7&1),transformVisibility:!!(flags>>8&1)})}}}SetupPersistedSceneGraphConnections(instanceToPersistedDataMap,persistedIndexToInstanceMap){const persistedData=instanceToPersistedDataMap.get(this);if(!persistedData)return;for(const persistedChildData of persistedData["sceneGraphJson"]["children"]){const child=persistedIndexToInstanceMap.get(persistedChildData["index"]);if(!child)continue;const flags=persistedChildData["flags"];this.AddChild(child,{transformX:!!(flags>> +0&1),transformY:!!(flags>>1&1),transformWidth:!!(flags>>2&1),transformHeight:!!(flags>>3&1),transformAngle:!!(flags>>4&1),destroyWithParent:!!(flags>>5&1),transformZElevation:!!(flags>>6&1),transformOpacity:!!(flags>>7&1),transformVisibility:!!(flags>>8&1)})}}GetTemplateName(){const templateManager=this._runtime.GetTemplateManager();return templateManager?templateManager.GetInstanceTemplateName(this):""}IsInContainer(){return this._siblings!==null}_AddSibling(inst){this._siblings.push(inst)}GetSiblings(){return this._siblings}HasSibling(objectClass){return!!this.GetSibling(objectClass)}GetSibling(objectClass){const siblings= +this.siblings();if(siblings===null||siblings.length===0)return false;for(const s of siblings)if(s.GetObjectClass()===objectClass)return s;return null}siblings(){return this._siblings}SetSiblingsSinglePicked(){for(const s of this.siblings())s.GetObjectClass().GetCurrentSol().SetSinglePicked(s)}_PushSiblingsToSolInstances(){for(const s of this.siblings())s.GetObjectClass().GetCurrentSol()._PushInstance(s)}_SetSiblingsToSolInstancesIndex(i){for(const s of this.siblings())s.GetObjectClass().GetCurrentSol()._GetOwnInstances()[i]= +s}_PushSiblingsToSolElseInstances(){for(const s of this.siblings())s.GetObjectClass().GetCurrentSol()._PushElseInstance(s)}_SetSiblingsToSolElseInstancesIndex(i){for(const s of this.siblings())s.GetObjectClass().GetCurrentSol()._GetOwnElseInstances()[i]=s}GetPlugin(){return this._objectType.GetPlugin()}_SetIID(i){this._iid=i}GetIID(){this._objectType._UpdateIIDs();return this._iid}GetUID(){return this._uid}GetPUID(){return this._puid}_SetTagsSetFromJson(jsonArray){if(jsonArray)this.SetTagsSet(new Set(jsonArray)); +else this._tagsSet=null}SetTagsSet(tagsToSet){if(tagsToSet.size===0)this._tagsSet=null;else{if(this._tagsSet)this._tagsSet.clear();else this._tagsSet=new Set;for(const tag of tagsToSet)this._tagsSet.add(tag)}}GetTagsSet(){return this._tagsSet??new Set}GetTagsString(){return Array.from(this.GetTagsSet()).join(" ")}GetTagAt(index){index=Math.floor(index);for(const tag of this.GetTagsSet())if(index===0)return tag;else--index;return""}GetBehaviorInstances(){return this._behaviorInstances}GetBehaviorInstanceFromCtor(ctor){if(!ctor)return null; +for(const behInst of this._behaviorInstances)if(behInst.GetBehavior()instanceof ctor)return behInst;return null}GetBehaviorSdkInstanceFromCtor(ctor){if(!ctor)return null;const behInst=this.GetBehaviorInstanceFromCtor(ctor);if(behInst)return behInst.GetSdkInstance();else return null}GetBehaviorIndexBySID(sid){const behaviorInstances=this._behaviorInstances;for(let i=0,len=behaviorInstances.length;i=instVarValues.length)throw new RangeError("invalid instance variable");return instVarValues[index]}_GetInstanceVariableValueUnchecked(index){return this._instVarValues[index]}_GetInstanceVariableTypedValue(index){const ret=this._instVarValues[index];if(this._objectType.GetInstanceVariableType(index)===0)return!!ret;else return ret}SetInstanceVariableValue(index,value){index=index|0;const instVarValues=this._instVarValues;if(index< +0||index>=instVarValues.length)throw new RangeError("invalid instance variable");const type=this._objectType.GetInstanceVariableType(index);switch(type){case 0:instVarValues[index]=value?1:0;break;case 1:instVarValues[index]=typeof value==="number"?value:parseFloat(value);break;case 2:instVarValues[index]=typeof value==="string"?value:value.toString();break;default:throw new Error("unknown instance variable type");}}SetInstanceVariableOffset(index,offset){if(offset===0)return;index=index|0;const instVarValues= +this._instVarValues;if(index<0||index>=instVarValues.length)throw new RangeError("invalid instance variable");const lastValue=instVarValues[index];if(typeof lastValue==="number")if(typeof offset==="number")instVarValues[index]+=offset;else instVarValues[index]+=parseFloat(offset);else if(typeof lastValue==="boolean")throw new Error("can not set offset of boolean variable");else if(typeof lastValue==="string")throw new Error("can not set offset of string variable");else throw new Error("unknown instance variable type"); +}GetSavedDataMap(){let ret=savedDataMaps.get(this);if(ret)return ret;ret=new Map;savedDataMaps.set(this,ret);return ret}GetUnsavedDataMap(){let ret=unsavedDataMaps.get(this);if(ret)return ret;ret=new Map;unsavedDataMaps.set(this,ret);return ret}_HasAnyCreateDestroyHandler(name){const objectType=this.GetObjectClass();if(objectType.UserScriptDispatcher().HasAnyHandlerFor(name))return true;for(const family of objectType.GetFamilies())if(family.UserScriptDispatcher().HasAnyHandlerFor(name))return true; +if(this._runtime.UserScriptDispatcher().HasAnyHandlerFor(name))return true;return false}_TriggerOnCreatedOnSelfAndRelated(){const instancesToTriggerOnCreated=new Set;instancesToTriggerOnCreated.add(this);const wi=this.GetWorldInfo();if(wi&&wi.HasChildren())for(const c of this.allChildren()){instancesToTriggerOnCreated.add(c);if(!c.IsInContainer())continue;for(const s of c.siblings())instancesToTriggerOnCreated.add(s)}if(this.IsInContainer())for(const s of this.siblings())instancesToTriggerOnCreated.add(s); +for(const instance of instancesToTriggerOnCreated.values())instance._TriggerOnCreated()}_TriggerOnCreated(){if(this._objectType._GetUserScriptInstanceClass())this.GetInterfaceClass();for(const bInst of this._behaviorInstances)bInst.PostCreate();if(this._HasAnyCreateDestroyHandler("instancecreate")){const objectType=this.GetObjectClass();const instCreateEvent=new C3.Event("instancecreate");instCreateEvent.instance=this.GetInterfaceClass();objectType.DispatchUserScriptEvent(instCreateEvent);for(const family of objectType.GetFamilies())family.DispatchUserScriptEvent(instCreateEvent); +this._runtime.DispatchUserScriptEvent(instCreateEvent)}this._runtime.Trigger(this.GetPlugin().GetConstructor().Cnds.OnCreated,this,null)}_TriggerOnDestroyed(){this._runtime.Trigger(this.GetPlugin().GetConstructor().Cnds.OnDestroyed,this,null)}_FireDestroyedScriptEvents(isEndingLayout){if(this._iScriptInterface){const e=new C3.Event("destroy");e.isEndingLayout=isEndingLayout;this.DispatchUserScriptEvent(e)}if(!this._HasAnyCreateDestroyHandler("instancedestroy"))return;const objectType=this.GetObjectClass(); +const instDestroyEvent=new C3.Event("instancedestroy");instDestroyEvent.instance=this.GetInterfaceClass();instDestroyEvent.isEndingLayout=isEndingLayout;objectType.DispatchUserScriptEvent(instDestroyEvent);for(const family of objectType.GetFamilies())family.DispatchUserScriptEvent(instDestroyEvent);this._runtime.DispatchUserScriptEvent(instDestroyEvent)}_GetDebuggerProperties(){if(this._sdkInst)return this._sdkInst.GetDebuggerProperties();else return this._iScriptInterface.getDebuggerProperties()}SaveToJson(mode= +"full",opts=null){const o={};if(mode==="full")o["uid"]=this.GetUID();else o["c3"]=true;const tagsSet=this.GetTagsSet();if(tagsSet.size>0)o["tags"]=Array.from(tagsSet);if(mode!=="visual-state"){const savedData=savedDataMaps.get(this);if(savedData&&savedData.size)o["ex"]=C3.ToSuperJSON(savedData);if(this.GetTimeScale()!==-1)o["mts"]=this.GetTimeScale();if(this._objectType.GetInstanceVariablesCount()>0){const ivs={};const ivSids=this._objectType.GetInstanceVariableSIDs();for(let i=0,len=this._instVarValues.length;i< +len;++i)ivs[ivSids[i].toString()]=this._instVarValues[i];o["ivs"]=ivs}if(this._behaviorInstances.length){const behs={};for(const behInst of this._behaviorInstances){const data=behInst.SaveToJson(mode);if(data)behs[behInst.GetBehaviorType().GetSID().toString()]=data}o["behs"]=behs}}if(this._worldInfo)o["w"]=this._worldInfo._SaveToJson(mode,opts);const ownData=this._sdkInst?this._sdkInst.SaveToJson():this._iScriptInterface._saveToJson();if(ownData)o["data"]=ownData;return o}_OnBeforeLoad(mode="full"){if(this._worldInfo)this._worldInfo._OnBeforeLoad(mode)}_OnAfterLoad(o, +mode="full",opts=null){if(this._worldInfo)this._worldInfo._OnAfterLoad(o,mode,opts)}_OnAfterLoad2(o,mode="full",opts=null){if(this._worldInfo)this._worldInfo._OnAfterLoad2(o,mode,opts)}_SetupSceneGraphConnectionsOnChangeOfLayout(){if(!this.GetPlugin().IsWorldType())return;this._worldInfo._SetupSceneGraphConnectionsOnChangeOfLayout()}LoadFromJson(o,mode="full"){if(mode==="full")this._uid=o["uid"];else if(!o["c3"])return;this._SetTagsSetFromJson(o["tags"]);if(mode!=="visual-state"){let savedData=savedDataMaps.get(this); +if(savedData){savedData.clear();savedDataMaps.delete(this)}const ex=o["ex"];if(ex){savedData=C3.FromSuperJSON(ex);savedDataMaps.set(this,savedData)}this._timeScale=o.hasOwnProperty("mts")?o["mts"]:-1;const ivs=o["ivs"];if(ivs)for(const [sidStr,value]of Object.entries(ivs)){const sid=parseInt(sidStr,10);const index=this._objectType.GetInstanceVariableIndexBySID(sid);if(index<0||index>=this._instVarValues.length)continue;let v=value;if(v===null)v=NaN;this._instVarValues[index]=v}}if(this.GetPlugin().IsWorldType()){const worldData= +o["w"];if(worldData){const layerSid=worldData["l"];if(this._worldInfo.GetLayer().GetSID()!==layerSid){const oldLayer=this._worldInfo.GetLayer();const newLayer=oldLayer.GetLayout().GetLayerBySID(layerSid);if(newLayer){this._worldInfo._SetLayer(newLayer);oldLayer._RemoveInstance(this,true);newLayer._AddInstance(this,true);newLayer.SetZIndicesChanged(this);this._worldInfo.SetBboxChanged()}else if(mode==="full")this._runtime.DestroyInstance(this)}this._worldInfo._LoadFromJson(worldData,mode)}}if(mode!== +"visual-state"){const behs=o["behs"];if(behs)for(const [sidStr,data]of Object.entries(behs)){const sid=parseInt(sidStr,10);const index=this.GetBehaviorIndexBySID(sid);if(index<0||index>=this._behaviorInstances.length)continue;this._behaviorInstances[index].LoadFromJson(data,mode)}}const ownData=o["data"];if(ownData)if(this._sdkInst)this._sdkInst.LoadFromJson(ownData,mode);else this._iScriptInterface._loadFromJson(ownData)}GetInterfaceClass(){return this._iScriptInterface||this._InitUserScriptInterface()}HasScriptInterface(){return!!this._iScriptInterface}_InitUserScriptInterface(AddonSdkScriptClass, +properties){const DefaultScriptClass=this._worldInfo?AddonSdkScriptClass?self.ISDKWorldInstanceBase:self.IWorldInstance:AddonSdkScriptClass?self.ISDKInstanceBase:self.IInstance;const SdkScriptClass=AddonSdkScriptClass||this._sdkInst.GetScriptInterfaceClass();const UserScriptClass=this._objectType._GetUserScriptInstanceClass();const ScriptInterfaceClass=UserScriptClass||SdkScriptClass||DefaultScriptClass;const sdkVersion=this.GetPlugin().GetSdkVersion();C3.AddonManager._PushInitObject(this,sdkVersion); +C3.AddonManager._PushInitProperties(properties);this._iScriptInterface=new ScriptInterfaceClass;C3.AddonManager._PopInitProperties();C3.AddonManager._PopInitObject(sdkVersion);if(SdkScriptClass&&!(this._iScriptInterface instanceof DefaultScriptClass))throw new TypeError(`script interface class '${SdkScriptClass.name}' does not extend the right base class '${DefaultScriptClass.name}'`);if(UserScriptClass){const ExpectedBaseClass=SdkScriptClass||DefaultScriptClass;if(!(this._iScriptInterface instanceof +ExpectedBaseClass))throw new TypeError(`setInstanceClass(): class '${UserScriptClass.name}' does not extend the right base class - check it extends the right class, e.g. globalThis.InstanceType.MyObjectName`);}return this._iScriptInterface}_GetInstVarsScriptDescriptor(instDescriptors){if(this._instVarValues.length===0)return;const varDescriptors={};const instVarJsPropNames=this._objectType._GetAllInstanceVariableJsPropNames();for(let i=0,len=instVarJsPropNames.length;i0}GetChildren(){return this._children}_MaybeSortChildren(){if(!this.HasChildren())return;if(this._children.length===1)return;if(this._tmpSceneGraphChildrenIndexes)this._children.sort((f,s)=>{const fIndex= +this._tmpSceneGraphChildrenIndexes.get(f.GetInstance());const sIndex=this._tmpSceneGraphChildrenIndexes.get(s.GetInstance());if(C3.IsFiniteNumber(fIndex)&&C3.IsFiniteNumber(sIndex))return fIndex-sIndex;return 0});else this._children.sort((f,s)=>{const fIndex=f._GetSceneGraphInfo()._GetIndexInParent();const sIndex=s._GetSceneGraphInfo()._GetIndexInParent();if(C3.IsFiniteNumber(fIndex)&&C3.IsFiniteNumber(sIndex))return fIndex-sIndex;return 0})}_GetIndexInParent(){return this._indexInParent}GetStartScaleX(){return this._startScaleX}SetStartScaleX(sx){this._startScaleX= +sx}GetStartScaleY(){return this._startScaleY}SetStartScaleY(sy){this._startScaleY=sy}GetStartOpacity(){return this._startOpacity}GetOwnOpacity(){return this._ownOpacity}SetOwnOpacity(ownOpacity){this._ownOpacity=ownOpacity}_GetStartWidth(){if(this._startWidth===0)return Number.EPSILON;return this._startWidth}_GetStartHeight(){if(this._startHeight===0)return Number.EPSILON;return this._startHeight}GetParentScaleX(){if(this._owner.GetTransformWithParentWidth()){const p=this._parent;let cw=p.GetWidth(); +let sw=p._GetSceneGraphInfo()._GetStartWidth();if(cw===0)cw=Number.EPSILON;if(sw===Number.EPSILON&&cw===Number.EPSILON)return 1;if(sw===Number.EPSILON&&cw!==Number.EPSILON){const sdkIntance=p.GetInstance().GetSdkInstance();if(sdkIntance.IsOriginalSizeKnown())return 1+cw/sdkIntance.GetOriginalWidth()}return cw/sw}return 1}GetParentScaleY(){if(this._owner.GetTransformWithParentHeight()){const p=this._parent;let ch=p.GetHeight();let sh=p._GetSceneGraphInfo()._GetStartHeight();if(ch===0)ch=Number.EPSILON; +if(sh===Number.EPSILON&&ch===Number.EPSILON)return 1;if(sh===Number.EPSILON&&ch!==Number.EPSILON){const sdkIntance=p.GetInstance().GetSdkInstance();if(sdkIntance.IsOriginalSizeKnown())return 1+ch/sdkIntance.GetOriginalHeight()}return ch/sh}return 1}GetParentStartAngle(){return this._parentStartAngle}_SaveToJsonProperties(){return{"sw":this._startWidth,"sh":this._startHeight,"sx":this._startScaleX,"sy":this._startScaleY,"psa":this._parentStartAngle,"oo":this._ownOpacity,"so":this._startOpacity,"pi":this._owner.GetInstance().GetIndexInParent()}}_SaveToJson(mode, +opts=null){const jsonProperties=this._SaveToJsonProperties();if(opts&&opts["selfOnly"])return Object.assign(jsonProperties,{"p":null,"c":[]});else return Object.assign(jsonProperties,{"p":this._GetParentJson(mode),"c":this._GetChildrenJson(mode)})}_GetFlagsString(wi){let flagsStr="";if(wi.GetTransformWithParentX())flagsStr+="x";if(wi.GetTransformWithParentY())flagsStr+="y";if(wi.GetTransformWithParentWidth())flagsStr+="w";if(wi.GetTransformWithParentHeight())flagsStr+="h";if(wi.GetTransformWithParentAngle())flagsStr+= +"a";if(wi.GetTransformWithParentZElevation())flagsStr+="z";if(wi.GetDestroyWithParent())flagsStr+="d";if(wi.GetTransformWithParentOpacity())flagsStr+="o";if(wi.GetTransformWithParentVisibility())flagsStr+="v";return flagsStr}_GetParentJson(mode){if(!this._parent)return null;if(!this._parent.GetInstance()||this._parent.GetInstance().IsDestroyed())return null;return this._GetInstanceJson(this._parent,this._owner,mode)}_GetChildrenJson(mode){return this._children.map(c=>this._GetInstanceJson(c,c,mode)).filter(json=> +json)}_GetInstanceJson(wi,flagsSource,mode){const inst=wi.GetInstance();if(inst&&inst.IsDestroyed())return null;const ret={};ret["uid"]=inst.GetUID();ret["f"]=this._GetFlagsString(flagsSource);ret["offsets"]=flagsSource._SaveSceneGraphPropertiesToJson();ret["data"]=C3.SceneGraphInfo.GetSceneGraphInstanceDataFromInstance(inst);ret["oci"]=inst.GetObjectClass().GetIndex();if(mode==="state"){ret["inst"]=inst.SaveToJson("full",{"selfOnly":true});ret["instIndex"]=NaN}else{ret["instIndex"]=inst.GetObjectClass().GetInstances().indexOf(inst); +ret["inst"]=null}return ret}_LoadFromJson(o){this._startWidth=o["sw"];this._startHeight=o["sh"];this._startScaleX=o["sx"];this._startScaleY=o["sy"];this._parentStartAngle=o["psa"];this._ownOpacity=o["oo"];this._startOpacity=o["so"];this._indexInParent=C3.IsFiniteNumber(o["pi"])?o["pi"]:NaN}_SetTmpSceneGraphChildren(tmpSceneGraphChildren,tmpSceneGraphChildrenIndexes){if(!tmpSceneGraphChildren&&!tmpSceneGraphChildrenIndexes)if(this._tmpSceneGraphChildren)for(const inst of this._tmpSceneGraphChildren)if(!inst.IsDestroyed()&& +!inst.HasParent())inst.GetRuntime().DestroyInstance(inst);this._tmpSceneGraphChildren=tmpSceneGraphChildren;this._tmpSceneGraphChildrenIndexes=tmpSceneGraphChildrenIndexes}_OnAfterLoad(o,opts){const owner=this._owner;const runtime=owner.GetRuntime();const processedExistingWis=new Set;if(o["p"]&&!this._parent){const parentUid=o["p"]["uid"];const parentInst=runtime.GetInstanceByUID(parentUid);if(opts&&!opts.ignoreMissingInstances);if(parentInst){const parentWi=parentInst.GetWorldInfo();if(parentInst.HasChild(this._owner.GetInstance()))this._parent= +parentWi;else{parentInst.AddChild(this._owner.GetInstance(),this._GetFlagsObj(o["p"]["f"]));if(!processedExistingWis.has(this._owner)){this._owner._LoadSceneGraphPropertiesFromJson(o["p"]["offsets"]);this._LoadInstancePropertiesFromJson(this._owner.GetInstance(),o["p"])}processedExistingWis.add(this._owner);const pwi=parentInst.GetWorldInfo();pwi._GetSceneGraphInfo()._MaybeSortChildren()}}else if(C3.IsFiniteNumber(o["p"]["oci"])){const objectClass=runtime.GetObjectClassByIndex(o["p"]["oci"]);const system= +runtime.GetSystemPlugin();const parentInstance=runtime.CreateInstance(objectClass,owner.GetLayer(),0,0,true);if(opts&&!opts.ignoreMissingInstances);if(parentInstance){const instData=this._GetInstanceData(o["p"],runtime);parentInstance.LoadFromJson(instData);const parentWi=parentInstance.GetWorldInfo();parentWi.GetLayer().SortAndAddInstancesByZIndex(parentInstance);parentInstance.AddChild(owner.GetInstance(),this._GetFlagsObj(o["p"]["f"]));const pwi=parentInstance.GetWorldInfo();pwi._GetSceneGraphInfo()._MaybeSortChildren()}}}const childInstances= +[];for(const childData of o["c"]){const childUid=childData["uid"];const childInst=runtime.GetInstanceByUID(childUid);if(childInst)childInstances.push(childInst)}let childIndex=0;for(const childData of o["c"]){const childUid=childData["uid"];const childInst=runtime.GetInstanceByUID(childUid);if(opts&&!opts.ignoreMissingInstances);if(childInst){if(this._tmpSceneGraphChildren)if(this._tmpSceneGraphChildren.includes(childInst)){const existingChildIntance=childInst;if(existingChildIntance.GetObjectClass()!== +childInst.GetObjectClass()){childIndex++;continue}if(existingChildIntance.IsDestroyed()){childIndex++;continue}const newChildData=o["c"][childIndex];this._AddAndSetChildInstance(existingChildIntance.GetWorldInfo(),newChildData,processedExistingWis,true);childIndex++;continue}else if(this._tmpSceneGraphChildren[childIndex]){const existingChildIntance=this._tmpSceneGraphChildren[childIndex];if(existingChildIntance.GetObjectClass()!==childInst.GetObjectClass()){childIndex++;continue}if(existingChildIntance.IsDestroyed()){childIndex++; +continue}const newChildData=o["c"][childIndex];this._AddAndSetChildInstance(existingChildIntance.GetWorldInfo(),newChildData,processedExistingWis,true);childIndex++;continue}const objectClass=childInst.GetObjectClass();const childrenCount=this._GetInstancesOfObjectClassCount(childInstances,objectClass);const childrenOfClassCount=owner.GetInstance().GetChildrenOfObjectClass(objectClass).length;if(childrenCount===childrenOfClassCount){const existingChild=owner.GetInstance().GetChildAt(childIndex);if(existingChild){const existingChildWi= +existingChild.GetWorldInfo();if(existingChildWi){if(!processedExistingWis.has(existingChildWi)){existingChildWi._LoadSceneGraphPropertiesFromJson(childData["offsets"]);this._LoadInstancePropertiesFromJson(existingChild,childData)}processedExistingWis.add(existingChildWi)}}childIndex++;continue}if(childInst.HasParent()){const childWi=this._CreateNewChildInstance(childData,opts);this._AddAndSetChildInstance(childWi,childData,processedExistingWis);childIndex++;continue}this._AddAndSetChildInstance(childInst.GetWorldInfo(), +childData,processedExistingWis)}else if(this._tmpSceneGraphChildren&&this._tmpSceneGraphChildren[childIndex]){const existingChildIntance=this._tmpSceneGraphChildren[childIndex];const objectClass=runtime.GetObjectClassByIndex(this._GetObjectClassIndex(childData));if(existingChildIntance.GetObjectClass()!==objectClass){childIndex++;continue}if(existingChildIntance.IsDestroyed()){childIndex++;continue}const newChildData=o["c"][childIndex];this._AddAndSetChildInstance(existingChildIntance.GetWorldInfo(), +newChildData,processedExistingWis)}else{const childWi=this._CreateNewChildInstance(childData,opts);this._AddAndSetChildInstance(childWi,childData,processedExistingWis)}childIndex++}}_GetFlagsObj(flagsString){const opts={};opts.transformX=flagsString.includes("x");opts.transformY=flagsString.includes("y");opts.transformWidth=flagsString.includes("w");opts.transformHeight=flagsString.includes("h");opts.transformAngle=flagsString.includes("a");opts.transformZElevation=flagsString.includes("z");opts.destroyWithParent= +flagsString.includes("d");opts.transformOpacity=flagsString.includes("o");opts.transformVisibility=flagsString.includes("v");return opts}_GetObjectClassIndex(childData){if(C3.IsFiniteNumber(childData["oci"]))return childData["oci"];return childData[1]}_CreateNewChildInstance(childData,opts){if(!C3.IsFiniteNumber(childData["oci"]))return;const owner=this._owner;const runtime=owner.GetRuntime();let childInstance;if(childData["data"])childInstance=runtime.CreateInstanceFromData(childData["data"],owner.GetLayer(), +false,0,0,false,true);else{const objectClass=runtime.GetObjectClassByIndex(childData["oci"]);childInstance=runtime.CreateInstance(objectClass,owner.GetLayer(),0,0,true)}if(opts&&!opts.ignoreMissingInstances);if(!childInstance)return;const instData=this._GetInstanceData(childData,runtime);childInstance.LoadFromJson(instData);const childWi=childInstance.GetWorldInfo();childWi.GetLayer().SortAndAddInstancesByZIndex(childInstance,true);return childWi}_AddAndSetChildInstance(childWi,childData,processedExistingWis, +setJson=true){const owner=this._owner;const added=owner.AddChild(childWi,this._GetFlagsObj(childData["f"]));if(added&&setJson){if(!processedExistingWis.has(childWi)){childWi._LoadSceneGraphPropertiesFromJson(childData["offsets"]);this._LoadInstancePropertiesFromJson(childWi.GetInstance(),childData)}processedExistingWis.add(childWi)}this._MaybeSortChildren()}_LoadInstancePropertiesFromJson(instance,childData){let instData=this._GetInstanceData(childData,this._owner.GetRuntime());if(!instData)return; +instData=JSON.parse(JSON.stringify(instData));instData["w"]=null;instance.LoadFromJson(instData)}_GetInstancesOfObjectClassCount(instances,objectClass){return instances.filter(i=>i.GetObjectClass().GetName()===objectClass.GetName()).length}_GetInstanceData(json,runtime){if(C3.IsFiniteNumber(json["instIndex"])){const objectClass=runtime.GetObjectClassByIndex(json["oci"]);const instancesJson=objectClass._GetLoadInstancesJson();return instancesJson[json["instIndex"]]}else if(C3.IsString(json["inst"]))return JSON.parse(json["inst"]); +else if(json["inst"])return json["inst"]}static GetSceneGraphInstanceDataFromInstance(sourceInstance){let instData=sourceInstance.GetWorldInfo().GetLayer().GetInitialInstanceData(sourceInstance.GetUID());if(!instData)return null;instData=JSON.parse(JSON.stringify(instData));const newSgiData=[];for(const child of[...sourceInstance.GetChildren()]){const childWi=child.GetWorldInfo();newSgiData.push([childWi.GetLayout().GetSID(),childWi.GetLayer().GetIndex(),child.GetUID(),C3.SceneGraphInfo._GetFlagsNumber(childWi), +child.GetObjectClass().IsInContainer()?1:0,childWi.GetZIndex(),C3.SceneGraphInfo.GetSceneGraphInstanceDataFromInstance(child)])}if(C3.IsArray(instData[0][14]))instData[0][14][1]=newSgiData;else{instData[0][14]=[];instData[0][14][0]=C3.SceneGraphInfo._GetDefaultFlagsNumber();instData[0][14][1]=newSgiData;instData[0][14][2]=sourceInstance.GetWorldInfo().GetZIndex()}return instData}static _GetFlagsNumber(wi){let flagsNumber=0;flagsNumber|=Number(wi.GetTransformWithParentVisibility())<<8;flagsNumber|= +Number(wi.GetTransformWithParentOpacity())<<7;flagsNumber|=Number(wi.GetTransformWithParentZElevation())<<6;flagsNumber|=Number(wi.GetDestroyWithParent())<<5;flagsNumber|=Number(wi.GetTransformWithParentAngle())<<4;flagsNumber|=Number(wi.GetTransformWithParentHeight())<<3;flagsNumber|=Number(wi.GetTransformWithParentWidth())<<2;flagsNumber|=Number(wi.GetTransformWithParentY())<<1;flagsNumber|=Number(wi.GetTransformWithParentX())<<0;return flagsNumber}static _GetDefaultFlagsNumber(wi){let flagsNumber= +0;flagsNumber|=1<<8;flagsNumber|=1<<7;flagsNumber|=1<<6;flagsNumber|=1<<5;flagsNumber|=1<<4;flagsNumber|=1<<3;flagsNumber|=1<<2;flagsNumber|=1<<1;flagsNumber|=1<<0;return flagsNumber}}; + +} + +// objects/worldInfo.js +{ +'use strict';const C3=self.C3;const glMatrix=self.glMatrix;const vec3=glMatrix.vec3;const vec4=glMatrix.vec4;const tempRect=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad);const bboxChangeEvent=C3.New(C3.Event,"bboxchange",false);const tempColor=C3.New(C3.Color,0,0,0,0);const tempCollisionPoly=C3.New(C3.CollisionPoly);const DEFAULT_COLOR=C3.New(C3.Color,1,1,1,1);const DEFAULT_RENDER_CELLS=C3.New(C3.Rect,0,0,-1,-1);const DEFAULT_COLLISION_CELLS=C3.New(C3.Rect,0,0,-1,-1); +const VALID_SET_MESH_POINT_MODES=new Set(["absolute","relative"]);const EMPTY_ARRAY=[];let enableUpdateRendererStateGroup=true;const FLAG_IS_VISIBLE=1<<0;const FLAG_BBOX_CHANGED=1<<1;const FLAG_ENABLE_BBOX_CHANGED_EVENT=1<<2;const FLAG_COLLISION_ENABLED=1<<3;const FLAG_COLLISION_CELL_CHANGED=1<<4;const FLAG_SOLID_FILTER_INCLUSIVE=1<<5;const FLAG_HAS_ANY_ACTIVE_EFFECT=1<<6;const FLAG_IS_ROTATABLE=1<<7;const FLAG_DESTROYED=1<<8;const FLAG_DESTROY_WITH_PARENT=1<<9; +const FLAG_TRANSFORM_WITH_PARENT_X=1<<10;const FLAG_TRANSFORM_WITH_PARENT_Y=1<<11;const FLAG_TRANSFORM_WITH_PARENT_W=1<<12;const FLAG_TRANSFORM_WITH_PARENT_H=1<<13;const FLAG_TRANSFORM_WITH_PARENT_A=1<<14;const FLAG_TRANSFORM_WITH_PARENT_Z_ELEVATION=1<<15;const FLAG_TRANSFORM_WITH_PARENT_OPACITY=1<<22;const FLAG_TRANSFORM_WITH_PARENT_VISIBILITY=1<<23; +const MASK_ALL_SCENE_GRAPH_FLAGS=FLAG_DESTROY_WITH_PARENT|FLAG_TRANSFORM_WITH_PARENT_X|FLAG_TRANSFORM_WITH_PARENT_Y|FLAG_TRANSFORM_WITH_PARENT_W|FLAG_TRANSFORM_WITH_PARENT_H|FLAG_TRANSFORM_WITH_PARENT_A|FLAG_TRANSFORM_WITH_PARENT_Z_ELEVATION|FLAG_TRANSFORM_WITH_PARENT_OPACITY|FLAG_TRANSFORM_WITH_PARENT_VISIBILITY;const FLAG_MESH_CHANGED=1<<16;const FLAG_PHYSICS_BODY_CHANGED=1<<17;const FLAG_SIN_COS_ANGLE_CHANGED=1<<18;const FLAG_USE_POINTS_SHADER_PROGRAM=1<<19;const FLAG_DRAW_BACK_FACE_ONLY=1<<20; +const FLAG_DRAW_NON_BACK_FACES_ONLY=1<<21;const FLAG_BLEND_MODE_BIT_OFFSET=26;const FLAG_BLEND_MODE_MASK=31<=children.length)return null; +return children[index]}GetChildIndex(child){if(!child)return NaN;const children=this.GetChildren();if(!children)return NaN;for(let i=0;i";else shaderProgram=renderer.GetTextureFillShaderProgram()||"";this._stateGroup=renderer.AcquireStateGroup(shaderProgram,this.GetBlendMode(),this._colorPremultiplied,this.GetZElevation())}GetRendererStateGroup(){return this._stateGroup}HasDefaultColor(){return this._color===DEFAULT_COLOR}SetBlendMode(bm){bm=bm|0;if(bm<0||bm>31)throw new RangeError("invalid blend mode"); +if(this.GetBlendMode()===bm)return;this._flags=this._flags&~FLAG_BLEND_MODE_MASK|bm<>FLAG_BLEND_MODE_BIT_OFFSET}_SetLayer(layer,updateRenderCell){const doUpdateRenderCell=updateRenderCell&&this._layer!==layer;if(doUpdateRenderCell)this._RemoveFromRenderCells();this._layer=layer;if(doUpdateRenderCell)this._UpdateRenderCell();if(this.GetZElevation()!==0)this._layer._SetAnyInstanceZElevated()}GetLayer(){return this._layer}GetLayout(){return this.GetLayer().GetLayout()}_SetZIndex(z){this._zIndex= +z|0}GetZIndex(){this._layer._UpdateZIndices();return this._zIndex}_SetHTMLZIndex(z){this._htmlZIndex=z|0}GetHTMLZIndex(){this._layer._UpdateHTMLZIndices();return this._htmlZIndex}_GetLastCachedZIndex(){return this._zIndex}_SetFlag(bit,enable){if(enable)this._flags|=bit;else this._flags&=~bit}IsVisible(){return(this._flags&FLAG_IS_VISIBLE)!==0}SetVisible(v){this._SetFlag(FLAG_IS_VISIBLE,v);if(!this.HasChildren())return;for(const child of this.GetChildren())if(child.GetTransformWithParentVisibility())child.SetVisible(v)}IsCollisionEnabled(){return(this._flags& +FLAG_COLLISION_ENABLED)!==0}SetCollisionEnabled(e){e=!!e;if(this.IsCollisionEnabled()===e)return;this._SetFlag(FLAG_COLLISION_ENABLED,e);if(e)this.SetBboxChanged();else this._RemoveFromCollisionCells()}SetSolidCollisionFilter(isInclusive,tags){this._SetFlag(FLAG_SOLID_FILTER_INCLUSIVE,isInclusive);if(this._solidFilterTags)this._solidFilterTags.clear();if(!tags.trim()){this._solidFilterTags=null;return}if(!this._solidFilterTags)this._solidFilterTags=new Set;for(const tag of tags.split(" "))if(tag)this._solidFilterTags.add(tag.toLowerCase())}IsSolidCollisionAllowed(solidTagSet){const isInclusive= +(this._flags&FLAG_SOLID_FILTER_INCLUSIVE)!==0;const filterTags=this._solidFilterTags;if(!solidTagSet||!filterTags)return!isInclusive;for(const tag of filterTags)if(solidTagSet.has(tag))return isInclusive;return!isInclusive}SetBboxChanged(){this._flags|=FLAG_BBOX_CHANGED|FLAG_COLLISION_CELL_CHANGED|FLAG_MESH_CHANGED;this._objectClass._SetAnyCollisionCellChanged(true);this._runtime.UpdateRender();if(this._layer.UsesRenderCells()){this.CalculateBbox(this._boundingBox,this._boundingQuad,true);this._flags&= +~FLAG_BBOX_CHANGED;this._UpdateRenderCell()}if((this._flags&FLAG_ENABLE_BBOX_CHANGED_EVENT)!==0)this._inst.Dispatcher().dispatchEvent(bboxChangeEvent);if(this._sceneGraphInfo!==null){const children=this._sceneGraphInfo.GetChildren();for(let i=0,len=children.length;i=layer.GetCameraZ())return false; +layer.GetViewportForZ(totalZElevation,tempRect);return tempRect.intersectsRect(this.GetBoundingBox())}IsInViewport3D(viewFrustum){const bbox=this.GetBoundingBox();const minX=bbox.getLeft();const maxX=bbox.getRight();const minY=bbox.getTop();const maxY=bbox.getBottom();const minZ=this.GetTotalZElevation();const maxZ=minZ+this.GetDepth();return viewFrustum.ContainsAABB(minX,minY,minZ,maxX,maxY,maxZ)}IsInViewport2(){const layer=this.GetLayer();if(layer.Has3DCamera())return this.IsInViewport3D(layer._GetViewFrustum()); +else{const layout=layer.GetLayout();return this.IsInViewport(layer.GetViewport(),layout.HasVanishingPointOutsideViewport(),layout.IsOrthographicProjection())}}_SetDrawBackFaceOnly(e){this._SetFlag(FLAG_DRAW_BACK_FACE_ONLY,e)}_SetDrawNonBackFacesOnly(e){this._SetFlag(FLAG_DRAW_NON_BACK_FACES_ONLY,e)}IsDrawBackFaceOnly(){return(this._flags&FLAG_DRAW_BACK_FACE_ONLY)!==0}IsDrawNonBackFacesOnly(){return(this._flags&FLAG_DRAW_NON_BACK_FACES_ONLY)!==0}SetSourceCollisionPoly(poly){this._sourceCollisionPoly= +poly;this._DiscardTransformedCollisionPoly();if(this.HasMesh())this._meshInfo.meshPoly=null}GetSourceCollisionPoly(){return this._sourceCollisionPoly}HasOwnCollisionPoly(){return this._sourceCollisionPoly!==null||this.HasMesh()}GetTransformedCollisionPoly(){return this._GetCustomTransformedCollisionPolyPrecalc(this.GetWidth(),this.GetHeight(),this.GetAngle(),this.GetSinAngle(),this.GetCosAngle())}GetCustomTransformedCollisionPoly(w,h,a){let sina=0;let cosa=1;if(a!==0){sina=Math.sin(a);cosa=Math.cos(a)}return this._GetCustomTransformedCollisionPolyPrecalc(w, +h,a,sina,cosa)}_GetCustomTransformedCollisionPolyPrecalc(w,h,a,sinA,cosA){let tpi=this._transformedPolyInfo;if(tpi===null){tpi={poly:C3.New(C3.CollisionPoly),width:NaN,height:NaN,angle:NaN};this._transformedPolyInfo=tpi}const transformedPoly=tpi.poly;if(tpi.width===w&&tpi.height===h&&tpi.angle===a)return transformedPoly;const sourcePoly=this._sourceCollisionPoly;if(this.HasMesh()){const ox=this.GetOriginX();const oy=this.GetOriginY();const sourceMesh=this.GetSourceMesh();let meshPoly=this._meshInfo.meshPoly; +if(!meshPoly){if(sourcePoly){tempCollisionPoly.copy(sourcePoly);tempCollisionPoly.offset(ox,oy)}else tempCollisionPoly.setDefaultPoints();meshPoly=sourceMesh.InsertPolyMeshVertices(tempCollisionPoly);this._meshInfo.meshPoly=meshPoly}sourceMesh.TransformCollisionPoly(meshPoly,transformedPoly);transformedPoly.offset(-ox,-oy);transformedPoly.transformPrecalc(w,h,sinA,cosA)}else if(sourcePoly){transformedPoly.copy(sourcePoly);transformedPoly.transformPrecalc(w,h,sinA,cosA)}else transformedPoly.setFromQuad(this.GetBoundingQuad(), +-this.GetX(),-this.GetY());tpi.width=w;tpi.height=h;tpi.angle=a;return transformedPoly}_DiscardTransformedCollisionPoly(){this.SetPhysicsBodyChanged(true);const tpi=this._transformedPolyInfo;if(tpi===null)return;tpi.width=NaN}CreateMesh(hsize,vsize){hsize=Math.floor(hsize);vsize=Math.floor(vsize);if(!this.GetInstance().GetPlugin().SupportsMesh())throw new Error("object does not support mesh");this.ReleaseMesh();this._meshInfo={sourceMesh:C3.New(C3.Gfx.Mesh,hsize,vsize),transformedMesh:C3.New(C3.Gfx.Mesh, +hsize,vsize),meshPoly:null}}HasMesh(){return this._meshInfo!==null}GetSourceMesh(){if(!this.HasMesh())throw new Error("no mesh");return this._meshInfo.sourceMesh}GetTransformedMesh(){if(!this.HasMesh())throw new Error("no mesh");return this._meshInfo.transformedMesh}SetMeshChanged(e){this._SetFlag(FLAG_MESH_CHANGED,e)}IsMeshChanged(){return(this._flags&FLAG_MESH_CHANGED)!==0}SetPhysicsBodyChanged(e){this._SetFlag(FLAG_PHYSICS_BODY_CHANGED,e)}IsPhysicsBodyChanged(){return(this._flags&FLAG_PHYSICS_BODY_CHANGED)!== +0}_ExpandBboxForMesh(bbox){const sourceMesh=this._meshInfo.sourceMesh;const minX=Math.min(sourceMesh.GetMinX(),0);const minY=Math.min(sourceMesh.GetMinY(),0);const maxX=Math.max(sourceMesh.GetMaxX(),1);const maxY=Math.max(sourceMesh.GetMaxY(),1);const w=bbox.width();const h=bbox.height();bbox.offsetLeft(minX*w);bbox.offsetTop(minY*h);bbox.offsetRight((maxX-1)*w);bbox.offsetBottom((maxY-1)*h);this._depth=sourceMesh.GetMaxZ()}ReleaseMesh(){if(!this._meshInfo)return;this._meshInfo.sourceMesh.Release(); +this._meshInfo.transformedMesh.Release();this._meshInfo=null;this._DiscardTransformedCollisionPoly()}SetMeshPoint(col,row,opts){col=Math.floor(col);row=Math.floor(row);const mode=opts.mode||"absolute";if(!VALID_SET_MESH_POINT_MODES.has(mode))throw new Error("invalid mode");const isRelative=mode==="relative";let posx=opts.x;let posy=opts.y;const zElevation=opts.zElevation;let texu=typeof opts.u==="number"?opts.u:isRelative?0:-1;let texv=typeof opts.v==="number"?opts.v:isRelative?0:-1;if(!this.HasMesh())return false; +const sourceMesh=this.GetSourceMesh();const p=sourceMesh.GetMeshPointAt(col,row);if(p===null)return false;let ret=false;if(typeof zElevation==="number"&&p.GetZElevation()!==zElevation){p.SetZElevation(zElevation);ret=true}if(isRelative){posx+=col/(sourceMesh.GetHSize()-1);posy+=row/(sourceMesh.GetVSize()-1)}if(texu===-1&&!isRelative)texu=p.GetU();else{if(isRelative)texu+=col/(sourceMesh.GetHSize()-1);texu=C3.clamp(texu,0,1)}if(texv===-1&&!isRelative)texv=p.GetV();else{if(isRelative)texv+=row/(sourceMesh.GetVSize()- +1);texv=C3.clamp(texv,0,1)}if(p.GetX()===posx&&p.GetY()===posy&&p.GetU()===texu&&p.GetV()===texv)return ret;p.SetX(posx);p.SetY(posy);p.SetU(texu);p.SetV(texv);this._DiscardTransformedCollisionPoly();return true}HasTilemap(){return this._inst.HasTilemap()}ContainsPoint(x,y){if(!this.GetBoundingBox().containsPoint(x,y))return false;if(!this.GetBoundingQuad().containsPoint(x,y))return false;if(this.HasTilemap())return this._inst.GetSdkInstance().TestPointOverlapTile(x,y);if(!this.HasOwnCollisionPoly())return true; +return this.GetTransformedCollisionPoly().containsPoint(x-this.GetX(),y-this.GetY())}_IsCollisionCellChanged(){return(this._flags&FLAG_COLLISION_CELL_CHANGED)!==0}_UpdateCollisionCell(){if(!this._IsCollisionCellChanged()||!this.IsCollisionEnabled()||(this._flags&FLAG_DESTROYED)!==0)return;const bbox=this.GetBoundingBox();const grid=this._objectClass._GetCollisionCellGrid();const collisionCells=this._collisionCells;tempRect.set(grid.XToCell(bbox.getLeft()),grid.YToCell(bbox.getTop()),grid.XToCell(bbox.getRight()), +grid.YToCell(bbox.getBottom()));if(collisionCells.equals(tempRect))return;const inst=this._inst;if(collisionCells===DEFAULT_COLLISION_CELLS){grid.Update(inst,null,tempRect);this._collisionCells=C3.New(C3.Rect,tempRect)}else{grid.Update(inst,collisionCells,tempRect);collisionCells.copy(tempRect)}this._flags&=~FLAG_COLLISION_CELL_CHANGED}_SetCollisionCellChanged(){this._flags|=FLAG_COLLISION_CELL_CHANGED}_RemoveFromCollisionCells(){const collisionCells=this._collisionCells;if(collisionCells===DEFAULT_COLLISION_CELLS)return; +this._objectClass._GetCollisionCellGrid().Update(this._inst,collisionCells,null);this._collisionCells=DEFAULT_COLLISION_CELLS}_UpdateRenderCell(){const layer=this.GetLayer();if(!layer.UsesRenderCells()||(this._flags&FLAG_DESTROYED)!==0)return;const renderGrid=layer.GetRenderGrid();const bbox=this.GetBoundingBox();const renderCells=this._renderCells;tempRect.set(renderGrid.XToCell(bbox.getLeft()),renderGrid.YToCell(bbox.getTop()),renderGrid.XToCell(bbox.getRight()),renderGrid.YToCell(bbox.getBottom())); +if(renderCells.equals(tempRect))return;const inst=this._inst;if(renderCells===DEFAULT_RENDER_CELLS){renderGrid.Update(inst,null,tempRect);this._renderCells=C3.New(C3.Rect,tempRect)}else{renderGrid.Update(inst,renderCells,tempRect);renderCells.copy(tempRect)}layer.SetRenderListStale()}_RemoveFromRenderCells(){const renderCells=this._renderCells;if(renderCells===DEFAULT_RENDER_CELLS)return;this.GetLayer().GetRenderGrid().Update(this._inst,renderCells,null);this._renderCells=DEFAULT_RENDER_CELLS}GetRenderCellRange(){return this._renderCells}ZOrderMoveToTop(){const inst= +this._inst;const layer=this._layer;const layerInstances=layer._GetInstances();if(layerInstances.length&&layerInstances.at(-1)===inst)return;layer._RemoveInstance(inst,false);layer._AddInstance(inst,false);this._runtime.UpdateRender()}ZOrderMoveToBottom(){const inst=this._inst;const layer=this._layer;const layerInstances=layer._GetInstances();if(layerInstances.length&&layerInstances[0]===inst)return;layer._RemoveInstance(inst,false);layer._PrependInstance(inst,false);this._runtime.UpdateRender()}ZOrderMoveToLayer(layerMove){const inst= +this._inst;const curLayer=this._layer;if(curLayer.GetLayout()!==layerMove.GetLayout())throw new Error("layer from different layout");if(layerMove===curLayer)return;curLayer._RemoveInstance(inst,true);this._SetLayer(layerMove);layerMove._AddInstance(inst,true);this._runtime.UpdateRender()}ZOrderMoveAdjacentToInstance(otherInst,isAfter){const inst=this._inst;let didChangeLayer=false;const curLayer=this._layer;if(otherInst.GetUID()===inst.GetUID())return;const otherWi=otherInst.GetWorldInfo();if(!otherWi)throw new Error("expected world instance"); +const otherLayer=otherWi.GetLayer();if(curLayer.GetIndex()!==otherLayer.GetIndex()){curLayer._RemoveInstance(inst,true);this._SetLayer(otherLayer);otherLayer._AddInstance(inst,true);didChangeLayer=true}const didChangeZOrder=otherLayer.MoveInstanceAdjacent(inst,otherInst,!!isAfter);if(didChangeLayer||didChangeZOrder)this._runtime.UpdateRender()}GetInstanceEffectList(){return this._instanceEffectList}_SetHasAnyActiveEffect(e){this._SetFlag(FLAG_HAS_ANY_ACTIVE_EFFECT,e)}HasAnyActiveEffect(){return(this._flags& +FLAG_HAS_ANY_ACTIVE_EFFECT)!==0}_SaveToJson(mode,opts=null){const o={"x":this.GetX(),"y":this.GetY(),"w":this.GetWidth(),"h":this.GetHeight(),"l":this.GetLayer().GetSID(),"zi":this.GetZIndex()};if(this.GetZElevation()!==0)o["ze"]=this.GetZElevation();if(this.GetAngle()!==0)o["a"]=this._GetAngleNoReflect();if(!this.HasDefaultColor())o["c"]=this._color.toJSON();if(this.GetOriginX()!==.5)o["oX"]=this.GetOriginX();if(this.GetOriginY()!==.5)o["oY"]=this.GetOriginY();if(this.GetBlendMode()!==0)o["bm"]= +this.GetBlendMode();if(!this.IsVisible())o["v"]=this.IsVisible();if(!this.IsCollisionEnabled())o["ce"]=this.IsCollisionEnabled();if(this.IsBboxChangeEventEnabled())o["be"]=this.IsBboxChangeEventEnabled();if(this._instanceEffectList)o["fx"]=this._instanceEffectList._SaveToJson();const isSolidFilterInclusive=(this._flags&FLAG_SOLID_FILTER_INCLUSIVE)!==0;if(isSolidFilterInclusive)o["sfi"]=isSolidFilterInclusive;if(this._solidFilterTags)o["sft"]=[...this._solidFilterTags].join(" ");if(this._sceneGraphInfo&& +mode!=="visual-state"){o["sgi"]=this._sceneGraphInfo._SaveToJson(mode,opts);if(sceneGraphExportDataMap.has(this)){o["sgcd"]=sceneGraphExportDataMap.get(this).childrenData;o["sgzid"]=sceneGraphExportDataMap.get(this).zIndexData}}if(this.HasMesh())o["mesh"]=this.GetSourceMesh().SaveToJson();return o}_SaveSceneGraphPropertiesToJson(){return{"x":this._x,"y":this._y,"z":this._zElevation,"w":this._w,"h":this._h,"a":this._a,"sgi":this._GetSceneGraphInfo()?this._GetSceneGraphInfo()._SaveToJsonProperties(): +null}}_LoadSceneGraphPropertiesFromJson(o){if(!o)return;this._x=o["x"];this._y=o["y"];this._zElevation=o["z"];this._w=o["w"];this._h=o["h"];this._a=o["a"];if(o["sgi"]&&this._GetSceneGraphInfo())this._GetSceneGraphInfo()._LoadFromJson(o["sgi"]);this._MarkSinCosAngleChanged();this.SetBboxChanged()}_SetupSceneGraphConnectionsOnChangeOfLayout(){this._ReleaseTmpSceneGraphInfo();this._ResetAllSceneGraphState();this._CreateSceneGraphInfo(null);if(this._sceneGraphInfo)this._sceneGraphInfo._SetTmpSceneGraphChildren(this._tmpSceneGraphChildren, +this._tmpSceneGraphChildrenIndexes)}_OnBeforeLoad(mode){if(mode!=="visual-state")this._ResetAllSceneGraphState()}_OnAfterLoad(o,mode="full",opts=null){if(o.hasOwnProperty("sgi")&&mode!=="visual-state"){if((this._flags&FLAG_DESTROYED)!==0)return;this._sceneGraphInfo._OnAfterLoad(o["sgi"],opts)}}_OnAfterLoad2(o,mode="full",opts=null){if(o.hasOwnProperty("sgi")&&mode!=="visual-state"){if((this._flags&FLAG_DESTROYED)!==0)return;this._sceneGraphInfo._SetTmpSceneGraphChildren(null,null);this._ReleaseTmpSceneGraphInfo(); +this.SetBboxChanged()}}_LoadFromJson(o,mode){enableUpdateRendererStateGroup=false;this.SetX(o["x"]);this.SetY(o["y"]);this.SetWidth(o["w"]);this.SetHeight(o["h"]);this._SetZIndex(o["zi"]);this.SetZElevation(o.hasOwnProperty("ze")?o["ze"]:0);this.SetAngle(o.hasOwnProperty("a")?o["a"]:0);if(o.hasOwnProperty("c"))tempColor.setFromJSON(o["c"]);else if(o.hasOwnProperty("o")){tempColor.copyRgb(this._color);tempColor.a=o["o"]}else tempColor.setRgba(1,1,1,1);this._SetColor(tempColor);this.SetOriginX(o.hasOwnProperty("oX")? +o["oX"]:.5);this.SetOriginY(o.hasOwnProperty("oY")?o["oY"]:.5);this.SetBlendMode(o.hasOwnProperty("bm")?o["bm"]:0);this.SetVisible(o.hasOwnProperty("v")?o["v"]:true);this.SetCollisionEnabled(o.hasOwnProperty("ce")?o["ce"]:true);this.SetBboxChangeEventEnabled(o.hasOwnProperty("be")?o["be"]:false);this.SetSolidCollisionFilter(o.hasOwnProperty("sfi")?o["sfi"]:false,o.hasOwnProperty("sft")?o["sft"]:"");if(this._instanceEffectList&&o.hasOwnProperty("fx"))this._instanceEffectList._LoadFromJson(o["fx"]); +if(!o.hasOwnProperty("sgi")&&mode!=="visual-state")if(this._tmpSceneGraphChildren)for(const inst of this._tmpSceneGraphChildren){if(inst.IsDestroyed())continue;this._runtime.DestroyInstance(inst)}if(o.hasOwnProperty("sgi")&&mode!=="visual-state"){this._CreateSceneGraphInfo(null);const sgi=this._sceneGraphInfo;const sgiData=o["sgi"];sgi._LoadFromJson(sgiData);sgi._SetTmpSceneGraphChildren(this._tmpSceneGraphChildren,this._tmpSceneGraphChildrenIndexes);if(o["sgcd"]&&C3.IsFiniteNumber(o["sgzid"]))sceneGraphExportDataMap.set(this, +{childrenData:o["sgcd"],zIndexData:o["sgzid"]})}if(o.hasOwnProperty("mesh")){const meshData=o["mesh"];this.CreateMesh(meshData["cols"],meshData["rows"]);this.GetSourceMesh().LoadFromJson(meshData)}else this.ReleaseMesh();this.SetBboxChanged();enableUpdateRendererStateGroup=true;this._UpdateRendererStateGroup();if(mode!=="visual-state")this._runtime.AddInstanceNeedingAfterLoad(this.GetInstance(),o)}}; + +} + +// objects/behaviorType.js +{ +'use strict';const C3=self.C3; +C3.BehaviorType=class BehaviorType extends C3.DefendedBase{constructor(objectClass,data){super();const runtime=objectClass.GetRuntime();const BehaviorCtor=runtime.GetObjectReference(data[1]);runtime.GetAddonManager()._DelayCreateBehavior(BehaviorCtor);this._runtime=runtime;this._objectClass=objectClass;this._behavior=C3.AddonManager.GetBehaviorByConstructorFunction(BehaviorCtor);this._sdkType=null;this._iBehaviorType=null;this._instSdkCtor=BehaviorCtor.Instance;this._sid=data[2];this._name=data[0]; +this._jsPropName=this._runtime.GetJsPropName(data[3]);const sdkVersion=this._behavior.GetSdkVersion();if(sdkVersion<2){this._sdkType=C3.New(BehaviorCtor.Type,this);if(!(this._sdkType instanceof C3.SDKBehaviorTypeBase))throw new Error("v1 sdk type must derive from SDKBehaviorBase");}C3.AddonManager._PushInitObject(this,sdkVersion);if(sdkVersion>=2){const BehaviorTypeClass=BehaviorCtor.Type??globalThis.ISDKBehaviorTypeBase;this._iBehaviorType=new BehaviorTypeClass;if(!(this._iBehaviorType instanceof +globalThis.ISDKBehaviorTypeBase))throw new Error("script interface class must derive from ISDKBehaviorTypeBase");}else this._iBehaviorType=new globalThis.IBehaviorType;C3.AddonManager._PopInitObject(sdkVersion);this.OnCreate()}static Create(objectClass,behaviorTypeData){return C3.New(C3.BehaviorType,objectClass,behaviorTypeData)}Release(){this._runtime=null;this._behavior=null;if(this._sdkType){this._sdkType.Release();this._sdkType=null}this._instSdkCtor=null}GetSdkType(){return this._sdkType}OnCreate(){if(this._sdkType)this._sdkType.OnCreate(); +else if(this._iBehaviorType)this._iBehaviorType._onCreate()}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetBehavior(){return this._behavior}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetSID(){return this._sid}GetIBehaviorType(){return this._iBehaviorType}GetJsPropName(){return this._jsPropName}}; + +} + +// objects/behaviorInstance.js +{ +'use strict';const C3=self.C3;const IBehaviorInstance=self.IBehaviorInstance; +C3.BehaviorInstance=class BehaviorInstance extends C3.DefendedBase{constructor(opts){super();this._runtime=opts.runtime;this._behaviorType=opts.behaviorType;this._behavior=this._behaviorType.GetBehavior();this._inst=opts.instance;this._index=opts.index;this._sdkInst=null;this._iScriptInterface=null;this._behavior._AddInstance(this._inst)}Release(){if(this._iScriptInterface){this._iScriptInterface._release();this._iScriptInterface=null}this._behavior._RemoveInstance(this._inst);if(this._sdkInst){this._sdkInst.Release(); +this._sdkInst=null}this._runtime=null;this._behaviorType=null;this._behavior=null;this._inst=null}_CreateSdkInstance(properties){if(this._sdkInst)throw new Error("already got sdk instance");const sdkVersion=this.GetBehavior().GetSdkVersion();if(sdkVersion<2){this._sdkInst=C3.New(this._behaviorType.GetInstanceSdkCtor(),this,properties);if(!(this._sdkInst instanceof C3.SDKBehaviorInstanceBase))throw new Error("v1 sdk type must derive from SDKBehaviorInstanceBase");}else{const BehaviorCtor=this.GetBehavior().GetScriptInterfaceClass(); +this._InitScriptInterface(BehaviorCtor.Instance,properties)}}GetSdkInstance(){return this._sdkInst??this._iScriptInterface}GetObjectInstance(){return this._inst}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetBehavior(){return this._behavior}_GetIndex(){return this._index}PostCreate(){if(this._sdkInst)this._sdkInst.PostCreate();else this._iScriptInterface._postCreate()}OnSpriteFrameChanged(prevFrame,nextFrame){if(this._sdkInst)this._sdkInst.OnSpriteFrameChanged(prevFrame, +nextFrame)}_GetDebuggerProperties(){if(this._sdkInst)return this._sdkInst.GetDebuggerProperties();else return this._iScriptInterface._getDebuggerProperties()}SaveToJson(mode="full"){if(this._sdkInst)return this._sdkInst.SaveToJson(mode);else return this._iScriptInterface._saveToJson(mode)}LoadFromJson(o,mode="full"){if(this._sdkInst)return this._sdkInst.LoadFromJson(o,mode);else this._iScriptInterface._loadFromJson(o,mode)}static SortByTickSequence(runtime,a,b){const ISDKBehaviorInstanceBase=globalThis.ISDKBehaviorInstanceBase; +let behInstA;let behInstB;if(a instanceof ISDKBehaviorInstanceBase)behInstA=runtime._UnwrapScriptInterface(a);else behInstA=a.GetBehaviorInstance();if(b instanceof ISDKBehaviorInstanceBase)behInstB=runtime._UnwrapScriptInterface(b);else behInstB=b.GetBehaviorInstance();const instA=behInstA.GetObjectInstance();const instB=behInstB.GetObjectInstance();const typeIndexA=instA.GetObjectClass().GetIndex();const typeIndexB=instB.GetObjectClass().GetIndex();if(typeIndexA!==typeIndexB)return typeIndexA-typeIndexB; +const seqA=instA.GetPUID();const seqB=instB.GetPUID();if(seqA!==seqB)return seqA-seqB;return behInstA._GetIndex()-behInstB._GetIndex()}_InitScriptInterface(AddonSdkScriptClass,properties){const DefaultScriptClass=IBehaviorInstance;const SdkScriptClass=AddonSdkScriptClass??this._sdkInst.GetScriptInterfaceClass();const ScriptInterfaceClass=SdkScriptClass||DefaultScriptClass;const sdkVersion=this.GetBehavior().GetSdkVersion();C3.AddonManager._PushInitObject(this,sdkVersion);C3.AddonManager._PushInitProperties(properties); +this._iScriptInterface=new ScriptInterfaceClass;C3.AddonManager._PopInitProperties();C3.AddonManager._PopInitObject(sdkVersion);if(SdkScriptClass&&!(this._iScriptInterface instanceof DefaultScriptClass))throw new TypeError(`script interface class '${SdkScriptClass.name}' does not extend the right base class '${DefaultScriptClass.name}'`);return this._iScriptInterface}GetScriptInterface(){return this._iScriptInterface||this._InitScriptInterface()}HasScriptInterface(){return!!this._iScriptInterface}}; + +} + +// objects/effectList.js +{ +'use strict';const C3=self.C3; +C3.EffectList=class EffectList extends C3.DefendedBase{constructor(owner,data){super();this._owner=owner;this._allEffectTypes=[];this._activeEffectTypes=[];this._effectTypesByName=new Map;this._effectParams=[];this._effectParamBuffers=[];this._allInstanceEffectLists=new Set;this._preservesOpaqueness=true;for(const d of data){const et=C3.New(C3.EffectType,this,d,this._allEffectTypes.length);this._allEffectTypes.push(et);this._effectTypesByName.set(et.GetName().toLowerCase(),et);if(d.length>=3)this._effectParams.push(this._LoadSingleEffectParameters(et, +d[2]))}this.GetRuntime()._AddEffectList(this)}Release(){this.GetRuntime()._RemoveEffectList(this);for(const cpb of this._effectParamBuffers)cpb.Release();C3.clearArray(this._effectParamBuffers);C3.clearArray(this._allEffectTypes);C3.clearArray(this._activeEffectTypes);this._effectTypesByName.clear();C3.clearArray(this._effectParams);this._owner=null}_AddInstanceEffectList(iel){this._allInstanceEffectLists.add(iel)}_RemoveInstanceEffectList(iel){this._allInstanceEffectLists.delete(iel)}_InitRenderer(renderer){if(renderer.IsWebGPU()){this._effectParamBuffers= +this._allEffectTypes.map(et=>{const shaderProgram=et.GetShaderProgram();if(shaderProgram.GetCustomParametersByteSize()>0)return C3.New(C3.Gfx.WebGPUEffectCustomParamsBuffer,shaderProgram);else return null});this._UpdateAllEffectParamBuffers()}for(const iel of this._allInstanceEffectLists)iel._InitRenderer(renderer)}PrependEffectTypes(arr){if(!arr.length)return;this._allEffectTypes=arr.concat(this._allEffectTypes);for(const et of arr)this._effectTypesByName.set(et.GetName().toLowerCase(),et);for(let i= +0,len=this._allEffectTypes.length;i0}GetEffectTypeByName(name){return this._effectTypesByName.get(name.toLowerCase())||null}GetEffectTypeByIndex(index){index=Math.floor(+index);if(index<0||index>=this._allEffectTypes.length)throw new RangeError("invalid effect type index");return this._allEffectTypes[index]}IsEffectIndexActive(index){return this.GetEffectTypeByIndex(index).IsActive()}SetEffectIndexActive(index, +a){this.GetEffectTypeByIndex(index).SetActive(a)}GetActiveEffectTypes(){return this._activeEffectTypes}HasAnyActiveEffect(){return this._activeEffectTypes.length>0}PreservesOpaqueness(){return this._preservesOpaqueness}GetEffectParametersForIndex(index){return this._effectParams[index]}_GetEffectChainShaderParametersForIndex(index){if(index=this._effectParams.length)return null;const effectParams=this._effectParams[effectIndex];if(paramIndex<0||paramIndex>=effectParams.length)return null;return effectParams[paramIndex]}SetEffectParameter(effectIndex,paramIndex,value){if(effectIndex<0||effectIndex>=this._effectParams.length)return false;const effectParams=this._effectParams[effectIndex];if(paramIndex<0||paramIndex>=effectParams.length)return false;const oldValue=effectParams[paramIndex];if(oldValue instanceof C3.Color){if(oldValue.equalsIgnoringAlpha(value))return false; +oldValue.copyRgb(value)}else{if(oldValue===value)return false;effectParams[paramIndex]=value}if(effectIndex +({"name":et.GetName(),"active":et.IsActive(),"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[et.GetIndex()])}))}LoadFromJson(arr){for(const o of arr){const et=this.GetEffectTypeByName(o["name"]);if(!et)continue;et.SetActive(o["active"]);this._effectParams[et.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(o["params"])}this.UpdateActiveEffects();this._UpdateAllEffectParamBuffers()}}; + +} + +// objects/effectType.js +{ +'use strict';const C3=self.C3; +C3.EffectType=class EffectType extends C3.DefendedBase{constructor(effectList,data,index){super();this._effectList=effectList;this._id=data[0];this._name=data[1];this._index=index;this._shaderProgram=null;this._isActive=true}Release(){this._effectList=null;this._shaderProgram=null}Clone(effectListOwner){const ret=C3.New(C3.EffectType,effectListOwner,[this._id,this._name],-1);ret._shaderProgram=this._shaderProgram;ret._isActive=this._isActive;return ret}_InitRenderer(renderer){const shaderProgram=renderer.GetShaderProgramByName(this._id); +if(!shaderProgram)throw new Error("failed to find shader program '"+this._id+"'");this._shaderProgram=shaderProgram}GetEffectList(){return this._effectList}GetName(){return this._name}_SetIndex(i){this._index=i}GetIndex(){return this._index}GetOwner(){return this._effectList.GetOwner()}GetRuntime(){return this._effectList.GetRuntime()}SetActive(a){this._isActive=!!a}IsActive(){return this._isActive}GetShaderProgram(){return this._shaderProgram}GetDefaultParameterValues(){const ret=[];for(let i=0, +len=this._shaderProgram.GetParameterCount();i{const inst= +effectChain.GetContentObject();const wi=inst.GetWorldInfo();renderer.SetColor(wi.GetPremultipliedColor());renderer.SetCurrentZ(wi.GetTotalZElevation());inst.Draw(renderer);renderer.SetCurrentZ(0)},getSourceTextureInfo:inst=>{const srcTexRect=inst.GetCurrentTexRect();const [srcWidth,srcHeight]=inst.GetCurrentSurfaceSize();return{srcTexRect,srcWidth,srcHeight}},getShaderParameters:index=>this._GetEffectChainShaderParametersForIndex(index)});this._activeEffectFlags=[];this._activeEffectTypes=[];this._preservesOpaqueness= +true;this._effectParams=[];this._effectParamBuffers=[];this._InitRenderer(inst.GetRuntime().GetRenderer());for(let i=0,len=this._effectList.GetAllEffectTypes().length;i{const shaderProgram=et.GetShaderProgram();if(shaderProgram.GetCustomParametersByteSize()>0)return C3.New(C3.Gfx.WebGPUEffectCustomParamsBuffer,shaderProgram);else return null})}_LoadEffectParameters(data){let index=0;for(const e of data){this._effectParams.push(this._LoadSingleEffectParameters(index, +e));++index}this._UpdateAllEffectParamBuffers();this.UpdateActiveEffects()}_LoadSingleEffectParameters(index,arr){this._activeEffectFlags[index]=arr[0];const ret=arr.slice(1);for(let i=0,len=ret.length;ie.GetShaderProgram()),{indexMap:this._activeEffectTypes.map(e=>e.GetIndex()),forcePreDraw:!isDefaultColor||isMustPreDraw,is3D,isSourceTextureRotated:isTexRotated,isRotatedOrNegativeSizeInstance});this._needsRebuildSteps= +false;this._wasDefaultColor=isDefaultColor;this._was3D=is3D;this._wasRotatedOrNegativeSize=isRotatedOrNegativeSizeInstance;this._wasTexRotated=isTexRotated;this._wasMustPreDraw=isMustPreDraw}GetActiveEffectTypes(){return this._activeEffectTypes}GetEffectParametersForIndex(index){return this._effectParams[index]}_GetEffectChainShaderParametersForIndex(index){if(index=this._effectParams.length)return null;const effectParams=this._effectParams[effectIndex];if(paramIndex<0||paramIndex>=effectParams.length)return null;return effectParams[paramIndex]}SetEffectParameter(effectIndex,paramIndex,value){if(effectIndex<0||effectIndex>=this._effectParams.length)return false;const effectParams=this._effectParams[effectIndex];if(paramIndex<0||paramIndex>=effectParams.length)return false;const oldValue=effectParams[paramIndex];if(oldValue instanceof +C3.Color){if(oldValue.equalsIgnoringAlpha(value))return false;oldValue.copyRgb(value)}else{if(oldValue===value)return false;effectParams[paramIndex]=value}if(effectIndexet.GetShaderProgram().BlendsBackground())}IsEffectIndexActive(i){return this._activeEffectFlags[i]}SetEffectIndexActive(i,e){this._activeEffectFlags[i]=!!e}GetAllEffectTypes(){return this._effectList.GetAllEffectTypes()}_SaveToJson(){return this._effectList.GetAllEffectTypes().map(et=> +({"name":et.GetName(),"active":this._activeEffectFlags[et.GetIndex()],"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[et.GetIndex()])}))}_LoadFromJson(arr){for(const o of arr){const et=this._effectList.GetEffectTypeByName(o["name"]);if(!et)continue;this._activeEffectFlags[et.GetIndex()]=o["active"];this._effectParams[et.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(o["params"])}this.UpdateActiveEffects();this._UpdateAllEffectParamBuffers()}}; + +} + +// collisions/collisionEngine.js +{ +'use strict';const C3=self.C3;const tempCandidates=[];const tileCollRectCandidates=[];const tempJumpthruRet=[];const tempPolyA=C3.New(C3.CollisionPoly);const tempPolyB=C3.New(C3.CollisionPoly);const tempQuad=C3.New(C3.Quad);const tempRect=C3.New(C3.Rect);const tempRect2=C3.New(C3.Rect);let tempPolyC=null;let tempRect3=null;let tempQuadB=null; +C3.CollisionEngine=class CollisionEngine extends C3.DefendedBase{constructor(runtime){super();this._runtime=runtime;this._collisionCellWidth=0;this._collisionCellHeight=0;this._registeredCollisions=[];this._collisionCheckCount=0;this._collisionCheckSec=0;this._polyCheckCount=0;this._polyCheckSec=0;this._iCollisionEngine=new self.ICollisionEngine(this)}Release(){this._runtime=null}GetRuntime(){return this._runtime}GetICollisionEngine(){return this._iCollisionEngine}_Update1sStats(){this._collisionCheckSec= +this._collisionCheckCount;this._collisionCheckCount=0;this._polyCheckSec=this._polyCheckCount;this._polyCheckCount=0}Get1secCollisionChecks(){return this._collisionCheckSec}Get1secPolyChecks(){return this._polyCheckSec}RegisterCollision(a,b){const aw=a.GetWorldInfo();const bw=b.GetWorldInfo();if(!aw||!bw)return;if(!aw.IsCollisionEnabled()||!bw.IsCollisionEnabled())return;this._registeredCollisions.push([a,b])}AddRegisteredCollisionCandidates(inst,otherType,arr){for(const [a,b]of this._registeredCollisions){let otherInst= +null;if(inst===a)otherInst=b;else if(inst===b)otherInst=a;else continue;if(!otherInst.BelongsToObjectClass(otherType))continue;if(!arr.includes(otherInst))arr.push(otherInst)}}CheckRegisteredCollision(a,b){if(!this._registeredCollisions.length)return false;for(const [c,d]of this._registeredCollisions)if(a===c&&b===d||a===d&&b===c)return true;return false}ClearRegisteredCollisions(){C3.clearArray(this._registeredCollisions)}TestOverlap(a,b){if(!a||!b||a===b)return false;const aw=a.GetWorldInfo();const bw= +b.GetWorldInfo();if(!aw.IsCollisionEnabled()||!bw.IsCollisionEnabled())return false;this._collisionCheckCount++;const layerA=aw.GetLayer();const layerB=bw.GetLayer();const areLayerTransformsCompatible=layerA.IsTransformCompatibleWith(layerB);if(areLayerTransformsCompatible)return this._TestOverlap_SameLayers(aw,bw);else return this._TestOverlap_DifferentLayers(aw,bw)}_TestOverlap_SameLayers(aw,bw){if(!aw.GetBoundingBox().intersectsRect(bw.GetBoundingBox()))return false;this._polyCheckCount++;if(!aw.GetBoundingQuad().intersectsQuad(bw.GetBoundingQuad()))return false; +if(aw.HasTilemap()&&bw.HasTilemap())return false;if(aw.HasTilemap())return this.TestTilemapOverlap(aw,bw);else if(bw.HasTilemap())return this.TestTilemapOverlap(bw,aw);if(!aw.HasOwnCollisionPoly()&&!bw.HasOwnCollisionPoly())return true;const polyA=aw.GetTransformedCollisionPoly();const polyB=bw.GetTransformedCollisionPoly();return polyA.intersectsPoly(polyB,bw.GetX()-aw.GetX(),bw.GetY()-aw.GetY())}_TestOverlap_DifferentLayers(aw,bw){const aIsTileMap=aw.HasTilemap();const bIsTileMap=bw.HasTilemap(); +if(aIsTileMap&&!bIsTileMap)return this.TestTilemapOverlapDifferentLayers(aw,bw);else if(bIsTileMap&&!aIsTileMap)return this.TestTilemapOverlapDifferentLayers(bw,aw);else if(!bIsTileMap&&!aIsTileMap){const layerA=aw.GetLayer();const layerB=bw.GetLayer();tempPolyA.copy(aw.GetTransformedCollisionPoly());tempPolyB.copy(bw.GetTransformedCollisionPoly());const ptsArrA=tempPolyA.pointsArr();for(let i=0,len=ptsArrA.length;i{let ret=interactiveLayersCache.get(layer);if(typeof ret==="undefined"){ret=layer.IsSelfAndParentsInteractive();interactiveLayersCache.set(layer,ret)}return ret};if(sol.IsSelectAll()){if(!isInverted){sol._SetSelectAll(false);C3.clearArray(sol._GetOwnInstances())}if(isOrBlock)C3.clearArray(sol._GetOwnElseInstances()); +for(const inst of objectClass.GetInstances()){const wi=inst.GetWorldInfo();const layer=wi.GetLayer();let containsPoint=false;if(isLayerInteractive(layer)&&wi.IsInViewport2())containsPoint=ptsArr.some(([ptx,pty])=>{const [lx,ly]=layer.CanvasCssToLayer(ptx,pty,wi.GetTotalZElevation());return wi.ContainsPoint(lx,ly)});if(containsPoint)if(isInverted)return false;else sol._PushInstance(inst);else if(isOrBlock)sol._PushElseInstance(inst)}}else{let arr;let isPickingElseInstances=false;if(isOrBlock&&!currentEvent.IsFirstConditionOfType(this._runtime.GetCurrentCondition()))if(this._runtime.IsCurrentConditionFirst()&& +!sol._GetOwnElseInstances().length&&sol._GetOwnInstances().length)arr=sol._GetOwnInstances();else{arr=sol._GetOwnElseInstances();isPickingElseInstances=true}else arr=sol._GetOwnInstances();let j=0;for(let i=0,len=arr.length;i{const [lx,ly]=layer.CanvasCssToLayer(ptx,pty,wi.GetTotalZElevation());return wi.ContainsPoint(lx, +ly)});if(containsPoint)if(isInverted)return false;else if(isPickingElseInstances)sol._PushInstance(inst);else arr[j++]=inst;else if(isPickingElseInstances)arr[j++]=inst;else if(isOrBlock)sol._PushElseInstance(inst)}if(!isInverted)arr.length=j}objectClass.ApplySolToContainer();interactiveLayersCache.clear();if(isInverted)return true;else return sol.HasAnyInstances()}GetCollisionCandidates(layer,rtype,bbox,candidates){const isParallaxed=layer?layer.GetParallaxX()!==1||layer.GetParallaxY()!==1:false; +if(rtype.IsFamily())for(const memberType of rtype.GetFamilyMembers())if(isParallaxed||memberType.IsAnyInstanceParallaxed())C3.appendArray(candidates,memberType.GetInstances());else{memberType._UpdateAllCollisionCells();memberType._GetCollisionCellGrid().QueryRange(bbox,candidates)}else if(isParallaxed||rtype.IsAnyInstanceParallaxed())C3.appendArray(candidates,rtype.GetInstances());else{rtype._UpdateAllCollisionCells();rtype._GetCollisionCellGrid().QueryRange(bbox,candidates)}}GetObjectClassesCollisionCandidates(layer, +objectClasses,bbox,candidates){for(const objectClass of objectClasses)this.GetCollisionCandidates(layer,objectClass,bbox,candidates)}GetSolidCollisionCandidates(layer,bbox,candidates){const solidBehavior=this._runtime.GetSolidBehavior();if(!solidBehavior)return;this.GetObjectClassesCollisionCandidates(layer,solidBehavior.GetObjectClasses(),bbox,candidates)}GetJumpthruCollisionCandidates(layer,bbox,candidates){const jumpthruBehavior=this._runtime.GetJumpthruBehavior();if(!jumpthruBehavior)return;this.GetObjectClassesCollisionCandidates(layer, +jumpthruBehavior.GetObjectClasses(),bbox,candidates)}IsSolidCollisionAllowed(solidInst,inst){return solidInst._IsSolidEnabled()&&(!inst||inst.GetWorldInfo().IsSolidCollisionAllowed(solidInst.GetSavedDataMap().get("solidTags")))}TestOverlapSolid(inst){const wi=inst.GetWorldInfo();this.GetSolidCollisionCandidates(wi.GetLayer(),wi.GetBoundingBox(),tempCandidates);for(const s of tempCandidates){if(!this.IsSolidCollisionAllowed(s,inst))continue;if(this.TestOverlap(inst,s)){C3.clearArray(tempCandidates); +return s}}C3.clearArray(tempCandidates);return null}TestRectOverlapSolid(rect,inst){this.GetSolidCollisionCandidates(null,rect,tempCandidates);for(const s of tempCandidates){if(!this.IsSolidCollisionAllowed(s,inst))continue;if(this.TestRectOverlap(rect,s)){C3.clearArray(tempCandidates);return s}}C3.clearArray(tempCandidates);return null}TestOverlapJumpthru(inst,all){let ret=null;if(all){ret=tempJumpthruRet;C3.clearArray(ret)}const wi=inst.GetWorldInfo();this.GetJumpthruCollisionCandidates(wi.GetLayer(), +wi.GetBoundingBox(),tempCandidates);for(const j of tempCandidates){if(!j._IsJumpthruEnabled())continue;if(this.TestOverlap(inst,j))if(all)ret.push(j);else{C3.clearArray(tempCandidates);return j}}C3.clearArray(tempCandidates);return ret}PushOut(inst,xdir,ydir,dist,otherInst){dist=dist||50;const wi=inst.GetWorldInfo();const oldX=wi.GetX();const oldY=wi.GetY();for(let i=0;i0){const PI=Math.PI;this.hitNormal=C3.clampAngle(this.hitNormal+PI);this.normalX=-this.normalX;this.normalY=-this.normalY}}TestInstanceSegment(inst,sx1,sy1,sx2,sy2){const t=C3.rayIntersect(this.x1, +this.y1,this.x2,this.y2,sx1,sy1,sx2,sy2);if(t>=0&&t[this.GetDrawWidth(),this.GetDrawHeight()],getRenderTarget:()=>this.GetEffectCompositorRenderTarget(),releaseRenderTarget:rt=>this.ReleaseEffectCompositorRenderTarget(rt),getTime:()=>this.GetRuntime().GetGameTime(),redraw:()=>this.GetRuntime().UpdateRender()});this._gpuTimeStartFrame=0;this._gpuTimeEndFrame= +0;this._gpuLastUtilisation=NaN;this._gpuFrameTimingsBuffer=null;this._layersGpuProfile=new Map;this._gpuCurUtilisation=NaN;this._webgpuFrameTimings=new Map;this._snapshotFormat="";this._snapshotQuality=1;this._snapshotArea=C3.New(C3.Rect);this._snapshotUrl="";this._snapshotPromise=null;this._snapshotResolve=null;this._isPastingToDrawingCanvas=0;this._loaderStartTime=0;this._rafId=-1;this._loadingProgress=0;this._loadingprogress_handler=e=>this._loadingProgress=e.progress;this._percentText=null;this._splashTextures= +{logo:null,powered:null,website:null};this._splashFrameNumber=0;this._splashFadeInFinishTime=0;this._splashFadeOutStartTime=0;this._splashState="fade-in";this._splashDoneResolve=null;this._splashDonePromise=new Promise(resolve=>this._splashDoneResolve=resolve)}_SetGPUPowerPreference(pref){this._gpuPreference=pref}_SetWebGPUEnabled(e){this._isWebGPUEnabled=!!e}_SetZAxisScale(s){this._zAxisScale=s}GetZAxisScale(){return this._zAxisScale}_SetInitFieldOfView(f){this._initFieldOfView=f}_SetZDistances(zNear, +zFar){this._zNear=zNear;this._zFar=zFar}_SetLimitedToWebGL1(l){this._isLimitedToWebGL1=!!l}async CreateCanvas(opts){let mainCanvas=opts["canvas"];this._canvasLayers.push({canvas:mainCanvas,ctx:null});this._runtime.AddDOMComponentMessageHandler("runtime","window-resize",e=>this._OnWindowResize(e));this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenchange",e=>this._OnFullscreenChange(e));this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenerror",e=>this._OnFullscreenError(e)); +mainCanvas.addEventListener("webglcontextlost",e=>this._OnWebGLContextLost(e));mainCanvas.addEventListener("webglcontextrestored",e=>this._OnWebGLContextRestored(e));this._isDocumentFullscreen=!!opts["isFullscreen"];this._cssDisplayMode=opts["cssDisplayMode"];const useWebGPU=navigator["gpu"]&&this._isWebGPUEnabled;let hasMajorPerformanceCaveat=false;if(useWebGPU)try{await this._InitWebGPUContext(true)}catch(err){this._MaybeLogRendererError("WebGPU",err);this._webgpuRenderer=null}if(!this.GetRenderer())try{await this._InitWebGLContext(true)}catch(err){this._MaybeLogRendererError("WebGL", +err);this._webglRenderer=null}if(!this.GetRenderer())hasMajorPerformanceCaveat=true;if(!this.GetRenderer()&&useWebGPU)try{await this._InitWebGPUContext(false)}catch(err){this._MaybeLogRendererError("WebGPU",err);this._webgpuRenderer=null}if(!this.GetRenderer())try{await this._InitWebGLContext(false)}catch(err){this._MaybeLogRendererError("WebGL",err);this._webglRenderer=null}const renderer=this.GetRenderer();if(!renderer)throw new Error("failed to acquire a renderer - check WebGL or WebGPU is supported"); +renderer.SetHasMajorPerformanceCaveat(hasMajorPerformanceCaveat);if(this._webgpuRenderer){this._webgpuRenderer.ondevicelost=()=>this._OnWebGPUDeviceLost();this._webgpuRenderer.ondevicerestored=()=>this._OnWebGPUDeviceRestored()}if(this._zAxisScale==="normalized")renderer.SetZAxisScaleNormalized();else{renderer.SetZAxisScaleRegular();renderer.SetFovY(this._initFieldOfView)}this.SetSize(opts["windowInnerWidth"],opts["windowInnerHeight"],true);await this._InitRenderer()}_MaybeLogRendererError(rendererType, +err){if(err&&typeof err.message==="string"&&err.message.startsWith("renderer-unavailable"))return;console.error(`Error creating ${rendererType} renderer: `,err)}async _InitWebGPUContext(failIfMajorPerformanceCaveat){const ctorOpts={nearZ:this._zNear,farZ:this._zFar};const rendererOpts={powerPreference:this._gpuPreference,depth:this._runtime.Uses3DFeatures(),failIfMajorPerformanceCaveat,usesBackgroundBlending:this._runtime.UsesAnyBackgroundBlending(),canSampleBackbuffer:this._runtime.UsesAnyCrossSampling(), +canSampleDepth:this._runtime.UsesAnyDepthSampling()};this._webgpuRenderer=C3.New(C3.Gfx.WebGPURenderer,ctorOpts);await this._webgpuRenderer.Create(this._canvasLayers[0].canvas,rendererOpts)}async _InitWebGLContext(failIfMajorPerformanceCaveat){const rendererOpts={alpha:true,powerPreference:this._gpuPreference,enableGpuProfiling:this._runtime.GetExportType()!=="xbox-uwp-webview2",depth:this._runtime.Uses3DFeatures(),canSampleDepth:this._runtime.UsesAnyDepthSampling(),failIfMajorPerformanceCaveat,nearZ:this._zNear, +farZ:this._zFar};if(this._isLimitedToWebGL1)rendererOpts.maxWebGLVersion=1;this._webglRenderer=C3.New(C3.Gfx.WebGLRenderer,this._canvasLayers[0].canvas,rendererOpts);await this._webglRenderer.InitState()}async _InitWebGPU(){if(this._shaderData){const promises=[];for(const [id,data]of Object.entries(this._shaderData)){data.src=data.wgsl;const vertexSrc=C3.Gfx.WebGPUShaderProgram.GetDefaultVertexShaderSource();promises.push(this._webgpuRenderer.CreateShaderProgram(Object.assign({vertexSrc,name:id}, +data)))}await Promise.all(promises)}}async _InitWebGL(){if(this._shaderData){const promises=[];for(const [id,data]of Object.entries(this._shaderData)){let vertexSrc;if(data.glslWebGL2&&this._webglRenderer.GetWebGLVersionNumber()>=2){data.src=data.glslWebGL2;vertexSrc=C3.Gfx.WebGLShaderProgram.GetDefaultVertexShaderSource_WebGL2()}else{if(!data.glsl)throw new Error(`shader '${id}' does not support WebGL 1`);data.src=data.glsl;vertexSrc=C3.Gfx.WebGLShaderProgram.GetDefaultVertexShaderSource()}promises.push(this._webglRenderer.CreateShaderProgram(Object.assign({vertexSrc, +name:id},data)))}await Promise.all(promises);this._webglRenderer.ResetLastProgram();this._webglRenderer.SetTextureFillMode()}if(this._webglRenderer.SupportsGPUProfiling())this._gpuFrameTimingsBuffer=C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer)}async _InitRenderer(){if(this._webgpuRenderer)await this._InitWebGPU();else if(this._webglRenderer)await this._InitWebGL();const renderer=this.GetRenderer();renderer.SetMipmapsEnabled(this._enableMipmaps);if(renderer.SupportsGPUProfiling())this._gpuLastUtilisation= +0;for(const effectList of this._runtime._GetAllEffectLists()){for(const effectType of effectList.GetAllEffectTypes())effectType._InitRenderer(renderer);effectList._InitRenderer(renderer);effectList.UpdateActiveEffects()}this._iRenderer=new self.IRenderer(this._runtime,renderer)}Release(){this._runtime=null;this._webglRenderer=null;this._canvasLayers.length=0}IsInWorker(){return this._runtime.IsInWorker()}_OnWindowResize(e){const runtime=this._runtime;if(runtime.IsExportToVideo())return;const dpr= +e["devicePixelRatio"];if(this.IsInWorker())self.devicePixelRatio=dpr;runtime._SetDevicePixelRatio(dpr);this._isDocumentFullscreen=!!e["isFullscreen"];this._cssDisplayMode=e["cssDisplayMode"];this.SetSize(e["innerWidth"],e["innerHeight"]);runtime.UpdateRender();const ev=new C3.Event("window-resize");ev.data=e;runtime.Dispatcher().dispatchEventAndWaitAsyncSequential(ev);const ev2=new C3.Event("resize");ev2.cssWidth=this.GetCssWidth();ev2.cssHeight=this.GetCssHeight();ev2.deviceWidth=this.GetDeviceWidth(); +ev2.deviceHeight=this.GetDeviceHeight();runtime.DispatchUserScriptEvent(ev2);if(runtime.IsDebug()&&(runtime.HitBreakpoint()||self.C3Debugger.IsDebuggerPaused()))runtime.Render()}_OnFullscreenChange(e){this._isDocumentFullscreen=!!e["isFullscreen"];this.SetSize(e["innerWidth"],e["innerHeight"],true);this._runtime.UpdateRender()}_OnFullscreenError(e){this._isDocumentFullscreen=!!e["isFullscreen"];this.SetSize(e["innerWidth"],e["innerHeight"],true);this._runtime.UpdateRender()}SetSize(availableWidth, +availableHeight,force=false){availableWidth=Math.floor(availableWidth);availableHeight=Math.floor(availableHeight);if(availableWidth<=0||availableHeight<=0)throw new Error("invalid size");if(this._windowInnerWidth===availableWidth&&this._windowInnerHeight===availableHeight&&!force)return;this._windowInnerWidth=availableWidth;this._windowInnerHeight=availableHeight;const fullscreenMode=this.GetCurrentFullscreenMode();if(fullscreenMode==="letterbox-scale")this._CalculateLetterboxScale(availableWidth, +availableHeight);else if(fullscreenMode==="letterbox-integer-scale")this._CalculateLetterboxIntegerScale(availableWidth,availableHeight);else if(fullscreenMode==="off")this._CalculateFixedSizeCanvas(availableWidth,availableHeight);else this._CalculateFullsizeCanvas(availableWidth,availableHeight);this._UpdateFullscreenScalingQuality(fullscreenMode);for(const {canvas}of this._canvasLayers){canvas.width=this._canvasDeviceWidth;canvas.height=this._canvasDeviceHeight}this._runtime.PostComponentMessageToDOM("canvas", +"update-size",{"marginLeft":this._canvasCssOffsetX,"marginTop":this._canvasCssOffsetY,"styleWidth":this._canvasCssWidth,"styleHeight":this._canvasCssHeight,"displayScale":this.GetDisplayScale()});const renderer=this.GetRenderer();renderer.SetSize(this._canvasDeviceWidth,this._canvasDeviceHeight,true);for(const rt of this._availableAdditionalRenderTargets)renderer.DeleteRenderTarget(rt);C3.clearArray(this._availableAdditionalRenderTargets);this.UpdateDefaultProjectionMatrix();const layoutManager=this._runtime.GetLayoutManager(); +layoutManager.SetAllLayerProjectionChanged();layoutManager.SetAllLayerMVChanged()}UpdateDefaultProjectionMatrix(){this.GetRenderer().CalculatePerspectiveMatrix(this._defaultProjectionMatrix,this.GetDrawWidth()/this.GetDrawHeight())}GetDefaultProjectionMatrix(){return this._defaultProjectionMatrix}_CalculateLetterboxScale(availableWidth,availableHeight){const dpr=this._runtime.GetDevicePixelRatio();const originalViewportWidth=this._runtime.GetOriginalViewportWidth();const originalViewportHeight=this._runtime.GetOriginalViewportHeight(); +const originalAspectRatio=originalViewportWidth/originalViewportHeight;const availableAspectRatio=availableWidth/availableHeight;if(availableAspectRatio>originalAspectRatio){const letterboxedWidth=availableHeight*originalAspectRatio;this._canvasCssWidth=Math.round(letterboxedWidth);this._canvasCssHeight=availableHeight;this._canvasCssOffsetX=Math.floor((availableWidth-this._canvasCssWidth)/2);this._canvasCssOffsetY=0}else{const letterboxedHeight=availableWidth/originalAspectRatio;this._canvasCssWidth= +availableWidth;this._canvasCssHeight=Math.round(letterboxedHeight);this._canvasCssOffsetX=0;this._canvasCssOffsetY=Math.floor((availableHeight-this._canvasCssHeight)/2)}this._canvasDeviceWidth=Math.round(this._canvasCssWidth*dpr);this._canvasDeviceHeight=Math.round(this._canvasCssHeight*dpr);this._runtime.SetViewportSize(originalViewportWidth,originalViewportHeight)}_CalculateLetterboxIntegerScale(availableWidth,availableHeight){const dpr=this._runtime.GetDevicePixelRatio();if(dpr!==1){availableWidth+= +1;availableHeight+=1}const originalViewportWidth=this._runtime.GetOriginalViewportWidth();const originalViewportHeight=this._runtime.GetOriginalViewportHeight();const originalAspectRatio=originalViewportWidth/originalViewportHeight;const availableAspectRatio=availableWidth/availableHeight;let intScale;if(availableAspectRatio>originalAspectRatio){const letterboxedWidth=availableHeight*originalAspectRatio;intScale=letterboxedWidth*dpr/originalViewportWidth}else{const letterboxedHeight=availableWidth/ +originalAspectRatio;intScale=letterboxedHeight*dpr/originalViewportHeight}if(intScale>1)intScale=Math.floor(intScale);else if(intScale<1)intScale=1/Math.ceil(1/intScale);this._canvasDeviceWidth=Math.round(originalViewportWidth*intScale);this._canvasDeviceHeight=Math.round(originalViewportHeight*intScale);this._canvasCssWidth=this._canvasDeviceWidth/dpr;this._canvasCssHeight=this._canvasDeviceHeight/dpr;this._canvasCssOffsetX=Math.max(Math.floor((availableWidth-this._canvasCssWidth)/2),0);this._canvasCssOffsetY= +Math.max(Math.floor((availableHeight-this._canvasCssHeight)/2),0);this._runtime.SetViewportSize(originalViewportWidth,originalViewportHeight)}_CalculateFullsizeCanvas(availableWidth,availableHeight){const dpr=this._runtime.GetDevicePixelRatio();this._canvasCssWidth=availableWidth;this._canvasCssHeight=availableHeight;this._canvasDeviceWidth=Math.round(this._canvasCssWidth*dpr);this._canvasDeviceHeight=Math.round(this._canvasCssHeight*dpr);this._canvasCssOffsetX=0;this._canvasCssOffsetY=0;const displayScale= +this.GetDisplayScale();this._runtime.SetViewportSize(this._canvasCssWidth/displayScale,this._canvasCssHeight/displayScale)}_CalculateFixedSizeCanvas(availableWidth,availableHeight){const dpr=this._runtime.GetDevicePixelRatio();this._canvasCssWidth=this._runtime.GetViewportWidth();this._canvasCssHeight=this._runtime.GetViewportHeight();this._canvasDeviceWidth=Math.round(this._canvasCssWidth*dpr);this._canvasDeviceHeight=Math.round(this._canvasCssHeight*dpr);if(this.IsDocumentFullscreen()){this._canvasCssOffsetX= +Math.floor((availableWidth-this._canvasCssWidth)/2);this._canvasCssOffsetY=Math.floor((availableHeight-this._canvasCssHeight)/2)}else{this._canvasCssOffsetX=0;this._canvasCssOffsetY=0}this._runtime.SetViewportSize(this._runtime.GetViewportWidth(),this._runtime.GetViewportHeight())}_UpdateFullscreenScalingQuality(fullscreenMode){if(this._wantFullscreenScalingQuality==="high"){this._drawWidth=this._canvasDeviceWidth;this._drawHeight=this._canvasDeviceHeight;this._fullscreenScalingQuality="high"}else{let viewportWidth, +viewportHeight;if(this.GetCurrentFullscreenMode()==="off"){viewportWidth=this._runtime.GetViewportWidth();viewportHeight=this._runtime.GetViewportHeight()}else{viewportWidth=this._runtime.GetOriginalViewportWidth();viewportHeight=this._runtime.GetOriginalViewportHeight()}if(this._canvasDeviceWidthoriginalAspectRatio)this._drawHeight=this._drawWidth/currentAspectRatio}else if(fullscreenMode==="scale-outer"){const originalAspectRatio=viewportWidth/ +viewportHeight;const currentAspectRatio=this._windowInnerWidth/this._windowInnerHeight;if(currentAspectRatio>originalAspectRatio)this._drawWidth=this._drawHeight*currentAspectRatio;else if(currentAspectRatiooriginalAspectRatio||fullscreenMode==="scale-inner"&¤tAspectRatio=124)}async SetHTMLLayerCount(c,immediate=false){if(c<1)throw new Error("invalid HTML layer count");if(this._canvasLayers.length===c)return;const message={"count":c,"immediate":immediate,"marginLeft":this._canvasCssOffsetX,"marginTop":this._canvasCssOffsetY,"styleWidth":this._canvasCssWidth,"styleHeight":this._canvasCssHeight};let result;if(this.IsInWorker())result=await this._runtime.PostComponentMessageToDOMAsync("canvas", +"set-html-layer-count",message);else result=self["c3_runtimeInterface"]["_OnSetHTMLLayerCount"](message);if(c=this._canvasLayers.length)return;const mainCanvas=this.GetMainCanvas();const destCtx=this._canvasLayers[htmlIndex].ctx;if(this._CanUseImageBitmapRenderingContext())destCtx["transferFromImageBitmap"](mainCanvas["transferToImageBitmap"]());else{destCtx.globalCompositeOperation="copy";destCtx.drawImage(mainCanvas,0,0)}}GetAdditionalRenderTarget(opts){opts.depth=this._runtime.Uses3DFeatures();const arr=this._availableAdditionalRenderTargets; +const useIndex=arr.findIndex(rt=>rt.IsCompatibleWithOptions(opts));let ret;if(useIndex!==-1){ret=arr[useIndex];arr.splice(useIndex,1)}else ret=this.GetRenderer().CreateRenderTarget(opts);this._usedAdditionalRenderTargets.add(ret);return ret}ReleaseAdditionalRenderTarget(renderTarget){if(!this._usedAdditionalRenderTargets.has(renderTarget))throw new Error("render target not in use");this._usedAdditionalRenderTargets.delete(renderTarget);this._availableAdditionalRenderTargets.push(renderTarget)}GetEffectCompositorRenderTarget(){const opts= +{sampling:this._runtime.GetSampling()};if(this.GetCurrentFullscreenScalingQuality()==="low"){opts.width=this.GetDrawWidth();opts.height=this.GetDrawHeight()}return this.GetAdditionalRenderTarget(opts)}ReleaseEffectCompositorRenderTarget(renderTarget){this.ReleaseAdditionalRenderTarget(renderTarget)}*activeLayersGpuProfiles(){for(const layout of this._runtime.GetLayoutManager().runningLayouts())for(const layer of layout.GetLayers()){const p=this._layersGpuProfile.get(layer);if(p)yield p}}GetLayerTimingsBuffer(layer){if(!this.GetRenderer().SupportsGPUProfiling())return null; +let p=this._layersGpuProfile.get(layer);if(!p){p={layer:layer,name:layer.GetName(),timingsBuffer:C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer),curUtilisation:0,lastTotalUtilisation:0,lastSelfUtilisation:0};this._layersGpuProfile.set(layer,p)}return p.timingsBuffer}_Update1sFrameRange(){const renderer=this.GetRenderer();if(!renderer.SupportsGPUProfiling())return;if(this._gpuTimeEndFrame===0){this._gpuTimeEndFrame=renderer.GetFrameNumber();this._gpuCurUtilisation=NaN;for(const p of this.activeLayersGpuProfiles())p.curUtilisation= +NaN}}_UpdateTick(){if(this._webglRenderer&&this._webglRenderer.SupportsGPUProfiling())this._UpdateTick_WebGL();if(this._webgpuRenderer&&this._webgpuRenderer.SupportsGPUProfiling())this._UpdateTick_WebGPU()}_UpdateTick_WebGL(){if(!isNaN(this._gpuCurUtilisation))return;this._gpuCurUtilisation=this._gpuFrameTimingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame);if(isNaN(this._gpuCurUtilisation))return;if(this._runtime.IsDebug())for(const p of this.activeLayersGpuProfiles()){p.curUtilisation= +p.timingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame);if(isNaN(p.curUtilisation))return}this._gpuFrameTimingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame);this._gpuLastUtilisation=Math.min(this._gpuCurUtilisation,1);if(this._runtime.IsDebug()){const layerTotalTimeMap=new Map;for(const p of this.activeLayersGpuProfiles()){p.timingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame);p.lastTotalUtilisation=Math.min(p.curUtilisation,1);layerTotalTimeMap.set(p.layer, +p.lastTotalUtilisation)}for(const p of this.activeLayersGpuProfiles()){const layer=p.layer;const totalTime=layerTotalTimeMap.get(layer)||0;const selfTime=totalTime-layer.GetSubLayers().reduce((t,l)=>t+(layerTotalTimeMap.get(l)||0),0);p.lastSelfUtilisation=C3.clamp(selfTime,0,1)}const layout=this._runtime.GetMainRunningLayout();const layoutSelfTime=this._gpuLastUtilisation-layout._GetRootLayers().reduce((t,l)=>t+(layerTotalTimeMap.get(l)||0),0);self.C3Debugger.UpdateGPUProfile(C3.clamp(layoutSelfTime, +0,1),this._gpuLastUtilisation,[...this.activeLayersGpuProfiles()])}this._gpuTimeStartFrame=this._gpuTimeEndFrame;this._gpuTimeEndFrame=0}GetGPUFrameTimingsBuffer(){return this._gpuFrameTimingsBuffer}_UpdateTick_WebGPU(){if(this._gpuTimeEndFrame===0)return;for(let frameNumber=this._gpuTimeStartFrame;frameNumberframeEnd64)frameEnd64=end64;const diff64=end64-start64;const duration=Number(diff64)/1E9;profileResults[i]+=duration}const frameDiff64=frameEnd64-frameStart64;const frameDuration=Number(frameDiff64)/1E9;overallGpuTime+=frameDuration}this._gpuLastUtilisation=C3.clamp(overallGpuTime,0,1);if(this._runtime.IsDebug()){const layers=layout.GetLayers();const layerSelfTimeMap=new Map;for(let i=0,len=Math.min(layers.length, +profileResults.length-1);it+(layerSelfTimeMap.get(l)||0),0);layerTotalTimeMap.set(layer,totalTime);layerProfiles.push({name:layer.GetName(),lastSelfUtilisation:C3.clamp(selfTime,0,1),lastTotalUtilisation:C3.clamp(totalTime,0,1)})}const layoutSelfTime= +this._gpuLastUtilisation-layout._GetRootLayers().reduce((t,l)=>t+(layerTotalTimeMap.get(l)||0),0);self.C3Debugger.UpdateGPUProfile(C3.clamp(layoutSelfTime,0,1),this._gpuLastUtilisation,layerProfiles)}for(let frameNumber=this._gpuTimeStartFrame;frameNumber{this._snapshotResolve=resolve});return this._snapshotPromise}_MaybeTakeSnapshot(){if(!this._snapshotFormat)return;let canvas=this.GetMainCanvas();const snapArea=this._snapshotArea;const x=C3.clamp(Math.floor(snapArea.getLeft()), +0,canvas.width);const y=C3.clamp(Math.floor(snapArea.getTop()),0,canvas.height);let w=snapArea.width();if(w===0)w=canvas.width-x;else w=C3.clamp(Math.floor(w),0,canvas.width-x);let h=snapArea.height();if(h===0)h=canvas.height-y;else h=C3.clamp(Math.floor(h),0,canvas.height-y);if((x!==0||y!==0||w!==canvas.width||h!==canvas.height)&&(w>0&&h>0)){const cropCanvas=C3.CreateCanvas(w,h);const ctx=cropCanvas.getContext("2d");ctx.drawImage(canvas,x,y,w,h,0,0,w,h);canvas=cropCanvas}C3.CanvasToBlob(canvas,this._snapshotFormat, +this._snapshotQuality).then(blob=>{if(this._snapshotUrl)URL.revokeObjectURL(this._snapshotUrl);this._snapshotUrl=URL.createObjectURL(blob);this._snapshotPromise=null;this._snapshotResolve(this._snapshotUrl)});this._snapshotFormat="";this._snapshotQuality=1}GetCanvasSnapshotUrl(){return this._snapshotUrl}SetIsPastingToDrawingCanvas(p){if(p)this._isPastingToDrawingCanvas++;else this._isPastingToDrawingCanvas--}IsPastingToDrawingCanvas(){return this._isPastingToDrawingCanvas>0}InitLoadingScreen(loaderStyle){const renderer= +this.GetRenderer();if(loaderStyle===2){this._percentText=C3.New(C3.Gfx.RendererText,this.GetRenderer());this._percentText.SetFontName("Arial");this._percentText.SetFontSize(16);this._percentText.SetHorizontalAlignment("center");this._percentText.SetVerticalAlignment("center");this._percentText.SetSize(PERCENTTEXT_WIDTH,PERCENTTEXT_HEIGHT)}else if(loaderStyle===0){const loadingLogoAsset=this._runtime.GetLoadingLogoAsset();if(loadingLogoAsset)loadingLogoAsset.LoadStaticTexture(renderer).catch(err=> +console.warn(`[C3 runtime] Failed to create texture for loading logo: `,err))}else if(loaderStyle===4){this._LoadSvgSplashImage("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxNzAwLjc5MDA0cHgiIGhlaWdodD0iMTcwMC43OTAwNHB4IiB2aWV3Qm94PSIyODcgMzE3IDExMjUgMTEyNSINCgkgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTcwMC43OTAwNCAxNzAwLjc5MDA0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJsb2dvIj4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0ZGRkZGRiIgZD0iTTM1NC45Nzc1NCwxMTk1LjYyMzA1DQoJCQkJYzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NjI5LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOGwtNC45MzI2Miw4LjU0MTk5DQoJCQkJYy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNjU2LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMzMiwwLDUuOTYxOTEtMC40NDMzNiw4LjcyNjU2LTEuMjY4NTVjNi4yOTQ5Mi0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTczOCw2LjUwMDk4bDQuOTMxNjQsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM4NDgsNS43MzQzOGMtOS4wMDM5MSw1LjYwMTU2LTE5LjYzMTg0LDguODM3ODktMzEuMDE2Niw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzI5Ni4xNTgyLDEyMjEuOTU3MDMsMzIyLjQ5MjE5LDExOTUuNjIzMDUsMzU0Ljk3NzU0LDExOTUuNjIzMDUNCgkJCQlMMzU0Ljk3NzU0LDExOTUuNjIzMDV6IE03MDMuMjE0ODQsMTI1OS4xNzU3OGMtMTQuNTU5NTctOS44MTczOC0yMC4yMDMxMy0yMC4wMzIyMy0yMC4yMDMxMy0zMy4wODAwOA0KCQkJCWMwLTE4LjQ4OTI2LDE1LjcxNDg0LTI5Ljc2MzY3LDM4LjI2NjYtMjkuNzYzNjdjOS42NTcyMywwLDE4LjcyMTY4LDIuNTQyOTcsMjYuNTU5NTcsNi45OTQxNA0KCQkJCWMyLjA0OTgsMS4xNjQwNiwyLjc2MTcyLDMuNzgzMiwxLjU4MzAxLDUuODI0MjJsLTMuNDE3OTcsNS45MTk5MmMtMy4yNDcwNyw1LjYyNDAyLTkuOTA4Miw4LjMzMTA1LTE2LjE1MzMyLDYuNTQ4ODMNCgkJCQljLTIuNzIzNjMtMC43NzYzNy01LjU5ODYzLTEuMTkyMzgtOC41NzEyOS0xLjE5MjM4Yy0xMC40OTAyMywwLTExLjU5ODYzLDkuNTc2MTctNC44NTc0MiwxNC4xMjMwNWwyMy42ODY1MiwxNS45NzY1Ng0KCQkJCWM5Ljk5MDIzLDYuNzM4MjgsMTUuODk1NTEsMTcuMDY2NDEsMTUuODk1NTEsMjguNzE4NzVjMCwxOC43ODYxMy0xNS4wMDY4NCwzMy4zMDc2Mi0zOC4yNjc1OCwzMy4zMDc2Mg0KCQkJCWMtOS41MjI0NiwwLTE4LjU4Nzg5LTEuOTU3MDMtMjYuODE1NDMtNS40OTAyM2MtNy43ODEyNS0zLjMzOTg0LTEwLjkzMzU5LTEyLjc4MjIzLTYuNjk3MjctMjAuMTE4MTZsMy40ODczLTYuMDQxOTkNCgkJCQljMS4yMTM4Ny0yLjA5OTYxLDMuOTMxNjQtMi43NTk3Nyw1Ljk3NDYxLTEuNDU2MDVjNi44NTkzOCw0LjM4MjgxLDE2LjQ5MDIzLDcuNTk0NzMsMjQuNzU4NzksNy41OTQ3Mw0KCQkJCWMxMC41NDU5LDAsMTEuMzI4MTMtOS45NTg5OCwzLjc2NzU4LTE1LjA1NzYyTDcwMy4yMTQ4NCwxMjU5LjE3NTc4TDcwMy4yMTQ4NCwxMjU5LjE3NTc4eiBNOTg0LjYzMDg2LDEyMDIuMDAwOTgNCgkJCQljMC0yLjM0NzY2LDEuOTAzMzItNC4yNTE5NSw0LjI1MTk1LTQuMjUxOTVoOS45MjE4OGM3LjgyNzE1LDAsMTQuMTcyODUsNi4zNDU3LDE0LjE3Mjg1LDE0LjE3MzgzdjU3LjQwMTM3DQoJCQkJYzAsOC42MTAzNSw2Ljk4MDQ3LDE1LjU5MDgyLDE1LjU5MDgyLDE1LjU5MDgyczE1LjU5MDgyLTYuOTgwNDcsMTUuNTkwODItMTUuNTkwODJ2LTU3LjQwMTM3DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoOS45MjA5YzIuMzQ4NjMsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2NjcuMzIzMjQNCgkJCQljMCwyNC4yNjU2My0xOS42NzA5LDQzLjkzNzUtNDMuOTM2NTIsNDMuOTM3NXMtNDMuOTM3NS0xOS42NzE4OC00My45Mzc1LTQzLjkzNzVWMTIwMi4wMDA5OEw5ODQuNjMwODYsMTIwMi4wMDA5OHoNCgkJCQkgTTQ2Ni44NjkxNCwxMTk1LjYyMzA1YzMyLjQ4NDM4LDAsNTguODE4MzYsMjYuMzMzOTgsNTguODE4MzYsNTguODE5MzRjMCwzMi40ODQzOC0yNi4zMzM5OCw1OC44MTkzNC01OC44MTgzNiw1OC44MTkzNA0KCQkJCWMtMzIuNDg2MzMsMC01OC44MTkzNC0yNi4zMzQ5Ni01OC44MTkzNC01OC44MTkzNEM0MDguMDQ5OCwxMjIxLjk1NzAzLDQzNC4zODI4MSwxMTk1LjYyMzA1LDQ2Ni44NjkxNCwxMTk1LjYyMzA1DQoJCQkJTDQ2Ni44NjkxNCwxMTk1LjYyMzA1eiBNNDY2Ljg2OTE0LDEyMjUuMDMzMmMtMTYuMjQzMTYsMC0yOS40MTAxNiwxMy4xNjY5OS0yOS40MTAxNiwyOS40MDkxOA0KCQkJCXMxMy4xNjY5OSwyOS40MDgyLDI5LjQxMDE2LDI5LjQwODJjMTYuMjQxMjEsMCwyOS40MDgyLTEzLjE2NjAyLDI5LjQwODItMjkuNDA4MlM0ODMuMTEwMzUsMTIyNS4wMzMyLDQ2Ni44NjkxNCwxMjI1LjAzMzINCgkJCQlMNDY2Ljg2OTE0LDEyMjUuMDMzMnogTTU1Ni43MzI0MiwxMzExLjEzNDc3Yy0yLjM0NzY2LDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtOTQuOTYxOTENCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzM4My0xNC4xNzM4M2gzLjk1ODk4YzQuNjI1LDAsOC45NTg5OCwyLjI1Njg0LDExLjYxMTMzLDYuMDQ1OWw0MS4xMjIwNyw1OC43NDcwN3YtNTAuNjE5MTQNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2g5LjkyMTg4YzIuMzQ3NjYsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2OTQuOTYwOTQNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3MzgzLDE0LjE3Mjg1aC0zLjk1ODk4Yy00LjYyNSwwLTguOTU4OTgtMi4yNTU4Ni0xMS42MTEzMy02LjA0NDkybC00MS4xMjIwNy01OC43NDYwOXY1MC42MTgxNg0KCQkJCWMwLDcuODI5MS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVINTU2LjczMjQyTDU1Ni43MzI0MiwxMzExLjEzNDc3eiBNMTIxNS4wMjA1MSwxMjExLjkyMjg1DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoNTAuMzE1NDNjMi4zNDg2MywwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyDQoJCQkJYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVoLTYuMDI0NDF2NzUuMTE4MTZjMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMTg4DQoJCQkJYy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtODUuMDQxMDJoLTE1Ljk0NDM0Yy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMzMyLTQuMjUxOTUtNC4yNTE5NVYxMjExLjkyMjg1DQoJCQkJTDEyMTUuMDIwNTEsMTIxMS45MjI4NXogTTc3Ni40NDkyMiwxMjExLjkyMjg1YzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTczODMtMTQuMTczODNoNTAuMzE0NDUNCgkJCQljMi4zNDk2MSwwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcxODgsMTQuMTcyODVoLTYuMDI1Mzl2NzUuMTE4MTYNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMDljLTIuMzQ5NjEsMC00LjI1MTk1LTEuOTAyMzQtNC4yNTE5NS00LjI1di04NS4wNDEwMmgtMTUuOTQ1MzENCgkJCQljLTIuMzQ3NjYsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMTEuOTIyODVMNzc2LjQ0OTIyLDEyMTEuOTIyODV6IE05MjkuNjA0NDksMTI3Mi4wMjI0NmwyNi45NTgwMSwzMi4xMjc5Mw0KCQkJCWMyLjMxNDQ1LDIuNzU3ODEsMC4zNDM3NSw2Ljk4NDM4LTMuMjU2ODQsNi45ODQzOGgtMTkuNzA1MDhjLTQuMTg5NDUsMC04LjE2NTA0LTEuODUxNTYtMTAuODU3NDItNS4wNjA1NWwtMjIuNjgxNjQtMjcuMDMxMjUNCgkJCQl2MjcuODQxOGMwLDIuMzQ3NjYtMS45MDMzMiw0LjI1LTQuMjUxOTUsNC4yNWgtOS45MjA5Yy03LjgyNzE1LDAtMTQuMTcyODUtNi4zNDM3NS0xNC4xNzI4NS0xNC4xNzI4NXYtODUuMDM5MDYNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2gyOS43NjM2N2MyMi43MDAyLDAsNDEuMTAyNTQsMTcuMTMzNzksNDEuMTAyNTQsMzguMjY4NTUNCgkJCQlDOTU2Ljc1NDg4LDEyNTIuNTkwODIsOTQ1LjQzNjUyLDEyNjYuNzAyMTUsOTI5LjYwNDQ5LDEyNzIuMDIyNDZMOTI5LjYwNDQ5LDEyNzIuMDIyNDZ6IE05MDAuMDYxNTIsMTIyMS44NDM3NXYzMi41OTg2M2g4LjUwMzkxDQoJCQkJYzEwLjk1ODk4LDAsMTkuODQyNzctNy4yOTc4NSwxOS44NDI3Ny0xNi4yOTg4M2MwLTkuMDAxOTUtOC44ODM3OS0xNi4yOTk4LTE5Ljg0Mjc3LTE2LjI5OThIOTAwLjA2MTUyTDkwMC4wNjE1MiwxMjIxLjg0Mzc1eg0KCQkJCSBNMTE1OC4zNTkzOCwxMTk1LjYyMzA1YzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NzI3LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOA0KCQkJCWwtNC45MzI2Miw4LjU0MTk5Yy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNTU5LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMyMjMsMCw1Ljk2MDk0LTAuNDQzMzYsOC43MjU1OS0xLjI2ODU1YzYuMjk1OS0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTgzNiw2LjUwMDk4bDQuOTMwNjYsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM3NSw1LjczNDM4Yy05LjAwNDg4LDUuNjAxNTYtMTkuNjMyODEsOC44Mzc4OS0zMS4wMTc1OCw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzEwOTkuNTQwMDQsMTIyMS45NTcwMywxMTI1Ljg3NDAyLDExOTUuNjIzMDUsMTE1OC4zNTkzOCwxMTk1LjYyMzA1eiIvPg0KCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMwMEZGREEiIGQ9Ik0xMzE4LjE5NzI3LDEyMDYuMDMyMjMNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2MyMC42NTYyNSwwLDQxLjMxMjUsMCw2MS45Njg3NSwwYzMuNDI5NjksMCw1LjQ1MDIsMy44ODA4NiwzLjQ4MzQsNi42OTA0Mw0KCQkJCWwtMTkuMjk2ODgsMjcuNTY3MzhjMTUuNTQyOTcsOC4zNzU5OCwyNi4xMDY0NSwyNC44MDA3OCwyNi4xMDY0NSw0My42OTUzMWMwLDI3LjM5NzQ2LTIyLjIwODk4LDQ5LjYwNjQ1LTQ5LjYwNjQ1LDQ5LjYwNjQ1DQoJCQkJYy0xNi42ODg0OCwwLTMxLjQ1MTE3LTguMjQwMjMtNDAuNDQzMzYtMjAuODc1OThjLTEuNDUwMi0yLjAzOTA2LTAuODMxMDUtNC44OTk0MSwxLjMzNTk0LTYuMTUyMzRsMTAuOTc3NTQtNi4zMzc4OQ0KCQkJCWM0Ljg4MTg0LTIuODE4MzYsMTAuOTc5NDktMi40NzU1OSwxNS41MTQ2NSwwLjg3MzA1YzMuNTI4MzIsMi42MDU0Nyw3Ljg5MTYsNC4xNDY0OCwxMi42MTUyMyw0LjE0NjQ4DQoJCQkJYzExLjc0MjE5LDAsMjEuMjU5NzctOS41MTg1NSwyMS4yNTk3Ny0yMS4yNTk3N3MtOS41MTc1OC0yMS4yNTk3Ny0yMS4yNTk3Ny0yMS4yNTk3N2gtMTUuMjE3NzcNCgkJCQljLTMuNDI5NjksMC01LjQ1MDItMy44ODA4Ni0zLjQ4NDM4LTYuNjkwNDNsMTguMTM1NzQtMjUuOTA4MmgtMzIuMDA5NzdjLTIuMzQ4NjMsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMDYuMDMyMjN6DQoJCQkJIi8+DQoJCTwvZz4NCgkJPGc+DQoJCQk8Zz4NCgkJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0RBRThGNyIgZD0iTTg1MC4zOTU1MSw4NTcuNTkxOA0KCQkJCQljLTUwLjM1NjQ1LDAtOTQuMzI1Mi0yNy4zNTY0NS0xMTcuODUyNTQtNjguMDIwNTFsLTgwLjAzMDI3LDQ2LjIwNDFjLTQuNjU1MjcsMi42ODk0NS02LjEzMTg0LDguNzE4NzUtMy4yNDkwMiwxMy4yNTU4Ng0KCQkJCQljNDIuMjM3Myw2Ni40ODYzMywxMTYuNTMzMiwxMTAuNjA3NDIsMjAxLjEzMTg0LDExMC42MDc0MmM4OC4xMjU5OCwwLDE2NS4wNzEyOS00Ny44NzUsMjA2LjI0MzE2LTExOS4wMzYxM2wtODAuNDg3My00Ni40Njk3Mw0KCQkJCQljLTQuMzEzNDgtMi40OTAyMy05LjgwMTc2LTEuMjA1MDgtMTIuNTcwMzEsMi45MzU1NUM5MzkuMTc1NzgsODMzLjU2MjUsODk3LjU5MTgsODU3LjU5MTgsODUwLjM5NTUxLDg1Ny41OTE4DQoJCQkJCUw4NTAuMzk1NTEsODU3LjU5MTh6IE0xMTM2LjcyMTY4LDU1Ni4yMTc3N2M0LjYxNDI2LTIuNjYzMDksNi4xMTAzNS04LjYxOTE0LDMuMzEyNS0xMy4xNTEzNw0KCQkJCQljLTU5LjkxNTA0LTk3LjAzMDI3LTE2Ny4yMjQ2MS0xNjEuNjk0MzQtMjg5LjYzODY3LTE2MS42OTQzNGMtMTI1Ljg5MzU1LDAtMjM1LjgxMzQ4LDY4LjM5MjU4LTI5NC42MzM3OSwxNzAuMDQ5OA0KCQkJCQlsODAuMzc2OTUsNDYuNDA2MjVjNC4zOTc0NiwyLjUzOTA2LDEwLjAwMTk1LDEuMTQ5NDEsMTIuNzEwOTQtMy4xNDU1MQ0KCQkJCQljNDIuMTY0MDYtNjYuODUxNTYsMTE2LjY2ODk1LTExMS4yNjM2NywyMDEuNTQ1OS0xMTEuMjYzNjdjODguMTI1OTgsMCwxNjUuMDcxMjksNDcuODc1OTgsMjA2LjI0MzE2LDExOS4wMzYxMw0KCQkJCQlMMTEzNi43MjE2OCw1NTYuMjE3Nzd6Ii8+DQoJCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNBNUJBQzgiIGQ9Ik04NTAuMzk1NTEsOTU5LjYzODY3DQoJCQkJCWMtODQuNTk4NjMsMC0xNTguODk0NTMtNDQuMTIxMDktMjAxLjEzMTg0LTExMC42MDc0MmMtMi44NzY5NS00LjUzMDI3LTEuMzk5NDEtMTAuNTcwMzEsMy4yNDkwMi0xMy4yNTU4Nmw4MC4wMzAyNy00Ni4yMDQxDQoJCQkJCWMtMTEuNTgxMDUtMjAuMDE2Ni0xOC4yMDk5Ni00My4yNTQ4OC0xOC4yMDk5Ni02OC4wNDE5OWMwLTc0Ljc4NTE2LDYwLjU1NzYyLTEzNi4wNjI1LDEzNi4wNjI1LTEzNi4wNjI1DQoJCQkJCWM0Ny4xOTYyOSwwLDg4Ljc4MDI3LDI0LjAyOTMsMTEzLjE4NTU1LDYwLjUyMjQ2YzIuNzY0NjUsNC4xMzM3OSw4LjI2MzY3LDUuNDIxODgsMTIuNTcwMzEsMi45MzU1NWw4MC40ODczLTQ2LjQ2OTczDQoJCQkJCWMtNDEuMTcxODgtNzEuMTYwMTYtMTE4LjExNzE5LTExOS4wMzYxMy0yMDYuMjQzMTYtMTE5LjAzNjEzYy04NC44NzY5NSwwLTE1OS4zODE4NCw0NC40MTIxMS0yMDEuNTQ1OSwxMTEuMjYzNjcNCgkJCQkJYy0yLjcwNjA1LDQuMjkxMDItOC4zMTgzNiw1LjY4MTY0LTEyLjcxMDk0LDMuMTQ1NTFsLTgwLjM3Njk1LTQ2LjQwNjI1DQoJCQkJCWMtMjguOTUyMTUsNTAuMDQwMDQtNDUuNTIzNDQsMTA4LjEzOTY1LTQ1LjUyMzQ0LDE3MC4xMDc0MmMwLDE4Ni45NjM4NywxNTEuMzk0NTMsMzQwLjE1NzIzLDM0MC4xNTcyMywzNDAuMTU3MjMNCgkJCQkJYzEyMi40MTQwNiwwLDIyOS43MjM2My02NC42NjQwNiwyODkuNjM4NjctMTYxLjY5NTMxYzIuNzk0OTItNC41MjYzNywxLjI5NDkyLTEwLjQ5MDIzLTMuMzEyNS0xMy4xNTEzN2wtODAuMDgzMDEtNDYuMjM3Mw0KCQkJCQlDMTAxNS40NjY4LDkxMS43NjM2Nyw5MzguNTIxNDgsOTU5LjYzODY3LDg1MC4zOTU1MSw5NTkuNjM4Njd6Ii8+DQoJCQk8L2c+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzAwRkZEQSIgZD0iTTExMzcuMTg1NTUsNzU4LjExMzI4di03My4xNjc5N2wtNjMuMzY1MjMsMzYuNTgzOTgNCgkJCQlMMTEzNy4xODU1NSw3NTguMTEzMjhMMTEzNy4xODU1NSw3NTguMTEzMjh6IE0xMDI2LjU3NjE3LDcwNS4xNjQwNmwxMjAuMDU4NTktNjkuMzE2NDENCgkJCQljMTIuNTY4MzYtNy4yNTU4NiwyOC4zNDQ3MywxLjg1MjU0LDI4LjM0NTcsMTYuMzY2MjF2MTM4LjYzMDg2Yy0wLjAwMDk4LDE0LjUxMjctMTUuNzc3MzQsMjMuNjIyMDctMjguMzQ1NywxNi4zNjYyMQ0KCQkJCWwtMTIwLjA1ODU5LTY5LjMxNjQxQzEwMTQuMDI4MzIsNzMwLjY0OTQxLDEwMTQuMDI4MzIsNzEyLjQwOTE4LDEwMjYuNTc2MTcsNzA1LjE2NDA2eiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=").then(tex=>{if(this._splashState==="done")renderer.DeleteTexture(tex);else this._splashTextures.logo=tex}).catch(err=>console.warn("Failed to load splash image: ",err));this._LoadBitmapSplashImage("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABABAMAAACekdKMAAAAMFBMVEUAAAByfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYYgo7vbAAAAD3RSTlMAmd137hFVqjO7zCKIRGZ881JRAAAFY0lEQVR42u2aPW/bVhSGn1iiPizZ8D+QgSJBNglFmiboQA0NUKAD1XotYA0BOspAkZnqx24vnTrIQNCpg4QkQMcYKDoW9j9w5y6qLNqWFDlvh3tJUa6ddHBhAuS7SKBIQffhuee851CQKVOmTJkyZcqUKXmqa8O+uyNlABKsFRmdP0o5AOle2gHoWdoBzFrpBHACwPeetJNmAFSlt6kGwGH0LqUAVqRuqgHkpEaqAVRkfvOWr+Dh9Rc4j6VvwnrhPNAbgK2ezj+yx7Z6GjUuASi4Ch4lHQAGwBeRK1rROQAdUx5K0hE4NUkaAdS02ZEuoms2wkCSgvYSgFJfkn6CobkSPG0mEcAOrHnGFOxAToHNjk/MygLgO/PxL0BN9yRdQKlufMQAoCdJGi8BOJYknXTJ269cu9HtdqNb4Ni6oimUbFb0dAZQ1DmULJ+TFtT0qQHwg73mLlCMfFUMQPR5VWrbmttNHICC1KDiSZ+w3pMOwFPDhP4IYFtv4ZX0nIorbUBNmjWAiqdZg5fmNFd6jvPhJQDjAV9LI0r28IpmycsBZalNWfoRWJcuoKY9c7cCkwpOwdcIqNT1BmrSgQkNbQAvpAGOF+aHOIBpCxhKR/TVBNjVOHkAOgrg2N6aoU7sklmVidtD7bNm/fIrjaBmk+Sxea142iBnTyguAfjZZscNXLOdXFM8EgVgXRpDz/6yonTEts6AXdV1APTVoKigFSXEmj3XN0kSV01WFQwAHC8O4Mhagye8NgHS137SALzsS3dxwhtXkQ4oaw64eqomOFKXbc2xJbFLTX8DOHYnsKsJu2Gdu8IIuTqjrMB8eyM5ACIFXQo2S5t7lNMM6AdFTaCgADqahHW8EQIohBk9rzEdE+JXAtjVmHWpDTmplUAA96Ea/bJDnVKSWjgaFTSHqubgmjVDXQchgFy4wBXNcXV6LYC8RjbEypomcCAyBopRShxqAn21yenM8WawqjOoKVbmLYBFndeImsnyVwJY1RR8NW1FTRiA6UNTCsP6fKwLONQBZTXx1WVbT0KbtwygvAxg81oAZU0xe2QYxkmyrDDx2DzWBXTUZFs7dNQwHUEMwN4VAKb47wOQ1wj8Gx0+/Y8A8powVJtt7XOoxn8A8N4IqCrA8cJUmzgAl3JAUWN8tSjqDX0NwI/XbwugGLe178oBK7bBaBesm0gggOUqwLrOHe8c1jV2NAMOw/XFAFRth2dr/burANS1cSc0C8kDsB7zAZvgKCjoLTiaFqwpmvwLQC7e2b3PB4CrZj48KXkAKktOEPr6VqeAr680udzEWACluK0LreJ1ThBe6+w4HkfJAhD1AtbAu3qgPcDVX2oCK9bqxwFQ1+fRsVW7va/uBZpAWaND652TCGBoM1rHHN6VmQlsq6cdE+4mC75oLAC49prKB1zTDd6NukHIKahbIkkEsGrmAQWZbZqXNLClrg04dTP4KnjnCwBfmgkZT7WD45k94C8BmA3MPGBgeqcbfQBxwwDsRMi3N7Iqc3dzsuVhV5ofkevpJOoGKUn6Ax5L92F49USoayZCls08uQDiM0ETCWPb8k7DMmH02SICGC7ayVhnsABwEpsZQkfxUpI4ALGpsFn4xCbHcVjnwgnvAkBh0U6CbzqrXgzA1E6FB9YOJGcacgUAfl36t0Ro/SIDUDEL/D1WBcJr5q0oRoJ2LQZgZJ4LPIu2RCPJAJafDLm2Yr2OHmQ4H0vzBksA2PKl38L3fY0aLAFYejK0ZpJhelVKzkj8dlRNzkj8dpRP0DTkVjTUXroB9PVnqtefS9I05BZU8NOdAyUl5q8RtwUg6KYcwP1Up8CanpMpU6ZMmTLdgP4BRYsi23xEdOAAAAAASUVORK5CYII=").then(tex=>{if(this._splashState==="done")renderer.DeleteTexture(tex);else this._splashTextures.powered= +tex}).catch(err=>console.warn("Failed to load splash image: ",err));this._LoadBitmapSplashImage("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABABAMAAACekdKMAAAAMFBMVEUAAAByfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYYgo7vbAAAAD3RSTlMAdxHdu4hmVZnuRMwzqiLYE4y2AAAFw0lEQVR42u2Yy+9LQRTHp6Xq0VIkXkFvwkYslAWJiGJj2a6sJJe/oF3YWGElEQmxkYi4ErFWNpatWFmIx9Lm1sJCLKgqraqv82h726l6hOuRzDf53TtnOr+ZOZ+ZOffca5ycnJycnJycnJycnJycnJz+pi7g2G9osxjvzX8qB8ABcAAcgH8XwDa85dspNOiaRDuAR4U0PnHtDuyy7IJRJS6gvVmL6TywVkp4ZxIhulUxFvlaXQTrgEHbnMDH5XRjlXCdb+uAnc2ojWgFFTYBZ8e9tzcaswAk6v/3K4sPfPNRFj87IXj+KXQUS9m2jXoH1lMuLq2DtEcAtNMBT9PjanFq7ySAhbABVEAaeDaAwkk2D7GRqctAMQJIq2sBauLnB/VxCfqKpWrbRhSC1W5SMQ9RTgBUwKpF1ccmAIQ2gCxE+20Au9nSESvDgeIDkJSBMpA9vgyXdsj0H0GORL3n2fbwPOKoSQS4Q2cBOGzSJbQYAHDbZEI+rEuBcyZRlF71fIP/x0wBuIBOw6xH3xu2GQFAP2cegmvSwHkeqBZjECzB46UXD3bg8UKJCT6QYzgDY9uiU7hC11doERq6MAZ2CPJ7ipEulOrteDcB4KOZBpBG7zrV1JGzATzmIdnrl/go3bRiBJBHlZc+6ItjuQQ+yFLz8Gka2LZFRVTFGdoQJQ0LPodHnXkS8AjlRWkBLwKQswAs0PDzGpcsAAMNuG+5WgdqxwjgEcp8qcBjN5oZdPhEvOfhU/hsbJuVloWV6WWgp2IBLxXQNEwLDfKqoMXrEQBjATiFA3qePlgAZJRl+EStdaAQjfgALOC1zfeX8ALV+7S69JdALWjxHGqztmxyMnTD6OOBWvAdGDkn60c6vrI5H4CPnOJsWQDe8G0hIU0MB8ojFx+AFAeqeitLy5FkL3w0yNNcSOx3oDxjjxaH9XxldZluY5NBfwrAQvQbRjQXAO8UqVq5dh6A7HCgWzgdFwBdgOX4lMZbTndkWWkDN07Bk+zItllLdHm1+FkLwBSADNDf8B0AnGOp5gFYgJEexwcgGQx4iyeD9ybFkWsbDZbv0+2Y8XvGtqMpWsUimpMAzA1AUrj5ALjm2wCoONKB+ACYsEeDlU04MMs4imeJQqljslSuD4xl/zgAsx6ku/8DgDwaO9AwFU56qhzOPiXpKCzCpSSdb8v+CQDmXshb99cARAPFCOA1chWaFXlP55yn2FqEgiFvOSzYtmiJzisKB7MxQPS8iO63YsD3AHDv8QPgjR92eKuf9vts1wdZjvZhN4XajD35FNDiR7ln0LYBaILY+OZT4DsA+BkTP4AUrgXkxSJcDFps+72X7EGlx6mBbU/lAbdQjvKA7hSAlSuHxdw0gORsHrAUnXkAUuj+AQAZdHGRp9bShX2ECz1JRSk4zNhRJqj5SZQJfpgCUNS2eRsAP/usTDAxPxFKA834AZgAOM1z6qGgxxpdmUDQNjP25LtAsojxu0AehSkAF6RLXWR/EkAdVYEevQtswVtpMwuAB1JGh2jbxQcgBKrig/qSxTD6o2Nm7fttSY6uUnErV+jb4CJyaArAI5luJkCDOy5HAPISSB5A3wYbhJERahvtPALAAw2EI9Vzsh2TTuk23qEceN9d4vVVv227hNroe0CRi/o9IKTZTQFIAc/M8jwGEiouG2/042u8u25uAuPvAavRH7XhzqcBpICdRpssRa+aNLFoh2JeyBzU08fih/ht20WZXghW34s+/ZQnAKhzojsSH4CC/sjARPKamLXacOfTAIwfNSkCbROLluG9Tm2gdl3PY178tu2SBIpFQ6fHH//2GAvAogCkjtGDEAFQYPsu6DdBqw11bgFIF8dNHsQGIEFRSDOe0RS9YYJk23JMrw+/Cr9bFX0VXmNsACbhA088qXhBrMYAlq8Gjhh//FX4YNSGO7cASO9n9B99AuHk5OTk5OTk5OTk5OTk5OTk5OT0VX0B7+fX+9cwWYYAAAAASUVORK5CYII=").then(tex=>{if(this._splashState==="done")renderer.DeleteTexture(tex);else this._splashTextures.website=tex}).catch(err=>console.warn("Failed to load splash image: ",err))}}async _LoadSvgSplashImage(url){url=(new URL(url,this._runtime.GetRuntimeBaseURL())).toString();const blob=await C3.FetchBlob(url);const drawable=await this._runtime.RasterSvgImage(blob,2048,2048); +return await this.GetRenderer().CreateStaticTextureAsync(drawable,{mipMapQuality:"high"})}async _LoadBitmapSplashImage(url){url=(new URL(url,this._runtime.GetRuntimeBaseURL())).toString();const blob=await C3.FetchBlob(url);return await this.GetRenderer().CreateStaticTextureAsync(blob,{mipMapQuality:"high"})}HideCordovaSplashScreen(){this._runtime.PostComponentMessageToDOM("runtime","hide-cordova-splash")}StartLoadingScreen(){this._loaderStartTime=Date.now();this._runtime.Dispatcher().addEventListener("loadingprogress", +this._loadingprogress_handler);this._rafId=requestAnimationFrame(()=>this._DrawLoadingScreen());const loaderStyle=this._runtime.GetLoaderStyle();if(loaderStyle!==3)this.HideCordovaSplashScreen()}async EndLoadingScreen(){const renderer=this.GetRenderer();this._loadingProgress=1;const loaderStyle=this._runtime.GetLoaderStyle();if(loaderStyle===4)await this._splashDonePromise;this._splashDoneResolve=null;this._splashDonePromise=null;if(this._rafId!==-1){cancelAnimationFrame(this._rafId);this._rafId= +-1}this._runtime.Dispatcher().removeEventListener("loadingprogress",this._loadingprogress_handler);this._loadingprogress_handler=null;if(this._percentText){this._percentText.Release();this._percentText=null}this._runtime.ReleaseLoadingLogoAsset();renderer.Start();if(this._splashTextures.logo){renderer.DeleteTexture(this._splashTextures.logo);this._splashTextures.logo=null}if(this._splashTextures.powered){renderer.DeleteTexture(this._splashTextures.powered);this._splashTextures.powered=null}if(this._splashTextures.website){renderer.DeleteTexture(this._splashTextures.website); +this._splashTextures.website=null}renderer.ClearRgba(0,0,0,0);renderer.Finish();this._splashState="done";this._gpuTimeStartFrame=renderer.GetFrameNumber();if(loaderStyle===3)this.HideCordovaSplashScreen()}_DrawLoadingScreen(){if(this._rafId===-1)return;const renderer=this.GetRenderer();renderer.Start();this._rafId=-1;const hasHadError=this._runtime.GetAssetManager().HasHadErrorLoading();const loaderStyle=this._runtime.GetLoaderStyle();if(loaderStyle!==3){this.SetCssTransform(renderer);renderer.ClearRgba(0, +0,0,0);renderer.ResetColor();renderer.SetTextureFillMode();renderer.SetTexture(null)}if(loaderStyle===0)this._DrawProgressBarAndLogoLoadingScreen(hasHadError);else if(loaderStyle===1)this._DrawProgressBarLoadingScreen(hasHadError,PROGRESSBAR_WIDTH,0);else if(loaderStyle===2)this._DrawPercentTextLoadingScreen(hasHadError);else if(loaderStyle===3)C3.noop();else if(loaderStyle===4)this._DrawSplashLoadingScreen(hasHadError);else throw new Error("invalid loader style");renderer.Finish();this._rafId=requestAnimationFrame(()=> +this._DrawLoadingScreen())}_DrawPercentTextLoadingScreen(hasHadError){if(hasHadError)this._percentText.SetColorRgb(1,0,0);else this._percentText.SetColorRgb(.6,.6,.6);this._percentText.SetText(Math.round(this._loadingProgress*100)+"%");const midX=this._canvasCssWidth/2;const midY=this._canvasCssHeight/2;const hw=PERCENTTEXT_WIDTH/2;const hh=PERCENTTEXT_HEIGHT/2;tempQuad.setRect(midX-hw,midY-hh,midX+hw,midY+hh);const renderer=this.GetRenderer();renderer.SetTexture(this._percentText.GetTexture());renderer.Quad3(tempQuad, +this._percentText.GetTexRect())}_DrawProgressBarLoadingScreen(hasHadError,width,yOff){const renderer=this.GetRenderer();const height=PROGRESSBAR_HEIGHT;renderer.SetColorFillMode();if(hasHadError)renderer.SetColorRgba(1,0,0,1);else renderer.SetColorRgba(.118,.565,1,1);const midX=this._canvasCssWidth/2;const midY=this._canvasCssHeight/2;const hw=width/2;const hh=height/2;tempRect.setWH(midX-hw,midY-hh+yOff,Math.floor(width*this._loadingProgress),height);renderer.Rect(tempRect);tempRect.setWH(midX-hw, +midY-hh+yOff,width,height);tempRect.offset(-.5,-.5);tempRect.inflate(.5,.5);renderer.SetColorRgba(0,0,0,1);renderer.LineRect2(tempRect);tempRect.inflate(1,1);renderer.SetColorRgba(1,1,1,1);renderer.LineRect2(tempRect)}_DrawProgressBarAndLogoLoadingScreen(hasHadError){const renderer=this.GetRenderer();const loadingLogoAsset=this._runtime.GetLoadingLogoAsset();if(!loadingLogoAsset){this._DrawProgressBarLoadingScreen(hasHadError,PROGRESSBAR_WIDTH,0);return}const logoTexture=loadingLogoAsset.GetTexture(); +if(!logoTexture){this._DrawProgressBarLoadingScreen(hasHadError,PROGRESSBAR_WIDTH,0);return}const logoW=logoTexture.GetWidth();const logoH=logoTexture.GetHeight();const midX=this._canvasCssWidth/2;const midY=this._canvasCssHeight/2;const hw=logoW/2;const hh=logoH/2;tempQuad.setRect(midX-hw,midY-hh,midX+hw,midY+hh);renderer.SetTexture(logoTexture);renderer.Quad(tempQuad);this._DrawProgressBarLoadingScreen(hasHadError,logoW,hh+16)}_DrawSplashLoadingScreen(hasHadError){const renderer=this.GetRenderer(); +const logoTex=this._splashTextures.logo;const poweredTex=this._splashTextures.powered;const websiteTex=this._splashTextures.website;const nowTime=Date.now();if(this._splashFrameNumber===0)this._loaderStartTime=nowTime;const allowQuickSplash=this._runtime.IsPreview()||this._runtime.IsFBInstantAvailable()&&!this._runtime.IsCordova();const splashAfterFadeOutWait=allowQuickSplash?0:SPLASH_AFTER_FADEOUT_WAIT_TIME;const splashMinDisplayTime=allowQuickSplash?0:SPLASH_MIN_DISPLAY_TIME;let a=1;if(this._splashState=== +"fade-in")a=Math.min((nowTime-this._loaderStartTime)/SPLASH_FADE_DURATION,1);else if(this._splashState==="fade-out")a=Math.max(1-(nowTime-this._splashFadeOutStartTime)/SPLASH_FADE_DURATION,0);renderer.SetColorFillMode();renderer.SetColorRgba(.231*a,.251*a,.271*a,a);tempRect.set(0,0,this._canvasCssWidth,this._canvasCssHeight);renderer.Rect(tempRect);const w=Math.ceil(this._canvasCssWidth);const h=Math.ceil(this._canvasCssHeight);let drawW,drawH;if(this._canvasCssHeight>256){renderer.SetColorRgba(.302* +a,.334*a,.365*a,a);drawW=w;drawH=Math.max(h*.005,2);tempRect.setWH(0,h*.8-drawH/2,drawW,drawH);renderer.Rect(tempRect);if(hasHadError)renderer.SetColorRgba(a,0,0,a);else renderer.SetColorRgba(.161*a,.953*a,.816*a,a);drawW=w*this._loadingProgress;tempRect.setWH(w*.5-drawW/2,h*.8-drawH/2,drawW,drawH);renderer.Rect(tempRect);renderer.SetColorRgba(a,a,a,a);renderer.SetTextureFillMode();if(poweredTex){drawW=C3.clamp(h*.22,105,w*.6)*1.5;drawH=drawW/8;tempRect.setWH(w*.5-drawW/2,h*.2-drawH/2,drawW,drawH); +renderer.SetTexture(poweredTex);renderer.Rect(tempRect)}if(logoTex){drawW=Math.min(h*.395,w*.95);drawH=drawW;tempRect.setWH(w*.5-drawW/2,h*.485-drawH/2,drawW,drawH);renderer.SetTexture(logoTex);renderer.Rect(tempRect)}if(websiteTex){drawW=C3.clamp(h*.22,105,w*.6)*1.5;drawH=drawW/8;tempRect.setWH(w*.5-drawW/2,h*.868-drawH/2,drawW,drawH);renderer.SetTexture(websiteTex);renderer.Rect(tempRect)}}else{renderer.SetColorRgba(.302*a,.334*a,.365*a,a);drawW=w;drawH=Math.max(h*.005,2);tempRect.setWH(0,h*.85- +drawH/2,drawW,drawH);renderer.Rect(tempRect);if(hasHadError)renderer.SetColorRgba(a,0,0,a);else renderer.SetColorRgba(.161*a,.953*a,.816*a,a);drawW=w*this._loadingProgress;tempRect.setWH(w*.5-drawW/2,h*.85-drawH/2,drawW,drawH);renderer.Rect(tempRect);renderer.SetColorRgba(a,a,a,a);renderer.SetTextureFillMode();if(logoTex){drawW=h*.55;drawH=drawW;tempRect.setWH(w*.5-drawW/2,h*.45-drawH/2,drawW,drawH);renderer.SetTexture(logoTex);renderer.Rect(tempRect)}}this._splashFrameNumber++;if(this._splashState=== +"fade-in"&&nowTime-this._loaderStartTime>=SPLASH_FADE_DURATION&&this._splashFrameNumber>=2){this._splashState="wait";this._splashFadeInFinishTime=nowTime}if(this._splashState==="wait"&&nowTime-this._splashFadeInFinishTime>=splashMinDisplayTime&&this._loadingProgress>=1){this._splashState="fade-out";this._splashFadeOutStartTime=nowTime}if(this._splashState==="fade-out"&&nowTime-this._splashFadeOutStartTime>=SPLASH_FADE_DURATION+splashAfterFadeOutWait||allowQuickSplash&&this._loadingProgress>=1&&nowTime- +this._loaderStartTime<500)this._splashDoneResolve()}}; + +} + +// runtime.js +{ +'use strict';const C3=self.C3;const C3Debugger=self.C3Debugger;const assert=self.assert;const DEFAULT_RUNTIME_OPTS={"messagePort":null,"runtimeBaseUrl":"","headless":false,"hasDom":true,"isInWorker":false,"useAudio":true,"exportType":""};let ife=true; +C3.Runtime=class C3Runtime extends C3.DefendedBase{constructor(opts){opts=Object.assign({},DEFAULT_RUNTIME_OPTS,opts);super();this._messagePort=opts["messagePort"];this._runtimeBaseUrl=opts["runtimeBaseUrl"];this._previewUrl=opts["previewUrl"];this._isHeadless=!!opts["headless"];this._hasDom=!!opts["hasDom"];this._isInWorker=!!opts["isInWorker"];ife=opts["ife"];this._useAudio=!!opts["useAudio"];this._exportType=opts["exportType"];this._isiOSCordova=!!opts["isiOSCordova"];this._isiOSWebView=!!opts["isiOSWebView"]; +this._isWindowsWebView2=!!opts["isWindowsWebView2"];this._isAnyWebView2Wrapper=!!opts["isAnyWebView2Wrapper"];this._isFBInstantAvailable=!!opts["isFBInstantAvailable"];this._isDebug=!!(this._exportType==="preview"&&opts["isDebug"]);this._breakpointsEnabled=this._isDebug;this._isDebugging=this._isDebug;this._debuggingDisabled=0;this._additionalLoadPromises=[];this._additionalCreatePromises=[];this._isUsingCreatePromises=false;this._projectName="";this._projectVersion="";this._projectUniqueId="";this._appId= +"";this._originalViewportWidth=0;this._originalViewportHeight=0;this._devicePixelRatio=self.devicePixelRatio;this._parallaxXorigin=0;this._parallaxYorigin=0;this._viewportWidth=0;this._viewportHeight=0;this._loaderStyle=0;this._usesLoaderLayout=false;this._isLoading=true;this._usesAnyBackgroundBlending=false;this._usesAnyCrossSampling=false;this._usesAnyDepthSampling=false;this._loadingLogoAsset=null;this._assetManager=C3.New(C3.AssetManager,this,opts);this._layoutManager=C3.New(C3.LayoutManager, +this);this._eventSheetManager=C3.New(C3.EventSheetManager,this);this._addonManager=C3.New(C3.AddonManager,this,opts["wrapperComponentIds"]);this._collisionEngine=C3.New(C3.CollisionEngine,this);this._timelineManager=C3.New(C3.TimelineManager,this);this._transitionManager=C3.New(C3.TransitionManager,this);this._templateManager=C3.New(C3.TemplateManager,this);this._flowchartManager=C3.New(C3.FlowchartManager,this);this._textIconManager=C3.New(C3.TextIconManager,{getIconSetMeta:iconSource=>this._GetTextIconSetMeta(iconSource), +getIconSetContent:iconSource=>this._GetTextIconSetContent(iconSource)});this._iconChangeHandlers=new Map;this._allObjectClasses=[];this._objectClassesByName=new Map;this._objectClassesBySid=new Map;this._familyCount=0;this._allContainers=[];this._allEffectLists=new Set;this._currentLayoutStack=[];this._instancesPendingCreate=[];this._instancesPendingDestroy=new Map;this._hasPendingInstances=false;this._isFlushingPendingInstances=false;this._objectCount=0;this._nextUid=0;this._instancesByUid=new Map; +this._instancesPendingRelease=new Set;this._instancesPendingReleaseAffectedObjectClasses=new Set;this._objectReferenceTable=[];this._jsPropNameTable=[];this._canvasManager=null;this._uses3dFeatures=false;this._framerateMode="vsync";this._sampling="trilinear";this._isPixelRoundingEnabled=false;this._needRender=true;this._pauseOnBlur=false;this._isPausedOnBlur=false;this._exportToVideo=null;this._tickCallbacks={normal:timestamp=>{this._rafId=-1;this._ruafId=-1;this.Tick(timestamp)},tickOnly:timestamp=> +{this._ruafId=-1;this.Tick(timestamp,false,"skip-render")},renderOnly:()=>{this._rafId=-1;this.Render()}};this._rafId=-1;this._ruafId=-1;this._tickCount=0;this._tickCountNoSave=0;this._hasStarted=false;this._isInTick=false;this._hasStartedTicking=false;this._isLayoutFirstTick=true;this._suspendCount=0;this._scheduleTriggersThrottle=new C3.PromiseThrottle(1);this._randomNumberCallback=()=>Math.random();this._startTime=0;this._lastTickTime=0;this._dtRaw=0;this._dt1=0;this._dt=0;this._timeScale=1;this._maxDt= +1/30;this._minDt=0;this._gameTime=C3.New(C3.KahanSum);this._gameTimeRaw=C3.New(C3.KahanSum);this._wallTime=C3.New(C3.KahanSum);this._instanceTimes=new Map;this._fpsFrameCount=-1;this._fpsLastTime=0;this._fps=0;this._tpsTickCount=-1;this._tps=0;this._mainThreadTimeCounter=0;this._mainThreadTime=0;this._isLoadingState=false;this._saveToSlotName="";this._loadFromSlotName="";this._loadFromJson=null;this._lastSaveJson="";this._projectStorage=null;this._savegamesStorage=null;this._dispatcher=C3.New(C3.Event.Dispatcher); +this._domEventHandlers=new Map;this._pendingResponsePromises=new Map;this._nextDomResponseId=0;this._didRequestDeviceOrientationEvent=false;this._didRequestDeviceMotionEvent=false;this._isReadyToHandleEvents=false;this._waitingToHandleEvents=[];this._eventObjects={"pretick":C3.New(C3.Event,"pretick",false),"tick":C3.New(C3.Event,"tick",false),"tick2":C3.New(C3.Event,"tick2",false),"instancedestroy":C3.New(C3.Event,"instancedestroy",false),"beforelayoutchange":C3.New(C3.Event,"beforelayoutchange", +false),"layoutchange":C3.New(C3.Event,"layoutchange",false)};this._eventObjects["instancedestroy"].instance=null;this._userScriptDispatcher=C3.New(C3.Event.Dispatcher);this._userScriptEventObjects=null;const behInstSortFunc=(a,b)=>C3.BehaviorInstance.SortByTickSequence(this,a,b);this._behInstsToTick=C3.New(C3.RedBlackSet,behInstSortFunc);this._behInstsToPostTick=C3.New(C3.RedBlackSet,behInstSortFunc);this._behInstsToTick2=C3.New(C3.RedBlackSet,behInstSortFunc);this._jobScheduler=C3.New(C3.JobSchedulerRuntime, +this,opts["jobScheduler"]);if(opts["canvas"])this._canvasManager=C3.New(C3.CanvasManager,this);this._messagePort.onmessage=e=>this["_OnMessageFromDOM"](e.data);this.AddDOMComponentMessageHandler("runtime","visibilitychange",e=>this._OnVisibilityChange(e));this.AddDOMComponentMessageHandler("runtime","wrapper-extension-message",e=>this._OnWrapperExtensionMessage(e));this.AddDOMComponentMessageHandler("runtime","opus-decode",e=>this._WasmDecodeWebMOpus(e["arrayBuffer"]));this.AddDOMComponentMessageHandler("runtime", +"get-remote-preview-status-info",()=>this._GetRemotePreviewStatusInfo());this.AddDOMComponentMessageHandler("runtime","js-invoke-function",e=>this._InvokeFunctionFromJS(e));this.AddDOMComponentMessageHandler("runtime","go-to-last-error-script",self["goToLastErrorScript"]);this.AddDOMComponentMessageHandler("runtime","offline-audio-render-completed",e=>this._OnOfflineAudioRenderCompleted(e));this._dispatcher.addEventListener("window-blur",e=>this._OnWindowBlur(e));this._dispatcher.addEventListener("window-focus", +()=>this._OnWindowFocus());this._timelineManager.AddRuntimeListeners();this._templateManager.AddRuntimeListeners();this._iRuntime=null;this._interfaceMap=new WeakMap;this._commonScriptInterfaces={keyboard:null,mouse:null,touch:null,timelineController:null,platformInfo:null};this._instancesNeedingAfterLoadMap=new WeakMap;this._instancesNeedingAfterLoadArray=[]}static Create(opts){return C3.New(C3.Runtime,opts)}Release(){C3.clearArray(this._allObjectClasses);this._objectClassesByName.clear();this._objectClassesBySid.clear(); +this._layoutManager.Release();this._layoutManager=null;this._eventSheetManager.Release();this._eventSheetManager=null;this._addonManager.Release();this._addonManager=null;this._assetManager.Release();this._assetManager=null;this._collisionEngine.Release();this._collisionEngine=null;this._timelineManager.Release();this._timelineManager=null;this._transitionManager.Release();this._transitionManager=null;this._templateManager.Release();this._templateManager=null;this._flowchartManager.Release();this._flowchartManager= +null;this._textIconManager.Release();this._textIconManager=null;if(this._canvasManager){this._canvasManager.Release();this._canvasManager=null}this._dispatcher.Release();this._dispatcher=null;this._tickEvent=null}["_OnMessageFromDOM"](data){const type=data["type"];if(type==="event")this._OnEventFromDOM(data);else if(type==="result")this._OnResultFromDOM(data);else throw new Error(`unknown message '${type}'`);}_OnEventFromDOM(e){if(!this._isReadyToHandleEvents){this._waitingToHandleEvents.push(e); +return}const component=e["component"];const handler=e["handler"];const data=e["data"];const dispatchOpts=e["dispatchOpts"];const dispatchRuntimeEvent=!!(dispatchOpts&&dispatchOpts["dispatchRuntimeEvent"]);const dispatchUserScriptEvent=!!(dispatchOpts&&dispatchOpts["dispatchUserScriptEvent"]);const responseId=e["responseId"];if(component==="runtime"){if(dispatchRuntimeEvent){const event=new C3.Event(handler);event.data=data;this._dispatcher.dispatchEventAndWaitAsyncSequential(event)}if(dispatchUserScriptEvent){const event= +new C3.Event(handler,true);for(const [key,value]of Object.entries(data))event[key]=value;this.DispatchUserScriptEvent(event)}}const handlerMap=this._domEventHandlers.get(component);if(!handlerMap){if(!dispatchRuntimeEvent&&!dispatchUserScriptEvent)console.warn(`[Runtime] No DOM event handlers for component '${component}'`);return}const func=handlerMap.get(handler);if(!func){if(!dispatchRuntimeEvent&&!dispatchUserScriptEvent)console.warn(`[Runtime] No DOM handler '${handler}' for component '${component}'`); +return}let ret=null;try{ret=func(data)}catch(err){console.error(`Exception in '${component}' handler '${handler}':`,err);if(responseId!==null)this._PostResultToDOM(responseId,false,""+err);return}if(responseId!==null)if(ret&&ret.then)ret.then(result=>this._PostResultToDOM(responseId,true,result)).catch(err=>{console.error(`Rejection from '${component}' handler '${handler}':`,err);this._PostResultToDOM(responseId,false,""+err)});else this._PostResultToDOM(responseId,true,ret)}_PostResultToDOM(responseId, +isOk,result){this._messagePort.postMessage({"type":"result","responseId":responseId,"isOk":isOk,"result":result})}_OnResultFromDOM(data){const responseId=data["responseId"];const isOk=data["isOk"];const result=data["result"];const pendingPromise=this._pendingResponsePromises.get(responseId);if(isOk)pendingPromise.resolve(result);else pendingPromise.reject(result);this._pendingResponsePromises.delete(responseId)}AddDOMComponentMessageHandler(component,handler,func){let handlerMap=this._domEventHandlers.get(component); +if(!handlerMap){handlerMap=new Map;this._domEventHandlers.set(component,handlerMap)}if(handlerMap.has(handler))throw new Error(`[Runtime] Component '${component}' already has handler '${handler}'`);handlerMap.set(handler,func)}PostComponentMessageToDOM(component,handler,data,transfer){this._messagePort.postMessage({"type":"event","component":component,"handler":handler,"data":data,"responseId":null},transfer)}PostComponentMessageToDOMAsync(component,handler,data,transfer){const responseId=this._nextDomResponseId++; +const ret=new Promise((resolve,reject)=>{this._pendingResponsePromises.set(responseId,{resolve,reject})});this._messagePort.postMessage({"type":"event","component":component,"handler":handler,"data":data,"responseId":responseId},transfer);return ret}SendWrapperExtensionMessage(componentId,messageId,params,asyncId=-1){this.PostComponentMessageToDOM("runtime","send-wrapper-extension-message",{"componentId":componentId,"messageId":messageId,"params":params,"asyncId":asyncId})}SendWrapperExtensionMessageAsync(componentId, +messageId,params){const responseId=this._nextDomResponseId++;const ret=new Promise((resolve,reject)=>{this._pendingResponsePromises.set(responseId,{resolve,reject})});this.SendWrapperExtensionMessage(componentId,messageId,params,responseId);return ret}_OnWrapperExtensionMessage(data){if(data["asyncId"]!==-1){const responseId=data["asyncId"];const pendingPromise=this._pendingResponsePromises.get(responseId);pendingPromise.resolve(data["params"]);this._pendingResponsePromises.delete(responseId)}else this._OnEventFromDOM({"component":"wrapper-extension:"+ +data["componentId"],"handler":data["messageId"],"data":data["params"],"responseId":null})}AddWrapperExtensionMessageHandler(componentId,messageId,func){this.AddDOMComponentMessageHandler("wrapper-extension:"+componentId,messageId,func)}HasWrapperComponentId(id){return this._addonManager.HasWrapperComponentId(id)}PostToDebugger(data){if(!this.IsDebug())throw new Error("not in debug mode");this.PostComponentMessageToDOM("runtime","post-to-debugger",data)}async Init(opts){C3.CommonACES_SetRuntime(this); +if(this.IsDebug())await C3Debugger.Init(this);else if(self.C3Debugger)self.C3Debugger.InitPreview(this);const [o]=await Promise.all([this._assetManager.FetchJson("data.json"),this._MaybeLoadOpusDecoder(),this._jobScheduler.Init()]);await this._LoadDataJson(o);await this._InitialiseCanvas(opts);if(!this.IsPreview())console.info("%cMade with Construct, the game and animation creation tool. Visit: https://www.construct.net","font-weight: bold");if(this.GetWebGLRenderer()){const webglRenderer=this.GetWebGLRenderer(); +console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, rendering with WebGL ${webglRenderer.GetWebGLVersionNumber()} [${webglRenderer.GetUnmaskedRenderer()}]`)}else if(this.GetWebGPURenderer())console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, rendering with WebGPU [${this.GetWebGPURenderer().GetAdapterInfoString()}]`);if(this.GetRenderer().HasMajorPerformanceCaveat())console.warn("[C3 runtime] The renderer indicates a major performance caveat. Software rendering may be in use. This can result in significantly degraded performance."); +this._isReadyToHandleEvents=true;for(const e of this._waitingToHandleEvents)this._OnEventFromDOM(e);C3.clearArray(this._waitingToHandleEvents);if(this._canvasManager)this._canvasManager.StartLoadingScreen();for(const f of opts["runOnStartupFunctions"])this._additionalLoadPromises.push(this._RunOnStartupFunction(f));await Promise.all([this._assetManager.WaitForAllToLoad(),...this._additionalLoadPromises]);C3.clearArray(this._additionalLoadPromises);if(this._assetManager.HasHadErrorLoading()){if(this._canvasManager)this._canvasManager.HideCordovaSplashScreen(); +return}if(this._canvasManager)await this._canvasManager.EndLoadingScreen();await this._dispatcher.dispatchEventAndWaitAsync(new C3.Event("beforeruntimestart"));await this.Start();this._messagePort.postMessage({"type":"runtime-ready"});return this}async _RunOnStartupFunction(f){try{await f(this._iRuntime)}catch(err){console.error("[C3 runtime] Error in runOnStartup function: ",err)}}async _LoadDataJson(o){const projectData=o["project"];this._projectName=projectData[0];this._projectVersion=projectData[16]; +this._projectUniqueId=projectData[31];this._appId=projectData[38];const loadingLogoFilename=projectData[39]||"loading-logo.png";this._isPixelRoundingEnabled=!!projectData[9];this._originalViewportWidth=this._viewportWidth=projectData[10];this._originalViewportHeight=this._viewportHeight=projectData[11];this._collisionEngine._InitCollisionCellSize(this._originalViewportWidth,this._originalViewportHeight);this._parallaxXorigin=this._originalViewportWidth/2;this._parallaxYorigin=this._originalViewportHeight/ +2;this._framerateMode=projectData[37];this._uses3dFeatures=!!projectData[40];this._sampling=projectData[14];this._usesAnyBackgroundBlending=projectData[15];this._usesAnyCrossSampling=projectData[42];this._usesAnyDepthSampling=projectData[17];this._usesLoaderLayout=!!projectData[18];this._loaderStyle=projectData[19];this._nextUid=projectData[21];this._pauseOnBlur=projectData[22];const assetManager=this._assetManager;assetManager._SetFileStructure(projectData[45]);assetManager._SetAudioFiles(projectData[7], +projectData[25]);assetManager._SetMediaSubfolder(projectData[8]);assetManager._SetFontsSubfolder(projectData[32]);assetManager._SetIconsSubfolder(projectData[28]);assetManager._SetWebFonts(projectData[29]);if(this._loaderStyle===0){let url="";if(assetManager.GetFileStructure()==="flat")url=assetManager.GetIconsSubfolder()+loadingLogoFilename;else url=loadingLogoFilename;if(url)this._loadingLogoAsset=assetManager.LoadImage({url})}if(this._canvasManager){this._canvasManager.SetFullscreenMode(C3.CanvasManager._FullscreenModeNumberToString(projectData[12])); +this._canvasManager.SetFullscreenScalingQuality(projectData[23]?"high":"low");this._canvasManager.SetMipmapsEnabled(projectData[24]!==0);this._canvasManager._SetGPUPowerPreference(projectData[34]);this._canvasManager._SetTextureAnisotropy(projectData[41]);this._canvasManager._SetWebGPUEnabled(projectData[13]);this._canvasManager._SetZAxisScale(projectData[30]);this._canvasManager._SetZDistances(projectData[46],projectData[47]);this._canvasManager._SetInitFieldOfView(projectData[26]);this._canvasManager._SetLimitedToWebGL1(projectData[48])}const exportToVideoOpts= +projectData[43];if(exportToVideoOpts)await this._LoadExportToVideoData(exportToVideoOpts);this._InitScriptInterfaces();this._addonManager.CreateSystemPlugin();this._objectReferenceTable=self.C3_GetObjectRefTable();const addonData=projectData[2];for(const behaviorData of addonData[1])this._addonManager.CreateBehavior(behaviorData);for(const pluginData of addonData[0])this._addonManager.CreatePlugin(pluginData);this._objectReferenceTable=self.C3_GetObjectRefTable();this._LoadJsPropNameTable();this._addonManager._InitAddonScriptInterfaces(); +for(const objectClassData of projectData[3]){const objectClass=C3.ObjectClass.Create(this,this._allObjectClasses.length,objectClassData);this._allObjectClasses.push(objectClass);this._objectClassesByName.set(objectClass.GetName().toLowerCase(),objectClass);this._objectClassesBySid.set(objectClass.GetSID(),objectClass)}for(const familyData of projectData[4]){const familyType=this._allObjectClasses[familyData[0]];familyType._LoadFamily(familyData)}for(const containerData of projectData[27]){const containerTypes= +containerData.map(index=>this._allObjectClasses[index]);this._allContainers.push(C3.New(C3.Container,this,containerTypes))}this._InitObjectsScriptInterface();for(const objectClass of this._allObjectClasses)objectClass._OnAfterCreate();for(const layoutData of projectData[5])this._layoutManager.Create(layoutData);const firstLayoutName=projectData[1];if(firstLayoutName){const firstLayout=this._layoutManager.GetLayoutByName(firstLayoutName);if(firstLayout)this._layoutManager.SetFirstLayout(firstLayout)}for(const transitionData of projectData[35])this._transitionManager.Create(transitionData); +for(const timelineData of projectData[33])this._timelineManager.Create(timelineData);for(const templateInstanceData of projectData[44])this._templateManager.Create(templateInstanceData);if(!this._templateManager.HasTemplates()){this._templateManager.Release();this._templateManager=null}for(const flowchartData of projectData[49])this._flowchartManager.Create(flowchartData);if(!this._flowchartManager.HasFlowcharts()){this._flowchartManager.Release();this._flowchartManager=null}for(const eventSheetData of projectData[6])this._eventSheetManager.Create(eventSheetData); +this._eventSheetManager._PostInit();this._InitGlobalVariableScriptInterface();C3.clearArray(this._objectReferenceTable);this.FlushPendingInstances();let targetOrientation="any";const orientations=projectData[20];if(orientations===1)targetOrientation="portrait";else if(orientations===2)targetOrientation="landscape";this.PostComponentMessageToDOM("runtime","set-target-orientation",{"targetOrientation":targetOrientation})}async _LoadExportToVideoData(exportToVideoOpts){const format=exportToVideoOpts["format"]; +if(format==="image-sequence")this._exportToVideo=new self.C3ExportToImageSequence(this,exportToVideoOpts);else if(format==="image-sequence-gif")this._exportToVideo=new self.C3ExportToGIF(this,exportToVideoOpts);else if(format==="webm")this._exportToVideo=new self.C3ExportToWebMVideo(this,exportToVideoOpts);else if(format==="mp4")this._exportToVideo=new self.C3ExportToMP4Video(this,exportToVideoOpts);else;this._framerateMode="unlimited-frame";this._canvasManager.SetFullscreenMode("off");this._devicePixelRatio= +1;self.devicePixelRatio=1;await this.PostComponentMessageToDOMAsync("runtime","set-exporting-to-video",{"message":this._exportToVideo.GetExportingMessageForPercent(0),"duration":this._exportToVideo.GetDuration()})}GetLoaderStyle(){return this._loaderStyle}IsExportToVideo(){return this._exportToVideo!==null}GetExportVideoDuration(){return this._exportToVideo.GetDuration()}GetExportVideoFramerate(){return this._exportToVideo.GetFramerate()}_InitExportToVideo(){return this._exportToVideo.Init({width:this._canvasManager.GetDeviceWidth(), +height:this._canvasManager.GetDeviceHeight()})}_ExportToVideoAddFrame(){const time=this._tickCount/this.GetExportVideoFramerate();return this._exportToVideo.AddFrame(this._canvasManager.GetMainCanvas(),time)}_ExportToVideoAddKeyframe(){if(this._exportToVideo)this._exportToVideo.AddKeyframe()}_OnOfflineAudioRenderCompleted(e){this._exportToVideo.OnOfflineAudioRenderCompleted(e)}_ExportToVideoFinish(){return this._exportToVideo.Finish()}IsFBInstantAvailable(){return this._isFBInstantAvailable}IsLoading(){return this._isLoading}AddLoadPromise(promise){this._additionalLoadPromises.push(promise)}SetUsingCreatePromises(e){this._isUsingCreatePromises= +!!e}AddCreatePromise(promise){if(!this._isUsingCreatePromises)return;this._additionalCreatePromises.push(promise)}GetCreatePromises(){return this._additionalCreatePromises}_GetNextFamilyIndex(){return this._familyCount++}GetFamilyCount(){return this._familyCount}_AddEffectList(el){this._allEffectLists.add(el)}_RemoveEffectList(el){this._allEffectLists.delete(el)}_GetAllEffectLists(){return this._allEffectLists}async _InitialiseCanvas(opts){if(!this._canvasManager)return;await this._canvasManager.CreateCanvas(opts); +this._canvasManager.InitLoadingScreen(this._loaderStyle)}async _MaybeLoadOpusDecoder(){const assetManager=this._assetManager;if(assetManager.IsAudioFormatSupported("audio/webm; codecs=opus"))return;let wasmArrayBuffer=null;const scriptFolder=assetManager.GetScriptSubfolder();const opusWasmScriptUrl=scriptFolder+"opus.wasm.js";const opusWasmBinaryUrl=scriptFolder+"opus.wasm.wasm";try{if(this.IsiOSCordova()&&assetManager.IsFileProtocol())wasmArrayBuffer=await assetManager.CordovaFetchLocalFileAsArrayBuffer(opusWasmBinaryUrl); +else wasmArrayBuffer=await assetManager.FetchArrayBuffer(opusWasmBinaryUrl)}catch(err){console.info("Failed to fetch Opus decoder WASM; assuming project has no Opus audio.",err);return}this.AddJobWorkerBuffer(wasmArrayBuffer,"opus-decoder-wasm");await this.AddJobWorkerScripts([opusWasmScriptUrl])}async _WasmDecodeWebMOpus(arrayBuffer){const result=await this.AddJob("OpusDecode",{"arrayBuffer":arrayBuffer},[arrayBuffer]);return result}async Start(){this._hasStarted=true;this._startTime=Date.now(); +let layoutStartedResolve=null;const layoutStartedPromise=new Promise(resolve=>layoutStartedResolve=resolve);if(this._usesLoaderLayout){for(const objectClass of this._allObjectClasses)if(!objectClass.IsFamily()&&!objectClass.IsOnLoaderLayout()&&objectClass.IsWorldType())objectClass.OnCreate();(async()=>{await this._assetManager.WaitForAllToLoad();await layoutStartedPromise;this._isLoading=false;this._OnLoadFinished()})()}else this._isLoading=false;this._assetManager.SetInitialLoadFinished();if(this.IsDebug())C3Debugger.RuntimeInit(ife); +for(const layout of this._layoutManager.GetAllLayouts())layout._CreateGlobalNonWorlds();if(this.IsExportToVideo())await this._InitExportToVideo();const firstLayout=this._layoutManager.GetFirstLayout();await firstLayout._Load(null,this.GetRenderer());await firstLayout._StartRunning(true);this._fpsLastTime=performance.now();layoutStartedResolve();if(!this._usesLoaderLayout)this._OnLoadFinished();const state=await this.PostComponentMessageToDOMAsync("runtime","before-start-ticking");if(state["isSuspended"]&& +!this.IsExportToVideo())this._suspendCount++;else this.Tick()}_OnLoadFinished(){this.Trigger(C3.Plugins.System.Cnds.OnLoadFinished,null,null);this.PostComponentMessageToDOM("runtime","register-sw")}GetObjectReference(index){index=Math.floor(index);const objRefTable=this._objectReferenceTable;if(index<0||index>=objRefTable.length)throw new Error("invalid object reference");return objRefTable[index]}_LoadJsPropNameTable(){for(const entry of self.C3_JsPropNameTable){const propName=C3.first(Object.keys(entry)); +this._jsPropNameTable.push(propName)}}GetJsPropName(index){index=Math.floor(index);const jsPropNameTable=this._jsPropNameTable;if(index<0||index>=jsPropNameTable.length)throw new Error("invalid prop reference");return jsPropNameTable[index]}HasDOM(){return this._hasDom}IsHeadless(){return this._isHeadless}IsInWorker(){return this._isInWorker}GetRuntimeBaseURL(){return this._runtimeBaseUrl}GetPreviewURL(){return this._previewUrl}GetEventSheetManager(){return this._eventSheetManager}GetEventStack(){return this._eventSheetManager.GetEventStack()}GetCurrentEventStackFrame(){return this._eventSheetManager.GetCurrentEventStackFrame()}GetCurrentEvent(){return this._eventSheetManager.GetCurrentEvent()}GetCurrentCondition(){return this._eventSheetManager.GetCurrentCondition()}IsCurrentConditionFirst(){return this.GetCurrentEventStackFrame().GetConditionIndex()=== +0}GetCurrentAction(){return this._eventSheetManager.GetCurrentAction()}GetAddonManager(){return this._addonManager}GetSystemPlugin(){return this._addonManager.GetSystemPlugin()}GetObjectClassByIndex(i){i=Math.floor(i);if(i<0||i>=this._allObjectClasses.length)throw new RangeError("invalid index");return this._allObjectClasses[i]}GetObjectClassByName(name){return this._objectClassesByName.get(name.toLowerCase())||null}GetObjectClassBySID(sid){return this._objectClassesBySid.get(sid)||null}GetSingleGlobalObjectClassByCtor(ctor){const plugin= +C3.AddonManager.GetPluginByConstructorFunction(ctor);if(!plugin)return null;return plugin.GetSingleGlobalObjectClass()}GetAllObjectClasses(){return this._allObjectClasses}*allInstances(){for(const objectClass of this._allObjectClasses){if(objectClass.IsFamily())continue;yield*objectClass.instances()}}Dispatcher(){return this._dispatcher}UserScriptDispatcher(){return this._userScriptDispatcher}DispatchUserScriptEvent(e){e.runtime=this.GetIRuntime();const shouldTime=this.IsDebug()&&!this._eventSheetManager.IsInEventEngine(); +if(shouldTime)C3Debugger.StartMeasuringScriptTime();this._userScriptDispatcher.dispatchEvent(e);if(shouldTime)C3Debugger.AddScriptTime()}DispatchUserScriptEventAsyncWait(e){e.runtime=this.GetIRuntime();return this._userScriptDispatcher.dispatchEventAndWaitAsync(e)}GetOriginalViewportWidth(){return this._originalViewportWidth}GetOriginalViewportHeight(){return this._originalViewportHeight}SetOriginalViewportSize(w,h){if(this._originalViewportWidth===w&&this._originalViewportHeight===h)return;this._originalViewportWidth= +w;this._originalViewportHeight=h;const layoutManager=this.GetLayoutManager();layoutManager.SetAllLayerProjectionChanged();layoutManager.SetAllLayerMVChanged()}GetViewportWidth(){return this._viewportWidth}GetViewportHeight(){return this._viewportHeight}SetViewportSize(w,h){if(this._viewportWidth===w&&this._viewportHeight===h)return;this._viewportWidth=w;this._viewportHeight=h;const layoutManager=this.GetLayoutManager();layoutManager.SetAllLayerProjectionChanged();layoutManager.SetAllLayerMVChanged()}_SetDevicePixelRatio(r){if(this.IsExportToVideo())return; +this._devicePixelRatio=r}GetDevicePixelRatio(){return this._devicePixelRatio}GetParallaxXOrigin(){return this._parallaxXorigin}GetParallaxYOrigin(){return this._parallaxYorigin}GetCanvasManager(){return this._canvasManager}GetDrawWidth(){if(!this._canvasManager)return this._viewportWidth;return this._canvasManager.GetDrawWidth()}GetDrawHeight(){if(!this._canvasManager)return this._viewportHeight;return this._canvasManager.GetDrawHeight()}GetRenderScale(){if(!this._canvasManager)return 1;return this._canvasManager.GetRenderScale()}GetDisplayScale(){if(!this._canvasManager)return 1; +return this._canvasManager.GetDisplayScale()}GetEffectLayerScaleParam(){if(!this._canvasManager)return 1;return this._canvasManager.GetEffectLayerScaleParam()}GetEffectDevicePixelRatioParam(){if(!this._canvasManager)return 1;return this._canvasManager.GetEffectDevicePixelRatioParam()}GetCanvasClientX(){if(!this._canvasManager)return 0;return this._canvasManager.GetCanvasClientX()}GetCanvasClientY(){if(!this._canvasManager)return 0;return this._canvasManager.GetCanvasClientY()}GetCanvasCssWidth(){if(!this._canvasManager)return 0; +return this._canvasManager.GetCssWidth()}GetCanvasCssHeight(){if(!this._canvasManager)return 0;return this._canvasManager.GetCssHeight()}GetFullscreenMode(){if(!this._canvasManager)return"off";return this._canvasManager.GetFullscreenMode()}GetAdditionalRenderTarget(opts){if(!this._canvasManager)return null;return this._canvasManager.GetAdditionalRenderTarget(opts)}ReleaseAdditionalRenderTarget(renderTarget){if(!this._canvasManager)return;this._canvasManager.ReleaseAdditionalRenderTarget(renderTarget)}UsesAnyBackgroundBlending(){return this._usesAnyBackgroundBlending}UsesAnyCrossSampling(){return this._usesAnyCrossSampling}UsesAnyDepthSampling(){return this._usesAnyDepthSampling}GetGPUUtilisation(){if(!this._canvasManager)return NaN; +return this._canvasManager.GetGPUUtilisation()}IsLinearSampling(){return this.GetSampling()!=="nearest"}GetFramerateMode(){return this._framerateMode}_SetFramerateMode(m){if(this._framerateMode===m)return;this._framerateMode=m;if(this._rafId!==-1||this._ruafId!==-1){this._CancelAnimationFrame();this._RequestAnimationFrame()}}GetSampling(){return this._sampling}UsesLoaderLayout(){return this._usesLoaderLayout}GetLoadingLogoAsset(){return this._loadingLogoAsset}ReleaseLoadingLogoAsset(){if(this._loadingLogoAsset){this._loadingLogoAsset.ReleaseTexture(); +this._loadingLogoAsset.Release();this._loadingLogoAsset=null}}GetLayoutManager(){return this._layoutManager}GetMainRunningLayout(){return this._layoutManager.GetMainRunningLayout()}GetTimelineManager(){return this._timelineManager}GetTransitionManager(){return this._transitionManager}GetTemplateManager(){return this._templateManager}GetFlowchartManager(){return this._flowchartManager}GetAssetManager(){return this._assetManager}LoadImage(opts){return this._assetManager.LoadImage(opts)}CreateInstance(objectClass, +layer,x,y,createHierarchy,templateName){if(templateName&&this._templateManager){if(objectClass instanceof C3.ObjectClass&&objectClass.IsFamily()){const members=objectClass.GetFamilyMembers();const i=Math.floor(this.Random()*members.length);return this.CreateInstance(members[i],layer,x,y,createHierarchy,templateName)}const templateData=this._templateManager.GetTemplateData(objectClass,templateName);if(templateData){const inst=this.CreateInstanceFromData(templateData,layer,false,x,y,false,createHierarchy, +undefined,createHierarchy);this._templateManager.MapInstanceToTemplateName(inst,templateName);return inst}}return this.CreateInstanceFromData(objectClass,layer,false,x,y,false,createHierarchy,undefined,createHierarchy)}CreateInstanceFromData(instData_or_objectClass,layer,isStartupInstance,x,y,skipSiblings,createHierarchy,previousInstance,creatingHierarchy){let instData=null;let objectClass=null;if(instData_or_objectClass instanceof C3.ObjectClass){objectClass=instData_or_objectClass;if(objectClass.IsFamily()){const members= +objectClass.GetFamilyMembers();const i=Math.floor(this.Random()*members.length);objectClass=members[i]}instData=objectClass.GetDefaultInstanceData()}else{instData=instData_or_objectClass;objectClass=this.GetObjectClassByIndex(instData[1])}const isWorld=objectClass.GetPlugin().IsWorldType();if(this._isLoading&&isWorld&&!objectClass.IsOnLoaderLayout())return null;const originalLayer=layer;if(!isWorld)layer=null;let uid;if(isStartupInstance&&!skipSiblings&&instData&&!this._instancesByUid.has(instData[2]))uid= +instData[2];else uid=this._nextUid++;const worldData=instData?instData[0]:null;const inst=C3.New(C3.Instance,{runtime:this,objectType:objectClass,layer:layer,worldData,instVarData:instData?instData[3]:null,uid:uid,tags:instData?instData[6]:null});this._instancesByUid.set(uid,inst);let wi=null;if(isWorld){wi=inst.GetWorldInfo();if(typeof x!=="undefined"&&typeof y!=="undefined"){wi.SetX(x);wi.SetY(y)}objectClass._SetAnyCollisionCellChanged(true)}if(layer){if(!creatingHierarchy)layer._AddInstance(inst, +true);if(layer.GetParallaxX()!==1||layer.GetParallaxY()!==1)objectClass._SetAnyInstanceParallaxed(true);layer.GetLayout().MaybeLoadTexturesFor(objectClass)}this._objectCount++;let needsSiblingCreation=true;if(previousInstance){const previousObjectClass=previousInstance.GetObjectClass();if(previousObjectClass.IsInContainer()&&objectClass.IsInContainer()){const container=objectClass.GetContainer();const previousContainer=previousObjectClass.GetContainer();if(container===previousContainer)needsSiblingCreation= +false}}if(objectClass.IsInContainer()&&!isStartupInstance&&!skipSiblings&&needsSiblingCreation){const processedChildInstanceData=new Set;for(const containerType of objectClass.GetContainer().objectTypes()){if(containerType===objectClass)continue;const childInstData=this._MaybeGetChildInstanceForObjectTypeData(containerType,wi,processedChildInstanceData);if(childInstData){const siblingInst=this.CreateInstanceFromData(childInstData,originalLayer,false,wi?wi.GetX():x,wi?wi.GetY():y,true,false,undefined, +creatingHierarchy);inst._AddSibling(siblingInst)}else{const siblingInst=this.CreateInstanceFromData(containerType,originalLayer,false,wi?wi.GetX():x,wi?wi.GetY():y,true,false,undefined,creatingHierarchy);inst._AddSibling(siblingInst)}}for(const s of inst.siblings()){s._AddSibling(inst);for(const s2 of inst.siblings())if(s!==s2)s._AddSibling(s2)}}if(isWorld&&!isStartupInstance&&!!createHierarchy)this._CreateChildInstancesFromData(inst,worldData,wi,layer,x,y,creatingHierarchy);if(objectClass.IsInContainer()&& +!isStartupInstance&&!skipSiblings&&!!createHierarchy)for(const sibling of inst.siblings()){const swi=sibling.GetWorldInfo();if(!swi)continue;const siblingPlugin=sibling.GetPlugin();const sWorldData=sibling.GetObjectClass().GetDefaultInstanceData()[0];if(siblingPlugin.IsWorldType())this._CreateChildInstancesFromData(sibling,sWorldData,swi,layer,swi.GetX(),swi.GetY(),creatingHierarchy);else this._CreateChildInstancesFromData(sibling,sWorldData,swi,layer,undefined,undefined,creatingHierarchy)}if(!skipSiblings&& +!!createHierarchy){if(typeof x==="undefined")x=worldData[0];if(typeof y==="undefined")y=worldData[1];const pwi=wi.GetTopParent();const newX=x-wi.GetX()+pwi.GetX();const newY=y-wi.GetY()+pwi.GetY();pwi.SetXY(newX,newY)}objectClass._SetIIDsStale();const instPropertyData=instData?C3.cloneArray(instData[5]):null;const behPropertyData=instData?instData[4].map(bp=>C3.cloneArray(bp)):null;const hasTilemap=isWorld&&worldData&&worldData[13];if(hasTilemap)inst._SetHasTilemap();inst._CreateSdkInstance(instPropertyData, +behPropertyData);if(hasTilemap){const tilemapData=worldData[13];inst.GetSdkInstance().LoadTilemapData(tilemapData[2],tilemapData[0],tilemapData[1])}this._instancesPendingCreate.push(inst);this._hasPendingInstances=true;if(this.IsDebug())C3Debugger.InstanceCreated(inst);return inst}_GetInstanceData(childData){const childLayoutSID=childData[0];const childLayerIndex=childData[1];const childUID=childData[2];const uniqueInstanceData=childData[6];if(uniqueInstanceData)return uniqueInstanceData;const layout= +this._layoutManager.GetLayoutBySID(childLayoutSID);const l=layout.GetLayer(childLayerIndex);return l.GetInitialInstanceData(childUID)}_MaybeGetChildInstanceForObjectTypeData(containerType,worldInfo,processedChildInstData){const childrenData=worldInfo?.GetSceneGraphChildrenExportData()??[];for(const childData of childrenData){const childInstData=this._GetInstanceData(childData);const childIsInContainer=!!childData[4];const childObjectClass=this.GetObjectClassByIndex(childInstData[1]);if(processedChildInstData.has(childInstData))continue; +if(containerType!==childObjectClass)continue;if(!childIsInContainer)continue;processedChildInstData.add(childInstData);return childInstData}}_CreateChildInstancesFromData(parentInstance,parentWorldData,parentWorldInfo,layer,x,y,creatingHierarchy){const parentZIndex=parentWorldInfo.GetSceneGraphZIndexExportData();const childrenData=parentWorldInfo.GetSceneGraphChildrenExportData();parentInstance.GetWorldInfo().SetSceneGraphZIndex(parentZIndex);if(!childrenData)return;if(typeof x==="undefined")x=parentWorldData[0]; +if(typeof y==="undefined")y=parentWorldData[1];const sceneGraphSiblings=new Set;const parentX=parentWorldData[0];const parentY=parentWorldData[1];for(const childData of childrenData){const childLayoutSID=childData[0];const childLayerIndex=childData[1];const childUID=childData[2];const childFlags=childData[3];const childIsInContainer=!!childData[4];const childZIndex=childData[5];const uniqueInstanceData=childData[6];let childInstData;if(uniqueInstanceData)childInstData=uniqueInstanceData;else{const layout= +this._layoutManager.GetLayoutBySID(childLayoutSID);const l=layout.GetLayer(childLayerIndex);childInstData=l.GetInitialInstanceData(childUID)}const childObjectClass=this.GetObjectClassByIndex(childInstData[1]);const hasSibling=parentInstance.HasSibling(childObjectClass);const siblingProcessed=sceneGraphSiblings.has(childObjectClass);if(hasSibling&&!siblingProcessed&&childIsInContainer){const childInst=parentInstance.GetSibling(childObjectClass);childInst.GetWorldInfo().Init(childInstData[0]);const childX= +x+childInstData[0][0]-parentX;const childY=y+childInstData[0][1]-parentY;childInst.GetWorldInfo().SetXY(childX,childY);childInst.GetWorldInfo().SetSceneGraphZIndex(childZIndex);parentInstance.AddChild(childInst,{transformX:!!(childFlags>>0&1),transformY:!!(childFlags>>1&1),transformWidth:!!(childFlags>>2&1),transformHeight:!!(childFlags>>3&1),transformAngle:!!(childFlags>>4&1),destroyWithParent:!!(childFlags>>5&1),transformZElevation:!!(childFlags>>6&1),transformOpacity:!!(childFlags>>7&1),transformVisibility:!!(childFlags>> +8&1)});sceneGraphSiblings.add(childObjectClass)}else{const childX=x+childInstData[0][0]-parentX;const childY=y+childInstData[0][1]-parentY;const childInst=this.CreateInstanceFromData(childInstData,layer,false,childX,childY,false,true,parentInstance,creatingHierarchy);childInst.GetWorldInfo().SetSceneGraphZIndex(childZIndex);parentInstance.AddChild(childInst,{transformX:!!(childFlags>>0&1),transformY:!!(childFlags>>1&1),transformWidth:!!(childFlags>>2&1),transformHeight:!!(childFlags>>3&1),transformAngle:!!(childFlags>> +4&1),destroyWithParent:!!(childFlags>>5&1),transformZElevation:!!(childFlags>>6&1),transformOpacity:!!(childFlags>>7&1),transformVisibility:!!(childFlags>>8&1)})}}}DestroyInstance(inst){if(this._instancesPendingRelease.has(inst))return;const objectClass=inst.GetObjectClass();let s=this._instancesPendingDestroy.get(objectClass);if(s){if(s.has(inst))return;s.add(inst)}else{s=new Set;s.add(inst);this._instancesPendingDestroy.set(objectClass,s)}if(this.IsDebug())C3Debugger.InstanceDestroyed(inst);inst._MarkDestroyed(); +this._hasPendingInstances=true;if(inst.IsInContainer())for(const s of inst.siblings())this.DestroyInstance(s);for(const c of inst.children())if(c.GetDestroyWithParent())this.DestroyInstance(c);if(!this._layoutManager.IsEndingLayout()&&!this._isLoadingState){const eventSheetManager=this.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);inst._TriggerOnDestroyed();eventSheetManager.BlockFlushingInstances(false)}inst._FireDestroyedScriptEvents(this._layoutManager.IsEndingLayout())}FlushPendingInstances(){if(!this._hasPendingInstances)return; +this._isFlushingPendingInstances=true;this._FlushInstancesPendingCreate();this._FlushInstancesPendingDestroy();this._isFlushingPendingInstances=false;this._hasPendingInstances=false;this.UpdateRender()}_FlushInstancesPendingCreate(){for(const inst of this._instancesPendingCreate){const objectType=inst.GetObjectClass();objectType._AddInstance(inst);for(const family of objectType.GetFamilies()){family._AddInstance(inst);family._SetIIDsStale()}}C3.clearArray(this._instancesPendingCreate)}_FlushInstancesPendingDestroy(){this._dispatcher.SetDelayRemoveEventsEnabled(true); +for(const [objectClass,s]of this._instancesPendingDestroy.entries()){this._FlushInstancesPendingDestroyForObjectClass(objectClass,s);s.clear()}this._instancesPendingDestroy.clear();this._dispatcher.SetDelayRemoveEventsEnabled(false)}_FlushInstancesPendingDestroyForObjectClass(objectClass,s){for(const inst of s){const instanceDestroyEvent=this._eventObjects["instancedestroy"];instanceDestroyEvent.instance=inst;this._dispatcher.dispatchEvent(instanceDestroyEvent);this._instancesByUid.delete(inst.GetUID()); +this._instanceTimes.delete(inst);const wi=inst.GetWorldInfo();if(wi){wi._RemoveFromCollisionCells();wi._RemoveFromRenderCells();wi._MarkDestroyed()}this._instancesPendingRelease.add(inst);this._objectCount--}C3.arrayRemoveAllInSet(objectClass.GetInstances(),s);objectClass._SetIIDsStale();this._instancesPendingReleaseAffectedObjectClasses.add(objectClass);if(objectClass.GetInstances().length===0)objectClass._SetAnyInstanceParallaxed(false);for(const family of objectClass.GetFamilies()){C3.arrayRemoveAllInSet(family.GetInstances(), +s);family._SetIIDsStale();this._instancesPendingReleaseAffectedObjectClasses.add(family)}if(objectClass.GetPlugin().IsWorldType()){const layers=new Set([...s].map(i=>i.GetWorldInfo().GetLayer()));for(const layer of layers)layer._RemoveAllInstancesInSet(s)}}_GetInstancesPendingCreate(){return this._instancesPendingCreate}*instancesPendingCreateForObjectClass(objectClass){for(const inst of this._GetInstancesPendingCreate())if(objectClass.IsFamily()){if(inst.GetObjectClass().BelongsToFamily(objectClass))yield inst}else if(inst.GetObjectClass()=== +objectClass)yield inst}_GetNewUID(){return this._nextUid++}_MapInstanceByUID(uid,inst){this._instancesByUid.set(uid,inst)}_OnRendererContextLost(){this._dispatcher.dispatchEvent(C3.New(C3.Event,"renderercontextlost"));this.SetSuspended(true);for(const objectClass of this._allObjectClasses)if(!objectClass.IsFamily()&&objectClass.HasLoadedTextures())objectClass.ReleaseTextures();const runningLayout=this.GetMainRunningLayout();if(runningLayout)runningLayout._OnRendererContextLost();C3.ImageInfo.OnRendererContextLost(); +C3.ImageAsset.OnRendererContextLost()}async _OnRendererContextRestored(){await this.GetMainRunningLayout()._Load(null,this.GetRenderer());this._dispatcher.dispatchEvent(C3.New(C3.Event,"renderercontextrestored"));this.SetSuspended(false);this.UpdateRender()}_OnVisibilityChange(e){const isHidden=e["hidden"];this.SetSuspended(isHidden);if(!isHidden)this.UpdateRender()}_OnWindowBlur(e){if(!this.IsPreview()||!this._pauseOnBlur||C3.Platform.IsMobile)return;if(!e.data["parentHasFocus"]){this.SetSuspended(true); +this._isPausedOnBlur=true}}_OnWindowFocus(){if(!this._isPausedOnBlur)return;this.SetSuspended(false);this._isPausedOnBlur=false}_RequestAnimationFrame(){const tickCallbacks=this._tickCallbacks;if(this._framerateMode==="vsync"){if(this._rafId===-1)this._rafId=self.requestAnimationFrame(tickCallbacks.normal)}else if(this._framerateMode==="unlimited-tick"){if(this._ruafId===-1)this._ruafId=C3.RequestUnlimitedAnimationFrame(tickCallbacks.tickOnly);if(this._rafId===-1)this._rafId=self.requestAnimationFrame(tickCallbacks.renderOnly)}else if(this._ruafId=== +-1)this._ruafId=C3.RequestUnlimitedAnimationFrame(tickCallbacks.normal)}_CancelAnimationFrame(){if(this._rafId!==-1){self.cancelAnimationFrame(this._rafId);this._rafId=-1}if(this._ruafId!==-1){C3.CancelUnlimitedAnimationFrame(this._ruafId);this._ruafId=-1}}IsSuspended(){return this._suspendCount>0}SetSuspended(s){if(this.IsExportToVideo())return;const wasSuspended=this.IsSuspended();this._suspendCount+=s?1:-1;if(this._suspendCount<0)this._suspendCount=0;const isSuspended=this.IsSuspended();if(!wasSuspended&& +isSuspended){console.log("[Construct] Suspending");this._CancelAnimationFrame();this._dispatcher.dispatchEvent(C3.New(C3.Event,"suspend"));this.Trigger(C3.Plugins.System.Cnds.OnSuspend,null,null)}else if(wasSuspended&&!isSuspended){console.log("[Construct] Resuming");const now=performance.now();this._lastTickTime=now;this._fpsLastTime=now;this._fpsFrameCount=0;this._fps=0;this._tpsTickCount=0;this._tps=0;this._mainThreadTime=0;this._mainThreadTimeCounter=0;this._dispatcher.dispatchEvent(C3.New(C3.Event, +"resume"));this.Trigger(C3.Plugins.System.Cnds.OnResume,null,null);if(!this.HitBreakpoint())this.Tick(now)}}_AddBehInstToTick(behSdkInst){this._behInstsToTick.Add(behSdkInst)}_AddBehInstToPostTick(behSdkInst){this._behInstsToPostTick.Add(behSdkInst)}_AddBehInstToTick2(behSdkInst){this._behInstsToTick2.Add(behSdkInst)}_RemoveBehInstToTick(behSdkInst){this._behInstsToTick.Remove(behSdkInst)}_RemoveBehInstToPostTick(behSdkInst){this._behInstsToPostTick.Remove(behSdkInst)}_RemoveBehInstToTick2(behSdkInst){this._behInstsToTick2.Remove(behSdkInst)}_BehaviorTick(){const ISDKBehaviorInstanceBase= +globalThis.ISDKBehaviorInstanceBase;this._behInstsToTick.SetQueueingEnabled(true);for(const bi of this._behInstsToTick)if(bi instanceof ISDKBehaviorInstanceBase)bi._tick();else bi.Tick();this._behInstsToTick.SetQueueingEnabled(false)}_BehaviorPostTick(){const ISDKBehaviorInstanceBase=globalThis.ISDKBehaviorInstanceBase;this._behInstsToPostTick.SetQueueingEnabled(true);for(const bi of this._behInstsToPostTick)if(bi instanceof ISDKBehaviorInstanceBase)bi._postTick();else bi.PostTick();this._behInstsToPostTick.SetQueueingEnabled(false)}_BehaviorTick2(){const ISDKBehaviorInstanceBase= +globalThis.ISDKBehaviorInstanceBase;this._behInstsToTick2.SetQueueingEnabled(true);for(const bi of this._behInstsToTick2)if(bi instanceof ISDKBehaviorInstanceBase)bi._tick2();else bi.Tick2();this._behInstsToTick2.SetQueueingEnabled(false)}*_DebugBehaviorTick(){const ISDKBehaviorInstanceBase=globalThis.ISDKBehaviorInstanceBase;this._behInstsToTick.SetQueueingEnabled(true);for(const bi of this._behInstsToTick){let ret;if(bi instanceof ISDKBehaviorInstanceBase)ret=bi._tick();else ret=bi.Tick();if(C3.IsIterator(ret))yield*ret}this._behInstsToTick.SetQueueingEnabled(false)}*_DebugBehaviorPostTick(){const ISDKBehaviorInstanceBase= +globalThis.ISDKBehaviorInstanceBase;this._behInstsToPostTick.SetQueueingEnabled(true);for(const bi of this._behInstsToPostTick){let ret;if(bi instanceof ISDKBehaviorInstanceBase)ret=bi._postTick();else ret=bi.PostTick();if(C3.IsIterator(ret))yield*ret}this._behInstsToPostTick.SetQueueingEnabled(false)}*_DebugBehaviorTick2(){const ISDKBehaviorInstanceBase=globalThis.ISDKBehaviorInstanceBase;this._behInstsToTick2.SetQueueingEnabled(true);for(const bi of this._behInstsToTick2){let ret;if(bi instanceof +ISDKBehaviorInstanceBase)ret=bi._tick2();else ret=bi.Tick2();if(C3.IsIterator(ret))yield*ret}this._behInstsToTick2.SetQueueingEnabled(false)}async Tick(timestamp,isDebugStep,mode){this._hasStartedTicking=true;const isBackgroundWake=mode==="background-wake";const shouldRender=mode!=="background-wake"&&mode!=="skip-render";const layoutManager=this.GetLayoutManager();const canvasManager=this.GetCanvasManager();if(!this._hasStarted||this.IsSuspended()&&!isDebugStep&&!isBackgroundWake)return;const startTime= +performance.now();this._isInTick=true;this._MeasureDt(timestamp||0);this._tpsTickCount++;this._ReleasePendingInstances();const beforePreTickRet=this.Step_BeforePreTick();if(this.IsDebugging())await beforePreTickRet;const pretickRet=this._dispatcher.dispatchEventAndWait_AsyncOptional(this._eventObjects["pretick"]);if(pretickRet instanceof Promise)await pretickRet;const afterPreTickRet=this.Step_AfterPreTick();if(this.IsDebugging())await afterPreTickRet;if(this._NeedsHandleSaveOrLoad())await this._HandleSaveOrLoad(); +if(layoutManager.IsPendingChangeMainLayout())await this._MaybeChangeLayout();const runEventsRet=this.Step_RunEventsEtc();if(this.IsDebugging())await runEventsRet;const layout=layoutManager.GetMainRunningLayout();const pendingSetHTMLLayerCount=layout._GetPendingSetHTMLLayerCount();let needCleanUpHTMLLayers=false;if(pendingSetHTMLLayerCount!==-1){layout._ResetPendingHTMLLayerCount();if(canvasManager.GetHTMLLayerCount()!==pendingSetHTMLLayerCount){const updatePromise=this.GetCanvasManager().SetHTMLLayerCount(pendingSetHTMLLayerCount); +if(this.IsInWorker()){needCleanUpHTMLLayers=true;await updatePromise}}}if(shouldRender)this.Render();if(needCleanUpHTMLLayers)this.PostComponentMessageToDOM("canvas","cleanup-html-layers");if(this.IsExportToVideo()){await this._ExportToVideoAddFrame();if(this.GetGameTime()>=this.GetExportVideoDuration()){this._ExportToVideoFinish();return}}if(!this.IsSuspended()&&!isBackgroundWake)this._RequestAnimationFrame();this._tickCount++;this._tickCountNoSave++;this._isInTick=false;this._mainThreadTimeCounter+= +performance.now()-startTime}async Step_BeforePreTick(){const eventSheetManager=this._eventSheetManager;const isDebug=this.IsDebug();this.FlushPendingInstances();eventSheetManager.BlockFlushingInstances(true);this.PushCurrentLayout(this.GetMainRunningLayout());if(isDebug)C3Debugger.StartMeasuringTime();if(this.IsDebugging())await eventSheetManager.DebugRunScheduledWaits();else eventSheetManager.RunScheduledWaits();if(isDebug)C3Debugger.AddEventsTime();this.PopCurrentLayout();eventSheetManager.BlockFlushingInstances(false); +this.FlushPendingInstances();eventSheetManager.BlockFlushingInstances(true)}async Step_AfterPreTick(){const isDebug=this.IsDebug();const isDebugging=this.IsDebugging();const dispatcher=this._dispatcher;const eventObjects=this._eventObjects;const userScriptEventObjects=this._userScriptEventObjects;if(isDebug)C3Debugger.StartMeasuringTime();if(isDebugging)await this.DebugIterateAndBreak(this._DebugBehaviorTick());else this._BehaviorTick();if(isDebugging)await this.DebugIterateAndBreak(this._DebugBehaviorPostTick()); +else this._BehaviorPostTick();if(isDebug)C3Debugger.AddBehaviorTickTime();if(isDebug)C3Debugger.StartMeasuringTime();if(isDebugging)await this.DebugFireGeneratorEventAndBreak(eventObjects["tick"]);else dispatcher.dispatchEvent(eventObjects["tick"]);if(isDebug)C3Debugger.AddPluginTickTime();this._eventSheetManager.BlockFlushingInstances(false);this.DispatchUserScriptEvent(userScriptEventObjects["tick"])}async Step_RunEventsEtc(){const eventSheetManager=this._eventSheetManager;const dispatcher=this._dispatcher; +const eventObjects=this._eventObjects;const isDebug=this.IsDebug();const isDebugging=this.IsDebugging();if(isDebug)C3Debugger.StartMeasuringTime();if(isDebugging)await eventSheetManager.DebugRunEvents(this._layoutManager);else eventSheetManager.RunEvents(this._layoutManager);if(isDebug)C3Debugger.AddEventsTime();this._collisionEngine.ClearRegisteredCollisions();this._ReleasePendingInstances();this._isLayoutFirstTick=false;eventSheetManager.BlockFlushingInstances(true);if(isDebug)C3Debugger.StartMeasuringTime(); +if(isDebugging)await this.DebugIterateAndBreak(this._DebugBehaviorTick2());else this._BehaviorTick2();if(isDebug)C3Debugger.AddBehaviorTickTime();if(isDebug)C3Debugger.StartMeasuringTime();if(isDebugging)await this.DebugFireGeneratorEventAndBreak(eventObjects["tick2"]);else dispatcher.dispatchEvent(eventObjects["tick2"]);if(isDebug)C3Debugger.AddPluginTickTime();eventSheetManager.BlockFlushingInstances(false);if(isDebugging)await eventSheetManager.RunQueuedDebugTriggersAsync()}_ReleasePendingInstances(){if(this._instancesPendingRelease.size=== +0)return;const dispatcher=this._dispatcher;dispatcher.SetDelayRemoveEventsEnabled(true);for(const objectClass of this._instancesPendingReleaseAffectedObjectClasses)objectClass.GetSolStack().RemoveInstances(this._instancesPendingRelease);this._instancesPendingReleaseAffectedObjectClasses.clear();this._eventSheetManager.RemoveInstancesFromScheduledWaits(this._instancesPendingRelease);for(const inst of this._instancesPendingRelease)inst.Release();this._instancesPendingRelease.clear();dispatcher.SetDelayRemoveEventsEnabled(false)}async _MaybeChangeLayout(){const layoutManager= +this.GetLayoutManager();let i=0;while(layoutManager.IsPendingChangeMainLayout()&&i++<10)await this._DoChangeLayout(layoutManager.GetPendingChangeMainLayout())}_MeasureDt(timestamp){let dtRaw=0;if(this.IsExportToVideo()){dtRaw=1/this.GetExportVideoFramerate();this._dtRaw=dtRaw;this._dt1=dtRaw}else if(this._lastTickTime!==0){const msDiff=Math.max(timestamp-this._lastTickTime,0);dtRaw=msDiff/1E3;if(dtRaw>.5)dtRaw=0;this._dtRaw=dtRaw;this._dt1=C3.clamp(dtRaw,this._minDt,this._maxDt)}this._lastTickTime= +timestamp;this._dt=this._dt1*this._timeScale;this._gameTime.Add(this._dt);this._gameTimeRaw.Add(dtRaw*this._timeScale);this._wallTime.Add(this._dt1);for(const [inst,instTime]of this._instanceTimes)instTime.Add(this._dt1*inst.GetTimeScale());if(this._canvasManager)this._canvasManager._UpdateTick();if(timestamp-this._fpsLastTime>=1E3){this._fpsLastTime+=1E3;if(timestamp-this._fpsLastTime>=1E3)this._fpsLastTime=timestamp;this._fps=this._fpsFrameCount;this._fpsFrameCount=0;this._tps=this._tpsTickCount; +this._tpsTickCount=0;this._mainThreadTime=Math.min(this._mainThreadTimeCounter/1E3,1);this._mainThreadTimeCounter=0;if(this._canvasManager)this._canvasManager._Update1sFrameRange();this._collisionEngine._Update1sStats();if(this.IsDebug())C3Debugger.Update1sPerfStats()}}_SetTrackingInstanceTime(inst,enable){if(enable){if(!this._instanceTimes.has(inst)){const instTime=C3.New(C3.KahanSum);instTime.Copy(this._gameTime);this._instanceTimes.set(inst,instTime)}}else this._instanceTimes.delete(inst)}_GetInstanceGameTime(inst){const instTime= +this._instanceTimes.get(inst);return instTime?instTime.Get():this.GetGameTime()}async _DoChangeLayout(changeToLayout){const dispatcher=this._dispatcher;const layoutManager=this.GetLayoutManager();const prevLayout=layoutManager.GetMainRunningLayout();await prevLayout._StopRunning();prevLayout._Unload(changeToLayout,this.GetRenderer());if(prevLayout===changeToLayout)this._eventSheetManager.ClearAllScheduledWaits();this._collisionEngine.ClearRegisteredCollisions();this._ReleasePendingInstances();dispatcher.dispatchEvent(this._eventObjects["beforelayoutchange"]); +C3.Asyncify.SetHighThroughputMode(true);await changeToLayout._Load(prevLayout,this.GetRenderer());C3.Asyncify.SetHighThroughputMode(false);await changeToLayout._StartRunning(false);dispatcher.dispatchEvent(this._eventObjects["layoutchange"]);this.UpdateRender();this._isLayoutFirstTick=true;this.FlushPendingInstances();this._ExportToVideoAddKeyframe()}UpdateRender(){this._needRender=true}GetWebGLRenderer(){if(!this._canvasManager)return null;return this._canvasManager.GetWebGLRenderer()}GetWebGPURenderer(){if(!this._canvasManager)return null; +return this._canvasManager.GetWebGPURenderer()}GetRenderer(){if(!this._canvasManager)return null;return this._canvasManager.GetRenderer()}Render(){const canvasManager=this._canvasManager;if(!canvasManager||canvasManager.IsRendererContextLost())return;const renderer=this.GetRenderer();const supportsGPUProfiling=renderer.SupportsGPUProfiling();const isWebGLProfiling=supportsGPUProfiling&&renderer.IsWebGL();const isWebGPUProfiling=supportsGPUProfiling&&renderer.IsWebGPU();if(isWebGLProfiling)renderer.CheckForQueryResults(); +if(!this._needRender&&!this.IsExportToVideo()){renderer.IncrementFrameNumber();return}const layout=this._layoutManager.GetMainRunningLayout();this._fpsFrameCount++;renderer.Start();const isDebug=this.IsDebug();if(isDebug)C3Debugger.StartMeasuringTime();this._needRender=false;let webglFrameQuery=null;if(isWebGLProfiling){webglFrameQuery=canvasManager.GetGPUFrameTimingsBuffer().AddTimeElapsedQuery();renderer.StartQuery(webglFrameQuery)}let webgpuFrameTimings=null;if(isWebGPUProfiling){webgpuFrameTimings= +renderer.StartFrameTiming((1+layout.GetLayerCount())*2);renderer.StartMeasuringRenderPassTime(0,1)}if(this.Uses3DFeatures()&&canvasManager.GetCurrentFullscreenScalingQuality()==="low")renderer.SetFixedSizeDepthBuffer(canvasManager.GetDrawWidth(),canvasManager.GetDrawHeight());else renderer.SetAutoSizeDepthBuffer();this._Render(this.GetRenderer(),layout);if(webglFrameQuery)renderer.EndQuery(webglFrameQuery);if(isWebGPUProfiling){renderer.StopMeasuringRenderPassTime();this._canvasManager._AddWebGPUFrameTiming(webgpuFrameTimings)}renderer.Finish(); +if(isDebug){C3Debugger.AddDrawCallsTime();C3Debugger.UpdateInspectHighlight()}if(canvasManager)canvasManager._MaybeTakeSnapshot()}_NeedsHTMLLayerCompositing(renderer){return this.GetCanvasManager().GetCurrentFullscreenScalingQuality()==="low"||renderer.IsWebGL()&&(this.UsesAnyBackgroundBlending()||this.Uses3DFeatures())}_Render(renderer,layout){renderer.SetTextureFillMode();renderer.SetAlphaBlend();renderer.SetColorRgba(1,1,1,1);renderer.SetRenderTarget(null);renderer.SetTexture(null);renderer.SetDepthEnabled(this.Uses3DFeatures()); +if(this._NeedsHTMLLayerCompositing(renderer))layout._MaybeStartDrawToOwnTexture(renderer);const htmlLayerCount=layout.GetHTMLLayerCount();for(let i=1;ithis.DeleteTextIconSet(iconSource);this._iconChangeHandlers.set(iconSource,changeHandler);iconSource.Dispatcher().addEventListener("animationframeimagechange", +changeHandler)}const iconSet=this._textIconManager.GetIconSet(iconSource);if(!iconSet.HasLoaded())iconSet.LoadContent().then(()=>this.UpdateRender());return iconSet}DeleteTextIconSet(iconSource){this._textIconManager.DeleteIconSet(iconSource)}_GetTextIconSetMeta(iconSource){const icons=[];for(const animation of iconSource.GetAnimations())for(const frame of animation.GetFrames()){const imageInfo=frame.GetImageInfo();icons.push({source:frame,width:imageInfo.GetWidth(),height:imageInfo.GetHeight(),tag:frame.GetTag()})}return{icons}}async _GetTextIconSetContent(iconSource){const promiseThrottle= +C3.New(C3.PromiseThrottle);const assetDrawablePromises=[];const assetDrawableMap=new Map;for(const animation of iconSource.GetAnimations())for(const frame of animation.GetFrames()){const imageAsset=frame.GetImageInfo().GetImageAsset();if(assetDrawableMap.has(imageAsset))continue;assetDrawableMap.set(imageAsset,null);assetDrawablePromises.push(promiseThrottle.Add(async()=>{const drawable=await imageAsset.LoadToDrawable();assetDrawableMap.set(imageAsset,drawable)}))}await Promise.all(assetDrawablePromises); +const extractPromises=[];for(const animation of iconSource.GetAnimations())for(const frame of animation.GetFrames())extractPromises.push(promiseThrottle.Add(async()=>{const imageInfo=frame.GetImageInfo();const imageAssetDrawable=assetDrawableMap.get(imageInfo.GetImageAsset());const canvas=await imageInfo.ExtractImageToCanvas(imageAssetDrawable);const imageBitmap=await createImageBitmap(canvas);return{drawable:imageBitmap}}));const iconsArr=await Promise.all(extractPromises);for(const drawable of assetDrawableMap.values())if(drawable instanceof +ImageBitmap&&drawable["close"])drawable["close"]();return{icons:iconsArr}}SaveToSlot(slotName){this._saveToSlotName=slotName}LoadFromSlot(slotName){this._loadFromSlotName=slotName}LoadFromJsonString(str){this._loadFromJson=str}GetLastSaveJsonString(){return this._lastSaveJson}_NeedsHandleSaveOrLoad(){return!!(this._saveToSlotName||this._loadFromSlotName||this._loadFromJson!==null)}async _HandleSaveOrLoad(){if(this._saveToSlotName){this.FlushPendingInstances();await this._DoSaveToSlot(this._saveToSlotName); +this._ClearSaveOrLoad()}if(this._loadFromSlotName){await this._DoLoadFromSlot(this._loadFromSlotName);this._ClearSaveOrLoad();if(this.IsDebug())C3Debugger.StepIfPausedInDebugger()}if(this._loadFromJson!==null){this.FlushPendingInstances();try{await this._DoLoadFromJsonString(this._loadFromJson);this._lastSaveJson=this._loadFromJson;await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null);this._lastSaveJson=""}catch(err){console.error("[Construct] Failed to load state from JSON string: ", +err);await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}this._ClearSaveOrLoad()}}_ClearSaveOrLoad(){this._saveToSlotName="";this._loadFromSlotName="";this._loadFromJson=null}_GetProjectStorage(){if(!this._projectStorage)this._projectStorage=localforage.createInstance({name:"c3-localstorage-"+this.GetProjectUniqueId(),description:this.GetProjectName()});return this._projectStorage}_GetSavegamesStorage(){if(!this._savegamesStorage)this._savegamesStorage=localforage.createInstance({name:"c3-savegames-"+ +this.GetProjectUniqueId(),description:this.GetProjectName()});return this._savegamesStorage}async _DoSaveToSlot(slotName){const saveJson=await this._SaveToJsonString();try{await this._GetSavegamesStorage().setItem(slotName,saveJson);console.log("[Construct] Saved state to storage ("+saveJson.length+" chars)");this._lastSaveJson=saveJson;await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveComplete,null);this._lastSaveJson=""}catch(err){console.error("[Construct] Failed to save state to storage: ", +err);await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveFailed,null)}}async _DoLoadFromSlot(slotName){try{const loadJson=await this._GetSavegamesStorage().getItem(slotName);if(!loadJson)throw new Error("empty slot");console.log("[Construct] Loaded state from storage ("+loadJson.length+" chars)");await this._DoLoadFromJsonString(loadJson);this._lastSaveJson=loadJson;await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null);this._lastSaveJson=""}catch(err){console.error("[Construct] Failed to load state from storage: ", +err);await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}}async _SaveToJsonString(){const o={"c3save":true,"version":1,"rt":{"time":this.GetGameTime(),"timeRaw":this.GetGameTimeRaw(),"walltime":this.GetWallTime(),"timescale":this.GetTimeScale(),"tickcount":this.GetTickCount(),"next_uid":this._nextUid,"running_layout":this.GetMainRunningLayout().GetSID(),"start_time_offset":Date.now()-this._startTime},"types":{},"layouts":{},"events":this._eventSheetManager._SaveToJson(),"timelines":this._timelineManager._SaveToJson(), +"user_script_data":null};for(const objectClass of this._allObjectClasses){if(objectClass.IsFamily()||objectClass.HasNoSaveBehavior())continue;o["types"][objectClass.GetSID().toString()]=objectClass._SaveToJson()}for(const layout of this._layoutManager.GetAllLayouts())o["layouts"][layout.GetSID().toString()]=layout._SaveToJson();const saveEvent=this._CreateUserScriptEvent("save");saveEvent.saveData=null;await this.DispatchUserScriptEventAsyncWait(saveEvent);o["user_script_data"]=saveEvent.saveData; +return JSON.stringify(o)}IsLoadingState(){return this._isLoadingState}async _DoLoadFromJsonString(jsonStr){const layoutManager=this.GetLayoutManager();const o=JSON.parse(jsonStr);if(o["c2save"])throw new Error("C2 saves are incompatible with C3 runtime");if(!o["c3save"])throw new Error("not valid C3 save data");if(o["version"]>1)throw new Error("C3 save data from future version");this.ClearIntancesNeedingAfterLoad();this._dispatcher.dispatchEvent(C3.New(C3.Event,"beforeload"));for(const inst of this.allInstances()){const objectClass= +inst.GetObjectClass();if(objectClass.HasNoSaveBehavior())continue;inst._OnBeforeLoad()}const rt=o["rt"];this._gameTime.Set(rt["time"]);if(rt.hasOwnProperty("timeRaw"))this._gameTimeRaw.Set(rt["timeRaw"]);this._wallTime.Set(rt["walltime"]);this._timeScale=rt["timescale"];this._tickCount=rt["tickcount"];this._startTime=Date.now()-rt["start_time_offset"];const layoutSid=rt["running_layout"];this._isLoadingState=true;let changedLayout=false;if(layoutSid!==this.GetMainRunningLayout().GetSID()){const changeToLayout= +layoutManager.GetLayoutBySID(layoutSid);if(changeToLayout){await this._DoChangeLayout(changeToLayout);changedLayout=true}else return}for(const [sidStr,data]of Object.entries(o["layouts"])){const sid=parseInt(sidStr,10);const layout=layoutManager.GetLayoutBySID(sid);if(!layout)continue;layout._LoadFromJson(data)}for(const [sidStr,data]of Object.entries(o["types"])){const sid=parseInt(sidStr,10);const objectClass=this.GetObjectClassBySID(sid);if(!objectClass||objectClass.IsFamily()||objectClass.HasNoSaveBehavior())continue; +objectClass._LoadFromJson(data)}for(const layout of this._layoutManager.GetAllLayouts())for(const layer of layout.allLayers())layer._LoadFromJsonAfterInstances();this.FlushPendingInstances();this._RefreshUidMap();this._isLoadingState=false;if(changedLayout){for(const inst of this.allInstances())inst.SetupInitialSceneGraphConnections();for(const [sidStr,data]of Object.entries(o["types"])){const sid=parseInt(sidStr,10);const objectClass=this.GetObjectClassBySID(sid);if(!objectClass||objectClass.IsFamily()|| +objectClass.HasNoSaveBehavior())continue;objectClass._SetupSceneGraphConnectionsOnChangeOfLayout(data)}}this._nextUid=rt["next_uid"];this._eventSheetManager._LoadFromJson(o["events"]);for(const objectClass of this._allObjectClasses){if(objectClass.IsFamily()||!objectClass.IsInContainer())continue;for(const inst of objectClass.GetInstances()){const iid=inst.GetIID();for(const otherType of objectClass.GetContainer().objectTypes()){if(otherType===objectClass)continue;const otherInstances=otherType.GetInstances(); +if(iid<0||iid>=otherInstances.length)throw new Error("missing sibling instance");inst._AddSibling(otherInstances[iid])}}}this._timelineManager._LoadFromJson(o["timelines"]);layoutManager.SetAllLayerProjectionChanged();layoutManager.SetAllLayerMVChanged();this._dispatcher.dispatchEvent(C3.New(C3.Event,"afterload"));this.DispatchUserScriptEvent(this._CreateUserScriptEvent("afterload"));this.DoAfterLoad();for(const [sidStr,data]of Object.entries(o["types"])){const sid=parseInt(sidStr,10);const objectClass= +this.GetObjectClassBySID(sid);if(objectClass)objectClass._ClearLoadInstancesJson()}const loadEvent=this._CreateUserScriptEvent("load");loadEvent.saveData=o["user_script_data"];await this.DispatchUserScriptEventAsyncWait(loadEvent);this.UpdateRender()}SortOnTmpHierarchyPosition(f,s){return f.GetWorldInfo().GetTmpHierarchyPosition()-s.GetWorldInfo().GetTmpHierarchyPosition()}AddInstanceNeedingAfterLoad(inst,data){if(!inst.GetWorldInfo())return;this._instancesNeedingAfterLoadMap.set(inst,data);this._instancesNeedingAfterLoadArray.push(inst)}ClearIntancesNeedingAfterLoad(){this._instancesNeedingAfterLoadMap= +new WeakMap;C3.clearArray(this._instancesNeedingAfterLoadArray)}DoAfterLoad(mode="full",opts=null){this._instancesNeedingAfterLoadArray.sort(this.SortOnTmpHierarchyPosition);for(const wi of this._instancesNeedingAfterLoadArray)wi._OnAfterLoad(this._instancesNeedingAfterLoadMap.get(wi),mode,opts);for(const wi of this._instancesNeedingAfterLoadArray)wi._OnAfterLoad2(this._instancesNeedingAfterLoadMap.get(wi),mode,opts);this.ClearIntancesNeedingAfterLoad()}async AddJobWorkerScripts(scripts){const loadUrls= +await Promise.all(scripts.map(async url=>{const isCordovaFileProtocol=this.IsCordova()&&this._assetManager.IsFileProtocol();if(isCordovaFileProtocol||this.GetExportType()==="playable-ad-single-file"){const blob=await this._assetManager.FetchBlob(url);return URL.createObjectURL(blob)}else return(new URL(url,location.href)).toString()}));this._jobScheduler.ImportScriptsToJobWorkers(loadUrls)}AddJobWorkerBlob(blob,id){this._jobScheduler.SendBlobToJobWorkers(blob,id)}AddJobWorkerBuffer(buffer,id){this._jobScheduler.SendBufferToJobWorkers(buffer, +id)}AddJob(type,params,transferables,maxWorkerNum){return this._jobScheduler.AddJob(type,params,transferables,null,null,maxWorkerNum)}BroadcastJob(type,params,transferables,maxWorkerNum){return this._jobScheduler.BroadcastJob(type,params,transferables,maxWorkerNum)}GetMaxNumJobWorkers(){return this._jobScheduler.GetMaxNumWorkers()}InvokeDownload(url,filename){this.PostComponentMessageToDOM("runtime","invoke-download",{"url":url,"filename":filename})}async RasterSvgImage(blob,imageWidth,imageHeight, +surfaceWidth,surfaceHeight,imageBitmapOpts){surfaceWidth=surfaceWidth||imageWidth;surfaceHeight=surfaceHeight||imageHeight;if(this.IsInWorker()){const result=await this.PostComponentMessageToDOMAsync("runtime","raster-svg-image",{"blob":blob,"imageWidth":imageWidth,"imageHeight":imageHeight,"surfaceWidth":surfaceWidth,"surfaceHeight":surfaceHeight,"imageBitmapOpts":imageBitmapOpts});return result["imageBitmap"]}else{const canvas=await self["C3_RasterSvgImageBlob"](blob,imageWidth,imageHeight,surfaceWidth, +surfaceHeight);if(imageBitmapOpts)return await self.createImageBitmap(canvas,imageBitmapOpts);else return canvas}}async GetSvgImageSize(blob){if(this.IsInWorker())return await this.PostComponentMessageToDOMAsync("runtime","get-svg-image-size",{"blob":blob});else return await self["C3_GetSvgImageSize"](blob)}RequestDeviceOrientationEvent(){if(this._didRequestDeviceOrientationEvent)return;this._didRequestDeviceOrientationEvent=true;this.PostComponentMessageToDOM("runtime","enable-device-orientation")}RequestDeviceMotionEvent(){if(this._didRequestDeviceMotionEvent)return; +this._didRequestDeviceMotionEvent=true;this.PostComponentMessageToDOM("runtime","enable-device-motion")}Random(){return this._randomNumberCallback()}SetRandomNumberGeneratorCallback(f){this._randomNumberCallback=f}_GetRemotePreviewStatusInfo(){const renderer=this.GetRenderer();return{"fps":this.GetFramesPerSecond(),"tps":this.GetTicksPerSecond(),"cpu":this.GetMainThreadTime(),"gpu":this.GetGPUUtilisation(),"layout":this.GetMainRunningLayout()?this.GetMainRunningLayout().GetName():"","renderer":renderer.IsWebGL()? +renderer.GetUnmaskedRenderer():renderer.GetAdapterInfoString()}}HitBreakpoint(){if(!this.IsDebug())return false;return C3Debugger.HitBreakpoint()}DebugBreak(eventObject){if(!this.IsDebugging())return Promise.resolve();return C3Debugger.DebugBreak(eventObject)}DebugBreakNext(){if(!this.IsDebugging())return false;return C3Debugger.BreakNext()}SetDebugBreakpointsEnabled(e){this._breakpointsEnabled=!!e;this._UpdateDebuggingFlag()}AreDebugBreakpointsEnabled(){return this._breakpointsEnabled}IsDebugging(){return this._isDebugging}SetDebuggingEnabled(d){if(d)this._debuggingDisabled--; +else this._debuggingDisabled++;this._UpdateDebuggingFlag()}_UpdateDebuggingFlag(){this._isDebugging=this.IsDebug()&&this._breakpointsEnabled&&this._debuggingDisabled===0}IsCPUProfiling(){return this.IsDebug()&&C3Debugger.IsCPUProfiling()}IsGPUProfiling(){return this.IsDebug()&&this.GetRenderer().SupportsGPUProfiling()&&C3Debugger.IsGPUProfiling()}async DebugIterateAndBreak(iter){if(!iter)return;for(const breakEventObject of iter)await this.DebugBreak(breakEventObject)}DebugFireGeneratorEventAndBreak(event){return this.DebugIterateAndBreak(this._dispatcher.dispatchGeneratorEvent(event))}_InvokeFunctionFromJS(e){return this._eventSheetManager._InvokeFunctionFromJS(e["name"], +e["params"])}_GetHTMLLayerWrapElement(index){if(this.IsInWorker())throw new Error("not supported in worker mode");return self["c3_runtimeInterface"]["_GetHTMLWrapElement"](index)}GetIRuntime(){return this._iRuntime}_CreateUserScriptEvent(name){const e=C3.New(C3.Event,name,false);e.runtime=this._iRuntime;return e}_InitScriptInterfaces(){this._iRuntime=new self.IRuntime(this);this._userScriptEventObjects={"tick":this._CreateUserScriptEvent("tick")}}_InitObjectsScriptInterface(){const objectDescriptors= +{};for(const objectClass of this._allObjectClasses)objectDescriptors[objectClass.GetJsPropName()]={value:objectClass.GetIObjectClass(),enumerable:true,writable:false};this._iRuntime._InitObjects(objectDescriptors)}_InitGlobalVariableScriptInterface(){const globalVarDescriptors={};for(const globalVar of this.GetEventSheetManager().GetAllGlobalVariables())globalVarDescriptors[globalVar.GetJsPropName()]=globalVar._GetScriptInterfaceDescriptor();this._iRuntime._InitGlobalVars(globalVarDescriptors)}_GetCommonScriptInterfaces(){return this._commonScriptInterfaces}_MapScriptInterface(interface_, +class_){this._interfaceMap.set(interface_,class_)}_UnwrapScriptInterface(interface_){return this._interfaceMap.get(interface_)}_UnwrapIObjectClass(iObjectClass){if(!(iObjectClass instanceof self.IObjectClass))throw new TypeError("expected IObjectClass");const objectClass=this._UnwrapScriptInterface(iObjectClass);if(!objectClass||!(objectClass instanceof C3.ObjectClass))throw new Error("invalid IObjectClass");return objectClass}_UnwrapIInstance(iinst){if(!(iinst instanceof self.IInstance))throw new TypeError("expected IInstance"); +const inst=this._UnwrapScriptInterface(iinst);if(!inst||!(inst instanceof C3.Instance))throw new Error("invalid IInstance");return inst}_UnwrapIWorldInstance(iinst){if(!(iinst instanceof self.IWorldInstance))throw new TypeError("expected IWorldInstance");const inst=this._UnwrapScriptInterface(iinst);if(!inst||!(inst instanceof C3.Instance))throw new Error("invalid IInstance");return inst}};self["C3_CreateRuntime"]=C3.Runtime.Create;self["C3_InitRuntime"]=(runtime,opts)=>runtime.Init(opts); + +} + +// workers/jobSchedulerRuntime.js +{ +'use strict';const C3=self.C3; +C3.JobSchedulerRuntime=class JobSchedulerRuntime extends C3.DefendedBase{constructor(runtime,data){super();this._runtime=runtime;this._jobPromises=new Map;this._nextJobId=0;this._inputPort=data["inputPort"];data["outputPort"].onmessage=e=>this._OnJobWorkerMessage(e);this._maxNumWorkers=data["maxNumWorkers"];this._jobWorkerCount=1;this._isCreatingWorker=false;this._hadErrorCreatingWorker=false}async Init(){}GetMaxNumWorkers(){return this._maxNumWorkers}ImportScriptsToJobWorkers(scripts){this._inputPort.postMessage({"type":"_import_scripts","scripts":scripts})}SendBlobToJobWorkers(blob, +id){this._inputPort.postMessage({"type":"_send_blob","blob":blob,"id":id})}SendBufferToJobWorkers(buffer,id){this._inputPort.postMessage({"type":"_send_buffer","buffer":buffer,"id":id},[buffer])}AddJob(type,params,transferables,progressHandler,abortDisposable,maxWorkerNum){if(!transferables)transferables=[];if(typeof maxWorkerNum==="number"){maxWorkerNum=Math.floor(maxWorkerNum);if(maxWorkerNum<=0)throw new Error("invalid maxWorkerNum");}const jobId=this._nextJobId++;const job={"type":type,"isBroadcast":false, +"maxWorkerNum":maxWorkerNum,"jobId":jobId,"params":params,"transferables":transferables};const promise=new Promise((resolve,reject)=>{this._jobPromises.set(jobId,{resolve:resolve,progress:progressHandler,reject:reject,cancelled:false,maxWorkerNum})});if(abortDisposable)abortDisposable.SetAction(()=>this._CancelJob(jobId));this._inputPort.postMessage(job,transferables);this._MaybeCreateExtraWorker();return promise}BroadcastJob(type,params,transferables,maxWorkerNum){if(!transferables)transferables= +[];if(typeof maxWorkerNum==="number"){maxWorkerNum=Math.floor(maxWorkerNum);if(maxWorkerNum<=0)throw new Error("invalid maxWorkerNum");}const jobId=this._nextJobId++;const job={"type":type,"isBroadcast":true,"maxWorkerNum":maxWorkerNum,"jobId":jobId,"params":params,"transferables":transferables};this._inputPort.postMessage(job,transferables)}_CancelJob(jobId){const job=this._jobPromises.get(jobId);if(job){job.cancelled=true;job.resolve=null;job.progress=null;job.reject=null;this._inputPort.postMessage({"type":"_cancel", +"jobId":jobId})}}_OnJobWorkerMessage(e){const msg=e.data;const type=msg["type"];const id=msg["jobId"];switch(type){case "result":this._OnJobResult(id,msg["result"]);break;case "progress":this._OnJobProgress(id,msg["progress"]);break;case "error":this._OnJobError(id,msg["error"]);break;case "ready":this._OnJobWorkerReady();break;default:throw new Error(`unknown message from worker '${type}'`);}}_OnJobResult(jobId,result){const p=this._jobPromises.get(jobId);if(!p)throw new Error("invalid job ID"); +if(!p.cancelled)p.resolve(result);this._jobPromises.delete(jobId)}_OnJobProgress(jobId,progress){const p=this._jobPromises.get(jobId);if(!p)throw new Error("invalid job ID");if(!p.cancelled&&p.progress)p.progress(progress)}_OnJobError(jobId,error){const p=this._jobPromises.get(jobId);if(!p)throw new Error("invalid job ID");if(!p.cancelled)p.reject(error);this._jobPromises.delete(jobId)}_OnJobWorkerReady(){if(!this._isCreatingWorker)return;this._isCreatingWorker=false;this._jobWorkerCount++;if(this._jobWorkerCount< +this._maxNumWorkers)this._MaybeCreateExtraWorker();else this._inputPort.postMessage({"type":"_no_more_workers"})}_GetWorkerCountNeededForPendingJobs(){let needWorkerCount=0;const sortedJobList=[...this._jobPromises.values()].sort((a,b)=>{const an=a.maxWorkerNum||Infinity;const bn=b.maxWorkerNum||Infinity;return an-bn});for(const job of sortedJobList){const maxWorkerNum=job.maxWorkerNum||Infinity;if(needWorkerCount= +this._maxNumWorkers||this._isCreatingWorker||this._hadErrorCreatingWorker||this._GetWorkerCountNeededForPendingJobs()<=this._jobWorkerCount)return;try{this._isCreatingWorker=true;const result=await this._runtime.PostComponentMessageToDOMAsync("runtime","create-job-worker");result["outputPort"].onmessage=e=>this._OnJobWorkerMessage(e)}catch(err){this._hadErrorCreatingWorker=true;this._isCreatingWorker=false;console.error(`[Construct] Failed to create job worker; stopping creating any more (created ${this._jobWorkerCount} so far)`, +err)}}}; + +} + +// scripts/shaders.js +{ +self["C3_Shaders"] = {}; + +} + +// scripts/plugins/system/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;let cacheRegex=null;let lastRegex="";let lastFlags="";let regexMatches=[];let lastMatchesStr="";let lastMatchesRegex="";let lastMatchesFlags="";const forEachStack=C3.New(C3.ArrayStack);function ForEachOrdered_SortInstances(a,b){const va=a[1];const vb=b[1];if(typeof va==="number"&&typeof vb==="number")return va-vb;else{const sa=""+va;const sb=""+vb;if(sasb)return 1;else return 0}}C3.Plugins.System=class SystemPlugin extends C3.SDKPluginBase{constructor(opts){super(opts); +this._loopStack=this._runtime.GetEventSheetManager().GetLoopStack();this._eventStack=this._runtime.GetEventSheetManager().GetEventStack();this._imagesLoadingTotal=0;this._imagesLoadingComplete=0;this._functionMaps=new Map;this._signalTags=[]}Release(){super.Release()}UpdateRender(){this._runtime.UpdateRender()}Trigger(method){this._runtime.Trigger(method,null,null)}GetRegex(regex,flags){if(!cacheRegex||regex!==lastRegex||flags!==lastFlags){cacheRegex=new RegExp(regex,flags);lastRegex=regex;lastFlags= +flags}cacheRegex.lastIndex=0;return cacheRegex}GetRegexMatches(str,regex,flags){if(str===lastMatchesStr&®ex===lastMatchesRegex&&flags===lastMatchesFlags)return regexMatches;const cacheRegex=this.GetRegex(regex,flags);regexMatches=str.match(cacheRegex);lastMatchesStr=str;lastMatchesRegex=regex;lastMatchesFlags=flags;return regexMatches}async _LoadTexturesForObjectClasses(layout,objectClasses){if(!objectClasses.length)return;this._imagesLoadingTotal+=objectClasses.length;const promises=[];for(const oc of objectClasses)promises.push(layout.MaybeLoadTexturesFor(oc)); +await C3.PromiseAllWithProgress(promises,()=>{this._imagesLoadingComplete++});this._imagesLoadingComplete++;if(this._imagesLoadingComplete===this._imagesLoadingTotal){this._imagesLoadingComplete=0;this._imagesLoadingTotal=0;this._runtime.Trigger(C3.Plugins.System.Cnds.OnImageLoadingComplete,null,null)}}_UnloadTexturesForObjectClasses(layout,objectClasses){for(const oc of objectClasses)if(oc.GetInstanceCount()===0)layout.MaybeUnloadTexturesFor(oc)}_GetForEachStack(){return forEachStack}_Repeat(count){const eventSheetManager= +this._runtime.GetEventSheetManager();const eventStack=eventSheetManager.GetEventStack();const oldFrame=eventStack.GetCurrentStackFrame();const currentEvent=oldFrame.GetCurrentEvent();const solModifiers=currentEvent.GetSolModifiers();const isSolModifierAfterCnds=oldFrame.IsSolModifierAfterCnds();const newFrame=eventStack.Push(currentEvent);const loopStack=eventSheetManager.GetLoopStack();const loop=loopStack.Push();loop.SetEnd(count);if(isSolModifierAfterCnds)for(let i=0;i=end&&!loop.IsStopped();--i){eventSheetManager.PushCopySol(solModifiers);loop.SetIndex(i);currentEvent.Retrigger(oldFrame,newFrame);eventSheetManager.PopSol(solModifiers)}else for(let i=start;i>= +end&&!loop.IsStopped();--i){loop.SetIndex(i);currentEvent.Retrigger(oldFrame,newFrame)}else if(isSolModifierAfterCnds)for(let i=start;i<=end&&!loop.IsStopped();++i){eventSheetManager.PushCopySol(solModifiers);loop.SetIndex(i);currentEvent.Retrigger(oldFrame,newFrame);eventSheetManager.PopSol(solModifiers)}else for(let i=start;i<=end&&!loop.IsStopped();++i){loop.SetIndex(i);currentEvent.Retrigger(oldFrame,newFrame)}eventStack.Pop();loopStack.Pop();return false}*_DebugFor(name,start,end){const eventSheetManager= +this._runtime.GetEventSheetManager();const eventStack=eventSheetManager.GetEventStack();const oldFrame=eventStack.GetCurrentStackFrame();const currentEvent=oldFrame.GetCurrentEvent();const solModifiers=currentEvent.GetSolModifiers();const isSolModifierAfterCnds=oldFrame.IsSolModifierAfterCnds();const newFrame=eventStack.Push(currentEvent);const loopStack=eventSheetManager.GetLoopStack();const loop=loopStack.Push();loop.SetName(name);loop.SetEnd(end);if(end=end&&!loop.IsStopped();--i){eventSheetManager.PushCopySol(solModifiers);loop.SetIndex(i);yield*currentEvent.DebugRetrigger(oldFrame,newFrame);eventSheetManager.PopSol(solModifiers)}else for(let i=start;i>=end&&!loop.IsStopped();--i){loop.SetIndex(i);yield*currentEvent.DebugRetrigger(oldFrame,newFrame)}else if(isSolModifierAfterCnds)for(let i=start;i<=end&&!loop.IsStopped();++i){eventSheetManager.PushCopySol(solModifiers);loop.SetIndex(i);yield*currentEvent.DebugRetrigger(oldFrame,newFrame); +eventSheetManager.PopSol(solModifiers)}else for(let i=start;i<=end&&!loop.IsStopped();++i){loop.SetIndex(i);yield*currentEvent.DebugRetrigger(oldFrame,newFrame)}eventStack.Pop();loopStack.Pop();return false}_ForEach(objectClass){const sol=objectClass.GetCurrentSol();const iterInstances=sol.GetInstances();if(iterInstances.length===0)return false;const eventSheetManager=this._runtime.GetEventSheetManager();const eventStack=eventSheetManager.GetEventStack();const oldFrame=eventStack.GetCurrentStackFrame(); +const currentEvent=oldFrame.GetCurrentEvent();const solModifiers=currentEvent.GetSolModifiers();const isSolModifierAfterCnds=oldFrame.IsSolModifierAfterCnds();const newFrame=eventStack.Push(currentEvent);const loopStack=eventSheetManager.GetLoopStack();const loop=loopStack.Push();const isInContainer=objectClass.IsInContainer();const instances=forEachStack.Push();C3.shallowAssignArray(instances,iterInstances);loop.SetEnd(instances.length);if(isSolModifierAfterCnds)for(let i=0,len=instances.length;i< +len&&!loop.IsStopped();++i){eventSheetManager.PushCopySol(solModifiers);const inst=instances[i];objectClass.GetCurrentSol().SetSinglePicked(inst);if(isInContainer)inst.SetSiblingsSinglePicked();loop.SetIndex(i);currentEvent.Retrigger(oldFrame,newFrame);eventSheetManager.PopSol(solModifiers)}else{sol._SetSelectAll(false);const solInstances=sol._GetOwnInstances();C3.clearArray(solInstances);solInstances.push(null);for(let i=0,len=instances.length;i=lastTime+thisSeconds){cndSavedData.set("Every_lastTime",lastTime+thisSeconds);if(curTime>=cndSavedData.get("Every_lastTime")+.04)cndSavedData.set("Every_lastTime",curTime);cndSavedData.set("Every_seconds",seconds);return true}else if(curTime=a&&x<=b},CompareVar(ev,cmp,val){return C3.compare(ev.GetValue(),cmp,val)},CompareBoolVar(ev){return!!ev.GetValue()}, +CompareTime(cmp,t){const gameTime=this._runtime.GetGameTime();if(cmp===0){const cnd=this._runtime.GetCurrentCondition();const cndSavedData=cnd.GetSavedDataMap();if(!cndSavedData.get("CompareTime_executed"))if(gameTime>=t){cndSavedData.set("CompareTime_executed",true);return true}return false}else return C3.compare(gameTime,cmp,t)},IsNaN(n){return isNaN(n)},AngleWithin(a1,within,a2){return C3.angleDiff(C3.toRadians(a1),C3.toRadians(a2))<=C3.toRadians(within)},IsClockwiseFrom(a1,a2){return C3.angleClockwise(C3.toRadians(a1), +C3.toRadians(a2))},IsBetweenAngles(a,la,ua){let angle=C3.toRadians(a);let lower=C3.toRadians(la);let upper=C3.toRadians(ua);let obtuse=!C3.angleClockwise(upper,lower);if(obtuse)return!(!C3.angleClockwise(angle,lower)&&C3.angleClockwise(angle,upper));else return C3.angleClockwise(angle,lower)&&!C3.angleClockwise(angle,upper)},IsValueType(v,t){if(typeof v==="number")return t===0;else return t===1},EvaluateExpression(v){return!!v},OnSignal(tag){return tag.toLowerCase()===this._signalTags.at(-1)},PickByComparison(objectClass, +exp,cmp,val){if(!objectClass)return false;const forEachStack=this._GetForEachStack();const tempInstances=forEachStack.Push();const sol=objectClass.GetCurrentSol();C3.shallowAssignArray(tempInstances,sol.GetInstances());if(sol.IsSelectAll())C3.clearArray(sol._GetOwnElseInstances());const cnd=this._runtime.GetCurrentCondition();let k=0;for(let i=0,len=tempInstances.length;ibestVal){bestVal=exp;pickInst=inst}}sol.PickOne(pickInst);objectClass.ApplySolToContainer();return true},PickNth(objectClass,index){if(!objectClass)return false; +const sol=objectClass.GetCurrentSol();const instances=sol.GetInstances();index=Math.floor(index);if(index>=instances.length)return false;const inst=instances[index];sol.PickOne(inst);objectClass.ApplySolToContainer();return true},PickRandom(objectClass){if(!objectClass)return false;const sol=objectClass.GetCurrentSol();const instances=sol.GetInstances();const index=Math.floor(this._runtime.Random()*instances.length);if(index>=instances.length)return false;const inst=instances[index];sol.PickOne(inst); +objectClass.ApplySolToContainer();return true},PickAll(objectClass){if(!objectClass)return false;if(!objectClass.GetInstanceCount())return false;const sol=objectClass.GetCurrentSol();sol._SetSelectAll(true);objectClass.ApplySolToContainer();return true},PickOverlappingPoint(objectClass,x,y){if(!objectClass)return false;const sol=objectClass.GetCurrentSol();const instances=sol.GetInstances();const currentEvent=this._runtime.GetCurrentEvent();const isOrBlock=currentEvent.IsOrBlock();const isInverted= +this._runtime.GetCurrentCondition().IsInverted();if(sol.IsSelectAll()){C3.shallowAssignArray(tmpPickArray,instances);sol.ClearArrays();sol._SetSelectAll(false)}else if(isOrBlock){C3.shallowAssignArray(tmpPickArray,sol._GetOwnElseInstances());C3.clearArray(sol._GetOwnElseInstances())}else{C3.shallowAssignArray(tmpPickArray,sol._GetOwnInstances());C3.clearArray(sol._GetOwnInstances())}for(let i=0,len=tmpPickArray.length;i=0;--i){const inst=instancesPendingCreate[i];if(isFamily){if(inst.GetObjectClass().BelongsToFamily(objectClass)){pick= +inst;break}}else if(inst.GetObjectClass()===objectClass){pick=inst;break}}if(!pick){const instances=objectClass.GetInstances();if(instances.length)pick=instances.at(-1)}if(!pick)return false;const sol=objectClass.GetCurrentSol();sol.PickOne(pick);objectClass.ApplySolToContainer();return true},Repeat(count){if(this._runtime.IsDebugging())return this._DebugRepeat(count);else return this._Repeat(count)},While(){if(this._runtime.IsDebugging())return this._DebugWhile();else return this._While()},For(name, +start,end){if(this._runtime.IsDebugging())return this._DebugFor(name,start,end);else return this._For(name,start,end)},ForEach(objectClass){if(this._runtime.IsDebugging())return this._DebugForEach(objectClass);else return this._ForEach(objectClass)},ForEachOrdered(objectClass,expression,order){if(this._runtime.IsDebugging())return this._DebugForEachOrdered(objectClass,order);else return this._ForEachOrdered(objectClass,order)},LayerVisible(layer){return layer?layer.IsVisible():false},LayerInteractive(layer){return layer? +layer.IsSelfAndParentsInteractive():false},LayerIsHTML(layer){return layer?layer.IsHTMLElementsLayer():false},LayerEmpty(layer){return layer?!layer.GetInstanceCount():false},LayerCmpOpacity(layer,cmp,o){if(!layer)return false;return C3.compare(layer.GetOpacity()*100,cmp,o)},LayerNameExists(nameStr){const layout=this._runtime.GetMainRunningLayout();return layout?layout.HasLayerByName(nameStr):false},OnImageLoadingComplete(){return true},IsLoadingImages(){return this._imagesLoadingTotal>0},TemplateExists(objectClass, +template){const templateManager=this._runtime.GetTemplateManager();if(!templateManager)return false;if(!template)return false;return!!templateManager.GetTemplateData(objectClass,template)}}} +{const C3=self.C3;function SortZOrderList(a,b){const layerA=a[0];const layerB=b[0];const diff=layerA-layerB;if(diff!==0)return diff;const indexA=a[1];const indexB=b[1];return indexA-indexB}function SortInstancesByValue(a,b){return a[1]-b[1]}const tempZOrderList=[];const tempInstValues=[];const tempRect=C3.New(C3.Rect);const tempColor=C3.New(C3.Color);const EMPTY_ITERABLE=[];C3.Plugins.System.Acts={SetVar(ev,x){ev.SetValue(x)},AddVar(ev,x){if(ev.IsNumber()&&typeof x!=="number")x=parseFloat(x);ev.SetValue(ev.GetValue()+ +x)},SubVar(ev,x){if(!ev.IsNumber())return;ev.SetValue(ev.GetValue()-x)},SetBoolVar(ev,x){ev.SetValue(!!x)},ToggleBoolVar(ev){ev.SetValue(!ev.GetValue())},ResetEventVar(ev){ev.SetValue(ev.GetInitialValue())},ResetGlobals(includeStatic){this._runtime.GetEventSheetManager().ResetAllGlobalsToInitialValue(includeStatic)},CreateObject(objectClass,layer,x,y,createHierarchy,template){if(!objectClass||!layer)return;const inst=this._runtime.CreateInstance(objectClass,layer,x,y,createHierarchy,template);if(!inst)return; +if(createHierarchy)layer.SortAndAddInstancesByZIndex(inst);const eventSheetManager=this._runtime.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);inst._TriggerOnCreatedOnSelfAndRelated();eventSheetManager.BlockFlushingInstances(false);const pickMap=new Map;inst.CollectInstancesToPick(pickMap,objectClass,createHierarchy);for(const [pickObjectClass,instSet]of pickMap)pickObjectClass.GetCurrentSol().SetSetPicked(instSet)},CreateObjectByName(objectClassName,layer,x,y,createHierarchy, +template){if(!objectClassName||!layer)return;const objectClass=this._runtime.GetObjectClassByName(objectClassName);if(!objectClass)return;C3.Plugins.System.Acts.CreateObject.call(this,objectClass,layer,x,y,createHierarchy,template)},RecreateInitialObjects(objectClass,x1,y1,x2,y2,sourceLayoutName,sourceLayerParam,offsetX,offsetY,createHierarchy){if(!objectClass)return;let sourceLayout=this._runtime.GetCurrentLayout();if(sourceLayoutName){const lookupLayout=this._runtime.GetLayoutManager().GetLayoutByName(sourceLayoutName); +if(lookupLayout)sourceLayout=lookupLayout;else return}let sourceLayer=null;if(typeof sourceLayerParam!=="number"||sourceLayerParam>=0){sourceLayer=sourceLayout.GetLayer(sourceLayerParam);if(!sourceLayer)return}tempRect.set(x1,y1,x2,y2);const allCreatedInstances=sourceLayout.RecreateInitialObjects(objectClass,tempRect,sourceLayer,offsetX,offsetY,createHierarchy);objectClass.GetCurrentSol().SetArrayPicked(allCreatedInstances);objectClass.ApplySolToContainer()},StopLoop(){const loopStack=this._loopStack; +if(!loopStack.IsInLoop())return;loopStack.GetCurrent().Stop()},SetGroupActive(groupName,a){const group=this._runtime.GetEventSheetManager().GetEventGroupByName(groupName);if(!group)return;if(a===0)group.SetGroupActive(false);else if(a===1)group.SetGroupActive(true);else group.SetGroupActive(!group.IsGroupActive())},SetTimescale(ts){this._runtime.SetTimeScale(ts)},SetObjectTimescale(objectClass,ts){if(ts<0)ts=0;if(!objectClass)return;const sol=objectClass.GetCurrentSol();const instances=sol.GetInstances(); +for(const inst of instances)inst.SetTimeScale(ts)},RestoreObjectTimescale(objectClass){if(!objectClass)return;const sol=objectClass.GetCurrentSol();const instances=sol.GetInstances();for(const inst of instances)inst.RestoreTimeScale()},Wait(seconds){if(seconds<0)return;this._runtime.GetEventSheetManager().AddScheduledWait().InitTimer(seconds);return true},WaitForSignal(tag){this._runtime.GetEventSheetManager().AddScheduledWait().InitSignal(tag);return true},WaitForPreviousActions(){const eventSheetManager= +this._runtime.GetEventSheetManager();eventSheetManager.AddScheduledWait().InitPromise(eventSheetManager.GetPromiseForAllAsyncActions());return true},Signal(tag){const lowerTag=tag.toLowerCase();this._signalTags.push(lowerTag);this._runtime.Trigger(C3.Plugins.System.Cnds.OnSignal,null);this._signalTags.pop();for(const w of this._runtime.GetEventSheetManager().scheduledWaits())if(w.IsSignal()&&w.GetSignalTag()===lowerTag)w.SetSignalled()},async SnapshotCanvas(format,quality,x,y,width,height){const canvasManager= +this._runtime.GetCanvasManager();if(!canvasManager)return;this.UpdateRender();await canvasManager.SnapshotCanvas(format===0?"image/png":"image/jpeg",quality/100,x,y,width,height);await this._runtime.TriggerAsync(C3.Plugins.System.Cnds.OnCanvasSnapshot,null)},SetCanvasSize(w,h){if(w<=0||h<=0)return;this._runtime.SetViewportSize(w,h);this._runtime.GetCurrentLayout().BoundScrolling();const canvasManager=this._runtime.GetCanvasManager();if(!canvasManager)return;if(canvasManager.GetCurrentFullscreenMode()=== +"off")canvasManager.SetSize(canvasManager.GetLastWidth(),canvasManager.GetLastHeight(),true);else{this._runtime.SetOriginalViewportSize(w,h);canvasManager.SetSize(canvasManager.GetLastWidth(),canvasManager.GetLastHeight(),true)}this._runtime.UpdateRender()},SetFullscreenQuality(q){const canvasManager=this._runtime.GetCanvasManager();if(!canvasManager)return;if(canvasManager.GetCurrentFullscreenMode()==="off")return;canvasManager.SetFullscreenScalingQuality(q!==0?"high":"low");canvasManager.SetSize(canvasManager.GetLastWidth(), +canvasManager.GetLastHeight(),true)},SaveState(slot){this._runtime.SaveToSlot(slot)},LoadState(slot){this._runtime.LoadFromSlot(slot)},LoadStateJSON(jsonStr){this._runtime.LoadFromJsonString(jsonStr)},SetHalfFramerateMode(m){},ResetPersisted(){for(const layout of this._runtime.GetLayoutManager().GetAllLayouts())layout.ResetPersistData()},SetPixelRounding(m){this._runtime.SetPixelRoundingEnabled(m!==0)},SetFramerateMinMax(minFps,maxFps){this._runtime.SetMaxDt(1/minFps);this._runtime.SetMinDt(1/maxFps)}, +SetDeltaTimeMinMax(minDt,maxDt){this._runtime.SetMinDt(minDt);this._runtime.SetMaxDt(maxDt)},SetFramerateMode(m){const modes=["vsync","unlimited-tick","unlimited-frame"];this._runtime._SetFramerateMode(modes[m])},SortZOrderByInstVar(objectClass,instVar){if(!objectClass)return;const sol=objectClass.GetCurrentSol();const pickedInstances=sol.GetInstances();const zOrderList=tempZOrderList;const instValues=tempInstValues;const layout=this._runtime.GetCurrentLayout();const isFamily=objectClass.IsFamily(); +const familyIndex=objectClass.GetFamilyIndex();for(let i=0,len=pickedInstances.length;i0;if(hasAnySolModifiers)if(functionBlock.IsCopyPicked())eventSheetManager.PushCopySol(solModifiers);else eventSheetManager.PushCleanSol(solModifiers);const paramResults=[];const callerFunctionBlock=eventSheetManager.FindFirstFunctionBlockParent(currentEvent);if(callerFunctionBlock){const callerParameters= +callerFunctionBlock.GetFunctionParameters();for(let i=forwardParams,len=callerParameters.length;in)ret=n}return ret},clamp(x,l,u){return C3.clamp(x,l,u)},distance(x1,y1,x2,y2){return C3.distanceTo(x1,y1,x2,y2)},angle(x1,y1,x2,y2){return C3.toDegrees(C3.angleTo(x1,y1,x2,y2))},lerp(a,b,x){return C3.lerp(a,b,x)},unlerp(a,b,y){return C3.unlerp(a,b,y)},qarp(a,b,c,x){return C3.qarp(a,b,c,x)},cubic(a,b,c,d,x){return C3.cubic(a,b,c,d,x)},cosp(a,b,x){return C3.cosp(a,b,x)},anglediff(a,b){return C3.toDegrees(C3.angleDiff(C3.toRadians(a), +C3.toRadians(b)))},anglelerp(a,b,x){return C3.toDegrees(C3.angleLerp(C3.toRadians(a),C3.toRadians(b),x))},anglerotate(a,b,c){return C3.toDegrees(C3.angleRotate(C3.toRadians(a),C3.toRadians(b),C3.toRadians(c)))},setbit(n,b,v){n=n|0;b=b|0;v=v!==0?1:0;return n&~(1<=arr.length)return"";return arr[index]}, +tokencount(text,sep){if(typeof text!=="string"||typeof sep!=="string"||!text.length)return 0;return text.split(sep).length},find(text,searchStr){if(typeof text==="string"&&typeof searchStr==="string")return text.search(new RegExp(C3.EscapeRegex(searchStr),"i"));else return-1},findcase(text,searchStr){if(typeof text==="string"&&typeof searchStr==="string")return text.search(new RegExp(C3.EscapeRegex(searchStr),""));else return-1},replace(text,find,replace){if(typeof text==="string"&&typeof find=== +"string"&&typeof replace==="string")return text.replace(new RegExp(C3.EscapeRegex(find),"gi"),replace);else return typeof text==="string"?text:""},stringsub(str,...subs){let ret=str;for(let i=0,len=subs.length;i=matches.length)return"";else return matches[index]},zeropad(n,d){let s=n<0?"-":"";if(n<0)n=-n;const zeroes=d-n.toString().length;s+="0".repeat(Math.max(zeroes,0));return s+n.toString()},urlencode(s){return encodeURIComponent(s)}, +urldecode(s){return decodeURIComponent(s)},dt(){return this._runtime._GetDtFast()},timescale(){return this._runtime.GetTimeScale()},wallclocktime(){return(Date.now()-this._runtime.GetStartTime())/1E3},unixtime(){return Date.now()},time(){return this._runtime.GetGameTime()},tickcount(){return this._runtime.GetTickCount()},objectcount(){return this._runtime.GetObjectCount()},fps(){return this._runtime.GetFramesPerSecond()},cpuutilisation(){return this._runtime.GetMainThreadTime()},gpuutilisation(){return this._runtime.GetGPUUtilisation()}, +windowwidth(){return this._runtime.GetCanvasManager().GetDeviceWidth()},windowheight(){return this._runtime.GetCanvasManager().GetDeviceHeight()},originalwindowwidth(){return this._runtime.GetOriginalViewportWidth()},originalwindowheight(){return this._runtime.GetOriginalViewportHeight()},originalviewportwidth(){return this._runtime.GetOriginalViewportWidth()},originalviewportheight(){return this._runtime.GetOriginalViewportHeight()},scrollx(){return this._runtime.GetCurrentLayout().GetScrollX()}, +scrolly(){return this._runtime.GetCurrentLayout().GetScrollY()},layoutname(){return this._runtime.GetCurrentLayout().GetName()},layoutscale(){return this._runtime.GetCurrentLayout().GetScale()},layoutangle(){return C3.toDegrees(this._runtime.GetCurrentLayout().GetAngle())},layoutwidth(){return this._runtime.GetCurrentLayout().GetWidth()},layoutheight(){return this._runtime.GetCurrentLayout().GetHeight()},vanishingpointx(){return this._runtime.GetCurrentLayout().GetVanishingPointX()*100},vanishingpointy(){return this._runtime.GetCurrentLayout().GetVanishingPointY()* +100},viewportleft(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetViewport3D().getLeft():0},viewporttop(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetViewport3D().getTop():0},viewportright(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetViewport3D().getRight():0},viewportbottom(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam); +return layer?layer.GetViewport3D().getBottom():0},viewportwidth(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetViewport3D().width():0},viewportheight(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetViewport3D().height():0},viewportmidx(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);if(layer){const vp=layer.GetViewport3D();return(vp.getLeft()+vp.getRight())/2}else return 0}, +viewportmidy(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);if(layer){const vp=layer.GetViewport3D();return(vp.getTop()+vp.getBottom())/2}else return 0},canvastolayerx(layerParam,x,y){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.CanvasCssToLayer(x,y)[0]:0},canvastolayery(layerParam,x,y){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.CanvasCssToLayer(x,y)[1]:0},layertocanvasx(layerParam,x,y){const layer= +this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.LayerToCanvasCss(x,y)[0]:0},layertocanvasy(layerParam,x,y){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.LayerToCanvasCss(x,y)[1]:0},layertolayerx(fromLayerParam,toLayerParam,x,y){const layout=this._runtime.GetCurrentLayout();const fromLayer=layout.GetLayer(fromLayerParam);const toLayer=layout.GetLayer(toLayerParam);if(!fromLayer||!toLayer||fromLayer===toLayer)return x;const [canvasX,canvasY]= +fromLayer.LayerToCanvasCss(x,y);return toLayer.CanvasCssToLayer(canvasX,canvasY)[0]},layertolayery(fromLayerParam,toLayerParam,x,y){const layout=this._runtime.GetCurrentLayout();const fromLayer=layout.GetLayer(fromLayerParam);const toLayer=layout.GetLayer(toLayerParam);if(!fromLayer||!toLayer||fromLayer===toLayer)return y;const [canvasX,canvasY]=fromLayer.LayerToCanvasCss(x,y);return toLayer.CanvasCssToLayer(canvasX,canvasY)[1]},layerscale(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam); +return layer?layer.GetOwnScale():0},layerangle(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?C3.toDegrees(layer.GetOwnAngle()):0},layeropacity(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetOpacity()*100:0},layerscalerate(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetScaleRate():0},layerscrollx(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam); +return layer?layer.GetScrollX():0},layerscrolly(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetScrollY():0},layerparallaxx(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetParallaxX()*100:0},layerparallaxy(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetParallaxY()*100:0},layerzelevation(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam); +return layer?layer.GetZElevation():0},layerindex(layerParam){const layer=this._runtime.GetCurrentLayout().GetLayer(layerParam);return layer?layer.GetIndex():-1},canvassnapshot(){const canvasManager=this._runtime.GetCanvasManager();if(!canvasManager)return"";return canvasManager.GetCanvasSnapshotUrl()},loopindex(name){const loopStack=this._loopStack;if(!loopStack.IsInLoop())return 0;if(name){const loop=loopStack.FindByName(name);return loop?loop.GetIndex():0}else return loopStack.GetCurrent().GetIndex()}, +savestatejson(){return this._runtime.GetLastSaveJsonString()},callmapped(name,str,...paramResults){const mapEntry=this._GetFunctionMap(name.toLowerCase(),false);if(!mapEntry){console.warn(`[Construct] Call mapped function: map name '${name}' not found; returning 0`);return 0}let functionBlock=mapEntry.strMap.get(str.toLowerCase());if(!functionBlock)if(mapEntry.defaultFunc)functionBlock=mapEntry.defaultFunc;else{console.warn(`[Construct] Call mapped function: no function associated with map '${name}' string '${str}'; returning 0 (consider setting a default)`); +return 0}const returnType=functionBlock.GetReturnType();const defaultReturnValue=functionBlock.GetDefaultReturnValue();if(returnType===0){console.warn(`[Construct] Call mapped function: map '${name}' string '${str}' has no return type so cannot be called from an expression; returning 0`);return 0}if(!functionBlock.IsEnabled())return defaultReturnValue;const runtime=this._runtime;const eventSheetManager=runtime.GetEventSheetManager();const currentEvent=eventSheetManager.GetCurrentEvent();const solModifiers= +currentEvent.GetSolModifiersIncludingParents();const hasAnySolModifiers=solModifiers.length>0;if(hasAnySolModifiers)if(functionBlock.IsCopyPicked())eventSheetManager.PushCopySol(solModifiers);else eventSheetManager.PushCleanSol(solModifiers);const calleeParameters=functionBlock.GetFunctionParameters();for(let i=paramResults.length,len=calleeParameters.length;ia.LoadAllTextures(renderer,opts)))}ReleaseTextures(){for(const a of this._animations)a.ReleaseAllTextures()}OnDynamicTextureLoadComplete(){this._UpdateAllCurrentTexture()}_UpdateAllCurrentTexture(){for(const inst of this._objectClass.instancesIncludingPendingCreate())inst.GetSdkInstance()._UpdateCurrentTexture()}FinishCondition(doPick){C3.Plugins.Sprite.FinishCollisionCondition(this, +doPick)}BeforeRunAction(method){spawnPickStack.push({objectClass:null,createHierarchy:false,instances:[]})}_SpawnPickInstance(objectClass,inst,createHierarchy){const entry=spawnPickStack.at(-1);entry.objectClass=objectClass;entry.createHierarchy=createHierarchy;entry.instances.push(inst)}AfterRunAction(method){const entry=spawnPickStack.pop();const objectClass=entry.objectClass;const createHierarchy=entry.createHierarchy;if(!objectClass)return;const pickMap=new Map;for(const inst of entry.instances)inst.CollectInstancesToPick(pickMap, +objectClass,createHierarchy);for(const [pickObjectClass,instSet]of pickMap)pickObjectClass.GetCurrentSol().SetSetPicked(instSet)}_AddAnimation(animName){const addedAnim=this.GetObjectClass().AddAnimation(animName);const runtime=this.GetRuntime();const defaultFrame=addedAnim.GetFrameAt(0);defaultFrame.GetImageInfo().LoadStaticTexture(runtime.GetRenderer(),{sampling:runtime.GetSampling()}).then(()=>this._UpdateAllCurrentTexture());return addedAnim}_RemoveAnimation(animName){for(const inst of this._objectClass.instancesIncludingPendingCreate())inst.GetSdkInstance()._OnAnimationRemoved(animName); +this.GetObjectClass().RemoveAnimation(animName)}_AddAnimationFrame(animationName,where){const animation=this._objectClass.GetAnimationByName(animationName);if(!animation)throw new Error(`cannot find animation name '${animationName}'`);let index=animation.FrameTagOrIndexToIndex(where);if(index<0)index+=animation.GetFrameCount()+1;const frame=C3.AnimationFrameInfo.CreateDynamic(this.GetRuntime());animation.InsertFrameAt(frame,index);const runtime=this.GetRuntime();frame.GetImageInfo().LoadStaticTexture(runtime.GetRenderer(), +{sampling:runtime.GetSampling()}).then(()=>this._UpdateAllCurrentTexture());for(const inst of this._objectClass.instancesIncludingPendingCreate())inst.GetSdkInstance()._OnAnimationFramesChanged();return frame}_RemoveAnimationFrame(animationName,where){const animation=this._objectClass.GetAnimationByName(animationName);if(!animation)throw new Error(`cannot find animation name '${animationName}'`);if(animation.GetFrameCount()===1)throw new Error(`cannot remove last frame from animation '${animationName}'`); +let index=animation.FrameTagOrIndexToIndex(where);if(index<0)index+=animation.GetFrameCount();animation.RemoveFrameAt(index);for(const inst of this._objectClass.instancesIncludingPendingCreate())inst.GetSdkInstance()._OnAnimationFramesChanged()}GetScriptInterfaceClass(){return self.ISpriteObjectType}};const map=new WeakMap;self.ISpriteObjectType=class ISpriteObjectType extends self.IObjectClass{constructor(objectType){super(objectType);map.set(this,objectType.GetSdkType())}getAnimation(name){C3X.RequireString(name); +const a=map.get(this).GetObjectClass().GetAnimationByName(name);return a?a.GetIAnimation():null}getAllAnimations(){return map.get(this).GetObjectClass().GetAllAnimations().map(a=>a.GetIAnimation())}addAnimation(animName){C3X.RequireString(animName);return map.get(this)._AddAnimation(animName).GetIAnimation()}removeAnimation(animName){C3X.RequireString(animName);map.get(this)._RemoveAnimation(animName)}addAnimationFrame(animName,where){C3X.RequireString(animName);if(typeof where!=="number"&&typeof where!== +"string")throw new TypeError("invalid insert location");return map.get(this)._AddAnimationFrame(animName,where).GetIAnimationFrame()}removeAnimationFrame(animName,where){C3X.RequireString(animName);if(typeof where!=="number"&&typeof where!=="string")throw new TypeError("invalid insert location");map.get(this)._RemoveAnimationFrame(animName,where)}}} +{const C3=self.C3;const C3X=self.C3X;const INITIALLY_VISIBLE=0;const INITIAL_ANIMATION=1;const INITIAL_FRAME=2;const ENABLE_COLLISIONS=3;const tempRect=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad);const tempVec2=C3.New(C3.Vector2);const FLAG_PLAYING_FORWARDS=1<<0;const FLAG_ANIMATION_PLAYING=1<<1;const FLAG_ANIMATION_TRIGGER=1<<2;C3.Plugins.Sprite.Instance=class SpriteInstance extends C3.SDKWorldInstanceBase{constructor(inst,properties){super(inst);let initiallyVisible=true;let initialAnimation= +"";let initialFrame=0;let collisionEnabled=true;if(properties){initiallyVisible=!!properties[INITIALLY_VISIBLE];initialAnimation=properties[INITIAL_ANIMATION];initialFrame=properties[INITIAL_FRAME];collisionEnabled=properties[ENABLE_COLLISIONS]}this._currentAnimation=this._objectClass.GetAnimationByName(initialAnimation)||this._objectClass.GetAnimations()[0];this._currentFrameIndex=C3.clamp(initialFrame,0,this._currentAnimation.GetFrameCount()-1);this._currentAnimationFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex); +const initialImageInfo=this._currentAnimationFrame.GetImageInfo();this._currentTexture=initialImageInfo.GetTexture();this._currentRcTex=initialImageInfo.GetTexRect();this._currentQuadTex=initialImageInfo.GetTexQuad();this.HandleRendererContextLoss();inst.SetFlag(FLAG_ANIMATION_PLAYING,true);inst.SetFlag(FLAG_PLAYING_FORWARDS,this._currentAnimation.GetSpeed()>=0);this._currentAnimationSpeed=Math.abs(this._currentAnimation.GetSpeed());this._currentAnimationRepeatTo=this._currentAnimation.GetRepeatTo(); +this._animationTimer=C3.New(C3.KahanSum);this._frameStartTime=0;this._animationRepeats=0;this._animTriggerName="";this._changeAnimFrameIndex=-1;this._changeAnimationName="";this._changeAnimationFrom=0;const wi=this.GetWorldInfo();this._bquadRef=wi.GetBoundingQuad();wi.SetVisible(initiallyVisible);wi.SetCollisionEnabled(collisionEnabled);wi.SetOriginX(this._currentAnimationFrame.GetOriginX());wi.SetOriginY(this._currentAnimationFrame.GetOriginY());wi.SetSourceCollisionPoly(this._currentAnimationFrame.GetCollisionPoly()); +wi.SetBboxChanged();if((this._objectClass.GetAnimationCount()!==1||this._objectClass.GetAnimations()[0].GetFrameCount()!==1)&&this._currentAnimationSpeed!==0)this._StartTicking()}Release(){this._currentAnimation=null;this._currentAnimationFrame=null;this._currentTexture=null;this._animationTimer=null;super.Release()}GetCurrentImageInfo(){return this._currentAnimationFrame.GetImageInfo()}IsOriginalSizeKnown(){return true}OnRendererContextLost(){this._currentTexture=null}OnRendererContextRestored(){this._UpdateCurrentTexture()}Draw(renderer){const texture= +this._currentTexture;if(texture===null)return;renderer.SetTexture(texture);const wi=this.GetWorldInfo();if(wi.HasMesh())this._DrawMesh(wi,renderer);else this._DrawStandard(wi,renderer)}_DrawStandard(wi,renderer){let quad=this._bquadRef;if(this._runtime.IsPixelRoundingEnabled())quad=wi.PixelRoundQuad(quad);renderer.Quad4(quad,this._currentQuadTex)}_DrawMesh(wi,renderer){const transformedMesh=wi.GetTransformedMesh();if(wi.IsMeshChanged()){wi.CalculateBbox(tempRect,tempQuad,false);let quad=tempQuad; +if(this._runtime.IsPixelRoundingEnabled())quad=wi.PixelRoundQuad(quad);transformedMesh.CalculateTransformedMesh(wi.GetSourceMesh(),quad,this._currentQuadTex);wi.SetMeshChanged(false)}transformedMesh.Draw(renderer)}GetAnimationTime(){return this._animationTimer.Get()}IsAnimationPlaying(){return this._inst.GetFlag(FLAG_ANIMATION_PLAYING)}SetAnimationPlaying(e){this._inst.SetFlag(FLAG_ANIMATION_PLAYING,e)}IsPlayingForwards(){return this._inst.GetFlag(FLAG_PLAYING_FORWARDS)}SetPlayingForwards(e){this._inst.SetFlag(FLAG_PLAYING_FORWARDS, +e)}IsInAnimationTrigger(){return this._inst.GetFlag(FLAG_ANIMATION_TRIGGER)}SetInAnimationTrigger(e){this._inst.SetFlag(FLAG_ANIMATION_TRIGGER,e)}Tick(){if(this._changeAnimationName)this._DoChangeAnimation();if(this._changeAnimFrameIndex>=0)this._DoChangeAnimFrame();const currentAnimationSpeed=this._currentAnimationSpeed;if(!this.IsAnimationPlaying()||currentAnimationSpeed===0){this._StopTicking();return}const dt=this._runtime.GetDt(this._inst);this._animationTimer.Add(dt);const now=this.GetAnimationTime(); +const prevFrame=this._currentAnimationFrame;const currentFrameTime=prevFrame.GetDuration()/currentAnimationSpeed;if(now=frameCount)if(isPingPong){this.SetPlayingForwards(false);this._currentFrameIndex=frameCount-2}else if(isLooping)this._currentFrameIndex=repeatTo;else{this._animationRepeats++;if(this._animationRepeats>=repeatCount)this._FinishAnimation(false);else this._currentFrameIndex=repeatTo}if(this._currentFrameIndex<0)if(isPingPong){this._currentFrameIndex=1;this.SetPlayingForwards(true);if(!isLooping){this._animationRepeats++; +if(this._animationRepeats>=repeatCount)this._FinishAnimation(true)}}else if(isLooping)this._currentFrameIndex=repeatTo;else{this._animationRepeats++;if(this._animationRepeats>=repeatCount)this._FinishAnimation(true);else this._currentFrameIndex=repeatTo}this._currentFrameIndex=C3.clamp(this._currentFrameIndex,0,frameCount-1);const nextFrame=currentAnimation.GetFrameAt(this._currentFrameIndex);if(now>this._frameStartTime+nextFrame.GetDuration()/currentAnimationSpeed)this._frameStartTime=now;this._OnFrameChanged(prevFrame, +nextFrame)}_FinishAnimation(reverse){this._currentFrameIndex=reverse?0:this._currentAnimation.GetFrameCount()-1;this.SetAnimationPlaying(false);this._animTriggerName=this._currentAnimation.GetName();this.SetInAnimationTrigger(true);this.DispatchScriptEvent("animationend",false,{animationName:this._animTriggerName});this.Trigger(C3.Plugins.Sprite.Cnds.OnAnyAnimFinished);this.Trigger(C3.Plugins.Sprite.Cnds.OnAnimFinished);this.SetInAnimationTrigger(false);this._animationRepeats=0}_OnFrameChanged(prevFrame, +nextFrame,opts){if(prevFrame===nextFrame)return;const wi=this.GetWorldInfo();const prevImage=prevFrame.GetImageInfo();const nextImage=nextFrame.GetImageInfo();const oldW=prevImage.GetWidth();const oldH=prevImage.GetHeight();const newW=nextImage.GetWidth();const newH=nextImage.GetHeight();if(opts&&opts.onFrameChange)opts.onFrameChange(wi,oldW,oldH,newW,newH);else{if(oldW!==newW)wi.SetWidth(wi.GetWidth()*(newW/oldW));if(oldH!==newH)wi.SetHeight(wi.GetHeight()*(newH/oldH))}wi.SetOriginX(nextFrame.GetOriginX()); +wi.SetOriginY(nextFrame.GetOriginY());wi.SetSourceCollisionPoly(nextFrame.GetCollisionPoly());wi.SetBboxChanged();this._currentAnimationFrame=nextFrame;this._currentTexture=nextImage.GetTexture();this._currentRcTex=nextImage.GetTexRect();this._currentQuadTex=nextImage.GetTexQuad();const behaviorInstances=this.GetInstance().GetBehaviorInstances();for(let i=0,len=behaviorInstances.length;i1&&this._currentAnimationSpeed>0)this._StartTicking()}_GetAnimFrame(){return this._currentFrameIndex}_GetAnimFrameTag(){return this._currentAnimationFrame.GetTag()}_SetAnimSpeed(s){this._currentAnimationSpeed=Math.abs(s);this.SetPlayingForwards(s>=0);if(this._currentAnimationSpeed> +0)this._StartTicking()}_GetAnimSpeed(){return this.IsPlayingForwards()?this._currentAnimationSpeed:-this._currentAnimationSpeed}_SetAnimRepeatToFrame(f){if(typeof f==="string"){f=this._currentAnimation.GetFrameIndexByTag(f);if(f===-1)return}f=C3.clamp(Math.floor(f),0,this._currentAnimation.GetFrameCount()-1);this._currentAnimationRepeatTo=f}_GetAnimRepeatToFrame(){return this._currentAnimationRepeatTo}_DoChangeAnimation(opts){const prevFrame=this._currentAnimationFrame;const animation=this._objectClass.GetAnimationByName(this._changeAnimationName); +this._changeAnimationName="";if(!animation)return;if(animation===this._currentAnimation&&this.IsAnimationPlaying())return;this._currentAnimation=animation;this.SetPlayingForwards(animation.GetSpeed()>=0);this._currentAnimationSpeed=Math.abs(animation.GetSpeed());this._currentAnimationRepeatTo=animation.GetRepeatTo();this._currentFrameIndex=C3.clamp(this._currentFrameIndex,0,this._currentAnimation.GetFrameCount()-1);if(this._changeAnimationFrom===1)this._currentFrameIndex=0;this.SetAnimationPlaying(true); +this._frameStartTime=this.GetAnimationTime();const nextFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex);this._OnFrameChanged(prevFrame,nextFrame,opts)}_DoChangeAnimFrame(force){const prevFrame=this._currentAnimationFrame;const prevFrameIndex=this._currentFrameIndex;this._currentFrameIndex=C3.clamp(Math.floor(this._changeAnimFrameIndex),0,this._currentAnimation.GetFrameCount()-1);this._changeAnimFrameIndex=-1;if(!force&&prevFrameIndex===this._currentFrameIndex)return;const nextFrame= +this._currentAnimation.GetFrameAt(this._currentFrameIndex);this._OnFrameChanged(prevFrame,nextFrame);this._frameStartTime=this.GetAnimationTime()}_UpdateCurrentTexture(){const curImageInfo=this._currentAnimationFrame.GetImageInfo();this._currentTexture=curImageInfo.GetTexture();this._currentRcTex=curImageInfo.GetTexRect();this._currentQuadTex=curImageInfo.GetTexQuad();this.GetWorldInfo().SetMeshChanged(true)}GetTexture(){return this._currentTexture}GetTexRect(){return this._currentRcTex}GetTexQuad(){return this._currentQuadTex}GetImagePointCount(){return this._currentAnimationFrame.GetImagePointCount()}GetImagePoint(nameOrIndex){const frame= +this._currentAnimationFrame;const wi=this.GetWorldInfo();let ip=null;if(typeof nameOrIndex==="string")ip=frame.GetImagePointByName(nameOrIndex);else if(typeof nameOrIndex==="number")ip=frame.GetImagePointByIndex(nameOrIndex-1);else throw new TypeError("expected string or number");let ptZ=wi.GetTotalZElevation();if(!ip)return[wi.GetX(),wi.GetY(),ptZ];tempVec2.copy(ip.GetVec2());if(wi.HasMesh()){const [tx,ty,tz]=wi.GetSourceMesh().TransformPoint(tempVec2.getX(),tempVec2.getY());tempVec2.set(tx,ty); +ptZ+=tz}tempVec2.offset(-frame.GetOriginX(),-frame.GetOriginY());tempVec2.scale(wi.GetWidth(),wi.GetHeight());tempVec2.rotate(wi.GetAngle());tempVec2.offset(wi.GetX(),wi.GetY());return[tempVec2.getX(),tempVec2.getY(),ptZ]}GetCollisionPolyPointCount(){return this.GetWorldInfo().GetTransformedCollisionPoly().pointCount()}GetCollisionPolyPoint(index){index=Math.floor(index);const wi=this.GetWorldInfo();const poly=wi.GetTransformedCollisionPoly();const pointCount=poly.pointCount();if(index===pointCount)index= +0;if(index<0||index>=pointCount)return[0,0];const pointsArr=poly.pointsArr();return[pointsArr[index*2+0]+wi.GetX(),pointsArr[index*2+1]+wi.GetY()]}GetDebuggerProperties(){const Acts=C3.Plugins.Sprite.Acts;const prefix="plugins.sprite.debugger.animation-properties";return[{title:prefix+".title",properties:[{name:prefix+".current-animation",value:this._currentAnimation.GetName(),onedit:v=>this.CallAction(Acts.SetAnim,v,0)},{name:prefix+".current-frame",value:this._currentFrameIndex,onedit:v=>this.CallAction(Acts.SetAnimFrame, +v)},{name:prefix+".is-playing",value:this.IsAnimationPlaying(),onedit:v=>v?this.CallAction(Acts.StartAnim,0):this.CallAction(Acts.StopAnim)},{name:prefix+".speed",value:this._currentAnimationSpeed,onedit:v=>this.CallAction(Acts.SetAnimSpeed,v)},{name:prefix+".repeats",value:this._animationRepeats,onedit:v=>this._animationRepeats=v}]}]}SaveToJson(){const o={"a":this._currentAnimation.GetSID()};if(this._frameStartTime!==0)o["fs"]=this._frameStartTime;const animTime=this.GetAnimationTime();if(animTime!== +0)o["at"]=animTime;if(this._currentFrameIndex!==0)o["f"]=this._currentFrameIndex;if(this._currentAnimationSpeed!==0)o["cas"]=this._currentAnimationSpeed;if(this._animationRepeats!==1)o["ar"]=this._animationRepeats;if(this._currentAnimationRepeatTo!==0)o["rt"]=this._currentAnimationRepeatTo;if(!this.IsAnimationPlaying())o["ap"]=this.IsAnimationPlaying();if(!this.IsPlayingForwards())o["af"]=this.IsPlayingForwards();const wi=this.GetWorldInfo();if(wi.IsCollisionEnabled())o["ce"]=wi.IsCollisionEnabled(); +return o}LoadFromJson(o){const anim=this.GetObjectClass().GetAnimationBySID(o["a"]);if(anim)this._currentAnimation=anim;this._frameStartTime=o.hasOwnProperty("fs")?o["fs"]:0;this._animationTimer.Set(o.hasOwnProperty("at")?o["at"]:0);const frameIndex=o.hasOwnProperty("f")?o["f"]:0;this._currentFrameIndex=C3.clamp(frameIndex,0,this._currentAnimation.GetFrameCount()-1);this._currentAnimationSpeed=o.hasOwnProperty("cas")?o["cas"]:0;this._animationRepeats=o.hasOwnProperty("ar")?o["ar"]:1;const repeatToIndex= +o.hasOwnProperty("rt")?o["rt"]:0;this._currentAnimationRepeatTo=C3.clamp(repeatToIndex,0,this._currentAnimation.GetFrameCount()-1);this.SetAnimationPlaying(o.hasOwnProperty("ap")?!!o["ap"]:true);this.SetPlayingForwards(o.hasOwnProperty("af")?!!o["af"]:true);const nextFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex);this._currentAnimationFrame=nextFrame;this._UpdateCurrentTexture();const wi=this.GetWorldInfo();wi.SetOriginX(nextFrame.GetOriginX());wi.SetOriginY(nextFrame.GetOriginY()); +wi.SetSourceCollisionPoly(nextFrame.GetCollisionPoly());wi.SetCollisionEnabled(!!o["ce"]);if(this.IsAnimationPlaying())this._StartTicking()}GetPropertyValueByIndex(index){const wi=this.GetWorldInfo();switch(index){case ENABLE_COLLISIONS:return wi.IsCollisionEnabled();case INITIAL_FRAME:return C3.clamp(this._currentFrameIndex,0,this._currentAnimation.GetFrameCount()-1);case INITIAL_ANIMATION:return this._currentAnimation.GetName()}}SetPropertyValueByIndex(index,value,opts){const wi=this.GetWorldInfo(); +switch(index){case ENABLE_COLLISIONS:{wi.SetCollisionEnabled(!!value);break}case INITIAL_FRAME:{this.SetAnimationPlaying(false);const totalFrames=this._currentAnimation.GetFrameCount()-1;const nextIndex=value=C3.clamp(value,0,totalFrames);const prevFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex);const nextFrame=this._currentAnimation.GetFrameAt(nextIndex);this._OnFrameChanged(prevFrame,nextFrame,opts);this._currentFrameIndex=C3.clamp(nextIndex,0,totalFrames);break}case INITIAL_ANIMATION:{this._changeAnimationName= +value;this._DoChangeAnimation(opts);const totalFrames=this._currentAnimation.GetFrameCount();if(totalFrames>1&&this._currentAnimation.GetSpeed()>0)this._StartTicking();else this._StopTicking();break}}}GetScriptInterfaceClass(){return self.ISpriteInstance}};const map=new WeakMap;const ANIM_FROM_MODES=new Map([["current-frame",0],["beginning",1]]);self.ISpriteInstance=class ISpriteInstance extends self.IWorldInstance{constructor(){super();map.set(this,self.IInstance._GetInitInst().GetSdkInstance())}getImagePointCount(){return map.get(this).GetImagePointCount()}getImagePointX(nameOrIndex){return this.getImagePoint(nameOrIndex)[0]}getImagePointY(nameOrIndex){return this.getImagePoint(nameOrIndex)[1]}getImagePointZ(nameOrIndex){return this.getImagePoint(nameOrIndex)[2]}getImagePoint(nameOrIndex){if(typeof nameOrIndex!== +"string"&&typeof nameOrIndex!=="number")throw new TypeError("expected string or number");return map.get(this).GetImagePoint(nameOrIndex)}getPolyPointCount(){return map.get(this).GetCollisionPolyPointCount()}getPolyPointX(index){C3X.RequireFiniteNumber(index);return map.get(this).GetCollisionPolyPoint(index)[0]}getPolyPointY(index){C3X.RequireFiniteNumber(index);return map.get(this).GetCollisionPolyPoint(index)[1]}getPolyPoint(index){C3X.RequireFiniteNumber(index);return map.get(this).GetCollisionPolyPoint(index)}stopAnimation(){map.get(this).SetAnimationPlaying(false)}startAnimation(from= +"current-frame"){C3X.RequireString(from);const f=ANIM_FROM_MODES.get(from);if(typeof f==="undefined")throw new Error("invalid mode");map.get(this)._StartAnim(f)}setAnimation(name,from="beginning"){C3X.RequireString(name);C3X.RequireString(from);const f=ANIM_FROM_MODES.get(from);if(typeof f==="undefined")throw new Error("invalid mode");const inst=map.get(this);if(!inst.GetObjectClass().GetAnimationByName(name))throw new Error(`animation name "${name}" does not exist`);inst._SetAnim(name,f)}getAnimation(name){C3X.RequireString(name); +const a=map.get(this).GetObjectClass().GetAnimationByName(name);return a?a.GetIAnimation():null}get animation(){return map.get(this)._GetCurrentAnimation().GetIAnimation()}get animationName(){return map.get(this)._GetCurrentAnimationName()}set animationFrame(frameIndex){C3X.RequireFiniteNumber(frameIndex);map.get(this)._SetAnimFrame(frameIndex)}get animationFrame(){return map.get(this)._GetAnimFrame()}set animationFrameTag(frameTag){C3X.RequireString(frameTag);map.get(this)._SetAnimFrame(frameTag)}get animationFrameTag(){return map.get(this)._GetAnimFrameTag()}set animationSpeed(s){C3X.RequireFiniteNumber(s); +map.get(this)._SetAnimSpeed(s)}get animationSpeed(){return map.get(this)._GetAnimSpeed()}set animationRepeatToFrame(f){C3X.RequireFiniteNumber(f);map.get(this)._SetAnimRepeatToFrame(f)}get animationRepeatToFrame(){return map.get(this)._GetAnimRepeatToFrame()}get imageWidth(){return map.get(this).GetCurrentImageInfo().GetWidth()}get imageHeight(){return map.get(this).GetCurrentImageInfo().GetHeight()}getImageSize(){const imageInfo=map.get(this).GetCurrentImageInfo();return[imageInfo.GetWidth(),imageInfo.GetHeight()]}async replaceCurrentAnimationFrame(blob){C3X.RequireInstanceOf(blob, +Blob);const sdkInst=map.get(this);const runtime=sdkInst.GetRuntime();const curImageInfo=sdkInst.GetCurrentImageInfo();const imageInfo=C3.New(C3.ImageInfo);imageInfo.LoadDynamicBlobAsset(runtime,blob);await imageInfo.LoadStaticTexture(runtime.GetRenderer(),{sampling:runtime.GetSampling()});if(sdkInst.WasReleased()){imageInfo.Release();return}curImageInfo.ReplaceWith(imageInfo);const sdkType=sdkInst.GetSdkType();sdkType._UpdateAllCurrentTexture();sdkType.GetObjectClass().Dispatcher().dispatchEvent(new C3.Event("animationframeimagechange")); +runtime.UpdateRender()}setSolidCollisionFilter(isInclusive,tags){C3X.RequireString(tags);map.get(this).GetWorldInfo().SetSolidCollisionFilter(!!isInclusive,tags)}}} +{const C3=self.C3;C3.Plugins.Sprite.Cnds={IsAnimPlaying(animName){return C3.equalsNoCase(this._GetCurrentAnimationName(),animName)},CompareFrame(cmp,frameNum){return C3.compare(this._currentFrameIndex,cmp,frameNum)},CompareFrameTag(cmp,frameTag){if(typeof frameTag!=="string")return false;const selfTag=this._currentAnimationFrame.GetTag();return C3.compare(selfTag.toLowerCase(),cmp,frameTag.toLowerCase())},CompareAnimSpeed(cmp,x){return C3.compare(this._GetAnimSpeed(),cmp,x)},OnAnimFinished(animName){return C3.equalsNoCase(this._animTriggerName, +animName)},OnAnyAnimFinished(){return true},OnFrameChanged(){return true},IsMirrored(){return this.GetWorldInfo().GetWidth()<0},IsFlipped(){return this.GetWorldInfo().GetHeight()<0},OnURLLoaded(){return true},OnURLFailed(){return true},IsCollisionEnabled(){return this.GetWorldInfo().IsCollisionEnabled()}}} +{const C3=self.C3;C3.Plugins.Sprite.Acts={Spawn(objectClass,layer,imgPt,createHierarchy,template){if(!objectClass||!layer)return;const [imgPtX,imgPtY]=this.GetImagePoint(imgPt);const inst=this._runtime.CreateInstance(objectClass,layer,imgPtX,imgPtY,createHierarchy,template);if(!inst)return;if(createHierarchy)layer.SortAndAddInstancesByZIndex(inst);if(objectClass.GetPlugin().IsRotatable()){const instWi=inst.GetWorldInfo();instWi.SetAngle(this.GetWorldInfo().GetAngle());instWi.SetBboxChanged()}const eventSheetManager= +this._runtime.GetEventSheetManager();eventSheetManager.BlockFlushingInstances(true);inst._TriggerOnCreatedOnSelfAndRelated();eventSheetManager.BlockFlushingInstances(false);if(objectClass!==this._runtime.GetCurrentAction().GetObjectClass())this._sdkType._SpawnPickInstance(objectClass,inst,createHierarchy)},StopAnim(){this.SetAnimationPlaying(false)},StartAnim(from){this._StartAnim(from)},SetAnim(animName,from){this._SetAnim(animName,from)},SetAnimFrame(frameNum){this._SetAnimFrame(frameNum)},SetAnimSpeed(s){this._SetAnimSpeed(s)}, +SetAnimRepeatToFrame(f){this._SetAnimRepeatToFrame(f)},AddRemoveAnimation(which,animName){try{if(which===0)this.GetSdkType()._AddAnimation(animName);else this.GetSdkType()._RemoveAnimation(animName)}catch(err){console.error(`[Construct] Error ${which===0?"adding":"removing"} animation: `,err)}},AddRemoveAnimationFrame(which,animation,where){try{if(which===0)this.GetSdkType()._AddAnimationFrame(animation,where);else this.GetSdkType()._RemoveAnimationFrame(animation,where)}catch(err){console.error(`[Construct] Error ${which=== +0?"adding":"removing"} animation frame: `,err)}},SetMirrored(m){const wi=this.GetWorldInfo();const oldW=wi.GetWidth();const newW=Math.abs(oldW)*(m===0?-1:1);if(oldW===newW)return;wi.SetWidth(newW);wi.SetBboxChanged()},SetFlipped(f){const wi=this.GetWorldInfo();const oldH=wi.GetHeight();const newH=Math.abs(oldH)*(f===0?-1:1);if(oldH===newH)return;wi.SetHeight(newH);wi.SetBboxChanged()},SetScale(s){const frame=this._currentAnimationFrame;const imageInfo=frame.GetImageInfo();const wi=this.GetWorldInfo(); +const mirrorFactor=wi.GetWidth()<0?-1:1;const flipFactor=wi.GetHeight()<0?-1:1;const newWidth=imageInfo.GetWidth()*s*mirrorFactor;const newHeight=imageInfo.GetHeight()*s*flipFactor;if(wi.GetWidth()!==newWidth||wi.GetHeight()!==newHeight){wi.SetSize(newWidth,newHeight);wi.SetBboxChanged()}},async LoadURL(url,resize,crossOrigin){const curAnimFrame=this._currentAnimationFrame;const curImageInfo=curAnimFrame.GetImageInfo();const wi=this.GetWorldInfo();const runtime=this._runtime;const sdkType=this._sdkType; +if(curImageInfo.GetURL()===url){if(resize===0){wi.SetSize(curImageInfo.GetWidth(),curImageInfo.GetHeight());wi.SetBboxChanged()}this.Trigger(C3.Plugins.Sprite.Cnds.OnURLLoaded);return}const imageInfo=C3.New(C3.ImageInfo);try{await imageInfo.LoadDynamicAsset(runtime,url);if(!imageInfo.IsLoaded())throw new Error("image failed to load");if(this.WasReleased()){imageInfo.Release();return}await imageInfo.LoadStaticTexture(runtime.GetRenderer(),{sampling:runtime.GetSampling()})}catch(err){console.error("Load image from URL failed: ", +err);if(!this.WasReleased())this.Trigger(C3.Plugins.Sprite.Cnds.OnURLFailed);return}if(this.WasReleased()){imageInfo.Release();return}curImageInfo.ReplaceWith(imageInfo);sdkType._UpdateAllCurrentTexture();sdkType.GetObjectClass().Dispatcher().dispatchEvent(new C3.Event("animationframeimagechange"));runtime.UpdateRender();if(resize===0){wi.SetSize(curImageInfo.GetWidth(),curImageInfo.GetHeight());wi.SetBboxChanged()}await this.TriggerAsync(C3.Plugins.Sprite.Cnds.OnURLLoaded)},SetCollisions(e){this.GetWorldInfo().SetCollisionEnabled(e)}, +SetSolidCollisionFilter(mode,tags){this.GetWorldInfo().SetSolidCollisionFilter(mode===0,tags)},SetEffect(effect){this.GetWorldInfo().SetBlendMode(effect);this._runtime.UpdateRender()}}} +{const C3=self.C3;C3.Plugins.Sprite.Exps={AnimationFrame(){return this._GetAnimFrame()},AnimationFrameTag(){return this._GetAnimFrameTag()},AnimationFrameCount(){return this._currentAnimation.GetFrameCount()},AnimationName(){return this._currentAnimation.GetName()},AnimationSpeed(){return this._GetAnimSpeed()},OriginalAnimationSpeed(){return this._currentAnimation.GetSpeed()},ImagePointX(imgpt){return this.GetImagePoint(imgpt)[0]},ImagePointY(imgpt){return this.GetImagePoint(imgpt)[1]},ImagePointZ(imgpt){return this.GetImagePoint(imgpt)[2]}, +ImagePointCount(){return this.GetImagePointCount()},ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()},PolyPointXAt(i){return this.GetCollisionPolyPoint(i)[0]},PolyPointYAt(i){return this.GetCollisionPolyPoint(i)[1]},PolyPointCount(){return this.GetCollisionPolyPointCount()}}}; + +} + +// scripts/plugins/TiledBg/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Plugins.TiledBg=class TiledBgPlugin extends C3.SDKPluginBase{constructor(opts){super(opts)}Release(){super.Release()}}} +{const C3=self.C3;function WrapModeToStr(wrapMode){switch(wrapMode){case 0:return"clamp-to-edge";case 1:return"repeat";case 2:return"mirror-repeat"}return"repeat"}C3.Plugins.TiledBg.Type=class TiledBgType extends C3.SDKTypeBase{constructor(objectClass,exportData){super(objectClass);this._wrapX="repeat";this._wrapY="repeat";if(exportData){this._wrapX=WrapModeToStr(exportData[0]);this._wrapY=WrapModeToStr(exportData[1])}}Release(){super.Release()}OnCreate(){this.GetImageInfo().LoadAsset(this._runtime)}LoadTextures(renderer){return this.GetImageInfo().LoadStaticTexture(renderer, +{sampling:this._runtime.GetSampling(),wrapX:this._wrapX,wrapY:this._wrapY})}ReleaseTextures(){this.GetImageInfo().ReleaseTexture()}}} +{const C3=self.C3;const C3X=self.C3X;const INITIALLY_VISIBLE=0;const ORIGIN=1;const IMAGE_OFFSET_X=4;const IMAGE_OFFSET_Y=5;const IMAGE_SCALE_X=6;const IMAGE_SCALE_Y=7;const IMAGE_ANGLE=8;const ENABLE_TILE_RANDOMIZATION=9;const TILE_XRANDOM=10;const TILE_YRANDOM=11;const TILE_ANGLERANDOM=12;const TILE_BLENDMARGINX=13;const TILE_BLENDMARGINY=14;const tempRect=C3.New(C3.Rect);const tempQuad=C3.New(C3.Quad);const rcTex=C3.New(C3.Rect);const qTex=C3.New(C3.Quad);C3.Plugins.TiledBg.Instance=class TiledBgInstance extends C3.SDKWorldInstanceBase{constructor(inst, +properties){super(inst);this._imageOffsetX=0;this._imageOffsetY=0;this._imageScaleX=1;this._imageScaleY=1;this._imageAngle=0;this._enableTileRandomization=false;this._tileXRandom=0;this._tileYRandom=0;this._tileAngleRandom=0;this._tileBlendMarginX=0;this._tileBlendMarginY=0;this._ownImageInfo=null;if(properties){this.GetWorldInfo().SetVisible(!!properties[INITIALLY_VISIBLE]);this._imageOffsetX=properties[IMAGE_OFFSET_X];this._imageOffsetY=properties[IMAGE_OFFSET_Y];this._imageScaleX=properties[IMAGE_SCALE_X]; +this._imageScaleY=properties[IMAGE_SCALE_Y];this._imageAngle=C3.toRadians(properties[IMAGE_ANGLE]);this._enableTileRandomization=!!properties[ENABLE_TILE_RANDOMIZATION];this._tileXRandom=properties[TILE_XRANDOM];this._tileYRandom=properties[TILE_YRANDOM];this._tileAngleRandom=properties[TILE_ANGLERANDOM];this._tileBlendMarginX=properties[TILE_BLENDMARGINX];this._tileBlendMarginY=properties[TILE_BLENDMARGINY]}}Release(){this._ReleaseOwnImage();super.Release()}_ReleaseOwnImage(){if(this._ownImageInfo){this._ownImageInfo.Release(); +this._ownImageInfo=null}}CalculateTextureCoordsFor3DFace(areaWidth,areaHeight,outQuad){const imageInfo=this.GetCurrentImageInfo();const imageWidth=imageInfo.GetWidth();const imageHeight=imageInfo.GetHeight();const imageOffsetX=this._imageOffsetX/imageWidth;const imageOffsetY=this._imageOffsetY/imageHeight;const imageAngle=this._imageAngle;rcTex.set(0,0,areaWidth/(imageWidth*this._imageScaleX),areaHeight/(imageHeight*this._imageScaleY));rcTex.offset(-imageOffsetX,-imageOffsetY);if(imageAngle===0)outQuad.setFromRect(rcTex); +else outQuad.setFromRotatedRect(rcTex,-imageAngle)}SetTilingShaderProgram(renderer,setTextureFill=true){if(this._enableTileRandomization){const imageInfo=this.GetCurrentImageInfo();renderer.SetTileRandomizationMode();renderer.SetTileRandomizationInfo(imageInfo.GetWidth()*this._imageScaleX,imageInfo.GetHeight()*this._imageScaleY,this._tileXRandom,this._tileYRandom,this._tileAngleRandom,this._tileBlendMarginX,this._tileBlendMarginY)}else if(setTextureFill)renderer.SetTextureFillMode()}Draw(renderer){const imageInfo= +this.GetCurrentImageInfo();const texture=imageInfo.GetTexture();if(texture===null)return;this.SetTilingShaderProgram(renderer);renderer.SetTexture(texture);const imageWidth=imageInfo.GetWidth();const imageHeight=imageInfo.GetHeight();const imageOffsetX=this._imageOffsetX/imageWidth;const imageOffsetY=this._imageOffsetY/imageHeight;const wi=this.GetWorldInfo();rcTex.set(0,0,wi.GetWidth()/(imageWidth*this._imageScaleX),wi.GetHeight()/(imageHeight*this._imageScaleY));rcTex.offset(-imageOffsetX,-imageOffsetY); +if(wi.HasMesh())this._DrawMesh(wi,renderer);else this._DrawStandard(wi,renderer)}_DrawStandard(wi,renderer){let quad=wi.GetBoundingQuad();if(this._runtime.IsPixelRoundingEnabled())quad=wi.PixelRoundQuad(quad);if(this._imageAngle===0)renderer.Quad3(quad,rcTex);else{qTex.setFromRotatedRect(rcTex,-this._imageAngle);renderer.Quad4(quad,qTex)}}_DrawMesh(wi,renderer){const transformedMesh=wi.GetTransformedMesh();if(wi.IsMeshChanged()){wi.CalculateBbox(tempRect,tempQuad,false);let quad=tempQuad;if(this._runtime.IsPixelRoundingEnabled())quad= +wi.PixelRoundQuad(quad);let texCoords=rcTex;if(this._imageAngle!==0){qTex.setFromRotatedRect(rcTex,-this._imageAngle);texCoords=qTex}transformedMesh.CalculateTransformedMesh(wi.GetSourceMesh(),quad,texCoords);wi.SetMeshChanged(false)}transformedMesh.Draw(renderer)}GetCurrentImageInfo(){return this._ownImageInfo||this._objectClass.GetImageInfo()}IsOriginalSizeKnown(){return true}GetTexture(){return this.GetCurrentImageInfo().GetTexture()}_SetMeshChanged(){this.GetWorldInfo().SetMeshChanged(true)}_SetImageOffsetX(x){if(this._imageOffsetX=== +x)return;this._imageOffsetX=x;this._runtime.UpdateRender();this._SetMeshChanged()}_GetImageOffsetX(){return this._imageOffsetX}_SetImageOffsetY(y){if(this._imageOffsetY===y)return;this._imageOffsetY=y;this._runtime.UpdateRender();this._SetMeshChanged()}_GetImageOffsetY(){return this._imageOffsetY}_SetImageScaleX(x){if(this._imageScaleX===x)return;this._imageScaleX=x;this._runtime.UpdateRender();this._SetMeshChanged()}_GetImageScaleX(){return this._imageScaleX}_SetImageScaleY(y){if(this._imageScaleY=== +y)return;this._imageScaleY=y;this._runtime.UpdateRender();this._SetMeshChanged()}_GetImageScaleY(){return this._imageScaleY}_SetImageAngle(a){if(this._imageAngle===a)return;this._imageAngle=a;this._runtime.UpdateRender();this._SetMeshChanged()}_GetImageAngle(){return this._imageAngle}_SetTileRandomizationEnabled(e){e=!!e;if(this._enableTileRandomization===e)return;this._enableTileRandomization=e;this._runtime.UpdateRender()}_IsTileRandomizationEnabled(){return this._enableTileRandomization}_SetTileXRandom(x){if(this._tileXRandom=== +x)return;this._tileXRandom=x;if(this._IsTileRandomizationEnabled())this._runtime.UpdateRender()}_GetTileXRandom(){return this._tileXRandom}_SetTileYRandom(y){if(this._tileYRandom===y)return;this._tileYRandom=y;if(this._IsTileRandomizationEnabled())this._runtime.UpdateRender()}_GetTileYRandom(){return this._tileYRandom}_SetTileAngleRandom(a){if(this._tileAngleRandom===a)return;this._tileAngleRandom=a;if(this._IsTileRandomizationEnabled())this._runtime.UpdateRender()}_GetTileAngleRandom(){return this._tileAngleRandom}_SetTileBlendMarginX(x){if(this._tileBlendMarginX=== +x)return;this._tileBlendMarginX=x;if(this._IsTileRandomizationEnabled())this._runtime.UpdateRender()}_GetTileBlendMarginX(){return this._tileBlendMarginX}_SetTileBlendMarginY(y){if(this._tileBlendMarginY===y)return;this._tileBlendMarginY=y;if(this._IsTileRandomizationEnabled())this._runtime.UpdateRender()}_GetTileBlendMarginY(){return this._tileBlendMarginY}SaveToJson(){const ret={};if(this._imageOffsetX!==0)ret["iox"]=this._imageOffsetX;if(this._imageOffsetY!==0)ret["ioy"]=this._imageOffsetY;if(this._imageScaleX!== +1)ret["isx"]=this._imageScaleX;if(this._imageScaleY!==1)ret["isy"]=this._imageScaleY;if(this._imageAngle!==0)ret["ia"]=this._imageAngle;if(this._enableTileRandomization)ret["tr"]=true;if(this._tileXRandom!==1)ret["trx"]=this._tileXRandom;if(this._tileYRandom!==1)ret["try"]=this._tileYRandom;if(this._tileAngleRandom!==1)ret["tra"]=this._tileAngleRandom;if(this._tileBlendMarginX!==.1)ret["trbmx"]=this._tileBlendMarginX;if(this._tileBlendMarginY!==.1)ret["trbmy"]=this._tileBlendMarginY;return ret}LoadFromJson(o){this._imageOffsetX= +o["iox"]||0;this._imageOffsetY=o["ioy"]||0;this._imageScaleX=o.hasOwnProperty("isx")?o["isx"]:1;this._imageScaleY=o.hasOwnProperty("isy")?o["isy"]:1;this._imageAngle=o["ia"]||0;this._enableTileRandomization=!!o["tr"];this._tileXRandom=o.hasOwnProperty("trx")?o["trx"]:1;this._tileYRandom=o.hasOwnProperty("try")?o["try"]:1;this._tileAngleRandom=o.hasOwnProperty("tra")?o["tra"]:1;this._tileBlendMarginX=o.hasOwnProperty("trbmx")?o["trbmx"]:.1;this._tileBlendMarginY=o.hasOwnProperty("trbmy")?o["trbmy"]: +.1}GetDebuggerProperties(){const propsPrefix="plugins.tiledbg.properties";return[{title:propsPrefix+".image-transform.name",properties:[{name:propsPrefix+".image-offset-x.name",value:this._GetImageOffsetX(),onedit:v=>this._SetImageOffsetX(v)},{name:propsPrefix+".image-offset-y.name",value:this._GetImageOffsetY(),onedit:v=>this._SetImageOffsetY(v)},{name:propsPrefix+".image-scale-x.name",value:this._GetImageScaleX()*100,onedit:v=>this._SetImageScaleX(v/100)},{name:propsPrefix+".image-scale-y.name", +value:this._GetImageScaleY()*100,onedit:v=>this._SetImageScaleY(v/100)},{name:propsPrefix+".image-angle.name",value:C3.toDegrees(this._GetImageAngle()),onedit:v=>this._SetImageAngle(C3.toRadians(v))}]},{title:propsPrefix+".tile-randomization.name",properties:[{name:propsPrefix+".enable-tile-randomization.name",value:this._IsTileRandomizationEnabled(),onedit:v=>this._SetTileRandomizationEnabled(v)},{name:propsPrefix+".x-random.name",value:this._GetTileXRandom()*100,onedit:v=>this._SetTileXRandom(v/ +100)},{name:propsPrefix+".y-random.name",value:this._GetTileYRandom()*100,onedit:v=>this._SetTileYRandom(v/100)},{name:propsPrefix+".angle-random.name",value:this._GetTileAngleRandom()*100,onedit:v=>this._SetTileAngleRandom(v/100)},{name:propsPrefix+".blend-margin-x.name",value:this._GetTileBlendMarginX()*100,onedit:v=>this._SetTileBlendMarginX(v/100)},{name:propsPrefix+".blend-margin-y.name",value:this._GetTileBlendMarginY()*100,onedit:v=>this._SetTileBlendMarginY(v/100)}]}]}GetPropertyValueByIndex(index){switch(index){case IMAGE_OFFSET_X:return this._GetImageOffsetX(); +case IMAGE_OFFSET_Y:return this._GetImageOffsetY();case IMAGE_SCALE_X:return this._GetImageScaleX();case IMAGE_SCALE_Y:return this._GetImageScaleY();case IMAGE_ANGLE:return this._GetImageAngle();case ENABLE_TILE_RANDOMIZATION:return this._IsTileRandomizationEnabled();case TILE_XRANDOM:return this._GetTileXRandom();case TILE_YRANDOM:return this._GetTileYRandom();case TILE_ANGLERANDOM:return this._GetTileAngleRandom();case TILE_BLENDMARGINX:return this._GetTileBlendMarginX();case TILE_BLENDMARGINY:return this._GetTileBlendMarginY()}}SetPropertyValueByIndex(index, +value){switch(index){case IMAGE_OFFSET_X:this._SetImageOffsetX(value);break;case IMAGE_OFFSET_Y:this._SetImageOffsetY(value);break;case IMAGE_SCALE_X:this._SetImageScaleX(value);break;case IMAGE_SCALE_Y:this._SetImageScaleY(value);break;case IMAGE_ANGLE:this._SetImageAngle(value);break;case ENABLE_TILE_RANDOMIZATION:this._SetTileRandomizationEnabled(!!value);break;case TILE_XRANDOM:this._SetTileXRandom(value);break;case TILE_YRANDOM:this._SetTileYRandom(value);break;case TILE_ANGLERANDOM:this._SetTileAngleRandom(value); +break;case TILE_BLENDMARGINX:this._SetTileBlendMarginX(value);break;case TILE_BLENDMARGINY:this._SetTileBlendMarginY(value);break}}GetScriptInterfaceClass(){return self.ITiledBackgroundInstance}};const map=new WeakMap;self.ITiledBackgroundInstance=class ITiledBackgroundInstance extends self.IWorldInstance{constructor(){super();map.set(this,self.IInstance._GetInitInst().GetSdkInstance())}set imageOffsetX(x){C3X.RequireFiniteNumber(x);map.get(this)._SetImageOffsetX(x)}get imageOffsetX(){return map.get(this)._GetImageOffsetX()}set imageOffsetY(y){C3X.RequireFiniteNumber(y); +map.get(this)._SetImageOffsetY(y)}get imageOffsetY(){return map.get(this)._GetImageOffsetY()}setImageOffset(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);const inst=map.get(this);inst._SetImageOffsetX(x);inst._SetImageOffsetY(y)}getImageOffset(){const inst=map.get(this);return[inst._GetImageOffsetX(),inst._GetImageOffsetY()]}set imageScaleX(x){C3X.RequireFiniteNumber(x);map.get(this)._SetImageScaleX(x)}get imageScaleX(){return map.get(this)._GetImageScaleX()}set imageScaleY(y){C3X.RequireFiniteNumber(y); +map.get(this)._SetImageScaleY(y)}get imageScaleY(){return map.get(this)._GetImageScaleY()}setImageScale(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);const inst=map.get(this);inst._SetImageScaleX(x);inst._SetImageScaleY(y)}getImageScale(){const inst=map.get(this);return[inst._GetImageScaleX(),inst._GetImageScaleY()]}set imageAngle(a){C3X.RequireFiniteNumber(a);map.get(this)._SetImageAngle(a)}get imageAngle(){return map.get(this)._GetImageAngle()}set imageAngleDegrees(a){C3X.RequireFiniteNumber(a); +map.get(this)._SetImageAngle(C3.toRadians(a))}get imageAngleDegrees(){return C3.toDegrees(map.get(this)._GetImageAngle())}get imageWidth(){return map.get(this).GetCurrentImageInfo().GetWidth()}get imageHeight(){return map.get(this).GetCurrentImageInfo().GetHeight()}getImageSize(){const imageInfo=map.get(this).GetCurrentImageInfo();return[imageInfo.GetWidth(),imageInfo.GetHeight()]}set enableTileRandomization(e){map.get(this)._SetTileRandomizationEnabled(!!e)}get enableTileRandomization(){return map.get(this)._IsTileRandomizationEnabled()}set tileXRandom(x){C3X.RequireFiniteNumber(x); +map.get(this)._SetTileXRandom(x)}get tileXRandom(){return map.get(this)._GetTileXRandom()}set tileYRandom(y){C3X.RequireFiniteNumber(y);map.get(this)._SetTileYRandom(y)}get tileYRandom(){return map.get(this)._GetTileYRandom()}setTileRandom(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);const inst=map.get(this);inst._SetTileXRandom(x);inst._SetTileYRandom(y)}getTileRandom(){const inst=map.get(this);return[inst._GetTileXRandom(),inst._GetTileYRandom()]}set tileAngleRandom(a){C3X.RequireFiniteNumber(a); +map.get(this)._SetTileAngleRandom(a)}get tileAngleRandom(){return map.get(this)._GetTileAngleRandom()}set tileBlendMarginX(x){C3X.RequireFiniteNumber(x);map.get(this)._SetTileBlendMarginX(x)}get tileBlendMarginX(){return map.get(this)._GetTileBlendMarginX()}set tileBlendMarginY(y){C3X.RequireFiniteNumber(y);map.get(this)._SetTileBlendMarginY(y)}get tileBlendMarginY(){return map.get(this)._GetTileBlendMarginY()}setTileBlendMargin(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);const inst= +map.get(this);inst._SetTileBlendMarginX(x);inst._SetTileBlendMarginY(y)}getTileBlendMargin(){const inst=map.get(this);return[inst._GetTileBlendMarginX(),inst._GetTileBlendMarginY()]}async replaceImage(blob){C3X.RequireInstanceOf(blob,Blob);const sdkInst=map.get(this);const runtime=sdkInst.GetRuntime();const imageInfo=C3.New(C3.ImageInfo);imageInfo.LoadDynamicBlobAsset(runtime,blob);await imageInfo.LoadStaticTexture(runtime.GetRenderer(),{sampling:runtime.GetSampling(),wrapX:"repeat",wrapY:"repeat"}); +if(sdkInst.WasReleased()){imageInfo.Release();return}sdkInst._ReleaseOwnImage();sdkInst._ownImageInfo=imageInfo;runtime.UpdateRender()}}}{const C3=self.C3;C3.Plugins.TiledBg.Cnds={OnURLLoaded(){return true},OnURLFailed(){return true},IsTileRandomizationEnabled(){return this._IsTileRandomizationEnabled()}}} +{const C3=self.C3;C3.Plugins.TiledBg.Acts={SetImageOffsetX(x){this._SetImageOffsetX(x)},SetImageOffsetY(y){this._SetImageOffsetY(y)},SetImageScaleX(x){this._SetImageScaleX(x/100)},SetImageScaleY(y){this._SetImageScaleY(y/100)},SetImageAngle(a){this._SetImageAngle(C3.toRadians(a))},SetTileRandomizationEnabled(e){this._SetTileRandomizationEnabled(e)},SetTilePosRandom(x,y){this._SetTileXRandom(x/100);this._SetTileYRandom(y/100)},SetTileAngleRandom(a){this._SetTileAngleRandom(a/100)},SetTileBlendMargin(x, +y){this._SetTileBlendMarginX(x/100);this._SetTileBlendMarginY(y/100)},SetEffect(effect){this.GetWorldInfo().SetBlendMode(effect);this._runtime.UpdateRender()},async LoadURL(url,crossOrigin){if(this._ownImageInfo&&this._ownImageInfo.GetURL()===url)return;const runtime=this._runtime;const imageInfo=C3.New(C3.ImageInfo);try{await imageInfo.LoadDynamicAsset(runtime,url);if(!imageInfo.IsLoaded())throw new Error("image failed to load");if(this.WasReleased()){imageInfo.Release();return null}const texture= +await imageInfo.LoadStaticTexture(runtime.GetRenderer(),{sampling:runtime.GetSampling(),wrapX:"repeat",wrapY:"repeat"});if(!texture)return}catch(err){console.error("Load image from URL failed: ",err);if(!this.WasReleased())this.Trigger(C3.Plugins.TiledBg.Cnds.OnURLFailed);return}if(this.WasReleased()){imageInfo.Release();return}this._ReleaseOwnImage();this._ownImageInfo=imageInfo;runtime.UpdateRender();await this.TriggerAsync(C3.Plugins.TiledBg.Cnds.OnURLLoaded)}}} +{const C3=self.C3;C3.Plugins.TiledBg.Exps={ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()},ImageOffsetX(){return this._imageOffsetX},ImageOffsetY(){return this._imageOffsetY},ImageScaleX(){return this._imageScaleX*100},ImageScaleY(){return this._imageScaleY*100},ImageAngle(){return C3.toDegrees(this._imageAngle)},TileXRandom(){return this._GetTileXRandom()*100},TileYRandom(){return this._GetTileYRandom()*100},TileAngleRandom(){return this._GetTileAngleRandom()* +100},TileBlendMarginX(){return this._GetTileBlendMarginX()*100},TileBlendMarginY(){return this._GetTileBlendMarginY()*100}}}; + +} + +// scripts/plugins/Touch/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Plugins.Touch=class TouchPlugin extends C3.SDKPluginBase{constructor(opts){super(opts)}Release(){super.Release()}}} +{const C3=self.C3;const C3X=self.C3X;C3.Plugins.Touch.Type=class TouchType extends C3.SDKTypeBase{constructor(objectClass){super(objectClass)}Release(){super.Release()}OnCreate(){}GetScriptInterfaceClass(){return self.ITouchObjectType}};let touchObjectType=null;function GetTouchSdkInstance(){return touchObjectType.GetSingleGlobalInstance().GetSdkInstance()}self.ITouchObjectType=class ITouchObjectType extends self.IObjectClass{constructor(objectType){super(objectType);touchObjectType=objectType;objectType.GetRuntime()._GetCommonScriptInterfaces().touch= +this}requestPermission(type){C3X.RequireString(type);const touchInst=GetTouchSdkInstance();if(type==="orientation")return touchInst._RequestPermission(0);else if(type==="motion")return touchInst._RequestPermission(1);else throw new Error("invalid type");}}} +{const C3=self.C3;const DOM_COMPONENT_ID="touch";C3.Plugins.Touch.Instance=class TouchInstance extends C3.SDKInstanceBase{constructor(inst,properties){super(inst,DOM_COMPONENT_ID);this._touches=new Map;this._useMouseInput=false;this._isMouseDown=false;this._orientCompassHeading=0;this._orientAlpha=0;this._orientBeta=0;this._orientGamma=0;this._accX=0;this._accY=0;this._accZ=0;this._accWithGX=0;this._accWithGY=0;this._accWithGZ=0;this._triggerIndex=0;this._triggerId=0;this._triggerPermission=0;this._curTouchX= +0;this._curTouchY=0;this._getTouchIndex=0;this._triggerType=0;this._permissionPromises=[];if(properties)this._useMouseInput=properties[0];this.AddDOMMessageHandler("permission-result",e=>this._OnPermissionResult(e));const rt=this.GetRuntime().Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(rt,"pointerdown",e=>this._OnPointerDown(e.data)),C3.Disposable.From(rt,"pointermove",e=>this._OnPointerMove(e.data)),C3.Disposable.From(rt,"pointerup",e=>this._OnPointerUp(e.data,false)), +C3.Disposable.From(rt,"pointercancel",e=>this._OnPointerUp(e.data,true)),C3.Disposable.From(rt,"deviceorientation",e=>this._OnDeviceOrientation(e.data)),C3.Disposable.From(rt,"deviceorientationabsolute",e=>this._OnDeviceOrientationAbsolute(e.data)),C3.Disposable.From(rt,"devicemotion",e=>this._OnDeviceMotion(e.data)),C3.Disposable.From(rt,"tick2",e=>this._OnTick2()))}Release(){this._touches.clear();super.Release()}_OnPointerDown(e){if(e["pointerType"]==="mouse")if(this._useMouseInput)this._isMouseDown= +true;else return;const pointerId=e["pointerId"];if(this._touches.has(pointerId))return;const x=e["pageX"]-this._runtime.GetCanvasClientX();const y=e["pageY"]-this._runtime.GetCanvasClientY();const nowTime=performance.now();const index=this._touches.size;this._triggerIndex=index;this._triggerId=pointerId;const touchInfo=C3.New(C3.Plugins.Touch.TouchInfo);touchInfo.Init(nowTime,x,y,pointerId,index);this._touches.set(pointerId,touchInfo);this.Trigger(C3.Plugins.Touch.Cnds.OnNthTouchStart);this.Trigger(C3.Plugins.Touch.Cnds.OnTouchStart); +this._curTouchX=x;this._curTouchY=y;this._triggerType=0;this.Trigger(C3.Plugins.Touch.Cnds.OnTouchObject)}_OnPointerMove(e){if(e["pointerType"]==="mouse"&&!this._isMouseDown)return;const touchInfo=this._touches.get(e["pointerId"]);if(!touchInfo)return;const nowTime=performance.now();if(nowTime-touchInfo.GetTime()<2)return;const x=e["pageX"]-this._runtime.GetCanvasClientX();const y=e["pageY"]-this._runtime.GetCanvasClientY();touchInfo.Update(nowTime,x,y,e["width"],e["height"],e["pressure"])}_OnPointerUp(e, +isCancel){if(e["pointerType"]==="mouse")if(this._isMouseDown)this._isMouseDown=false;else return;const nowTime=performance.now();const pointerId=e["pointerId"];const touchInfo=this._touches.get(pointerId);if(!touchInfo)return;this._triggerIndex=touchInfo.GetStartIndex();this._triggerId=touchInfo.GetId();if(!isCancel){const x=e["pageX"]-this._runtime.GetCanvasClientX();const y=e["pageY"]-this._runtime.GetCanvasClientY();this._curTouchX=x;this._curTouchY=y;this._triggerType=1;this.Trigger(C3.Plugins.Touch.Cnds.OnTouchObject)}this.Trigger(C3.Plugins.Touch.Cnds.OnNthTouchEnd); +this.Trigger(C3.Plugins.Touch.Cnds.OnTouchEnd);if(!isCancel){const tap=touchInfo.ShouldTriggerTap(nowTime);if(tap==="single-tap"){this.Trigger(C3.Plugins.Touch.Cnds.OnTapGesture);this._curTouchX=touchInfo.GetX();this._curTouchY=touchInfo.GetY();this.Trigger(C3.Plugins.Touch.Cnds.OnTapGestureObject)}else if(tap==="double-tap"){this.Trigger(C3.Plugins.Touch.Cnds.OnDoubleTapGesture);this._curTouchX=touchInfo.GetX();this._curTouchY=touchInfo.GetY();this.Trigger(C3.Plugins.Touch.Cnds.OnDoubleTapGestureObject)}}touchInfo.Release(); +this._touches.delete(pointerId)}_RequestPermission(type){this._PostToDOMMaybeSync("request-permission",{"type":type});return new Promise((resolve,reject)=>{this._permissionPromises.push({type,resolve,reject})})}_OnPermissionResult(e){const isGranted=e["result"];const type=e["type"];this._triggerPermission=type;const toResolve=this._permissionPromises.filter(o=>o.type===type);for(const o of toResolve)o.resolve(isGranted?"granted":"denied");this._permissionPromises=this._permissionPromises.filter(o=> +o.type!==type);if(isGranted){this.Trigger(C3.Plugins.Touch.Cnds.OnPermissionGranted);if(type===0)this._runtime.RequestDeviceOrientationEvent();else this._runtime.RequestDeviceMotionEvent()}else this.Trigger(C3.Plugins.Touch.Cnds.OnPermissionDenied)}_OnDeviceOrientation(e){if(typeof e["webkitCompassHeading"]==="number")this._orientCompassHeading=e["webkitCompassHeading"];else if(e["absolute"])this._orientCompassHeading=e["alpha"];this._orientAlpha=e["alpha"];this._orientBeta=e["beta"];this._orientGamma= +e["gamma"]}_OnDeviceOrientationAbsolute(e){this._orientCompassHeading=e["alpha"]}_OnDeviceMotion(e){const acc=e["acceleration"];if(acc){this._accX=acc["x"];this._accY=acc["y"];this._accZ=acc["z"]}const withG=e["accelerationIncludingGravity"];if(withG){this._accWithGX=withG["x"];this._accWithGY=withG["y"];this._accWithGZ=withG["z"]}}_OnTick2(){const nowTime=performance.now();let index=0;for(const touchInfo of this._touches.values()){if(touchInfo.GetTime()<=nowTime-50)touchInfo._SetLastTime(nowTime); +if(touchInfo.ShouldTriggerHold(nowTime)){this._triggerIndex=touchInfo.GetStartIndex();this._triggerId=touchInfo.GetId();this._getTouchIndex=index;this.Trigger(C3.Plugins.Touch.Cnds.OnHoldGesture);this._curTouchX=touchInfo.GetX();this._curTouchY=touchInfo.GetY();this.Trigger(C3.Plugins.Touch.Cnds.OnHoldGestureObject);this._getTouchIndex=0}++index}}_GetTouchByIndex(index){index=Math.floor(index);for(const touchInfo of this._touches.values()){if(index===0)return touchInfo;--index}return null}_IsClientPosOnCanvas(touchX, +touchY){return touchX>=0&&touchY>=0&&touchX({name:"$"+ti.GetId(),value:ti.GetX()+", "+ti.GetY()}))}]}}} +{const C3=self.C3;const tempArr=[];C3.Plugins.Touch.Cnds={OnTouchStart(){return true},OnTouchEnd(){return true},IsInTouch(){return this._touches.size>0},OnTouchObject(objectClass,type){if(!objectClass)return false;if(type!==this._triggerType)return false;if(!this._IsClientPosOnCanvas(this._curTouchX,this._curTouchY))return false;return this._runtime.GetCollisionEngine().TestAndSelectCanvasPointOverlap(objectClass,[[this._curTouchX,this._curTouchY]],false)},IsTouchingObject(objectClass){if(!objectClass)return false; +const cnd=this._runtime.GetCurrentCondition();const isInverted=cnd.IsInverted();const ptsArr=[...this._touches.values()].filter(ti=>this._IsClientPosOnCanvas(ti.GetX(),ti.GetY())).map(ti=>[ti.GetX(),ti.GetY()]);return C3.xor(this._runtime.GetCollisionEngine().TestAndSelectCanvasPointOverlap(objectClass,ptsArr,isInverted),isInverted)},CompareTouchSpeed(index,cmp,s){const touchInfo=this._GetTouchByIndex(index);if(!touchInfo)return false;return C3.compare(touchInfo.GetSpeed(),cmp,s)},OrientationSupported(){return true}, +MotionSupported(){return true},CompareOrientation(orientation,cmp,a){this._runtime.RequestDeviceOrientationEvent();let v=0;if(orientation===0)v=this._orientAlpha;else if(orientation===1)v=this._orientBeta;else v=this._orientGamma;return C3.compare(v,cmp,a)},CompareAcceleration(a,cmp,x){this._runtime.RequestDeviceMotionEvent();let v=0;if(a===0)v=this._accWithGX;else if(a===1)v=this._accWithGY;else if(a===2)v=this._accWithGZ;else if(a===3)v=this._accX;else if(a===4)v=this._accY;else v=this._accZ;return C3.compare(v, +cmp,x)},OnNthTouchStart(index){index=Math.floor(index);return index===this._triggerIndex},OnNthTouchEnd(index){index=Math.floor(index);return index===this._triggerIndex},HasNthTouch(index){index=Math.floor(index);return this._touches.size>=index+1},OnHoldGesture(){return true},OnTapGesture(){return true},OnDoubleTapGesture(){return true},OnHoldGestureObject(objectClass){if(!objectClass)return false;if(!this._IsClientPosOnCanvas(this._curTouchX,this._curTouchY))return false;return this._runtime.GetCollisionEngine().TestAndSelectCanvasPointOverlap(objectClass, +[[this._curTouchX,this._curTouchY]],false)},OnTapGestureObject(objectClass){if(!objectClass)return false;if(!this._IsClientPosOnCanvas(this._curTouchX,this._curTouchY))return false;return this._runtime.GetCollisionEngine().TestAndSelectCanvasPointOverlap(objectClass,[[this._curTouchX,this._curTouchY]],false)},OnDoubleTapGestureObject(objectClass){if(!objectClass)return false;if(!this._IsClientPosOnCanvas(this._curTouchX,this._curTouchY))return false;return this._runtime.GetCollisionEngine().TestAndSelectCanvasPointOverlap(objectClass, +[[this._curTouchX,this._curTouchY]],false)},OnPermissionGranted(type){return this._triggerPermission===type},OnPermissionDenied(type){return this._triggerPermission===type}}}{const C3=self.C3;C3.Plugins.Touch.Acts={RequestPermission(type){this._RequestPermission(type)}}} +{const C3=self.C3;C3.Plugins.Touch.Exps={TouchCount(){return this._touches.size},X(layerParam){const touchInfo=this._GetTouchByIndex(this._getTouchIndex);if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,true)},Y(layerParam){const touchInfo=this._GetTouchByIndex(this._getTouchIndex);if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,false)},XAt(index,layerParam){const touchInfo=this._GetTouchByIndex(index); +if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,true)},YAt(index,layerParam){const touchInfo=this._GetTouchByIndex(index);if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,false)},XForID(id,layerParam){const touchInfo=this._touches.get(id);if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,true)},YForID(id,layerParam){const touchInfo=this._touches.get(id); +if(!touchInfo)return 0;return touchInfo.GetPositionForLayer(this._runtime.GetCurrentLayout(),layerParam,false)},AbsoluteX(){const touchInfo=this._GetTouchByIndex(0);if(touchInfo)return touchInfo.GetX();else return 0},AbsoluteY(){const touchInfo=this._GetTouchByIndex(0);if(touchInfo)return touchInfo.GetY();else return 0},AbsoluteXAt(index){const touchInfo=this._GetTouchByIndex(index);if(touchInfo)return touchInfo.GetX();else return 0},AbsoluteYAt(index){const touchInfo=this._GetTouchByIndex(index); +if(touchInfo)return touchInfo.GetY();else return 0},AbsoluteXForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetX();else return 0},AbsoluteYForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetY();else return 0},SpeedAt(index){const touchInfo=this._GetTouchByIndex(index);if(touchInfo)return touchInfo.GetSpeed();else return 0},SpeedForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetSpeed();else return 0},AngleAt(index){const touchInfo= +this._GetTouchByIndex(index);if(touchInfo)return C3.toDegrees(touchInfo.GetAngle());else return 0},AngleForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return C3.toDegrees(touchInfo.GetAngle());else return 0},CompassHeading(){this._runtime.RequestDeviceOrientationEvent();return this._orientCompassHeading},Alpha(){this._runtime.RequestDeviceOrientationEvent();return this._orientAlpha},Beta(){this._runtime.RequestDeviceOrientationEvent();return this._orientBeta},Gamma(){this._runtime.RequestDeviceOrientationEvent(); +return this._orientGamma},AccelerationXWithG(){this._runtime.RequestDeviceMotionEvent();return this._accWithGX},AccelerationYWithG(){this._runtime.RequestDeviceMotionEvent();return this._accWithGY},AccelerationZWithG(){this._runtime.RequestDeviceMotionEvent();return this._accWithGZ},AccelerationX(){this._runtime.RequestDeviceMotionEvent();return this._accX},AccelerationY(){this._runtime.RequestDeviceMotionEvent();return this._accY},AccelerationZ(){this._runtime.RequestDeviceMotionEvent();return this._accZ}, +TouchIndex(){return this._triggerIndex},TouchID(){return this._triggerId},WidthForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetWidth();else return 0},HeightForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetHeight();else return 0},PressureForID(id){const touchInfo=this._touches.get(id);if(touchInfo)return touchInfo.GetPressure();else return 0}}}; + +} + +// scripts/plugins/Touch/c3runtime/touchInfo.js +{ +'use strict';const C3=self.C3;const GESTURE_HOLD_THRESHOLD=15;const GESTURE_HOLD_TIMEOUT=500;const GESTURE_TAP_TIMEOUT=333;const GESTURE_DOUBLETAP_THRESHOLD=25;let lastTapX=-1E3;let lastTapY=-1E3;let lastTapTime=-1E4; +C3.Plugins.Touch.TouchInfo=class TouchInfo extends C3.DefendedBase{constructor(){super();this._pointerId=0;this._startIndex=0;this._startTime=0;this._time=0;this._lastTime=0;this._startX=0;this._startY=0;this._x=0;this._y=0;this._lastX=0;this._lastY=0;this._width=0;this._height=0;this._pressure=0;this._hasTriggeredHold=false;this._isTooFarForHold=false}Release(){}Init(nowTime,x,y,id,index){this._pointerId=id;this._startIndex=index;this._time=nowTime;this._lastTime=nowTime;this._startTime=nowTime; +this._startX=x;this._startY=y;this._x=x;this._y=y;this._lastX=x;this._lastY=y}Update(nowTime,x,y,width,height,pressure){this._lastTime=this._time;this._time=nowTime;this._lastX=this._x;this._lastY=this._y;this._x=x;this._y=y;this._width=width;this._height=height;this._pressure=pressure;if(!this._isTooFarForHold&&C3.distanceTo(this._startX,this._startY,this._x,this._y)>=GESTURE_HOLD_THRESHOLD)this._isTooFarForHold=true}GetId(){return this._pointerId}GetStartIndex(){return this._startIndex}GetTime(){return this._time}_SetLastTime(t){this._lastTime= +t}GetX(){return this._x}GetY(){return this._y}GetSpeed(){const dist=C3.distanceTo(this._x,this._y,this._lastX,this._lastY);const dt=(this._time-this._lastTime)/1E3;if(dt>0)return dist/dt;else return 0}GetAngle(){return C3.angleTo(this._lastX,this._lastY,this._x,this._y)}GetWidth(){return this._width}GetHeight(){return this._height}GetPressure(){return this._pressure}ShouldTriggerHold(nowTime){if(this._hasTriggeredHold)return false;if(nowTime-this._startTime>=GESTURE_HOLD_TIMEOUT&&!this._isTooFarForHold&& +C3.distanceTo(this._startX,this._startY,this._x,this._y)this._runtime.UpdateRender(); +this._animationframeimagechange_handler=()=>this._OnIconObjectClassImageChanged();this._pendingUpdateIconSet=false;if(properties){this._text=properties[TEXT];this._enableBBcode=!!properties[ENABLE_BBCODE];this._faceName=properties[FONT];this._ptSize=properties[SIZE];this._lineHeightOffset=properties[LINE_HEIGHT];this._isBold=!!properties[BOLD];this._isItalic=!!properties[ITALIC];this._horizontalAlign=properties[HORIZONTAL_ALIGNMENT];this._verticalAlign=properties[VERTICAL_ALIGNMENT];this._wrapMode= +WORD_WRAP_MODES[properties[WRAPPING]];this._textDirection=properties[TEXT_DIRECTION];this._SetIconObjectClass(this._runtime.GetObjectClassBySID(properties[ICON_SET]));const v=properties[COLOR];this._color.setRgb(v[0],v[1],v[2]);this.GetWorldInfo().SetVisible(properties[INITIALLY_VISIBLE]);this._readAloud=!!properties[READ_ALOUD]}this._UpdateTextSettings();this._UpdateScreenReaderText()}Release(){this._SetIconObjectClass(null);this._CancelTypewriter();if(this._screenReaderText){this._screenReaderText.Release(); +this._screenReaderText=null}this._rendererText.Release();this._rendererText=null;super.Release()}_UpdateTextSettings(){const rendererText=this._rendererText;rendererText.SetText(this._text);rendererText.SetBBCodeEnabled(this._enableBBcode);if(this._rendererText.IsBBCodeEnabled()&&this._iconObjectClass)this._rendererText.SetIconSet(this.GetRuntime().GetTextIconSet(this._iconObjectClass));else this._rendererText.SetIconSet(null);rendererText.SetIconSmoothing(this._runtime.GetSampling()!=="nearest"); +rendererText.SetFontName(this._faceName);rendererText.SetLineHeight(this._lineHeightOffset);rendererText.SetBold(this._isBold);rendererText.SetItalic(this._isItalic);rendererText.SetColor(this._color);rendererText.SetHorizontalAlignment(HORIZONTAL_ALIGNMENTS[this._horizontalAlign]);rendererText.SetVerticalAlignment(VERTICAL_ALIGNMENTS[this._verticalAlign]);rendererText.SetWordWrapMode(this._wrapMode);rendererText.SetTextDirection(TEXT_DIRECTIONS[this._textDirection])}_UpdateTextSize(){const wi=this.GetWorldInfo(); +this._rendererText.SetFontSize(this._ptSize);this._rendererText.SetFontSizeScale(wi.GetSceneGraphScale());const layer=wi.GetLayer();const textZoom=layer.GetRenderScale()*layer.Get2DScaleFactorToZ(wi.GetTotalZElevation());if(wi.HasMesh()&&textZoom!==this._rendererText.GetZoom())wi.SetMeshChanged(true);this._rendererText.SetSize(wi.GetWidth(),wi.GetHeight(),textZoom)}_SetIconObjectClass(objectClass){if(objectClass&&(objectClass.IsFamily()||objectClass.GetPlugin().constructor!==C3.Plugins.Sprite))return; +if(objectClass===this._iconObjectClass)return;if(this._iconObjectClass)this._iconObjectClass.Dispatcher().removeEventListener("animationframeimagechange",this._animationframeimagechange_handler);this._iconObjectClass=objectClass;if(this._iconObjectClass)this._iconObjectClass.Dispatcher().addEventListener("animationframeimagechange",this._animationframeimagechange_handler);this._UpdateTextSettings();this._isHtmlStringUpToDate=false;this._runtime.UpdateRender()}_OnIconObjectClassImageChanged(){this._runtime.DeleteTextIconSet(this._iconObjectClass); +this._runtime.UpdateRender();this._pendingUpdateIconSet=true}_UpdateScreenReaderText(){if(this._readAloud){let text=this._text;if(this._enableBBcode)text=C3.BBString.StripAnyTags(text);if(this._screenReaderText)this._screenReaderText.SetText(text);else this._screenReaderText=C3.New(C3.ScreenReaderText,this._runtime,text)}else if(this._screenReaderText){this._screenReaderText.Release();this._screenReaderText=null}}Draw(renderer){const wi=this.GetWorldInfo();this._UpdateTextSize();if(this._pendingUpdateIconSet){this._pendingUpdateIconSet= +false;if(this._rendererText.IsBBCodeEnabled()&&this._iconObjectClass)this._rendererText.SetIconSet(this.GetRuntime().GetTextIconSet(this._iconObjectClass))}const texture=this._rendererText.GetTexture();if(!texture)return;const layer=wi.GetLayer();if(wi.GetAngle()===0&&layer.GetAngle()===0&&wi.GetTotalZElevation()===0&&!wi.HasMesh()&&layer.RendersIn2DMode()){const quad=wi.GetBoundingQuad();const [dl,dt]=layer.LayerToDrawSurface(quad.getTlx(),quad.getTly());const [dr,db]=layer.LayerToDrawSurface(quad.getBrx(), +quad.getBry());const offX=dl-Math.round(dl);const offY=dt-Math.round(dt);tempRect.set(dl,dt,dr,db);tempRect.offset(-offX,-offY);tempQuad.setFromRect(tempRect);const [rtWidth,rtHeight]=renderer.GetRenderTargetSize(renderer.GetRenderTarget());this._runtime.GetCanvasManager().SetDeviceTransform(renderer,rtWidth,rtHeight);renderer.SetTexture(texture);renderer.Quad3(tempQuad,this._rendererText.GetTexRect());layer._SetTransform(renderer)}else{renderer.SetTexture(texture);if(wi.HasMesh())this._DrawMesh(wi, +renderer);else this._DrawStandard(wi,renderer)}}_DrawStandard(wi,renderer){let quad=wi.GetBoundingQuad();if(this._runtime.IsPixelRoundingEnabled())quad=this._PixelRoundQuad(quad);renderer.Quad3(quad,this._rendererText.GetTexRect())}_DrawMesh(wi,renderer){const transformedMesh=wi.GetTransformedMesh();if(wi.IsMeshChanged()){wi.CalculateBbox(tempRect,tempQuad,false);let quad=tempQuad;if(this._runtime.IsPixelRoundingEnabled())quad=this._PixelRoundQuad(quad);transformedMesh.CalculateTransformedMesh(wi.GetSourceMesh(), +quad,this._rendererText.GetTexRect());wi.SetMeshChanged(false)}transformedMesh.Draw(renderer)}_PixelRoundQuad(quad){const offX=quad.getTlx()-Math.round(quad.getTlx());const offY=quad.getTly()-Math.round(quad.getTly());if(offX===0&&offY===0)return quad;else{tempQuad.copy(quad);tempQuad.offset(-offX,-offY);return tempQuad}}GetCurrentSurfaceSize(){const texture=this._rendererText.GetTexture();if(texture)return[texture.GetWidth(),texture.GetHeight()];else return[100,100]}GetCurrentTexRect(){return this._rendererText.GetTexRect()}IsCurrentTexRotated(){return false}SaveToJson(){const o= +{"t":this._text,"c":this._color.toJSON(),"fn":this._faceName,"ps":this._ptSize};if(this._enableBBcode)o["bbc"]=this._enableBBcode;if(this._horizontalAlign!==0)o["ha"]=this._horizontalAlign;if(this._verticalAlign!==0)o["va"]=this._verticalAlign;if(this._wrapMode!=="word")o["wr"]=this._wrapMode;if(this._lineHeightOffset!==0)o["lho"]=this._lineHeightOffset;if(this._isBold)o["b"]=this._isBold;if(this._isItalic)o["i"]=this._isItalic;if(this._typewriterEndTime!==-1)o["tw"]={"st":this._typewriterStartTime, +"en":this._typewriterEndTime,"l":this._typewriterLength};if(this._iconObjectClass)o["ioc"]=this._iconObjectClass.GetSID();return o}LoadFromJson(o){this._CancelTypewriter();this._text=o["t"],this._color.setFromJSON(o["c"]);this._faceName=o["fn"],this._ptSize=o["ps"];this._enableBBcode=o.hasOwnProperty("bbc")?o["bbc"]:false;this._horizontalAlign=o.hasOwnProperty("ha")?o["ha"]:0;this._verticalAlign=o.hasOwnProperty("va")?o["va"]:0;if(o.hasOwnProperty("wr")){const wr=o["wr"];if(typeof wr==="boolean")this._wrapMode= +wr?"word":"character";else this._wrapMode=wr}else this._wrapMode="word";this._lineHeightOffset=o.hasOwnProperty("lho")?o["lho"]:0;this._isBold=o.hasOwnProperty("b")?o["b"]:false;this._isItalic=o.hasOwnProperty("i")?o["i"]:false;if(o.hasOwnProperty("tw")){const tw=o["tw"];this._typewriterStartTime=tw["st"];this._typewriterEndTime=tw["en"];this._typewriterLength=tw["l"]}if(o.hasOwnProperty("ioc")){const objectClass=this.GetRuntime().GetObjectClassBySID(o["ioc"]);if(objectClass)this._SetIconObjectClass(objectClass)}else this._SetIconObjectClass(null); +this._UpdateTextSettings();this._UpdateScreenReaderText();this._isHtmlStringUpToDate=false;if(this._typewriterEndTime!==-1)this._StartTicking()}GetPropertyValueByIndex(index){switch(index){case TEXT:return this.GetText();case ENABLE_BBCODE:return this._enableBBcode;case FONT:return this._GetFontFace();case SIZE:return this._GetFontSize();case LINE_HEIGHT:return this._GetLineHeight();case BOLD:return this._IsBold();case ITALIC:return this._IsItalic();case COLOR:TEMP_COLOR_ARRAY[0]=this._color.getR(); +TEMP_COLOR_ARRAY[1]=this._color.getG();TEMP_COLOR_ARRAY[2]=this._color.getB();return TEMP_COLOR_ARRAY;case HORIZONTAL_ALIGNMENT:return this._GetHAlign();case VERTICAL_ALIGNMENT:return this._GetVAlign();case WRAPPING:return this._GetWrapMode();case READ_ALOUD:return this._IsReadAloud()}}SetPropertyValueByIndex(index,value){switch(index){case TEXT:this._SetText(value);break;case ENABLE_BBCODE:if(this._enableBBcode===!!value)return;this._enableBBcode=!!value;this._UpdateTextSettings();break;case FONT:this._SetFontFace(value); +break;case SIZE:this._SetFontSize(value);break;case LINE_HEIGHT:this._SetLineHeight(value);break;case BOLD:this._SetBold(value);break;case ITALIC:this._SetItalic(value);break;case COLOR:const c=this._color;const v=value;if(c.getR()===v[0]&&c.getG()===v[1]&&c.getB()===v[2])return;this._color.setRgb(v[0],v[1],v[2]);this._UpdateTextSettings();break;case HORIZONTAL_ALIGNMENT:this._SetHAlign(value);break;case VERTICAL_ALIGNMENT:this._SetVAlign(value);break;case WRAPPING:this._SetWrapMode(value);break}}SetPropertyColorOffsetValueByIndex(index, +r,g,b){if(r===0&&g===0&&b===0)return;switch(index){case COLOR:this._color.addRgb(r,g,b);this._UpdateTextSettings();break}}_SetText(text){if(this._text===text)return;this._text=text;this._rendererText.SetText(text);this._UpdateScreenReaderText();this._isHtmlStringUpToDate=false;this._runtime.UpdateRender()}GetText(){return this._text}_StartTypewriter(text,duration){this._UpdateTextSize();this._SetText(text);this._typewriterStartTime=this._runtime.GetWallTime();this._typewriterEndTime=this._typewriterStartTime+ +duration/this.GetInstance().GetActiveTimeScale();this._typewriterLength=this._rendererText.GetLengthInGraphemes();this._rendererText.SetDrawMaxCharacterCount(0);this._StartTicking()}_CancelTypewriter(){this._typewriterStartTime=-1;this._typewriterEndTime=-1;this._typewriterLength=0;this._rendererText.SetDrawMaxCharacterCount(-1);this._StopTicking()}_FinishTypewriter(){if(this._typewriterEndTime===-1)return;this._CancelTypewriter();this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished);this._runtime.UpdateRender()}_SetFontFace(face){if(this._faceName=== +face)return;this._faceName=face;this._rendererText.SetFontName(face);this._runtime.UpdateRender()}_GetFontFace(){return this._faceName}_SetBold(b){b=!!b;if(this._isBold===b)return;this._isBold=b;this._rendererText.SetBold(b);this._runtime.UpdateRender()}_IsBold(){return this._isBold}_SetItalic(i){i=!!i;if(this._isItalic===i)return;this._isItalic=i;this._rendererText.SetItalic(i);this._runtime.UpdateRender()}_IsItalic(){return this._isItalic}_SetFontSize(size){if(this._ptSize===size)return;this._ptSize= +size;this._runtime.UpdateRender()}_GetFontSize(){return this._ptSize}_SetFontColor(color){if(this._color.equalsIgnoringAlpha(color))return;this._color.copyRgb(color);this._rendererText.SetColor(this._color);this._runtime.UpdateRender()}_GetFontColor(){return this._color}_SetLineHeight(lho){if(this._lineHeightOffset===lho)return;this._lineHeightOffset=lho;this._UpdateTextSettings();this._runtime.UpdateRender()}_GetLineHeight(){return this._lineHeightOffset}_SetHAlign(h){if(this._horizontalAlign=== +h)return;this._horizontalAlign=h;this._UpdateTextSettings();this._runtime.UpdateRender()}_GetHAlign(){return this._horizontalAlign}_SetVAlign(v){if(this._verticalAlign===v)return;this._verticalAlign=v;this._UpdateTextSettings();this._runtime.UpdateRender()}_GetVAlign(){return this._verticalAlign}_SetWrapModeByIndex(i){this._SetWrapMode(WORD_WRAP_MODES[i])}_SetWrapMode(w){if(this._wrapMode===w)return;this._wrapMode=w;this._UpdateTextSettings();this._runtime.UpdateRender()}_GetWrapMode(){return this._wrapMode}_SetTextDirection(d){if(this._textDirection=== +d)return;this._textDirection=d;this._UpdateTextSettings();this._runtime.UpdateRender()}_GetTextDirection(){return this._textDirection}_SetReadAloud(r){this._readAloud=!!r;this._UpdateScreenReaderText()}_IsReadAloud(){return this._readAloud}_GetTextWidth(){this._UpdateTextSize();return this._rendererText.GetTextWidth()}_GetTextHeight(){this._UpdateTextSize();return this._rendererText.GetTextHeight()}_GetTagAtPosition(x,y){this._UpdateTextSize();const wi=this.GetWorldInfo();tempVec2.set(x-wi.GetX(), +y-wi.GetY());tempVec2.rotate(-wi.GetAngle());tempVec2.offset(wi.GetWidth()*wi.GetOriginX(),wi.GetHeight()*wi.GetOriginY());tempVec2.divide(wi.GetWidth(),wi.GetHeight());tempVec2.scale(this._rendererText.GetWidth(),this._rendererText.GetHeight());const frag=this._rendererText.HitTestFragment(tempVec2.getX(),tempVec2.getY());if(frag){const fragTagStyle=frag.GetStyleTag("tag");if(fragTagStyle)return fragTagStyle.param}return""}_HasTagAtPosition(tag,x,y){const hitTag=this._GetTagAtPosition(x,y);return hitTag&& +C3.equalsNoCase(tag,hitTag)}_GetTagPosition(tag,index){this._UpdateTextSize();index=Math.floor(index);const frag=this._rendererText.FindFragmentWithTag(tag,index);if(!frag)return null;const wi=this.GetWorldInfo();const scale=this._rendererText.GetDrawScale();const posX=frag.GetPosX();const posY=frag.GetPosY()-(frag.GetHeight()-frag.GetFontBoundingBoxDescent())*scale;const width=frag.GetWidth()*scale/this._rendererText.GetWidth()*wi.GetWidth();const height=frag.GetHeight()*scale/this._rendererText.GetHeight()* +wi.GetHeight();tempVec2.set(posX,posY);tempVec2.divide(this._rendererText.GetWidth(),this._rendererText.GetHeight());tempVec2.scale(wi.GetWidth(),wi.GetHeight());tempVec2.offset(-wi.GetWidth()*wi.GetOriginX(),-wi.GetHeight()*wi.GetOriginY());tempVec2.rotate(wi.GetAngle());tempVec2.offset(wi.GetX(),wi.GetY());return{x:tempVec2.getX(),y:tempVec2.getY(),width,height}}_GetTagCount(tag){this._UpdateTextSize();return this._rendererText.CountFragmentsWithTag(tag)}_GetHTMLCloseTag(bbTag){let htmlTag=BBCODE_TAG_TO_HTML.get(bbTag); +if(htmlTag===null)return"";else if(!htmlTag)htmlTag="span";return``}_GetHTMLOpenTag(bbTag,param){let htmlTag=BBCODE_TAG_TO_HTML.get(bbTag);if(htmlTag===null)return"";else if(!htmlTag)htmlTag="span";switch(bbTag){case "color":return`<${htmlTag} style="color: ${param}">`;case "font":return`<${htmlTag} style="font-family: '${param}'">`;case "opacity":return`<${htmlTag} style="opacity: ${param}%">`;case "size":return`<${htmlTag} style="font-size: ${param}pt">`;case "background":return`<${htmlTag} style="background-color: ${param}">`; +case "hide":return`<${htmlTag} style="visibility: hidden">`;case "class":return`<${htmlTag} class="${param}">`;case "tag":return`<${htmlTag} data-tag="${param}">`;default:return`<${htmlTag}>`}}async _UpdateHTMLString(){if(this._isHtmlStringUpToDate)return this._htmlString;const fragList=(new C3.BBString(this._text,{noEscape:true})).toFragmentList();const iconBlobUrls=new Map;let htmlStr=``;const textIconSet=this._iconObjectClass?this.GetRuntime().GetTextIconSet(this._iconObjectClass):null;if(this._iconObjectClass){const promiseThrottle=C3.New(C3.PromiseThrottle);const assetDrawablePromises=[];const assetDrawableMap=new Map;for(const frag of fragList)if(frag.IsIcon()){const textIcon=frag.GetTextIcon(textIconSet);if(textIcon){const frame= +textIcon.GetSource();const imageAsset=frame.GetImageInfo().GetImageAsset();if(assetDrawableMap.has(imageAsset))continue;assetDrawableMap.set(imageAsset,null);assetDrawablePromises.push(promiseThrottle.Add(async()=>{const drawable=await imageAsset.LoadToDrawable();assetDrawableMap.set(imageAsset,drawable)}))}}await Promise.all(assetDrawablePromises);const blobUrlPromises=[];for(const frag of fragList)if(frag.IsIcon()){const textIcon=frag.GetTextIcon(textIconSet);if(textIcon){const frame=textIcon.GetSource(); +const imageAsset=frame.GetImageInfo().GetImageAsset();blobUrlPromises.push(promiseThrottle.Add(async()=>{const blobUrl=await frame.GetImageInfo().ExtractImageToBlobURL(assetDrawableMap.get(imageAsset));iconBlobUrls.set(textIcon,blobUrl)}))}}await Promise.all(blobUrlPromises);for(const drawable of assetDrawableMap.values())if(drawable instanceof ImageBitmap&&drawable["close"])drawable["close"]()}const openTags=new Map;for(const frag of fragList){const fragTags=frag.GetStyleMap();let revKeys=[...openTags.keys()]; +revKeys.reverse();for(const bbTag of revKeys)if(!fragTags.has(bbTag)||fragTags.get(bbTag)!==openTags.get(bbTag)){openTags.delete(bbTag);htmlStr+=this._GetHTMLCloseTag(bbTag)}for(const [bbTag,param]of fragTags)if(!openTags.has(bbTag)){openTags.set(bbTag,param);htmlStr+=this._GetHTMLOpenTag(bbTag,param)}if(frag.IsText())htmlStr+=C3.ReplaceAll(C3.EscapeHTML(frag.GetCharacterArray().join("")),"\n","
");if(frag.IsIcon()&&textIconSet){const textIcon=frag.GetTextIcon(textIconSet);if(textIcon){const blobUrl= +iconBlobUrls.get(textIcon);if(blobUrl){const styles=[];let topStyle="0.2em";const iconOffsetYStyle=fragTags.get("iconoffsety");if(iconOffsetYStyle){let param=iconOffsetYStyle.trim();if(param.endsWith("%"))topStyle=parseFloat(param)/100+"em";else topStyle=param+"px"}styles.push(`top: ${topStyle}`);if(this._runtime.GetSampling()==="nearest")styles.push("image-rendering: pixelated");htmlStr+=``}}}}const revKeys= +[...openTags.keys()];revKeys.reverse();for(const tag of revKeys)htmlStr+=this._GetHTMLCloseTag(tag);htmlStr+="
";this._htmlString=htmlStr;this._isHtmlStringUpToDate=true;return this._htmlString}Tick(){const wallTime=this._runtime.GetWallTime();if(wallTime>=this._typewriterEndTime){this._CancelTypewriter();this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished);this._runtime.UpdateRender()}else{let displayLength=C3.relerp(this._typewriterStartTime,this._typewriterEndTime,wallTime,0,this._typewriterLength); +displayLength=Math.floor(displayLength);if(displayLength!==this._rendererText.GetDrawMaxCharacterCount()){this._rendererText.SetDrawMaxCharacterCount(displayLength);this._runtime.UpdateRender()}}}GetDebuggerProperties(){const prefix="plugins.text";return[{title:prefix+".name",properties:[{name:prefix+".properties.text.name",value:this.GetText(),onedit:v=>this._SetText(v)},{name:prefix+".properties.font.name",value:this._GetFontFace(),onedit:v=>this._SetFontFace(v)},{name:prefix+".properties.size.name", +value:this._GetFontSize(),onedit:v=>this._SetFontSize(v)},{name:prefix+".properties.line-height.name",value:this._GetLineHeight(),onedit:v=>this._SetLineHeight(v)},{name:prefix+".properties.bold.name",value:this._IsBold(),onedit:v=>this._SetBold(v)},{name:prefix+".properties.italic.name",value:this._IsItalic(),onedit:v=>this._SetItalic(v)}]}]}GetScriptInterfaceClass(){return self.ITextInstance}};const map=new WeakMap;const SCRIPT_HORIZONTAL_ALIGNMENTS=new Map([["left",0],["center",1],["right",2]]); +const SCRIPT_VERTICAL_ALIGNMENTS=new Map([["top",0],["center",1],["bottom",2]]);const SCRIPT_TEXT_DIRECTIONS=["ltr","rtl"];self.ITextInstance=class ITextInstance extends self.IWorldInstance{constructor(){super();map.set(this,self.IInstance._GetInitInst().GetSdkInstance())}get text(){return map.get(this).GetText()}set text(str){C3X.RequireString(str);const inst=map.get(this);inst._CancelTypewriter();inst._SetText(str)}typewriterText(str,duration){C3X.RequireString(str);C3X.RequireFiniteNumber(duration); +const inst=map.get(this);inst._CancelTypewriter();inst._StartTypewriter(str,duration)}typewriterFinish(){map.get(this)._FinishTypewriter()}set fontFace(str){C3X.RequireString(str);map.get(this)._SetFontFace(str)}get fontFace(){return map.get(this)._GetFontFace()}set isBold(b){map.get(this)._SetBold(b)}get isBold(){return map.get(this)._IsBold()}set isItalic(i){map.get(this)._SetItalic(i)}get isItalic(){return map.get(this)._IsItalic()}set sizePt(pt){C3X.RequireFiniteNumber(pt);map.get(this)._SetFontSize(pt)}get sizePt(){return map.get(this)._GetFontSize()}set fontColor(arr){C3X.RequireArray(arr); +if(arr.length<3)throw new Error("expected 3 elements");tempColor.setRgb(arr[0],arr[1],arr[2]);map.get(this)._SetFontColor(tempColor)}get fontColor(){const c=map.get(this)._GetFontColor();return[c.getR(),c.getG(),c.getB()]}set lineHeight(lho){C3X.RequireFiniteNumber(lho);map.get(this)._SetLineHeight(lho)}get lineHeight(){return map.get(this)._GetLineHeight()}set horizontalAlign(str){C3X.RequireString(str);const h=SCRIPT_HORIZONTAL_ALIGNMENTS.get(str);if(typeof h==="undefined")throw new Error("invalid mode"); +map.get(this)._SetHAlign(h)}get horizontalAlign(){return HORIZONTAL_ALIGNMENTS[map.get(this)._GetHAlign()]}set verticalAlign(str){C3X.RequireString(str);const v=SCRIPT_VERTICAL_ALIGNMENTS.get(str);if(typeof v==="undefined")throw new Error("invalid mode");map.get(this)._SetVAlign(v)}get verticalAlign(){return VERTICAL_ALIGNMENTS[map.get(this)._GetVAlign()]}set wordWrapMode(m){if(!WORD_WRAP_MODES.includes(m))throw new Error("invalid mode");map.get(this)._SetWrapMode(m)}get wordWrapMode(){return map.get(this)._GetWrapMode()}set textDirection(ds){C3X.RequireString(ds); +const d=SCRIPT_TEXT_DIRECTIONS.indexOf(ds);if(d===-1)throw new Error("invalid text direction");map.get(this)._SetTextDirection(d)}get textDirection(){return SCRIPT_TEXT_DIRECTIONS[map.get(this)._GetTextDirection()]}set readAloud(r){map.get(this)._SetReadAloud(!!r)}get readAloud(){return map.get(this)._IsReadAloud()}get textWidth(){return map.get(this)._GetTextWidth()}get textHeight(){return map.get(this)._GetTextHeight()}getTextSize(){const inst=map.get(this);return[inst._GetTextWidth(),inst._GetTextHeight()]}hasTagAtPosition(tag, +x,y){C3X.RequireString(tag);C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);return map.get(this)._HasTagAtPosition(tag,x,y)}getTagAtPosition(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);return map.get(this)._GetTagAtPosition(x,y)}getTagPositionAndSize(tag,index=0){C3X.RequireString(tag);C3X.RequireFiniteNumber(index);return map.get(this)._GetTagPosition(tag,index)}getTagCount(tag){C3X.RequireString(tag);return map.get(this)._GetTagCount(tag)}changeIconSet(iObjectClass){const sdkInst= +map.get(this);const objectClass=sdkInst.GetRuntime()._UnwrapIObjectClass(iObjectClass);sdkInst._SetIconObjectClass(objectClass)}getAsHtmlString(){return map.get(this)._UpdateHTMLString()}}} +{const C3=self.C3;C3.Plugins.Text.Cnds={CompareText(str,caseSensitive){if(caseSensitive)return this._text===str;else return C3.equalsNoCase(this._text,str)},IsRunningTypewriterText(){return this._typewriterEndTime!==-1},OnTypewriterTextFinished(){return true},HasTagAtPosition(tag,x,y){return this._HasTagAtPosition(tag,x,y)}}} +{const C3=self.C3;const tempColor=C3.New(C3.Color);C3.Plugins.Text.Acts={SetText(param){this._CancelTypewriter();if(typeof param==="number"&¶m<1E9)param=Math.round(param*1E10)/1E10;this._SetText(param.toString())},AppendText(param){this._CancelTypewriter();if(typeof param==="number"&¶m<1E9)param=Math.round(param*1E10)/1E10;param=param.toString();if(!param)return;this._SetText(this._text+param)},TypewriterText(param,duration){this._CancelTypewriter();if(typeof param==="number"&¶m<1E9)param= +Math.round(param*1E10)/1E10;this._StartTypewriter(param.toString(),duration)},SetFontFace(face,style){let bold=false;let italic=false;switch(style){case 1:bold=true;break;case 2:italic=true;break;case 3:bold=true;italic=true;break}if(face===this._faceName&&bold===this._isBold&&italic===this._isItalic)return;this._SetFontFace(face);this._SetBold(bold);this._SetItalic(italic)},SetFontSize(size){this._SetFontSize(size)},SetFontColor(rgb){tempColor.setFromRgbValue(rgb);tempColor.clamp();this._SetFontColor(tempColor)}, +SetWebFont(familyName,cssUrl){console.warn("[Text] 'Set web font' action is deprecated and no longer has any effect")},SetEffect(effect){this.GetWorldInfo().SetBlendMode(effect);this._runtime.UpdateRender()},TypewriterFinish(){this._FinishTypewriter()},SetLineHeight(lho){this._SetLineHeight(lho)},SetHAlign(h){this._SetHAlign(h)},SetVAlign(v){this._SetVAlign(v)},SetWrapping(i){this._SetWrapModeByIndex(i)},SetTextDirection(d){this._SetTextDirection(d)},ChangeIconSet(objectClass){this._SetIconObjectClass(objectClass)}, +UpdateHTML(){return this._UpdateHTMLString()},SetReadAloud(r){this._SetReadAloud(r)}}} +{const C3=self.C3;C3.Plugins.Text.Exps={Text(){return this._text},PlainText(){if(this._enableBBcode)return C3.BBString.StripAnyTags(this._text);else return this._text},FaceName(){return this._faceName},FaceSize(){return this._ptSize},TextWidth(){return this._GetTextWidth()},TextHeight(){return this._GetTextHeight()},LineHeight(){return this._lineHeightOffset},TagAtPosition(x,y){return this._GetTagAtPosition(x,y)},TagCount(tag){return this._GetTagCount(tag)},TagX(tag,index){const ret=this._GetTagPosition(tag, +index);return ret?ret.x:0},TagY(tag,index){const ret=this._GetTagPosition(tag,index);return ret?ret.y:0},TagWidth(tag,index){const ret=this._GetTagPosition(tag,index);return ret?ret.width:0},TagHeight(tag,index){const ret=this._GetTagPosition(tag,index);return ret?ret.height:0},AsHTML(){return this._htmlString}}}; + +} + +// scripts/plugins/LocalStorage/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Plugins.LocalStorage=class LocalStoragePlugin extends C3.SDKPluginBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Plugins.LocalStorage.Type=class LocalStorageType extends C3.SDKTypeBase{constructor(objectClass){super(objectClass)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const DOM_COMPONENT_ID="localstorage";C3.Plugins.LocalStorage.Instance=class LocalStorageInstance extends C3.SDKInstanceBase{constructor(inst,properties){super(inst,DOM_COMPONENT_ID);this._currentKey="";this._lastValue="";this._keyNamesList=[];this._errorMessage="";this._isPersistent=false;this._pendingGets=0;this._pendingSets=0;this._storage=this._runtime._GetProjectStorage();this._debugCache=new Map;this._isLoadingDebugCache=false;this._runtime.AddLoadPromise(this._Init())}async _Init(){const result= +await Promise.race([this.PostToDOMAsync("init"),C3.Wait(3E3)]);if(result)this._isPersistent=result["isPersistent"]}Release(){super.Release()}async _TriggerStorageError(err){this._errorMessage=this._GetErrorString(err);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnError)}_GetErrorString(err){if(!err)return"unknown error";else if(typeof err==="string")return err;else if(typeof err.message==="string")return err.message;else if(typeof err.name==="string")return err.name;else if(typeof err.data=== +"string")return err.data;else return"unknown error"}GetDebuggerProperties(){if(!this._isLoadingDebugCache)this._DebugCacheStorage();return[{title:"plugins.localstorage.name",properties:[...this._debugCache.entries()].map(entry=>({name:"$"+entry[0],value:entry[1],onedit:v=>this._storage.setItem(entry[0],v)}))}]}async _DebugCacheStorage(){this._isLoadingDebugCache=true;try{const keyList=await this._storage.keys();keyList.sort((a,b)=>{const la=a.toLowerCase();const lb=b.toLowerCase();if(lathis._storage.getItem(key)));this._debugCache.clear();for(let i=0,len=keyList.length;i0},IsProcessingGets(){return this._pendingGets>0},OnAllSetsComplete(){return true},OnAllGetsComplete(){return true},IsPersistent(){return this._isPersistent}}} +{const C3=self.C3;function IsExpressionType(x){return typeof x==="string"||typeof x==="number"}C3.Plugins.LocalStorage.Acts={async SetItem(key,value){this._pendingSets++;try{const valueSet=await this._storage.setItem(key,value);await this.ScheduleTriggers(async()=>{this._currentKey=key;this._lastValue=valueSet;await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAnyItemSet);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemSet)})}catch(err){await this._TriggerStorageError(err)}finally{this._pendingSets--; +if(this._pendingSets===0)await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAllSetsComplete)}},async SetBinaryItem(key,objectClass){if(!objectClass)return;const inst=objectClass.GetFirstPicked(this._inst);if(!inst)return;const sdkInst=inst.GetSdkInstance();if(!sdkInst)return;const buffer=sdkInst.GetArrayBufferReadOnly();this._pendingSets++;try{await this._storage.setItem(key,buffer);await this.ScheduleTriggers(async()=>{this._currentKey=key;this._lastValue="";await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAnyItemSet); +await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemSet)})}catch(err){await this._TriggerStorageError(err)}finally{this._pendingSets--;if(this._pendingSets===0)await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAllSetsComplete)}},async GetItem(key){this._pendingGets++;try{const value=await this._storage.getItem(key);await this.ScheduleTriggers(async()=>{this._currentKey=key;this._lastValue=IsExpressionType(value)?value:"";await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAnyItemGet); +await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemGet)})}catch(err){await this._TriggerStorageError(err)}finally{this._pendingGets--;if(this._pendingGets===0)await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAllGetsComplete)}},async GetBinaryItem(key,objectClass){if(!objectClass)return;const inst=objectClass.GetFirstPicked(this._inst);if(!inst)return;const sdkInst=inst.GetSdkInstance();this._pendingGets++;try{let value=await this._storage.getItem(key);value=value instanceof ArrayBuffer? +value:new ArrayBuffer(0);await this.ScheduleTriggers(async()=>{this._lastValue="";this._currentKey=key;sdkInst.SetArrayBufferTransfer(value);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAnyItemGet);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemGet)})}catch(err){await this._TriggerStorageError(err)}finally{this._pendingGets--;if(this._pendingGets===0)await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAllGetsComplete)}},async CheckItemExists(key){try{const value=await this._storage.getItem(key); +await this.ScheduleTriggers(async()=>{this._currentKey=key;if(typeof value==="undefined"||value===null){this._lastValue="";await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemMissing)}else{this._lastValue=IsExpressionType(value)?value:"";await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemExists)}})}catch(err){await this._TriggerStorageError(err)}},async RemoveItem(key){try{await this._storage.removeItem(key);await this.ScheduleTriggers(async()=>{this._currentKey=key;this._lastValue= +"";await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAnyItemRemoved);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnItemRemoved)})}catch(err){await this._TriggerStorageError(err)}},async ClearStorage(){try{await this._storage.clear();await this.ScheduleTriggers(async()=>{this._currentKey="";this._lastValue="";C3.clearArray(this._keyNamesList);await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnCleared)})}catch(err){await this._TriggerStorageError(err)}},async GetAllKeyNames(){try{const keyList= +await this._storage.keys();await this.ScheduleTriggers(async()=>{this._keyNamesList=keyList;await this.TriggerAsync(C3.Plugins.LocalStorage.Cnds.OnAllKeyNamesLoaded)})}catch(err){await this._TriggerStorageError(err)}},async RequestPersistent(){const result=await this.PostToDOMAsync("request-persistent");if(result["isOk"])this._isPersistent=result["isPersistent"]}}} +{const C3=self.C3;C3.Plugins.LocalStorage.Exps={ItemValue(){return this._lastValue},Key(){return this._currentKey},KeyCount(){return this._keyNamesList.length},KeyAt(i){i=Math.floor(i);if(i<0||i>=this._keyNamesList.length)return"";return this._keyNamesList[i]},ErrorMessage(){return this._errorMessage}}}; + +} + +// scripts/behaviors/solid/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.solid=class SolidBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.solid.Type=class SolidType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const ENABLE=0;const TAGS=1;const EMPTY_SET=new Set;C3.Behaviors.solid.Instance=class SolidInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this.SetEnabled(true);if(properties){this.SetEnabled(properties[ENABLE]);this.SetTags(properties[TAGS])}}Release(){super.Release()}SetEnabled(e){this._inst._SetSolidEnabled(!!e)}IsEnabled(){return this._inst._IsSolidEnabled()}SetTags(tagList){const savedDataMap= +this._inst.GetSavedDataMap();if(!tagList.trim()){savedDataMap.delete("solidTags");return}let solidTags=savedDataMap.get("solidTags");if(!solidTags){solidTags=new Set;savedDataMap.set("solidTags",solidTags)}solidTags.clear();for(const tag of tagList.split(" "))if(tag)solidTags.add(tag.toLowerCase())}GetTags(){return this._inst.GetSavedDataMap().get("solidTags")||EMPTY_SET}_GetTagsString(){return[...this.GetTags()].join(" ")}SaveToJson(){return{"e":this.IsEnabled()}}LoadFromJson(o){this.SetEnabled(o["e"])}GetPropertyValueByIndex(index){switch(index){case ENABLE:return this.IsEnabled()}}SetPropertyValueByIndex(index, +value){switch(index){case ENABLE:this.SetEnabled(value);break}}GetDebuggerProperties(){return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:"behaviors.solid.properties.enabled.name",value:this.IsEnabled(),onedit:v=>this.SetEnabled(v)},{name:"behaviors.solid.properties.tags.name",value:this._GetTagsString(),onedit:v=>this.SetTags(v)}]}]}GetScriptInterfaceClass(){return self.ISolidBehaviorInstance}};const map=new WeakMap;self.ISolidBehaviorInstance=class ISolidBehaviorInstance extends IBehaviorInstance{constructor(){super(); +map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}set isEnabled(e){map.get(this).SetEnabled(!!e)}get isEnabled(){return map.get(this).IsEnabled()}set tags(str){C3X.RequireString(str);map.get(this).SetTags(str)}get tags(){return map.get(this)._GetTagsString()}}}{const C3=self.C3;C3.Behaviors.solid.Cnds={IsEnabled(){return this.IsEnabled()}}}{const C3=self.C3;C3.Behaviors.solid.Acts={SetEnabled(e){this.SetEnabled(e)},SetTags(tagList){this.SetTags(tagList)}}} +{const C3=self.C3;C3.Behaviors.solid.Exps={}}; + +} + +// scripts/behaviors/Turret/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Turret=class TurretBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Turret.Type=class TurretType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType);this._targetTypes=[]}Release(){C3.clearArray(this._targetTypes);super.Release()}OnCreate(){}GetTargetTypes(){return this._targetTypes}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const RANGE=0;const RATE_OF_FIRE=1;const ROTATE=2;const ROTATE_SPEED=3;const TARGET_MODE=4;const PREDICTIVE_AIM=5;const PROJECTILE_SPEED=6;const USE_COLLISION_CELLS=7;const ENABLED=8;const tmpRect=C3.New(C3.Rect);const candidates=[];C3.Behaviors.Turret.Instance=class TurretInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._range=300;this._rateOfFire=1;this._isRotateEnabled= +true;this._rotateSpeed=C3.toRadians(180);this._targetMode=0;this._predictiveAim=false;this._projectileSpeed=500;this._useCollisionCells=true;this._isEnabled=true;this._lastCheckTime=0;this._fireTimeCount=0;this._currentTarget=null;this._loadTargetUid=-1;this._oldTargetX=0;this._oldTargetY=0;this._lastSpeeds=[0,0,0,0];this._speedsCount=0;this._firstTickWithTarget=true;if(properties){this._range=properties[RANGE];this._rateOfFire=properties[RATE_OF_FIRE];this._isRotateEnabled=!!properties[ROTATE];this._rotateSpeed= +C3.toRadians(properties[ROTATE_SPEED]);this._targetMode=properties[TARGET_MODE];this._predictiveAim=!!properties[PREDICTIVE_AIM];this._projectileSpeed=properties[PROJECTILE_SPEED];this._useCollisionCells=!!properties[USE_COLLISION_CELLS];this._isEnabled=!!properties[ENABLED]}this._fireTimeCount=this._rateOfFire;const rt=this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(rt,"instancedestroy",e=>this._OnInstanceDestroyed(e.instance)),C3.Disposable.From(rt,"afterload", +e=>this._OnAfterLoad()));if(this._isEnabled)this._StartTicking()}Release(){this._currentTarget=null;super.Release()}_OnAfterLoad(){if(this._loadTargetUid===-1)this._currentTarget=null;else this._currentTarget=this._runtime.GetInstanceByUID(this._loadTargetUid)}_OnInstanceDestroyed(inst){if(this._currentTarget===inst)this._currentTarget=null}_MaybeAcquireTargetInstance(inst){if(this._currentTarget!==inst&&this._inst!==inst&&this.IsInRange(inst)){this._currentTarget=inst;this._OnTargetAcquired();return true}return false}_UnacquireTarget(){this._currentTarget= +null;this._speedsCount=0;this._firstTickWithTarget=true}_SetRange(r){this._range=r}_GetRange(){return this._range}_SetRateOfFire(r){this._rateOfFire=r}_GetRateOfFire(){return this._rateOfFire}_SetRotateEnabled(r){this._isRotateEnabled=!!r}_IsRotateEnabled(){return this._isRotateEnabled}_SetRotateSpeed(r){this._rotateSpeed=r}_GetRotateSpeed(){return this._rotateSpeed}_SetTargetMode(m){this._targetMode=m}_GetTargetMode(){return this._targetMode}_SetPredictiveAim(p){this._predictiveAim=!!p}_IsPredictiveAim(){return this._predictiveAim}_SetProjectileSpeed(s){this._projectileSpeed= +s}_GetProjectileSpeed(){return this._projectileSpeed}_SetEnabled(e){this._isEnabled=!!e;if(this._isEnabled)this._StartTicking();else this._StopTicking()}_IsEnabled(){return this._isEnabled}SaveToJson(){return{"r":this._range,"rof":this._rateOfFire,"re":this._isRotateEnabled,"rs":this._rotateSpeed,"tm":this._targetMode,"pa":this._predictiveAim,"ps":this._projectileSpeed,"ucc":this._useCollisionCells,"e":this._isEnabled,"lct":this._lastCheckTime,"ftc":this._fireTimeCount,"t":this._currentTarget?this._currentTarget.GetUID(): +-1,"ox":this._oldTargetX,"oy":this._oldTargetY,"ls":this._lastSpeeds,"sc":this._speedsCount,"targs":this.GetSdkType().GetTargetTypes().map(t=>t.GetSID())}}LoadFromJson(o){this._range=o["r"];this._rateOfFire=o["rof"];this._isRotateEnabled=o["re"];this._rotateSpeed=o["rs"];this._targetMode=o["tm"];this._predictiveAim=o["pa"];this._projectileSpeed=o["ps"];this._useCollisionCells=o["ucc"];this._SetEnabled(o["e"]);this._lastCheckTime=o["lct"];this._fireTimeCount=o["ftc"];this._loadTargetUid=o["t"];this._oldTargetX= +o["ox"];this._oldTargetY=o["oy"];this._lastSpeeds=o["ls"];this._speedsCount=o["sc"];const targetTypes=this.GetSdkType().GetTargetTypes();C3.clearArray(targetTypes);for(const sid of o["targs"]){const objectClass=this._runtime.GetObjectClassBySID(sid);if(objectClass)targetTypes.push(objectClass)}}AddSpeed(s){if(this._speedsCount<4){this._lastSpeeds[this._speedsCount]=s;this._speedsCount++}else{this._lastSpeeds.shift();this._lastSpeeds.push(s)}}GetSpeed(){let ret=0;for(let i=0;i=this._lastCheckTime+.1){this._lastCheckTime=nowTime;if(this._targetMode===0&&!this._currentTarget){this.LookForFirstTarget();if(this._currentTarget)this._OnTargetAcquired()}else if(this._targetMode===1){const oldTarget=this._currentTarget; +this.LookForNearestTarget();if(this._currentTarget&&this._currentTarget!==oldTarget)this._OnTargetAcquired()}}this._fireTimeCount+=dt;if(this._currentTarget){let targetWi=this._currentTarget.GetWorldInfo();let targetAngle=C3.angleTo(wi.GetX(),wi.GetY(),targetWi.GetX(),targetWi.GetY());if(this._predictiveAim){const Gx=wi.GetX();const Gy=wi.GetY();const Px=targetWi.GetX();const Py=targetWi.GetY();const h=C3.angleTo(Px,Py,this._oldTargetX,this._oldTargetY);if(!this._firstTickWithTarget)this.AddSpeed(C3.distanceTo(Px, +Py,this._oldTargetX,this._oldTargetY)/dt);const s=this.GetSpeed();const q=Py-Gy;const r=Px-Gx;const w=(s*Math.sin(h)*(Gx-Px)-s*Math.cos(h)*(Gy-Py))/this._projectileSpeed;const a=Math.asin(w/Math.hypot(q,r))-Math.atan2(q,-r)+Math.PI;if(!isNaN(a))targetAngle=a}if(this._isRotateEnabled){wi.SetAngle(C3.angleRotate(wi.GetAngle(),targetAngle,this._rotateSpeed*dt));wi.SetBboxChanged()}if(this._fireTimeCount>=this._rateOfFire&&(!this._isRotateEnabled||C3.toDegrees(C3.angleDiff(wi.GetAngle(),targetAngle))<= +.1)&&(!this._predictiveAim||this._speedsCount>=4)){this._fireTimeCount-=this._rateOfFire;if(this._fireTimeCount>=this._rateOfFire)this._fireTimeCount=0;this.DispatchScriptEvent("shoot",false,{targetInst:this._currentTarget.GetInterfaceClass()});this.Trigger(C3.Behaviors.Turret.Cnds.OnShoot)}if(this._currentTarget){targetWi=this._currentTarget.GetWorldInfo();this._oldTargetX=targetWi.GetX();this._oldTargetY=targetWi.GetY()}this._firstTickWithTarget=false}if(this._fireTimeCount>this._rateOfFire)this._fireTimeCount= +this._rateOfFire}GetPropertyValueByIndex(index){switch(index){case RANGE:return this._GetRange();case RATE_OF_FIRE:return this._GetRateOfFire();case ROTATE:return this._IsRotateEnabled();case ROTATE_SPEED:return C3.toDegrees(this._GetRotateSpeed());case TARGET_MODE:return this._GetTargetMode();case PREDICTIVE_AIM:return this._IsPredictiveAim();case PROJECTILE_SPEED:return this._GetProjectileSpeed();case USE_COLLISION_CELLS:return this._useCollisionCells;case ENABLED:return this._IsEnabled()}}SetPropertyValueByIndex(index, +value){switch(index){case RANGE:this._SetRange(value);break;case RATE_OF_FIRE:this._SetRateOfFire(value);break;case ROTATE:this._SetRotateEnabled(!!value);break;case ROTATE_SPEED:if(!this._IsRotateEnabled())return;this._SetRotateSpeed(C3.toRadians(value));break;case TARGET_MODE:this._SetTargetMode(value);break;case PREDICTIVE_AIM:this._SetPredictiveAim(!!value);break;case PROJECTILE_SPEED:if(!this._IsPredictiveAim())return;this._SetProjectileSpeed(value);break;case USE_COLLISION_CELLS:this._useCollisionCells= +!!value;break;case ENABLED:this._SetEnabled(value);break}}GetDebuggerProperties(){const prefix="behaviors.turret";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".properties.range.name",value:this._GetRange(),onedit:v=>this._SetRange(v)},{name:prefix+".properties.rate-of-fire.name",value:this._GetRateOfFire(),onedit:v=>this._SetRateOfFire(v)},{name:prefix+".properties.rotate-speed.name",value:C3.toDegrees(this._GetRotateSpeed()),onedit:v=>this._SetRotateSpeed(C3.toRadians(v))}, +{name:prefix+".properties.predictive-aim.name",value:this._IsPredictiveAim(),onedit:v=>this._SetPredictiveAim(v)},{name:prefix+".properties.projectile-speed.name",value:this._GetProjectileSpeed(),onedit:v=>this._SetProjectileSpeed(v)},{name:prefix+".debugger.has-target",value:!!this._currentTarget},{name:prefix+".debugger.target-uid",value:this._currentTarget?this._currentTarget.GetUID():0},{name:prefix+".properties.enabled.name",value:this._IsEnabled(),onedit:v=>this._SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.ITurretBehaviorInstance}}; +const map=new WeakMap;const VALID_TARGET_MODES=["first","nearest"];self.ITurretBehaviorInstance=class ITurretBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}get currentTarget(){const t=map.get(this)._currentTarget;return t?t.GetInterfaceClass():null}set currentTarget(iinst){const inst=map.get(this);if(iinst)inst._MaybeAcquireTargetInstance(inst.GetRuntime()._UnwrapIWorldInstance(iinst));else inst._UnacquireTarget()}get range(){return map.get(this)._GetRange()}set range(r){C3X.RequireFiniteNumber(r); +map.get(this)._SetRange(r)}get rateOfFire(){return map.get(this)._GetRateOfFire()}set rateOfFire(r){C3X.RequireFiniteNumber(r);map.get(this)._SetRateOfFire(r)}get isRotateEnabled(){return map.get(this)._IsRotateEnabled()}set isRotateEnabled(r){map.get(this)._SetRotateEnabled(!!r)}get rotateSpeed(){return map.get(this)._GetRotateSpeed()}set rotateSpeed(r){C3X.RequireFiniteNumber(r);map.get(this)._SetRotateSpeed(r)}get targetMode(){return VALID_TARGET_MODES[map.get(this)._GetTargetMode()]}set targetMode(str){const m= +VALID_TARGET_MODES.indexOf(str);if(m===-1)throw new Error("invalid targetMode");map.get(this)._SetTargetMode(m)}get isPredictiveAimEnabled(){return map.get(this)._IsPredictiveAim()}set isPredictiveAimEnabled(p){map.get(this)._SetPredictiveAim(!!p)}get projectileSpeed(){return map.get(this)._GetProjectileSpeed()}set projectileSpeed(s){C3X.RequireFiniteNumber(s);map.get(this)._SetProjectileSpeed(s)}get isEnabled(){return map.get(this)._IsEnabled()}set isEnabled(e){map.get(this)._SetEnabled(e)}}} +{const C3=self.C3;C3.Behaviors.Turret.Cnds={HasTarget(){return!!this._currentTarget},OnShoot(){return true},OnTargetAcquired(){return true},IsEnabled(){return this._IsEnabled()}}} +{const C3=self.C3;C3.Behaviors.Turret.Acts={AcquireTarget(objectClass){if(!objectClass)return;const instances=objectClass.GetCurrentSol().GetInstances();for(const inst of instances)if(this._MaybeAcquireTargetInstance(inst))break},AddTarget(objectClass){const targetTypes=this.GetSdkType().GetTargetTypes();if(targetTypes.includes(objectClass))return;for(const t of targetTypes)if(t.IsFamily()&&t.FamilyHasMember(objectClass))return;targetTypes.push(objectClass)},ClearTargets(){C3.clearArray(this.GetSdkType().GetTargetTypes())}, +UnacquireTarget(){this._UnacquireTarget()},SetEnabled(e){this._SetEnabled(e!==0)},SetRange(r){this._SetRange(r)},SetRateOfFire(r){this._SetRateOfFire(r)},SetRotate(r){this._SetRotateEnabled(r!==0)},SetRotateSpeed(r){this._SetRotateSpeed(C3.toRadians(r))},SetTargetMode(m){this._SetTargetMode(m)},SetPredictiveAim(p){this._SetPredictiveAim(p!==0)},SetProjectileSpeed(s){this._SetProjectileSpeed(s)}}} +{const C3=self.C3;C3.Behaviors.Turret.Exps={TargetUID(){return this._currentTarget?this._currentTarget.GetUID():0},Range(){return this._GetRange()},RateOfFire(){return this._GetRateOfFire()},RotateSpeed(){return C3.toDegrees(this._GetRotateSpeed())}}}; + +} + +// scripts/behaviors/Tween/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Tween=class TweenBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Tween.Type=class TweenType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const NAMESPACE=C3.Behaviors.Tween;const ENABLED=0;NAMESPACE.Instance=class TweenInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._allowMultiple=false;this._enabled=true;if(properties){this._allowMultiple=false;this._enabled=!!properties[ENABLED]}this._activeTweens=new Map;this._disabledTweens=[];this._waitingForReleaseTweens=new Map;this._finishingTween=null;this._activeTweensJson=null;this._disabledTweensJson=null;this._waitingForReleaseTweensJson= +null;this._finishingTweenName="";this._triggerTweens=[];this._afterLoad=e=>this._OnAfterLoad();this.GetRuntime().Dispatcher().addEventListener("afterload",this._afterLoad)}Release(){this.GetRuntime().Dispatcher().removeEventListener("afterload",this._afterLoad);this._afterLoad=null;if(this._finishingTween){this.ReleaseAndCompleteTween(this._finishingTween);this._finishingTween=null}this.ReleaseAndCompleteTweens();this._tweens=null;this.ClearDisabledList();this._disabledTweens=null;this._ReleaseWaitingTweens(); +this._waitingForReleaseTweens=null;this._triggerTweens=null;super.Release()}PushTriggerTween(tween){this._triggerTweens.push(tween)}PopTriggerTween(){this._triggerTweens.pop()}GetTriggerTween(){return this._triggerTweens[this._triggerTweens.length-1]}SetEnabled(e){this._enabled=!!e;if(e){if(this._waitingForReleaseTweens&&this._waitingForReleaseTweens.size)this._StartTicking2()}else this._StopTicking2();for(const tween of this.AllTweens())if(e){if(this.IsInDisabledList(tween))tween.Resume()}else{if(tween.IsPlaying()|| +tween.IsScheduled())this.AddToDisabledList(tween);tween.Stop()}if(e)this.ClearDisabledList()}IsEnabled(){return this._enabled}AddToDisabledList(tween){this._disabledTweens.push(tween)}IsInDisabledList(tween){return this._disabledTweens.includes(tween)}ClearDisabledList(){C3.clearArray(this._disabledTweens)}GetFinishingTween(){return this._finishingTween}IsInstanceValid(){const inst=this.GetObjectInstance();if(!inst)return false;return!inst.IsDestroyed()}GetTween(tags,property,includeWaitingForRelease= +false){const tweens=property?this.PropertyTweens(property,includeWaitingForRelease):this.AllTweens(includeWaitingForRelease);if(!tweens||!tweens.length)return;for(const tween of tweens)if(tween.HasTags(tags))return tween}GetTweenIncludingWaitingForRelease(tags,property){return this.GetTween(tags,property,true)}*GetTweens(tags,property,includeWaitingForRelease=false){const tweens=property?this.PropertyTweens(property,includeWaitingForRelease):this.AllTweens(includeWaitingForRelease);if(tweens&&tweens.length)for(const tween of tweens)if(tween.HasTags(tags))yield tween}*GetTweensIncludingWaitingForRelease(tags, +property){yield*this.GetTweens(tags,property,true)}PropertyTweens(property,includeWaitingForRelease){if(includeWaitingForRelease){let active=this._activeTweens.get(property);let waitingForRelease=this._waitingForReleaseTweens.get(property);if(!active)active=[];if(!waitingForRelease)waitingForRelease=[];return active.concat(waitingForRelease).filter(t=>t).filter(t=>!t.IsReleased())}else{let active=this._activeTweens.get(property);if(!active)active=[];return active.filter(t=>t).filter(t=>!t.IsReleased())}}AllTweens(includeWaitingForRelease){if(includeWaitingForRelease){const active= +[...this._activeTweens.values()].flat();const waitingForRelease=[...this._waitingForReleaseTweens.values()].flat();return active.concat(waitingForRelease).filter(t=>t).filter(t=>!t.IsReleased())}else{const active=[...this._activeTweens.values()].flat();return active.filter(t=>t).filter(t=>!t.IsReleased())}}AllTweensIncludingWaitingForRelease(){return this.AllTweens(true)}SaveToJson(mode="full"){return{"s":false,"e":!!this._enabled,"at":this._SaveActiveTweensToJson(),"dt":this._SaveDisabledTweensToJson(), +"wt":this._SaveWaitingForReleaseTweensToJson(),"ft":this._SaveFinishingTweenToJson()}}LoadFromJson(o,mode="full"){if(!o)return;this._activeTweensJson=o["at"];this._disabledTweensJson=o["dt"];this._waitingForReleaseTweensJson=o["wt"];this._finishingTweenName=o["ft"];this._allowMultiple=false;this._enabled=!!o["e"];if(mode==="state")this._OnAfterLoad()}_OnAfterLoad(){const timelineManager=this.GetRuntime().GetTimelineManager();this._PopulateTweenMap(this._activeTweensJson,this._activeTweens,timelineManager); +if(this._disabledTweensJson){C3.clearArray(this._disabledTweens);for(const tweenName of this._disabledTweensJson)this._PopulateTweenArray(this._disabledTweens,tweenName,timelineManager)}this._PopulateTweenMap(this._waitingForReleaseTweensJson,this._waitingForReleaseTweens,timelineManager);this._finishingTween=this._GetTween(this._finishingTweenName,timelineManager);if(this._enabled){if(this._waitingForReleaseTweens&&this._waitingForReleaseTweens.size)this._StartTicking2()}else this._StopTicking2()}_PopulateTweenMap(restoreJson, +map,timelineManager){if(!restoreJson)return;for(const property in restoreJson){let tweens=map.get(property);tweens?C3.clearArray(tweens):tweens=[];const tweensJson=restoreJson[property];for(const tweenJson of tweensJson){const success=this._PopulateTweenArray(tweens,tweenJson["name"],timelineManager);if(!success){const tween=C3.TweenState.Build({runtime:this.GetRuntime(),json:tweenJson});C3.TweenState.SetInstanceUID(tween,this.GetObjectInstance().GetUID());tween.AddCompletedCallback(tween=>this._FinishTriggers(tween)); +timelineManager.AddScheduledTimeline(tween);this._PopulateTweenArray(tweens,tween,timelineManager)}else this._LoadTweenFromJson(tweenJson["name"],tweenJson,timelineManager)}map.set(property,tweens)}}_GetTween(name,timelineManager){return timelineManager.GetScheduledOrPlayingTimelineByName(name)}_PopulateTweenArray(collection,tweenOrName,timelineManager){if(typeof tweenOrName==="string"){const tween=this._GetTween(tweenOrName,timelineManager);if(tween)return!!collection.push(tween)}else return!!collection.push(tweenOrName); +return false}_LoadTweenFromJson(tweenOrName,tweenJson,timelineManager){if(typeof tweenOrName==="string"){const tween=this._GetTween(tweenOrName,timelineManager);if(tween){tween._LoadFromJson(tweenJson);C3.TweenState.SetInstanceUID(tween,this.GetObjectInstance().GetUID())}}else{tweenOrName._LoadFromJson(tweenJson);C3.TweenState.SetInstanceUID(tweenOrName,this.GetObjectInstance().GetUID())}}_SaveActiveTweensToJson(){const ret={};for(const [property,tweens]of this._activeTweens)ret[property]=tweens.filter(t=> +!t.IsReleased()).map(t=>t._SaveToJson());return ret}_SaveDisabledTweensToJson(){return this._disabledTweens.filter(t=>!t.IsReleased()).map(t=>t.GetName())}_SaveWaitingForReleaseTweensToJson(){const ret={};for(const [property,tweens]of this._waitingForReleaseTweens)ret[property]=tweens.map(tween=>tween._SaveToJson());return ret}_SaveFinishingTweenToJson(){return this._finishingTween?this._finishingTween.GetName():""}Tick2(){this._ReleaseWaitingTweens()}CreateTween(args){const propertyTracksConfig= +NAMESPACE.Config.GetPropertyTracksConfig(args.property,args.startValue,args.endValue,args.ease,args.resultMode,this.GetObjectInstance());const tweenId=NAMESPACE.Maps.GetPropertyFromIndex(args.property);if(!NAMESPACE.Maps.IsValueId(tweenId))this.ReleaseTweens(args.property);const tween=C3.TweenState.Build({runtime:this.GetRuntime(),id:tweenId,tags:args.tags,time:args.time,instance:this.GetObjectInstance(),releaseOnComplete:!!args.releaseOnComplete,loop:!!args.loop,pingPong:!!args.pingPong,repeatCount:args.repeatCount, +initialValueMode:args.initialValueMode,propertyTracksConfig:propertyTracksConfig});tween.AddCompletedCallback(tween=>this._FinishTriggers(tween));this._AddTween(tween,args.property);return tween}_MaybeRemoveFromActiveTweenMap(tween){const id=tween.GetId();if(this._activeTweens.has(id)){const tweenArray=this._activeTweens.get(id);if(tweenArray){const index=tweenArray.indexOf(tween);if(index!==-1)tweenArray.splice(index,1)}}}ReleaseTween(tween,complete=false){this._MaybeRemoveFromActiveTweenMap(tween); +if(tween.IsReleased())return;if(this._IsInWaitingList(tween))return;tween.Stop(complete);this._AddToWaitingList(tween)}ReleaseTweens(indexProperty,complete=false){if(C3.IsFiniteNumber(indexProperty)){const stringProperty=NAMESPACE.Maps.GetPropertyFromIndex(indexProperty);if(!this._activeTweens.has(stringProperty))return;const tweenArray=this._activeTweens.get(stringProperty);const finishingTween=this.GetFinishingTween();for(const tween of tweenArray){if(tween===finishingTween)continue;if(tween.IsReleased())continue; +if(this._IsInWaitingList(tween))continue;tween.Stop(complete);tween.Release()}C3.clearArray(tweenArray)}else{const finishingTween=this.GetFinishingTween();for(const tween of this.AllTweens()){if(tween===finishingTween)continue;if(tween.IsReleased())continue;if(this._IsInWaitingList(tween))continue;tween.Stop(complete);tween.Release()}for(const property of this._activeTweens.keys()){C3.clearArray(this._activeTweens.get(property));this._activeTweens.delete(property)}this._activeTweens.clear()}}ReleaseAndCompleteTween(tween){this.ReleaseTween(tween, +true)}ReleaseAndCompleteTweens(){this.ReleaseTweens(NaN,true)}GetPropertyValueByIndex(index){switch(index){case ENABLED:return this._enabled}}SetPropertyValueByIndex(index,value){switch(index){case ENABLED:this._enabled=!!value;break}}_GetBehaviorType(tween){const instance=tween.GetInstance();const behaviorInstances=instance.GetBehaviorInstances();for(const behaviorInstance of behaviorInstances){const behaviorType=behaviorInstance.GetBehaviorType();if(behaviorType.GetInstanceSdkCtor()===this.constructor)return behaviorType}}Trigger(method, +runtime,inst,behaviorType){if(this._runtime)return super.Trigger(method);else return runtime.Trigger(method,inst,behaviorType)}_FinishTriggers(tween){this._finishingTween=tween;NAMESPACE.Cnds.SetFinishingTween(tween);let instance;let runtime;if(!this.GetRuntime()){instance=tween.GetInstance();if(!instance)return;if(instance&&instance.IsDestroyed())return;runtime=instance.GetRuntime();const behaviorType=this._GetBehaviorType(tween);this.Trigger(NAMESPACE.Cnds.OnTweensFinished,runtime,instance,behaviorType); +this.Trigger(NAMESPACE.Cnds.OnAnyTweensFinished,runtime,instance,behaviorType);tween.Stop()}else{instance=this._inst;runtime=this._runtime;this.Trigger(NAMESPACE.Cnds.OnTweensFinished);this.Trigger(NAMESPACE.Cnds.OnAnyTweensFinished);this.ReleaseTween(tween)}this._finishingTween=null;NAMESPACE.Cnds.SetFinishingTween(null);if(tween.GetDestroyInstanceOnComplete())runtime.DestroyInstance(instance)}_AddTween(tween,indexProperty){const stringProperty=NAMESPACE.Maps.GetPropertyFromIndex(indexProperty); +if(!this._activeTweens.has(stringProperty))this._activeTweens.set(stringProperty,[]);const tweenArray=this._activeTweens.get(stringProperty);tweenArray.push(tween)}_AddToWaitingList(tween){const id=tween.GetId();if(!this._waitingForReleaseTweens.has(id))this._waitingForReleaseTweens.set(id,[]);this._waitingForReleaseTweens.get(id).push(tween);if(!this.IsTicking2())this._StartTicking2()}_IsInWaitingList(tween){const id=tween.GetId();if(!this._waitingForReleaseTweens.has(id))return false;return this._waitingForReleaseTweens.get(id).includes(tween)}_ReleaseWaitingTweens(){if(!this._waitingForReleaseTweens.size)return; +for(const tweenArray of this._waitingForReleaseTweens.values()){for(const tween of tweenArray){if(tween.IsReleased())continue;tween.Release()}C3.clearArray(tweenArray)}this._waitingForReleaseTweens.clear();if(this.IsTicking2())this._StopTicking2()}GetDebuggerProperties(){const prefix="behaviors.tween";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".properties.enabled.name",value:this.IsEnabled(),onedit:v=>this.SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.ITweenBehaviorInstance}}} +{const C3=self.C3;let finishingTween=null;C3.Behaviors.Tween.Cnds={OnAnyTweenLoop(){return true},OnTweensLoop(tags){const tween=this.GetTriggerTween();if(!tween)return false;return tween.HasTags(tags)},OnAnyTweenPingPong(pingPongState){const tween=this.GetTriggerTween();if(!tween)return false;if(tween.GetPingPongState()===pingPongState)return true;else if(pingPongState===2)return true;return false},OnTweensPingPong(tags,pingPongState){const tween=this.GetTriggerTween();if(!tween)return false;if(tween.GetPingPongState()=== +pingPongState)return tween.HasTags(tags);else if(pingPongState===2)return tween.HasTags(tags);return false},SetFinishingTween(tween){finishingTween=tween},OnTweensFinished(tags){return finishingTween.HasTags(tags)},OnAnyTweensFinished(){return true},IsPlaying(tags){const tweens=[...this.GetTweensIncludingWaitingForRelease(tags)];if(!tweens)return false;if(!tweens.length)return false;return tweens.some(C3.TweenState.IsPlaying)},IsAnyPlaying(){const tweens=[...this.AllTweensIncludingWaitingForRelease()]; +if(!tweens)return false;if(!tweens.length)return false;return tweens.some(C3.TweenState.IsPlaying)},IsPaused(tags){const tweens=[...this.GetTweensIncludingWaitingForRelease(tags)];if(!tweens)return false;if(!tweens.length)return false;return tweens.some(C3.TweenState.IsPaused)},IsAnyPaused(){const tweens=[...this.AllTweensIncludingWaitingForRelease()];if(!tweens)return false;if(!tweens.length)return false;return tweens.some(C3.TweenState.IsPaused)},IsPingPong(tags,pingPongState){const tweens=[...this.GetTweensIncludingWaitingForRelease(tags)]; +if(!tweens)return false;if(!tweens.length)return false;if(pingPongState===0)return tweens.some(C3.TweenState.IsPing);else if(pingPongState===1)return tweens.some(C3.TweenState.IsPong);return false},IsAnyPingPong(pingPongState){const tweens=[...this.AllTweensIncludingWaitingForRelease()];if(!tweens)return false;if(!tweens.length)return false;if(pingPongState===0)return tweens.some(C3.TweenState.IsPing);else if(pingPongState===1)return tweens.some(C3.TweenState.IsPong);return false}}} +{const C3=self.C3;const Ease=self.Ease;const NAMESPACE=C3.Behaviors.Tween;NAMESPACE.Acts={SetEnabled(enable){this.SetEnabled(!!enable)},async TweenOneProperty(...args){if(!this.IsEnabled()||!this.IsInstanceValid())return;const tween=this.CreateTween(NAMESPACE.TweenArguments.OneProperty(this,...args));if(tween.Play())await tween.GetPlayPromise()},async TweenTwoProperties(...args){if(!this.IsEnabled()||!this.IsInstanceValid())return;const tween=this.CreateTween(NAMESPACE.TweenArguments.TwoProperties(this, +...args));if(tween.Play())await tween.GetPlayPromise()},async TweenValue(...args){if(!this.IsEnabled()||!this.IsInstanceValid())return;const tween=this.CreateTween(NAMESPACE.TweenArguments.ValueProperty(this,...args));if(tween.Play())await tween.GetPlayPromise()},PauseTweens(tags){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))tween.Stop()},PauseAllTweens(){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())tween.Stop()}, +ResumeTweens(tags){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))tween.Resume()},ResumeAllTweens(){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())tween.Resume()},StopTweens(tags){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))this.ReleaseTween(tween)},StopAllTweens(){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())this.ReleaseTween(tween)}, +SetOnePropertyTweensEndValue(tags,property,endValue){if(!this.IsEnabled()||!this.IsInstanceValid())return;const propertyName=C3.Behaviors.Tween.Maps.GetSinglePropertyFromIndex(property);for(const tween of this.GetTweens(tags)){tween.BeforeSetEndValues([propertyName]);tween.SetEndValue(endValue,propertyName)}},SetTwoPropertiesTweensEndValue(tags,property,endValueX,endValueY){if(!this.IsEnabled()||!this.IsInstanceValid())return;const properties=C3.Behaviors.Tween.Maps.GetRealProperties(property);for(const tween of this.GetTweens(tags)){tween.BeforeSetEndValues(properties); +tween.SetEndValue(endValueX,properties[0]);tween.SetEndValue(endValueY,properties[1])}},SetValuePropertyTweensStartValue(tags,startValue){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags,"value"))tween.SetStartValue(startValue,"value")},SetValuePropertyTweensEndValue(tags,endValue){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags,"value")){tween.BeforeSetEndValues(["value"]);tween.SetEndValue(endValue,"value")}}, +SetTweensEase(tags,easeIndex){if(!this.IsEnabled()||!this.IsInstanceValid())return;const ease=Ease.GetEaseFromIndex(easeIndex);for(const tween of this.GetTweens(tags))tween.SetEase(ease)},SetAllTweensEase(easeIndex){if(!this.IsEnabled()||!this.IsInstanceValid())return;const ease=Ease.GetEaseFromIndex(easeIndex);for(const tween of this.AllTweens())tween.SetEase(ease)},SetTweensTime(tags,time){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))tween.SetTime(time)}, +SetAllTweensTime(time){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())tween.SetTime(time)},SetTweensPlaybackRate(tags,rate){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))tween.SetPlaybackRate(rate)},SetAllTweensPlaybackRate(rate){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())tween.SetPlaybackRate(rate)},SetTweensDestroyOnComplete(tags,destroyOnComplete){if(!this.IsEnabled()|| +!this.IsInstanceValid())return;for(const tween of this.GetTweens(tags))tween.SetDestroyInstanceOnComplete(!!destroyOnComplete)},SetAllTweensDestroyOnComplete(destroyOnComplete){if(!this.IsEnabled()||!this.IsInstanceValid())return;for(const tween of this.AllTweens())tween.SetDestroyInstanceOnComplete(!!destroyOnComplete)}}} +{const C3=self.C3;C3.Behaviors.Tween.Exps={Time(tags){const tween=this.GetTweenIncludingWaitingForRelease(tags);if(!tween)return 0;return tween.GetTime()},Progress(tags){const tween=this.GetTweenIncludingWaitingForRelease(tags);if(!tween)return 0;return tween.GetTime()/tween.GetTotalTime()},PlaybackRate(tags){const tween=this.GetTweenIncludingWaitingForRelease(tags);if(!tween)return 0;return tween.GetPlaybackRate()},Value(tags){const tween=this.GetTweenIncludingWaitingForRelease(tags,"value");if(!tween)return 0; +return tween.GetPropertyTrack("value").GetSourceAdapterValue()},Tags(){let tween=this.GetFinishingTween();if(tween)return tween.GetStringTags();tween=this.GetTriggerTween();if(tween)return tween.GetStringTags();return""}}}; + +} + +// scripts/behaviors/Tween/c3runtime/maps.js +{ +'use strict';const C3=self.C3;const Ease=self.Ease;const PAIR_PROPERTIES=["position","size","scale"];const SINGLE_PROPERTIES=["offsetX","offsetY","offsetWidth","offsetHeight","offsetAngle","offsetOpacity","offsetColor","offsetZElevation","offsetScaleX","offsetScaleY"];const VALUE_PROPERTIES=["value"];const PROPERTY_INDEX_TO_NAME=[].concat(PAIR_PROPERTIES).concat(SINGLE_PROPERTIES).concat(VALUE_PROPERTIES); +const PROPERTY_PAIR_TO_REAL_PROPERTIES={"position":["offsetX","offsetY"],"size":["offsetWidth","offsetHeight"],"scale":["offsetScaleX","offsetScaleY"]};const ALL_REAL_PROPERTIES=Object.assign({},PROPERTY_INDEX_TO_NAME.reduce((o,key)=>Object.assign({},o,{[key]:[key]}),{}),PROPERTY_PAIR_TO_REAL_PROPERTIES); +C3.Behaviors.Tween.Maps=class Maps{constructor(){}static GetEases(){return[...Ease.GetRuntimeEaseNames()]}static GetEaseFromIndex(index){return[...Ease.GetRuntimeEaseNames()][index]}static GetPropertyFromIndex(index){return PROPERTY_INDEX_TO_NAME[index]}static GetPropertyIndexFromName(name){return PROPERTY_INDEX_TO_NAME.indexOf(name)}static GetPairPropertyFromIndex(index){return PAIR_PROPERTIES[index]}static GetSinglePropertyFromIndex(index){return SINGLE_PROPERTIES[index]}static GetValuePropertyFromIndex(index){return VALUE_PROPERTIES[index]}static GetPairProperties(pairId){return PROPERTY_PAIR_TO_REAL_PROPERTIES[pairId]}static GetRealProperties(id){if(C3.IsString(id))return ALL_REAL_PROPERTIES[id];else return ALL_REAL_PROPERTIES[PROPERTY_INDEX_TO_NAME[id]]}static IsPairId(id){return!!PROPERTY_PAIR_TO_REAL_PROPERTIES[id]}static IsColorId(id){return id=== +"offsetColor"}static IsAngleId(id){return id==="offsetAngle"}static IsOpacityId(id){return id==="offsetOpacity"}static IsValueId(id){return id==="value"}}; + +} + +// scripts/behaviors/Tween/c3runtime/tweenConfig.js +{ +'use strict';const C3=self.C3;const NAMESPACE=C3.Behaviors.Tween;const TWEEN_CONFIGURATIONS=new Map; +NAMESPACE.Config=class Config{constructor(){}static GetPropertyTracksConfig(property,startValue,endValue,ease,resultMode,instance){if(TWEEN_CONFIGURATIONS.size===0)this._CreateConfigObjects();const propertyType=NAMESPACE.PropertyTypes.Pick(property);let config=TWEEN_CONFIGURATIONS.get(propertyType);if(C3.IsFiniteNumber(property))property=NAMESPACE.Maps.GetPropertyFromIndex(property);return this._GetConfig(config,property,startValue,endValue,ease,resultMode,instance)}static TransformValue(property, +value){const configFunctionObject=C3.Behaviors.Tween.GetPropertyTracksConfig(property);return configFunctionObject.valueGetter(value)}static _CreateConfigObjects(){const types=NAMESPACE.PropertyTypes;const getters=NAMESPACE.ValueGetters;this._AddConfigObject(types.PAIR,this._GetPairConfig,getters._GetPropertyValue);this._AddConfigObject(types.COLOR,this._GetColorConfig,getters._GetColorPropertyValue);this._AddConfigObject(types.ANGLE,this._GetAngleConfig,getters._GetPropertyAngleValue);this._AddConfigObject(types.VALUE, +this._GetValueConfig,getters._GetPropertyValue);this._AddConfigObject(types.OTHER,this._GetCommonConfig,getters._GetPropertyValue)}static _AddConfigObject(name,configGetter,valueGetter){TWEEN_CONFIGURATIONS.set(name,this._CreateConfigObject(name,configGetter,valueGetter))}static _CreateConfigObject(name,configFunc,valueGetter){return{name:name,configFunc:configFunc,valueGetter:valueGetter}}static _GetConfig(config,property,startValue,endValue,ease,resultMode,instance){return config.configFunc(property, +config.valueGetter(startValue),config.valueGetter(endValue),ease,resultMode,instance)}static _GetPairConfig(property,startValues,endValues,ease,resultMode,instance){const properties=NAMESPACE.Maps.GetPairProperties(property);return properties.map((property,index)=>{return{sourceId:"world-instance",property:property,type:"float",valueType:"numeric",startValue:startValues[index],endValue:endValues[index],ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode}})}static _GetColorConfig(property, +startValue,endValue,ease,resultMode,instance){if(C3.Plugins.Text&&instance.GetPlugin()instanceof C3.Plugins.Text)return{sourceId:"plugin",sourceArgs:[7],property:"color",type:"color",valueType:"color",startValue:startValue,endValue:endValue,ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode};else return{sourceId:"world-instance",property:property,type:"color",valueType:"color",startValue:startValue,endValue:endValue,ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode}}static _GetAngleConfig(property, +startValue,endValue,ease,resultMode,instance){return{sourceId:"world-instance",property:property,type:"angle",valueType:"angle",startValue:startValue,endValue:endValue,ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode}}static _GetCommonConfig(property,startValue,endValue,ease,resultMode,instance){return{sourceId:"world-instance",property:property,type:"float",valueType:"numeric",startValue:startValue,endValue:endValue,ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode}}static _GetValueConfig(property, +startValue,endValue,ease,resultMode,instance){return{sourceId:"value",property:property,type:"float",valueType:"numeric",startValue:startValue,endValue:endValue,ease:NAMESPACE.Maps.GetEaseFromIndex(ease),resultMode:resultMode}}}; + +} + +// scripts/behaviors/Tween/c3runtime/tweenArguments.js +{ +'use strict';const C3=self.C3;const NAMESPACE=C3.Behaviors.Tween;const COMMON_FIXED_ARGS={resultMode:"absolute"};const COMMON_VARIABLE_ARGS=Object.assign({},COMMON_FIXED_ARGS,{tags:"",property:"",time:0,ease:0,releaseOnComplete:0,loop:false,pingPong:false,repeatCount:1});const ONE_PROPERTY_ARGS=Object.assign({},COMMON_VARIABLE_ARGS,{initialValueMode:"current-state",startValue:0,endValue:0}); +const TWO_PROPERTIES_ARGS=Object.assign({},COMMON_VARIABLE_ARGS,{initialValueMode:"current-state",startValue:[0,0],endValue:[0,0]});const COLOR_PROPERTY_ARGS=Object.assign({},COMMON_VARIABLE_ARGS,{initialValueMode:"current-state",startValue:[0,0,0],endValue:[0,0,0]});const VALUE_PROPERTY_ARGS=Object.assign({},ONE_PROPERTY_ARGS,{initialValueMode:"start-value"});const X=0;const Y=1;const R=0;const G=1;const B=2; +NAMESPACE.TweenArguments=class TweenArguments{constructor(){}static _SetCommonProperties(argsObject,tags,time,ease,destroyOnComplete,loop,pingPong,repeatCount){argsObject.tags=tags;argsObject.time=time;argsObject.ease=ease;argsObject.releaseOnComplete=destroyOnComplete;argsObject.loop=loop;argsObject.pingPong=pingPong;argsObject.repeatCount=repeatCount}static OneProperty(inst,tags,property,endValue,time,ease,destroyOnComplete,loop,pingPong,repeatCount){const propertyName=typeof property==="string"? +property:NAMESPACE.Maps.GetSinglePropertyFromIndex(property);const args=NAMESPACE.Maps.IsColorId(propertyName)?COLOR_PROPERTY_ARGS:ONE_PROPERTY_ARGS;this._SetCommonProperties(args,tags,time,ease,destroyOnComplete,loop,pingPong,repeatCount);if(NAMESPACE.Maps.IsColorId(propertyName)){COLOR_PROPERTY_ARGS.endValue[R]=C3.GetRValue(endValue);COLOR_PROPERTY_ARGS.endValue[G]=C3.GetGValue(endValue);COLOR_PROPERTY_ARGS.endValue[B]=C3.GetBValue(endValue);COLOR_PROPERTY_ARGS.property=NAMESPACE.Maps.GetPropertyIndexFromName(propertyName)}else if(NAMESPACE.Maps.IsOpacityId(propertyName))ONE_PROPERTY_ARGS.endValue= +endValue/100;else ONE_PROPERTY_ARGS.endValue=endValue;args.property=NAMESPACE.Maps.GetPropertyIndexFromName(propertyName);return args}static TwoProperties(inst,tags,property,endValueX,endValueY,time,ease,destroyOnComplete,loop,pingPong,repeatCount){this._SetCommonProperties(TWO_PROPERTIES_ARGS,tags,time,ease,destroyOnComplete,loop,pingPong,repeatCount);const pairName=typeof property==="string"?property:NAMESPACE.Maps.GetPairPropertyFromIndex(property);TWO_PROPERTIES_ARGS.endValue[X]=endValueX;TWO_PROPERTIES_ARGS.endValue[Y]= +endValueY;TWO_PROPERTIES_ARGS.property=NAMESPACE.Maps.GetPropertyIndexFromName(pairName);return TWO_PROPERTIES_ARGS}static ValueProperty(inst,tags,startValue,endValue,time,ease,destroyOnComplete,loop,pingPong,repeatCount){this._SetCommonProperties(VALUE_PROPERTY_ARGS,tags,time,ease,destroyOnComplete,loop,pingPong,repeatCount);VALUE_PROPERTY_ARGS.startValue=startValue;VALUE_PROPERTY_ARGS.endValue=endValue;VALUE_PROPERTY_ARGS.property=NAMESPACE.Maps.GetPropertyIndexFromName("value");return VALUE_PROPERTY_ARGS}}; + +} + +// scripts/behaviors/Tween/c3runtime/propertyTypes.js +{ +'use strict';const C3=self.C3;const NAMESPACE=C3.Behaviors.Tween;const TYPE_CHECK_OBJECTS=[]; +NAMESPACE.PropertyTypes=class PropertyTypes{constructor(){}static Pick(property){if(TYPE_CHECK_OBJECTS.length===0){const arr=TYPE_CHECK_OBJECTS;arr.push({checkFunc:NAMESPACE.Maps.IsPairId,result:this.PAIR});arr.push({checkFunc:NAMESPACE.Maps.IsColorId,result:this.COLOR});arr.push({checkFunc:NAMESPACE.Maps.IsAngleId,result:this.ANGLE});arr.push({checkFunc:NAMESPACE.Maps.IsValueId,result:this.VALUE});arr.push({checkFunc:()=>true,result:this.OTHER})}if(C3.IsFiniteNumber(property))property=C3.Behaviors.Tween.Maps.GetPropertyFromIndex(property); +for(const propertyTypeFunctionObject of TYPE_CHECK_OBJECTS)if(propertyTypeFunctionObject.checkFunc(property))return propertyTypeFunctionObject.result}static get PAIR(){return"pair"}static get COLOR(){return"color"}static get ANGLE(){return"angle"}static get VALUE(){return"value"}static get OTHER(){return"other"}}; + +} + +// scripts/behaviors/Tween/c3runtime/valueGetters.js +{ +'use strict';const C3=self.C3;const NAMESPACE=C3.Behaviors.Tween;NAMESPACE.ValueGetters=class ValueGetters{constructor(){}static _GetPropertyAngleValue(value){const r=C3.toRadians(parseFloat(value));return C3.clampAngle(r)}static _GetColorPropertyValue(value){return value.slice(0)}static _GetPropertyValue(value){return value}}; + +} + +// scripts/behaviors/Tween/c3runtime/scriptInterface.js +{ +'use strict';const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const Ease=self.Ease;const NAMESPACE=C3.Behaviors.Tween;const map=new WeakMap; +const TWEEN_PROPERTIES=new Map([["x",{name:"offsetX",type:"one"}],["y",{name:"offsetY",type:"one"}],["width",{name:"offsetWidth",type:"one"}],["height",{name:"offsetHeight",type:"one"}],["angle",{name:"offsetAngle",type:"one"}],["opacity",{name:"offsetOpacity",type:"one"}],["color",{name:"offsetColor",type:"color"}],["z-elevation",{name:"offsetZElevation",type:"one"}],["x-scale",{name:"offsetScaleX",type:"one"}],["y-scale",{name:"offsetScaleY",type:"one"}],["position",{name:"position",type:"two"}], +["size",{name:"size",type:"two"}],["scale",{name:"scale",type:"two"}],["value",{name:"value",type:"value"}]]);function getIndexForEase(ease){C3X.RequireString(ease);const easeInternalName=Ease.ToInternal(ease);let easeIndex;if(easeInternalName)easeIndex=Ease.GetIndexForEase(easeInternalName,null);else easeIndex=Ease.GetIndexForEase(ease,null);if(easeIndex===-1)throw new Error(`invalid ease name '${ease}'`);return easeIndex} +const TWEEN_OPTS={tags:"",destroyOnComplete:false,loop:false,pingPong:false,repeatCount:1,startValue:0};const I_TWEEN_OPTS={easeToIndexFunc:getIndexForEase};function ValidateTags(tags,isOptional=false){if(isOptional&&(typeof tags==="undefined"||tags===null))return;if(typeof tags!=="string"&&!Array.isArray(tags))throw new Error("invalid tags");} +self.ITweenBehaviorInstance=class ITweenBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}startTween(prop,endValue,time,ease,opts){const inst=map.get(this);if(!inst.IsEnabled()||!inst.IsInstanceValid())return null;const info=TWEEN_PROPERTIES.get(prop);if(!info)throw new Error("invalid tween property");if(info.type==="one"||info.type==="value")C3X.RequireNumber(endValue);else{C3X.RequireArray(endValue);if(info.type==="two"){C3X.RequireNumber(endValue[0]); +C3X.RequireNumber(endValue[1])}else if(info.type==="color"){C3X.RequireNumber(endValue[0]);C3X.RequireNumber(endValue[1]);C3X.RequireNumber(endValue[2])}}if(prop==="angle")endValue=C3.toDegrees(endValue);else if(prop==="opacity")endValue*=100;else if(prop==="color")endValue=C3.PackRGBEx(endValue[0],endValue[1],endValue[2]);const easeIndex=getIndexForEase(ease);C3X.RequireFiniteNumber(time);opts=Object.assign({},TWEEN_OPTS,opts);if(info.type==="value")C3X.RequireNumber(opts.startValue);ValidateTags(opts.tags, +true);let tween;if(info.type==="one"||info.type==="color")tween=inst.CreateTween(NAMESPACE.TweenArguments.OneProperty(inst,opts.tags,info.name,endValue,time,easeIndex,!!opts.destroyOnComplete,!!opts.loop,!!opts.pingPong,opts.repeatCount));else if(info.type==="two")tween=inst.CreateTween(NAMESPACE.TweenArguments.TwoProperties(inst,opts.tags,info.name,endValue[0],endValue[1],time,easeIndex,!!opts.destroyOnComplete,!!opts.loop,!!opts.pingPong,opts.repeatCount));else if(info.type==="value")tween=inst.CreateTween(NAMESPACE.TweenArguments.ValueProperty(inst, +opts.tags,opts.startValue,endValue,time,easeIndex,!!opts.destroyOnComplete,!!opts.loop,!!opts.pingPong,opts.repeatCount));if(!tween.Play())throw new Error("failed to start tween");return tween.GetITweenState(inst,I_TWEEN_OPTS)}*allTweens(){const inst=map.get(this);for(const tween of inst.AllTweens())yield tween.GetITweenState(inst,I_TWEEN_OPTS)}*tweensByTags(tags){ValidateTags(tags);const inst=map.get(this);for(const tween of inst.GetTweens(tags))yield tween.GetITweenState(inst,I_TWEEN_OPTS)}get isEnabled(){return map.get(this).IsEnabled()}set isEnabled(e){map.get(this).SetEnabled(e)}}; + +} + +// scripts/behaviors/Timer/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Timer=class TimerBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Timer.Type=class TimerType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;C3.Behaviors.Timer.SingleTimer=class SingleTimer{constructor(current,total,duration,isRegular){this._current=C3.New(C3.KahanSum);this._current.Set(current||0);this._total=C3.New(C3.KahanSum);this._total.Set(total||0);this._duration=duration||0;this._isRegular=!!isRegular;this._isPaused=false}GetCurrentTime(){return this._current.Get()}GetTotalTime(){return this._total.Get()}GetDuration(){return this._duration}SetPaused(p){this._isPaused= +!!p}IsPaused(){return this._isPaused}Add(t){this._current.Add(t);this._total.Add(t)}HasFinished(){return this._current.Get()>=this._duration}Update(){if(this.HasFinished())if(this._isRegular)this._current.Subtract(this._duration);else return true;return false}SaveToJson(){return{"c":this._current.Get(),"t":this._total.Get(),"d":this._duration,"r":this._isRegular,"p":this._isPaused}}LoadFromJson(o){this._current.Set(o["c"]);this._total.Set(o["t"]);this._duration=o["d"];this._isRegular=!!o["r"];this._isPaused= +!!o["p"]}};C3.Behaviors.Timer.Instance=class TimerInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._timers=new Map}Release(){this._timers.clear();super.Release()}_StartTimer(duration,name,isRegular){const timer=new C3.Behaviors.Timer.SingleTimer(0,0,duration,isRegular);this._timers.set(name.toLowerCase(),timer);this._UpdateTickState()}_StopTimer(name){this._timers.delete(name.toLowerCase());this._UpdateTickState()}_StopAllTimers(){this._timers.clear(); +this._UpdateTickState()}_IsTimerRunning(name){return this._timers.has(name.toLowerCase())}_GetTimerCurrentTime(name){const timer=this._timers.get(name.toLowerCase());return timer?timer.GetCurrentTime():0}_GetTimerTotalTime(name){const timer=this._timers.get(name.toLowerCase());return timer?timer.GetTotalTime():0}_GetTimerDuration(name){const timer=this._timers.get(name.toLowerCase());return timer?timer.GetDuration():0}_HasTimerFinished(name){const timer=this._timers.get(name.toLowerCase());return timer? +timer.HasFinished():false}_SetTimerPaused(name,isPaused){const timer=this._timers.get(name.toLowerCase());if(timer)timer.SetPaused(isPaused)}_IsTimerPaused(name){const timer=this._timers.get(name.toLowerCase());return timer?timer.IsPaused():false}_SetAllTimersPaused(isPaused){for(const timer of this._timers.values())timer.SetPaused(isPaused)}_UpdateTickState(){if(this._timers.size>0){this._StartTicking();this._StartTicking2()}else{this._StopTicking();this._StopTicking2()}}SaveToJson(){const ret={}; +for(const [name,timer]of this._timers.entries())ret[name]=timer.SaveToJson();return ret}LoadFromJson(o){this._timers.clear();for(const [name,data]of Object.entries(o)){const timer=new C3.Behaviors.Timer.SingleTimer;timer.LoadFromJson(data);this._timers.set(name,timer)}this._UpdateTickState()}Tick(){const dt=this._runtime.GetDt(this._inst);for(const [name,timer]of this._timers)if(!timer.IsPaused()){timer.Add(dt);if(timer.HasFinished())this.DispatchScriptEvent("timer",false,{tag:name})}}Tick2(){for(const [name, +timer]of this._timers.entries()){const shouldDelete=timer.Update();if(shouldDelete)this._timers.delete(name)}}GetDebuggerProperties(){return[{title:"behaviors.timer.debugger.timers",properties:[...this._timers.entries()].map(entry=>({name:"$"+entry[0],value:`${Math.round(entry[1].GetCurrentTime()*10)/10} / ${Math.round(entry[1].GetDuration()*10)/10}`}))}]}GetScriptInterfaceClass(){return self.ITimerBehaviorInstance}};const map=new WeakMap;const VALID_TIMER_TYPES=["once","regular"];self.ITimerBehaviorInstance= +class ITimerBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}startTimer(duration,name,type="once"){C3X.RequireFiniteNumber(duration);C3X.RequireString(name);const i=VALID_TIMER_TYPES.indexOf(type);if(i===-1)throw new Error("invalid type");map.get(this)._StartTimer(duration,name,i===1)}setTimerPaused(name,isPaused){C3X.RequireString(name);map.get(this)._SetTimerPaused(name,!!isPaused)}setAllTimersPaused(isPaused){map.get(this)._SetAllTimersPaused(!!isPaused)}stopTimer(name){C3X.RequireString(name); +map.get(this)._StopTimer(name)}stopAllTimers(){map.get(this)._StopAllTimers()}isTimerRunning(name){C3X.RequireString(name);return map.get(this)._IsTimerRunning(name)}isTimerPaused(name){C3X.RequireString(name);return map.get(this)._IsTimerPaused(name)}getCurrentTime(name){C3X.RequireString(name);return map.get(this)._GetTimerCurrentTime(name)}getTotalTime(name){C3X.RequireString(name);return map.get(this)._GetTimerTotalTime(name)}getDuration(name){C3X.RequireString(name);return map.get(this)._GetTimerDuration(name)}hasFinished(name){C3X.RequireString(name); +return map.get(this)._HasTimerFinished(name)}}}{const C3=self.C3;C3.Behaviors.Timer.Cnds={OnTimer(name){return this._HasTimerFinished(name)},IsTimerRunning(name){return this._IsTimerRunning(name)},IsTimerPaused(name){return this._IsTimerPaused(name)}}} +{const C3=self.C3;C3.Behaviors.Timer.Acts={StartTimer(duration,type,name){this._StartTimer(duration,name,type===1)},StopTimer(name){this._StopTimer(name)},StopAllTimers(){this._StopAllTimers()},PauseResumeTimer(name,state){this._SetTimerPaused(name,state===0)},PauseResumeAllTimers(state){this._SetAllTimersPaused(state===0)}}}{const C3=self.C3;C3.Behaviors.Timer.Exps={CurrentTime(name){return this._GetTimerCurrentTime(name)},TotalTime(name){return this._GetTimerTotalTime(name)},Duration(name){return this._GetTimerDuration(name)}}}; + +} + +// scripts/behaviors/Bullet/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Bullet=class BulletBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Bullet.Type=class BulletType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const SPEED=0;const ACCELERATION=1;const GRAVITY=2;const BOUNCE_OFF_SOLIDS=3;const SET_ANGLE=4;const STEPPING=5;const ENABLE=6;C3.Behaviors.Bullet.Instance=class BulletInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);const wi=this.GetWorldInfo();this._speed=0;this._acc=0;this._g=0;this._bounceOffSolid=false;this._setAngle=false;this._isStepping=false;this._isEnabled=true;this._dx= +0;this._dy=0;this._lastX=wi.GetX();this._lastY=wi.GetY();this._lastKnownAngle=wi.GetAngle();this._travelled=0;this._stepSize=Math.min(Math.abs(wi.GetWidth()),Math.abs(wi.GetHeight())/2);this._stopStepping=false;if(properties){this._speed=properties[SPEED];this._acc=properties[ACCELERATION];this._g=properties[GRAVITY];this._bounceOffSolid=!!properties[BOUNCE_OFF_SOLIDS];this._setAngle=!!properties[SET_ANGLE];this._isStepping=!!properties[STEPPING];this._isEnabled=!!properties[ENABLE]}const a=wi.GetAngle(); +this._dx=Math.cos(a)*this._speed;this._dy=Math.sin(a)*this._speed;if(this._isEnabled){this._StartTicking();if(this._bounceOffSolid)this._StartPostTicking()}}Release(){super.Release()}SaveToJson(){const o={"dx":this._dx,"dy":this._dy,"lx":this._lastX,"ly":this._lastY,"lka":this._lastKnownAngle,"t":this._travelled};if(this._acc!==0)o["acc"]=this._acc;if(this._g!==0)o["g"]=this._g;if(this._isStepping)o["st"]=this._isStepping;if(!this._isEnabled)o["e"]=this._isEnabled;if(this._bounceOffSolid)o["bos"]= +this._bounceOffSolid;if(this._setAngle)o["sa"]=this._setAngle;return o}LoadFromJson(o){this._dx=o["dx"];this._dy=o["dy"];this._lastX=o["lx"];this._lastY=o["ly"];this._lastKnownAngle=o["lka"];this._travelled=o["t"];this._acc=o.hasOwnProperty("acc")?o["acc"]:0;this._g=o.hasOwnProperty("g")?o["g"]:0;this._isStepping=o.hasOwnProperty("st")?o["st"]:false;this._bounceOffSolid=o.hasOwnProperty("bos")?o["bos"]:false;this._setAngle=o.hasOwnProperty("sa")?o["sa"]:false;this._SetEnabled(o.hasOwnProperty("e")? +o["e"]:true)}Tick(){if(!this._isEnabled)return;const dt=this._runtime.GetDt(this._inst);const wi=this._inst.GetWorldInfo();if(wi.GetAngle()!==this._lastKnownAngle){const angle=wi.GetAngle();if(this._setAngle){const s=C3.distanceTo(0,0,this._dx,this._dy);this._dx=Math.cos(angle)*s;this._dy=Math.sin(angle)*s}this._lastKnownAngle=angle}let xacc=0;let yacc=0;if(this._acc!==0){let s=C3.distanceTo(0,0,this._dx,this._dy);let a=0;if(this._dx===0&&this._dy===0)a=wi.GetAngle();else a=C3.angleTo(0,0,this._dx, +this._dy);s+=this._acc*dt;xacc=Math.cos(a)*this._acc;yacc=Math.sin(a)*this._acc;if(s<0){s=0;xacc=0;yacc=0}this._dx=Math.cos(a)*s;this._dy=Math.sin(a)*s}if(this._g!==0){this._dy+=this._g*dt;yacc+=this._g}this._lastX=wi.GetX();this._lastY=wi.GetY();if(this._dx!==0||this._dy!==0){const mx=this._dx*dt+.5*xacc*dt*dt;const my=this._dy*dt+.5*yacc*dt*dt;const stepDist=C3.distanceTo(0,0,mx,my);this._MoveBy(mx,my,stepDist);this._travelled+=stepDist;if(this._setAngle&&(mx!==0||my!==0)){const a=C3.angleTo(0, +0,mx,my);wi.SetAngle(a);this._lastKnownAngle=wi.GetAngle()}wi.SetBboxChanged()}}_MoveBy(mx,my,stepDist){const wi=this.GetWorldInfo();if(!this._isStepping||stepDist<=this._stepSize){wi.OffsetXY(mx,my);wi.SetBboxChanged();if(this._isStepping)this.Trigger(C3.Behaviors.Bullet.Cnds.OnStep);return}this._stopStepping=false;const startX=wi.GetX();const startY=wi.GetY();const endX=startX+mx;const endY=startY+my;const a=C3.angleTo(0,0,mx,my);const stepX=Math.cos(a)*this._stepSize;const stepY=Math.sin(a)*this._stepSize; +const stepCount=Math.floor(stepDist/this._stepSize);for(let i=1;i<=stepCount;++i){wi.SetXY(startX+stepX*i,startY+stepY*i);wi.SetBboxChanged();this.Trigger(C3.Behaviors.Bullet.Cnds.OnStep);if(this._inst.IsDestroyed()||this._stopStepping)return}wi.SetXY(endX,endY);wi.SetBboxChanged();this.Trigger(C3.Behaviors.Bullet.Cnds.OnStep)}PostTick(){if(!this._isEnabled||!this._bounceOffSolid||this._dx===0&&this._dy===0)return;const dt=this._runtime.GetDt(this._inst);const wi=this._inst.GetWorldInfo();const collisionEngine= +this._runtime.GetCollisionEngine();const bounceSolid=collisionEngine.TestOverlapSolid(this._inst);if(bounceSolid){collisionEngine.RegisterCollision(this._inst,bounceSolid);const s=C3.distanceTo(0,0,this._dx,this._dy);const bounceAngle=collisionEngine.CalculateBounceAngle(this._inst,this._lastX,this._lastY);this._dx=Math.cos(bounceAngle)*s;this._dy=Math.sin(bounceAngle)*s;wi.OffsetXY(this._dx*dt,this._dy*dt);wi.SetBboxChanged();if(this._setAngle){wi.SetAngle(bounceAngle);this._lastKnownAngle=wi.GetAngle(); +wi.SetBboxChanged()}if(!collisionEngine.PushOutSolid(this._inst,this._dx/s,this._dy/s,Math.max(s*2.5*dt,30)))collisionEngine.PushOutSolidNearest(this._inst,100)}}GetPropertyValueByIndex(index){switch(index){case SPEED:return this._GetSpeed();case ACCELERATION:return this._GetAcceleration();case GRAVITY:return this._GetGravity();case SET_ANGLE:return this._setAngle;case STEPPING:return this._isStepping;case ENABLE:return this._IsEnabled()}}SetPropertyValueByIndex(index,value){switch(index){case SPEED:this._SetSpeed(value); +break;case ACCELERATION:this._acc=value;break;case GRAVITY:this._g=value;break;case SET_ANGLE:this._setAngle=!!value;break;case STEPPING:this._isStepping=!!value;break;case ENABLE:this._SetEnabled(!!value);break}}_SetSpeed(s){const a=C3.angleTo(0,0,this._dx,this._dy);this._dx=Math.cos(a)*s;this._dy=Math.sin(a)*s}_GetSpeed(){return C3.roundToDp(C3.distanceTo(0,0,this._dx,this._dy),6)}_SetAcceleration(a){this._acc=a}_GetAcceleration(){return this._acc}_SetGravity(g){this._g=g}_GetGravity(){return this._g}_SetAngleOfMotion(a){const s= +C3.distanceTo(0,0,this._dx,this._dy);this._dx=Math.cos(a)*s;this._dy=Math.sin(a)*s}_GetAngleOfMotion(){return C3.angleTo(0,0,this._dx,this._dy)}_SetBounceOffSolids(b){b=!!b;if(this._bounceOffSolid===b)return;this._bounceOffSolid=b;if(this._isEnabled)if(this._bounceOffSolid)this._StartPostTicking();else this._StopPostTicking()}_IsBounceOffSolids(){return this._bounceOffSolid}_SetDistanceTravelled(d){this._travelled=d}_GetDistanceTravelled(){return this._travelled}_SetEnabled(e){this._isEnabled=!!e; +if(this._isEnabled){this._StartTicking();if(this._bounceOffSolid)this._StartPostTicking()}else{this._StopTicking();this._StopPostTicking()}}_IsEnabled(){return this._isEnabled}GetDebuggerProperties(){const prefix="behaviors.bullet";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".debugger.vector-x",value:this._dx,onedit:v=>this._dx=v},{name:prefix+".debugger.vector-y",value:this._dy,onedit:v=>this._dy=v},{name:prefix+".properties.speed.name",value:this._GetSpeed(),onedit:v=> +this._SetSpeed(v)},{name:prefix+".debugger.angle-of-motion",value:C3.toDegrees(this._GetAngleOfMotion())},{name:prefix+".properties.gravity.name",value:this._GetGravity(),onedit:v=>this._SetGravity(v)},{name:prefix+".properties.acceleration.name",value:this._GetAcceleration(),onedit:v=>this._SetAcceleration(v)},{name:prefix+".debugger.distance-travelled",value:this._GetDistanceTravelled()},{name:prefix+".properties.enabled.name",value:this._IsEnabled(),onedit:v=>this._SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.IBulletBehaviorInstance}}; +const map=new WeakMap;self.IBulletBehaviorInstance=class IBulletBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}get speed(){return map.get(this)._GetSpeed()}set speed(s){C3X.RequireFiniteNumber(s);map.get(this)._SetSpeed(s)}get acceleration(){return map.get(this)._GetAcceleration()}set acceleration(a){C3X.RequireFiniteNumber(a);map.get(this)._SetAcceleration(a)}get gravity(){return map.get(this)._GetGravity()}set gravity(g){C3X.RequireFiniteNumber(g); +map.get(this)._SetGravity(g)}get angleOfMotion(){return map.get(this)._GetAngleOfMotion()}set angleOfMotion(a){C3X.RequireFiniteNumber(a);map.get(this)._SetAngleOfMotion(a)}get bounceOffSolids(){return map.get(this)._IsBounceOffSolids()}set bounceOffSolids(b){map.get(this)._SetBounceOffSolids(!!b)}get distanceTravelled(){return map.get(this)._GetDistanceTravelled()}set distanceTravelled(d){C3X.RequireFiniteNumber(d);map.get(this)._SetDistanceTravelled(d)}get isEnabled(){return map.get(this)._IsEnabled()}set isEnabled(e){map.get(this)._SetEnabled(e)}}} +{const C3=self.C3;C3.Behaviors.Bullet.Cnds={CompareSpeed(cmp,s){const speed=Math.hypot(this._dx,this._dy);return C3.compare(speed,cmp,s)},CompareTravelled(cmp,d){return C3.compare(this._GetDistanceTravelled(),cmp,d)},OnStep(){return true},IsEnabled(){return this._IsEnabled()}}} +{const C3=self.C3;C3.Behaviors.Bullet.Acts={SetSpeed(s){this._SetSpeed(s)},SetAcceleration(a){this._SetAcceleration(a)},SetGravity(g){this._SetGravity(g)},SetAngleOfMotion(a){this._SetAngleOfMotion(C3.toRadians(a))},Bounce(objectClass){if(!objectClass)return;const otherInst=objectClass.GetFirstPicked(this._inst);if(!otherInst)return;const wi=this._inst.GetWorldInfo();const collisionEngine=this._runtime.GetCollisionEngine();const dt=this._runtime.GetDt(this._inst);const s=C3.distanceTo(0,0,this._dx, +this._dy);const bounceAngle=collisionEngine.CalculateBounceAngle(this._inst,this._lastX,this._lastY,otherInst);this._dx=Math.cos(bounceAngle)*s;this._dy=Math.sin(bounceAngle)*s;wi.OffsetXY(this._dx*dt,this._dy*dt);wi.SetBboxChanged();if(this._setAngle){wi.SetAngle(bounceAngle);this._lastKnownAngle=wi.GetAngle();wi.SetBboxChanged()}if(s!==0)if(this._bounceOffSolid){if(!collisionEngine.PushOutSolid(this._inst,this._dx/s,this._dy/s,Math.max(s*2.5*dt,30)))collisionEngine.PushOutSolidNearest(this._inst, +100)}else collisionEngine.PushOut(this._inst,this._dx/s,this._dy/s,Math.max(s*2.5*dt,30),otherInst)},SetBounceOffSolids(b){this._SetBounceOffSolids(b)},SetDistanceTravelled(d){this._SetDistanceTravelled(d)},SetEnabled(e){this._SetEnabled(e)},StopStepping(){this._stopStepping=true}}} +{const C3=self.C3;C3.Behaviors.Bullet.Exps={Speed(){return this._GetSpeed()},Acceleration(){return this._GetAcceleration()},AngleOfMotion(){return C3.toDegrees(this._GetAngleOfMotion())},DistanceTravelled(){return this._GetDistanceTravelled()},Gravity(){return this._GetGravity()}}}; + +} + +// scripts/behaviors/destroy/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.destroy=class DestroyOutsideLayoutBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.destroy.Type=class DestroyOutsideLayoutType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;C3.Behaviors.destroy.Instance=class DestroyOutsideLayoutInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._StartTicking()}Release(){super.Release()}Tick(){const wi=this._inst.GetWorldInfo();const bbox=wi.GetBoundingBox();const layout=wi.GetLayout();if(bbox.getRight()<0||bbox.getBottom()<0||bbox.getLeft()>layout.GetWidth()||bbox.getTop()>layout.GetHeight())this._runtime.DestroyInstance(this._inst)}}} +{const C3=self.C3;C3.Behaviors.destroy.Cnds={}}{const C3=self.C3;C3.Behaviors.destroy.Acts={}}{const C3=self.C3;C3.Behaviors.destroy.Exps={}}; + +} + +// scripts/behaviors/Pin/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Pin=class PinBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Pin.Type=class PinType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;C3.Behaviors.Pin.Instance=class PinInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._pinInst=null;this._pinUid=-1;this._mode="";this._propSet=new Set;this._pinDist=0;this._pinAngle=0;this._pinImagePoint=0;this._dx=0;this._dy=0;this._dWidth=0;this._dHeight=0;this._dAngle=0;this._dz=0;this._lastKnownAngle=0;this._destroy=false;if(properties)this._destroy=properties[0];const rt=this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(rt, +"instancedestroy",e=>this._OnInstanceDestroyed(e.instance)),C3.Disposable.From(rt,"afterload",e=>this._OnAfterLoad()))}Release(){this._pinInst=null;super.Release()}_SetPinInst(inst){if(inst){this._pinInst=inst;this._StartTicking2()}else{this._pinInst=null;this._StopTicking2()}}_Pin(objectClass,mode,propList){if(!objectClass)return;const otherInst=objectClass.GetFirstPicked(this._inst);if(!otherInst)return;this._mode=mode;this._SetPinInst(otherInst);const myWi=this._inst.GetWorldInfo();const otherWi= +otherInst.GetWorldInfo();if(this._mode==="properties"){const propSet=this._propSet;propSet.clear();for(const p of propList)propSet.add(p);this._dx=myWi.GetX()-otherWi.GetX();this._dy=myWi.GetY()-otherWi.GetY();this._dAngle=myWi.GetAngle()-otherWi.GetAngle();this._lastKnownAngle=myWi.GetAngle();this._dz=myWi.GetZElevation()-otherWi.GetZElevation();if(propSet.has("x")&&propSet.has("y")){this._pinAngle=C3.angleTo(otherWi.GetX(),otherWi.GetY(),myWi.GetX(),myWi.GetY())-otherWi.GetAngle();this._pinDist= +C3.distanceTo(otherWi.GetX(),otherWi.GetY(),myWi.GetX(),myWi.GetY())}if(propSet.has("width-abs"))this._dWidth=myWi.GetWidth()-otherWi.GetWidth();else if(propSet.has("width-scale"))this._dWidth=myWi.GetWidth()/otherWi.GetWidth();if(propSet.has("height-abs"))this._dHeight=myWi.GetHeight()-otherWi.GetHeight();else if(propSet.has("height-scale"))this._dHeight=myWi.GetHeight()/otherWi.GetHeight()}else this._pinDist=C3.distanceTo(otherWi.GetX(),otherWi.GetY(),myWi.GetX(),myWi.GetY())}SaveToJson(){const propSet= +this._propSet;const mode=this._mode;const ret={"uid":this._pinInst&&!this._pinInst.IsDestroyed()?this._pinInst.GetUID():-1,"m":mode,"d":this._destroy};if(mode==="rope"||mode==="bar")ret["pd"]=this._pinDist;else if(mode==="properties"){ret["ps"]=[...this._propSet];if(propSet.has("imagepoint"))ret["ip"]=this._pinImagePoint;else if(propSet.has("x")&&propSet.has("y")){ret["pa"]=this._pinAngle;ret["pd"]=this._pinDist}else{if(propSet.has("x"))ret["dx"]=this._dx;if(propSet.has("y"))ret["dy"]=this._dy}if(propSet.has("angle")){ret["da"]= +this._dAngle;ret["lka"]=this._lastKnownAngle}if(propSet.has("width-abs")||propSet.has("width-scale"))ret["dw"]=this._dWidth;if(propSet.has("height-abs")||propSet.has("height-scale"))ret["dh"]=this._dHeight;if(propSet.has("z"))ret["dz"]=this._dz}return ret}LoadFromJson(o){const mode=o["m"];const propSet=this._propSet;propSet.clear();this._pinUid=o["uid"];if(typeof mode==="number"){this._LoadFromJson_Legacy(o);return}this._mode=mode;if(o.hasOwnProperty("d"))this._destroy=!!o["d"];if(mode==="rope"|| +mode==="bar")this._pinDist=o["pd"];else if(mode==="properties"){for(const p of o["ps"])propSet.add(p);if(propSet.has("imagepoint"))this._pinImagePoint=o["ip"];else if(propSet.has("x")&&propSet.has("y")){this._pinAngle=o["pa"];this._pinDist=o["pd"]}else{if(propSet.has("x"))this._dx=o["dx"];if(propSet.has("y"))this._dy=o["dy"]}if(propSet.has("angle")){this._dAngle=o["da"];this._lastKnownAngle=o["lka"]||0}if(propSet.has("width-abs")||propSet.has("width-scale"))this._dWidth=o["dw"];if(propSet.has("height-abs")|| +propSet.has("height-scale"))this._dHeight=o["dh"];if(propSet.has("z"))this._dz=o["dz"]}}_LoadFromJson_Legacy(o){const propSet=this._propSet;const myStartAngle=o["msa"];const theirStartAngle=o["tsa"];const pinAngle=o["pa"];const pinDist=o["pd"];const mode=o["m"];switch(mode){case 0:this._mode="properties";propSet.add("x").add("y").add("angle");this._pinAngle=pinAngle;this._pinDist=pinDist;this._dAngle=myStartAngle-theirStartAngle;this._lastKnownAngle=o["lka"];break;case 1:this._mode="properties";propSet.add("x").add("y"); +this._pinAngle=pinAngle;this._pinDist=pinDist;break;case 2:this._mode="properties";propSet.add("angle");this._dAngle=myStartAngle-theirStartAngle;this._lastKnownAngle=o["lka"];break;case 3:this._mode="rope";this._pinDist=o["pd"];break;case 4:this._mode="bar";this._pinDist=o["pd"];break}}_OnAfterLoad(){if(this._pinUid===-1)this._SetPinInst(null);else{this._SetPinInst(this._runtime.GetInstanceByUID(this._pinUid));this._pinUid=-1}}_OnInstanceDestroyed(inst){if(this._pinInst===inst){this._SetPinInst(null); +if(this._destroy)this._runtime.DestroyInstance(this._inst)}}Tick2(){const pinInst=this._pinInst;if(!pinInst||pinInst.IsDestroyed())return;const pinWi=pinInst.GetWorldInfo();const myInst=this._inst;const myWi=myInst.GetWorldInfo();const mode=this._mode;let bboxChanged=false;if(mode==="rope"||mode==="bar"){const dist=C3.distanceTo(myWi.GetX(),myWi.GetY(),pinWi.GetX(),pinWi.GetY());if(dist>this._pinDist||mode==="bar"&&dist({"x":p.x,"y":p.y})),"e":this._isEnabled}}LoadFromJson(o){this._maxSpeed=o["ms"];this._acc=o["acc"];this._dec=o["dec"];this._rotateSpeed= +o["rs"];this._setAngle=o["sa"];this._stopOnSolids=o["sos"];this._speed=o["s"];this._movingAngle=o["ma"];this._waypoints=o["wp"].map(p=>({x:p["x"],y:p["y"]}));this._SetEnabled(o["e"]);if(this._isEnabled&&this._waypoints.length>0)this._StartTicking()}_AddWaypoint(x,y,isDirect,opts){if(isDirect)C3.clearArray(this._waypoints);this._waypoints.push({x,y,opts});if(this._isEnabled)this._StartTicking()}_GetWaypointCount(){return this._waypoints.length}_GetWaypointXAt(i){i=Math.floor(i);if(i<0||i>=this._waypoints.length)return 0; +return this._waypoints[i].x}_GetWaypointYAt(i){i=Math.floor(i);if(i<0||i>=this._waypoints.length)return 0;return this._waypoints[i].y}_IsMoving(){return this._waypoints.length>0}_Stop(){C3.clearArray(this._waypoints);this._speed=0;this._StopTicking()}_GetTargetX(){if(this._waypoints.length>0)return this._waypoints[0].x;else return 0}_GetTargetY(){if(this._waypoints.length>0)return this._waypoints[0].y;else return 0}_GetTargetIsBezier(){if(this._waypoints.length>0){const waypoint=this._waypoints[0]; +if(waypoint.opts)return waypoint.opts.isBezier}return false}_GetTargetIsBezierFirst(){if(this._waypoints.length>0){const waypoint=this._waypoints[0];if(waypoint.opts)return waypoint.opts.isBezier&&waypoint.opts.isFirst}return false}_GetTargetBezierPosition(){if(this._waypoints.length>0){const waypoint=this._waypoints[0];if(waypoint.opts)return waypoint.opts.bezierPosition}return false}_GetTargetBezierSegment(){if(this._waypoints.length>0){const waypoint=this._waypoints[0];if(waypoint.opts)return waypoint.opts.bezierSegment}return false}_SetSpeed(s){if(!this._IsMoving())return; +this._speed=Math.min(s,this._maxSpeed)}_GetSpeed(){return this._speed}_SetMaxSpeed(ms){this._maxSpeed=Math.max(ms,0);this._SetSpeed(this._speed)}_GetMaxSpeed(){return this._maxSpeed}_IsRotationEnabled(){if(this._isEnabled&&this._IsMoving())if(this._GetTargetIsBezier()){if(this._GetTargetIsBezierFirst())return true;return false}return this._rotateSpeed!==0}Tick(){if(!this._isEnabled||!this._IsMoving())return;const dt=this._runtime.GetDt(this._inst);const wi=this._inst.GetWorldInfo();const startX=wi.GetX(); +const startY=wi.GetY();const startAngle=wi.GetAngle();let curSpeed=this._speed;let maxSpeed=this._maxSpeed;const acc=this._acc;const dec=this._dec;const targetX=this._GetTargetX();const targetY=this._GetTargetY();const angleToTarget=C3.angleTo(startX,startY,targetX,targetY);let isWithinStoppingDistance=false;if(dec>0&&this._waypoints.length===1){const stoppingDist=.5*curSpeed*curSpeed/dec*1.0001;isWithinStoppingDistance=C3.distanceSquared(startX,startY,targetX,targetY)<=stoppingDist*stoppingDist; +if(isWithinStoppingDistance){const remainingDist=C3.distanceTo(startX,startY,targetX,targetY);curSpeed=Math.sqrt(2*dec*remainingDist);maxSpeed=curSpeed;this._speed=curSpeed}}if(this._IsRotationEnabled()){const da=C3.angleDiff(this._movingAngle,angleToTarget);if(da>Number.EPSILON){const t=da/this._rotateSpeed;const dist=C3.distanceTo(wi.GetX(),wi.GetY(),targetX,targetY);const r=dist/(2*Math.sin(da));const curveDist=r*da;maxSpeed=Math.min(maxSpeed,C3.clamp(curveDist/t,0,this._maxSpeed))}}let curAcc= +isWithinStoppingDistance?-dec:acc;const stepDist=Math.min(curSpeed*dt+.5*curAcc*dt*dt,maxSpeed*dt);if(isWithinStoppingDistance){if(dec>0){this._speed=Math.max(this._speed-dec*dt,0);if(this._speed===0){this._OnArrived(wi,targetX,targetY);return}}}else if(acc===0)this._speed=maxSpeed;else this._speed=Math.min(this._speed+acc*dt,maxSpeed);if(C3.distanceSquared(wi.GetX(),wi.GetY(),targetX,targetY)<=stepDist*stepDist){this._OnArrived(wi,targetX,targetY);return}if(this._IsRotationEnabled())this._movingAngle= +C3.angleRotate(this._movingAngle,angleToTarget,this._rotateSpeed*dt);else this._movingAngle=angleToTarget;wi.OffsetXY(Math.cos(this._movingAngle)*stepDist,Math.sin(this._movingAngle)*stepDist);if(this._setAngle){const targetIsBezier=this._GetTargetIsBezier();const targetIsBezierFirst=this._GetTargetIsBezierFirst();if(targetIsBezier&&!targetIsBezierFirst){const bezierSegment=this._GetTargetBezierSegment();const bezierPosition=this._GetTargetBezierPosition();const x=wi.GetX();const y=wi.GetY();if(self.isNaN(this._lastBezierSegment))this._lastBezierSegment= +0;let projection;if(this._lastBezierSegment===bezierSegment)projection=this._timelineInfo.Project(x,y,{tRange:[this._lastBezierPosition,bezierPosition]});else projection=this._timelineInfo.Project(x,y);const angle=this._timelineInfo.TangentAngle(x,y,projection[2],projection[4]);wi.SetAngle(angle)}else{wi.SetAngle(this._movingAngle);this._lastBezierPosition=NaN;this._lastBezierSegment=NaN}}wi.SetBboxChanged();this._CheckSolidCollision(startX,startY,startAngle)}_OnArrived(wi,targetX,targetY){wi.SetXY(targetX, +targetY);wi.SetBboxChanged();const waypoint=this._waypoints[0];if(waypoint.opts&&waypoint.opts.isBezier){this._lastBezierPosition=waypoint.opts.bezierPosition;this._lastBezierSegment=waypoint.opts.bezierSegment}else{this._lastBezierPosition=NaN;this._lastBezierSegment=NaN}this._waypoints.shift();if(this._waypoints.length===0){if(this._timelineInfo){this._timelineInfo.Release();this._timelineInfo=null;this._lastBezierPosition=NaN;this._lastBezierSegment=NaN}this._speed=0;this._StopTicking()}this.DispatchScriptEvent("arrived"); +this.Trigger(C3.Behaviors.MoveTo.Cnds.OnArrived)}_CheckSolidCollision(startX,startY,startAngle){const collisionEngine=this._runtime.GetCollisionEngine();if(this._stopOnSolids&&collisionEngine.TestOverlapSolid(this._inst)){this._Stop();const wi=this._inst.GetWorldInfo();const x=wi.GetX();const y=wi.GetY();const a=C3.angleTo(x,y,startX,startY);const dist=C3.distanceTo(x,y,startX,startY);if(!collisionEngine.PushOutSolid(this._inst,Math.cos(a),Math.sin(a),Math.max(dist,1))){wi.SetXY(startX,startY);wi.SetAngle(startAngle); +wi.SetBboxChanged()}this.DispatchScriptEvent("hitsolid");this.Trigger(C3.Behaviors.MoveTo.Cnds.OnHitSolid)}}_IsSetAngle(){return this._setAngle}_SetSetAngle(a){this._setAngle=!!a}_SetAngleOfMotion(a){this._movingAngle=a;if(this._isEnabled&&this._setAngle&&!this._IsMoving()){const wi=this.GetWorldInfo();wi.SetAngle(this._movingAngle);wi.SetBboxChanged()}}_GetAngleOfMotion(){return this._movingAngle}_SetAcceleration(a){this._acc=Math.max(a,0)}_GetAcceleration(){return this._acc}_SetDeceleration(d){this._dec= +Math.max(d,0)}_GetDeceleration(){return this._dec}_SetRotateSpeed(r){this._rotateSpeed=Math.max(r,0)}_GetRotateSpeed(){return this._rotateSpeed}_SetStopOnSolids(e){this._stopOnSolids=!!e}_IsStopOnSolids(){return this._stopOnSolids}_SetEnabled(e){e=!!e;if(this._isEnabled===e)return;this._isEnabled=e;if(this._isEnabled&&this._IsMoving())this._StartTicking();else this._StopTicking()}_IsEnabled(){return this._isEnabled}GetPropertyValueByIndex(index){switch(index){case PROP_MAX_SPEED:return this._GetMaxSpeed(); +case PROP_ACCELERATION:return this._GetAcceleration();case PROP_DECELERATION:return this._GetDeceleration();case PROP_ROTATE_SPEED:return C3.toDegrees(this._GetRotateSpeed());case PROP_SET_ANGLE:return this._IsSetAngle();case PROP_STOP_ON_SOLIDS:return this._IsStopOnSolids();case PROP_ENABLED:return this._IsEnabled()}}SetPropertyValueByIndex(index,value){switch(index){case PROP_MAX_SPEED:this._SetMaxSpeed(value);break;case PROP_ACCELERATION:this._SetAcceleration(value);break;case PROP_DECELERATION:this._SetDeceleration(value); +break;case PROP_ROTATE_SPEED:this._SetRotateSpeed(C3.toRadians(value));break;case PROP_SET_ANGLE:this._SetSetAngle(value);break;case PROP_STOP_ON_SOLIDS:this._SetStopOnSolids(value);break;case PROP_ENABLED:this._SetEnabled(value);break}}GetDebuggerProperties(){const prefix="behaviors.moveto";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".debugger.speed",value:this._GetSpeed(),onedit:v=>this._SetSpeed(v)},{name:prefix+".debugger.angle-of-motion",value:C3.toDegrees(this._GetAngleOfMotion()), +onedit:v=>this._movingAngle=C3.toRadians(v)},{name:prefix+".debugger.target-x",value:this._GetTargetX()},{name:prefix+".debugger.target-y",value:this._GetTargetY()},{name:prefix+".debugger.waypoint-count",value:this._GetWaypointCount()},{name:prefix+".properties.max-speed.name",value:this._GetMaxSpeed(),onedit:v=>this._SetMaxSpeed(v)},{name:prefix+".properties.acceleration.name",value:this._GetAcceleration(),onedit:v=>this._SetAcceleration(v)},{name:prefix+".properties.deceleration.name",value:this._GetDeceleration(), +onedit:v=>this._SetDeceleration(v)},{name:prefix+".properties.rotate-speed.name",value:C3.toDegrees(this._GetRotateSpeed()),onedit:v=>this._SetRotateSpeed(C3.toRadians(v))},{name:prefix+".properties.enabled.name",value:this._IsEnabled(),onedit:v=>this._SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.IMoveToBehaviorInstance}};const map=new WeakMap;self.IMoveToBehaviorInstance=class IMoveToBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}moveToPosition(x, +y,isDirect=true){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);map.get(this)._AddWaypoint(x,y,!!isDirect)}getTargetX(){return map.get(this)._GetTargetX()}getTargetY(){return map.get(this)._GetTargetY()}getTargetPosition(){const b=map.get(this);return[b._GetTargetX(),b._GetTargetY()]}getWaypointCount(){return map.get(this)._GetWaypointCount()}getWaypointX(i){C3X.RequireFiniteNumber(i);return map.get(this)._GetWaypointXAt(i)}getWaypointY(i){C3X.RequireFiniteNumber(i);return map.get(this)._GetWaypointYAt(i)}getWaypoint(i){C3X.RequireFiniteNumber(i); +const b=map.get(this);return[b._GetWaypointXAt(i),b._GetWaypointYAt(i)]}stop(){map.get(this)._Stop()}get isMoving(){return map.get(this)._IsMoving()}get speed(){return map.get(this)._GetSpeed()}set speed(s){C3X.RequireFiniteNumber(s);map.get(this)._SetSpeed(s)}get maxSpeed(){return map.get(this)._GetMaxSpeed()}set maxSpeed(ms){C3X.RequireFiniteNumber(ms);map.get(this)._SetMaxSpeed(ms)}get acceleration(){return map.get(this)._GetAcceleration()}set acceleration(a){C3X.RequireFiniteNumber(a);map.get(this)._SetAcceleration(a)}get deceleration(){return map.get(this)._GetDeceleration()}set deceleration(d){C3X.RequireFiniteNumber(d); +map.get(this)._SetDeceleration(d)}get angleOfMotion(){return map.get(this)._GetAngleOfMotion()}set angleOfMotion(a){C3X.RequireFiniteNumber(a);map.get(this)._SetAngleOfMotion(a)}get rotateSpeed(){return map.get(this)._GetRotateSpeed()}set rotateSpeed(r){C3X.RequireFiniteNumber(r);map.get(this)._SetRotateSpeed(r)}get isStopOnSolids(){return map.get(this)._IsStopOnSolids()}set isStopOnSolids(e){map.get(this)._SetStopOnSolids(e)}get isEnabled(){return map.get(this)._IsEnabled()}set isEnabled(e){map.get(this)._SetEnabled(e)}}} +{const C3=self.C3;C3.Behaviors.MoveTo.Cnds={IsMoving(){return this._IsMoving()},CompareSpeed(cmp,s){return C3.compare(this._GetSpeed(),cmp,s)},IsEnabled(){return this._IsEnabled()},OnArrived(){return true},OnHitSolid(){return true}}} +{const C3=self.C3;C3.Behaviors.MoveTo.Acts={MoveToPosition(x,y,mode){this._AddWaypoint(x,y,mode===0)},MoveToObject(objectClass,imgPt,mode){if(!objectClass)return;const inst=objectClass.GetPairedInstance(this._inst);if(!inst||!inst.GetWorldInfo())return;const [x,y]=inst.GetImagePoint(imgPt);this._AddWaypoint(x,y,mode===0)},MoveAlongPathfindingPath(mode){const behInst=this._inst.GetBehaviorSdkInstanceFromCtor(C3.Behaviors.Pathfinding);if(!behInst)return;const path=behInst._GetPath();if(path.length=== +0)return;for(let i=0,len=path.length;i=this._hcells||y>=this._vcells)return PF_OBSTACLE;return this._cells[x][y]}GetHCells(){return this._hcells}GetVCells(){return this._vcells}} +class PathfinderState{constructor(behavior,mapKey){this._isReady=false;this._mapData=new MapData;this._moveCost=10;this._isDiagonalsEnabled=true;this._isInPathGroup=false;this._pathGroupId=0;this._pathGroupCost=0;this._pathGroupCellSpread=0;this._pathGroupMaxWorkers=0;this._regenerateFlag=false;this._regenerateRegions=[];this._regeneratePromise=null;this._regenerateResolve=null;this._behavior=behavior;this._mapKey=mapKey;const mapKeyParts=mapKey.split(",");this._runtime=behavior.GetRuntime();this._cellSize= +parseInt(mapKeyParts[0],10);this._cellBorder=parseInt(mapKeyParts[1],10);this._scriptInterface=new self.IPathfindingMap(this)}SetReady(r){this._isReady=!!r}IsReady(){return this._isReady}GetCellSize(){return this._cellSize}GetCellBorder(){return this._cellBorder}GetHCells(){return this._mapData.GetHCells()}GetVCells(){return this._mapData.GetVCells()}GetMapData(){return this._mapData}GetRuntime(){return this._runtime}GetBehavior(){return this._behavior}GetMapKey(){return this._mapKey}SetMoveCost(c){this._moveCost= +Math.floor(c)}GetMoveCost(){return this._moveCost}SetDiagonalsEnabled(e){this._isDiagonalsEnabled=!!e}IsDiagonalsEnabled(){return this._isDiagonalsEnabled}SetRegenerateFlag(r){this._regenerateFlag=!!r}IsRegenerateFlagSet(){return this._regenerateFlag}GetRegenerateRegions(){return this._regenerateRegions}GetRegeneratePromise(){if(!this._regeneratePromise)this._regeneratePromise=new Promise(resolve=>this._regenerateResolve=resolve);return this._regeneratePromise}_ResolveRegeneratePromise(){if(this._regenerateResolve)this._regenerateResolve(); +this._regeneratePromise=null;this._regenerateResolve=null}AddRegenerateRegion(startX,startY,endX,endY){if(this.IsRegenerateFlagSet())return true;const cellSize=this._cellSize;const cellBorder=this._cellBorder;const hcells=this._mapData.GetHCells();const vcells=this._mapData.GetVCells();const x1=Math.min(startX,endX)-cellBorder;const y1=Math.min(startY,endY)-cellBorder;const x2=Math.max(startX,endX)+cellBorder;const y2=Math.max(startY,endY)+cellBorder;const cellX1=Math.max(Math.floor(x1/cellSize), +0);const cellY1=Math.max(Math.floor(y1/cellSize),0);const cellX2=Math.min(Math.ceil(x2/cellSize),hcells);const cellY2=Math.min(Math.ceil(y2/cellSize),vcells);if(cellX1>=cellX2||cellY1>=cellY2)return false;this.GetRegenerateRegions().push([cellX1,cellY1,cellX2,cellY2]);return true}AddObjectRegenerateRegion(objectClass){const instances=objectClass.GetCurrentSol().GetInstances();let didAddRegion=false;for(const inst of instances){const wi=inst.GetWorldInfo();if(!wi)continue;const bbox=wi.GetBoundingBox(); +const result=this.AddRegenerateRegion(bbox.getLeft(),bbox.getTop(),bbox.getRight(),bbox.getBottom());didAddRegion=didAddRegion||result}return didAddRegion}StartPathGroup(baseCost,cellSpread,maxWorkers){if(this._isInPathGroup)return;this._isInPathGroup=true;this._pathGroupId++;maxWorkers=Math.min(maxWorkers,this._runtime.GetMaxNumJobWorkers());const pathCost=baseCost*maxWorkers;this._pathGroupCost=pathCost;this._pathGroupCellSpread=cellSpread;this._pathGroupMaxWorkers=maxWorkers}EndPathGroup(){this._isInPathGroup= +false}IsInPathGroup(){return this._isInPathGroup}GetPathGroupId(){return this._pathGroupId}GetPathGroupCost(){return this._pathGroupCost}GetPathGroupCellSpread(){return this._pathGroupCellSpread}GetPathGroupMaxWorkers(){return this._pathGroupMaxWorkers}GetScriptInterface(){return this._scriptInterface}}C3.Behaviors.Pathfinding=class PathfindingBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts);this._mapState=new Map;this._runtime.AddLoadPromise(this._runtime.AddJobWorkerScripts(["redblackset.js", +"pathfind.js"]));this._runtime.Dispatcher().addEventListener("beforelayoutchange",()=>this._OnBeforeLayoutChange())}Release(){super.Release()}GetMapKey(cellSize,cellBorder){return cellSize+","+cellBorder}GetPathfinderState(mapKey){let ret=this._mapState.get(mapKey);if(!ret){ret=new PathfinderState(this,mapKey);this._mapState.set(mapKey,ret)}return ret}UpdateCellData(mapKey,hcells,vcells,cellData){const state=this.GetPathfinderState(mapKey);this._runtime.BroadcastJob("PFCellData",{"broadcastKey":"PFCellData:"+ +mapKey,"mapKey":mapKey,"hcells":hcells,"vcells":vcells,"cellData":cellData});state.SetReady(true);state.GetMapData().SetData(hcells,vcells,cellData);state.SetRegenerateFlag(false)}UpdateRegion(mapKey,cx1,cy1,lenx,leny,cellData){this._runtime.BroadcastJob("PFUpdateRegion",{"broadcastKey":"PFUpdateRegion:"+mapKey,"mapKey":mapKey,"cx1":cx1,"cy1":cy1,"lenx":lenx,"leny":leny,"cellData":cellData});this.GetPathfinderState(mapKey).GetMapData().UpdateRegion(cx1,cy1,lenx,leny,cellData)}FindPath(mapKey,cellX, +cellY,destCellX,destCellY,directMovementMode){const state=this.GetPathfinderState(mapKey);let pathGroupData=null;let maxWorkers=null;if(state.IsInPathGroup()){maxWorkers=state.GetPathGroupMaxWorkers();pathGroupData={"id":state.GetPathGroupId(),"cost":state.GetPathGroupCost(),"cellSpread":state.GetPathGroupCellSpread()}}return this._runtime.AddJob("PFFindPath",{"mapKey":mapKey,"cellX":cellX,"cellY":cellY,"destCellX":destCellX,"destCellY":destCellY,"moveCost":state.GetMoveCost(),"diagonalsEnabled":state.IsDiagonalsEnabled(), +"directMovementMode":directMovementMode,"pathGroup":pathGroupData},null,maxWorkers)}_OnBeforeLayoutChange(){for(const state of this._mapState.values()){state.SetReady(false);state.GetMapData().SetData(0,0,null);state.SetRegenerateFlag(true)}this._runtime.BroadcastJob("PFResetAllCellData")}};const map=new WeakMap;self.IPathfindingMap=class IPathfindingMap{constructor(state){map.set(this,state);Object.defineProperties(this,{cellSize:{value:state.GetCellSize(),writable:false},cellBorder:{value:state.GetCellBorder(), +writable:false}})}get widthInCells(){return map.get(this).GetHCells()}get heightInCells(){return map.get(this).GetVCells()}isCellObstacle(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);return map.get(this).GetMapData().At(x,y)===PF_OBSTACLE}set moveCost(c){C3X.RequireFiniteNumber(c);map.get(this).SetMoveCost(c)}get moveCost(){return map.get(this).GetMoveCost()}set isDiagonalsEnabled(e){map.get(this).SetDiagonalsEnabled(e)}get isDiagonalsEnabled(){return map.get(this).IsDiagonalsEnabled()}async regenerateMap(){const state= +map.get(this);state.SetRegenerateFlag(true);await state.GetRegeneratePromise()}async regenerateRegion(startX,startY,endX,endY){const state=map.get(this);if(state.AddRegenerateRegion(startX,startY,endX,endY))await state.GetRegeneratePromise()}async regenerateObjectRegion(iObjectClass){const state=map.get(this);const objectClass=state.GetRuntime()._UnwrapIObjectClass(iObjectClass);if(state.AddObjectRegenerateRegion(objectClass))await state.GetRegeneratePromise()}startPathGroup(baseCost=1,cellSpread= +1,maxWorkers=1){C3X.RequireFiniteNumber(baseCost);C3X.RequireFiniteNumber(cellSpread);C3X.RequireFiniteNumber(maxWorkers);baseCost=Math.floor(baseCost);cellSpread=Math.floor(cellSpread);maxWorkers=Math.floor(maxWorkers);if(maxWorkers<=0)throw new Error("invalid max workers");if(cellSpread<=0)throw new Error("invalid cell spread");map.get(this).StartPathGroup(baseCost,cellSpread,maxWorkers)}endPathGroup(){map.get(this).EndPathGroup()}}} +{const C3=self.C3;C3.Behaviors.Pathfinding.Type=class PathfindingType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType);this._obstacleTypes=[];this._costTypes=[]}Release(){super.Release()}OnCreate(){}GetObstacleTypes(){return this._obstacleTypes}GetCostTypes(){return this._costTypes}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const CELL_SIZE=0;const CELL_BORDER=1;const OBSTACLES=2;const MAX_SPEED=3;const ACCELERATION=4;const DEACCELERATION=5;const ROTATE_SPEED=6;const ROTATE_ENABLE=7;const DIAGONALS_ENABLE=8;const DIRECT_MOVEMENT=9;const ENABLE=10;const PF_CLEAR=0;const PF_OBSTACLE=2147483647;const tempRect=new C3.Rect;const candidates=[];C3.Behaviors.Pathfinding.Instance=class PathfindingInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst, +properties){super(behInst);const wi=this.GetWorldInfo();this._cellSize=30;this._cellBorder=-1;this._obstacles=0;this._maxSpeed=200;this._acc=1E3;this._dec=2E3;this._av=C3.toRadians(135);this._isRotateEnabled=true;this._directMovementMode=1;this._isEnabled=true;this._isMoving=false;this._movingFromStopped=false;this._firstTickMovingWhileMoving=false;this._hasPath=false;this._moveNode=0;this._a=wi.GetAngle();this._lastKnownAngle=wi.GetAngle();this._s=0;this._rabbitX=0;this._rabbitY=0;this._rabbitA= +0;this._myHcells=0;this._myVcells=0;this._myPath=[];this._delayFindPath=false;this._delayFindPathResolves=[];this._delayPathX=0;this._delayPathY=0;this._isDestroyed=false;this._isCalculating=false;this._calcPathX=0;this._calcPathY=0;this._isFirstRun=true;let isDiagonalsEnabled=true;if(properties){this._cellSize=properties[CELL_SIZE];this._cellBorder=properties[CELL_BORDER];this._obstacles=properties[OBSTACLES];this._maxSpeed=properties[MAX_SPEED];this._acc=properties[ACCELERATION];this._dec=properties[DEACCELERATION]; +this._av=C3.toRadians(properties[ROTATE_SPEED]);this._isRotateEnabled=!!properties[ROTATE_ENABLE];isDiagonalsEnabled=!!properties[DIAGONALS_ENABLE];this._directMovementMode=properties[DIRECT_MOVEMENT];this._isEnabled=!!properties[ENABLE]}const layout=wi.GetLayout();this._myHcells=Math.ceil(layout.GetWidth()/this._cellSize);this._myVcells=Math.ceil(layout.GetHeight()/this._cellSize);const rt=this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(rt,"afterload",e=> +this._OnAfterLoad()));if(this._cellSize<3)this._cellSize=3;if(this._isEnabled){this._StartTicking();this._StartTicking2()}this.GetMyState().SetDiagonalsEnabled(isDiagonalsEnabled)}Release(){this._isDestroyed=true;super.Release()}GetMapKey(){return this.GetBehavior().GetMapKey(this._cellSize,this._cellBorder)}GetMyState(){return this.GetBehavior().GetPathfinderState(this.GetMapKey())}SaveToJson(){const state=this.GetMyState();const ret={"cs":this._cellSize,"cb":this._cellBorder,"ms":this._maxSpeed, +"acc":this._acc,"dec":this._dec,"av":this._av,"re":this._isRotateEnabled,"mc":state.GetMoveCost(),"de":state.IsDiagonalsEnabled(),"o":this._obstacles,"im":this._isMoving,"mfs":this._movingFromStopped,"ftmwm":this._firstTickMovingWhileMoving,"hp":this._hasPath,"mn":this._moveNode,"a":this._a,"lka":this._lastKnownAngle,"s":this._s,"rx":this._rabbitX,"ry":this._rabbitY,"ra":this._rabbitA,"hc":this._myHcells,"vc":this._myVcells,"p":this._myPath,"dmm":this._directMovementMode,"e":this._isEnabled,"fr":this._isFirstRun, +"obs":this.GetSdkType().GetObstacleTypes().map(t=>t.GetSID()),"costs":this.GetSdkType().GetCostTypes().map(c=>({"sid":c.objectClass.GetSID(),"cost":c.cost}))};if(this._isCalculating){ret["dfp"]=true;ret["dfx"]=this._calcPathX;ret["dfy"]=this._calcPathY}else{ret["dfp"]=this._delayFindPath;ret["dfx"]=this._delayPathX;ret["dfy"]=this._delayPathY}return ret}LoadFromJson(o){this._cellSize=o["cs"];this._cellBorder=o["cb"];this._maxSpeed=o["ms"];this._acc=o["acc"];this._dec=o["dec"];this._av=o["av"];this._isRotateEnabled= +o["re"];const isDiagonalsEnabled=o["de"];const moveCost=o.hasOwnProperty("mc")?o["mc"]:10;this._obstacles=o["o"];this._isMoving=o["im"];this._movingFromStopped=o["mfs"];this._firstTickMovingWhileMoving=o["ftmwm"];this._hasPath=o["hp"];this._moveNode=o["mn"];this._a=o["a"];this._lastKnownAngle=o["lka"];this._s=o["s"];this._rabbitX=o["rx"];this._rabbitY=o["ry"];this._rabbitA=o["ra"];this._myHcells=o["hc"];this._myVcells=o["vc"];this._myPath=o["p"];this._SetEnabled(o["e"]);this._isFirstRun=o["fr"];if(o.hasOwnProperty("dmm"))this._directMovementMode= +o["dmm"];this._delayFindPath=o["dfp"];C3.clearArray(this._delayFindPathResolves);this._delayPathX=o["dfx"];this._delayPathY=o["dfy"];const obstacleTypes=this.GetSdkType().GetObstacleTypes();C3.clearArray(obstacleTypes);for(const sid of o["obs"]){const objectClass=this._runtime.GetObjectClassBySID(sid);if(objectClass)obstacleTypes.push(objectClass)}const costTypes=this.GetSdkType().GetCostTypes();C3.clearArray(costTypes);for(const c of costTypes){const objectClass=this._runtime.GetObjectClassBySID(c["sid"]); +if(objectClass)costTypes.push({objectClass,cost:c["cost"]})}if(this._cellSize<3)this._cellSize=3;const state=this.GetMyState();state.SetMoveCost(moveCost);state.SetDiagonalsEnabled(isDiagonalsEnabled)}_OnAfterLoad(){this.GetMyState().SetRegenerateFlag(true)}Tick(){if(!this._isEnabled||!this._isMoving)return;const dt=this._runtime.GetDt(this._inst);const wi=this._inst.GetWorldInfo();if(this._isRotateEnabled&&wi.GetAngle()!==this._lastKnownAngle)this._a=wi.GetAngle();const myPath=this._myPath;const rabbitAheadDist= +Math.min(this._maxSpeed*.4,Math.abs(wi.GetWidth())*2);const rabbitSpeed=Math.max(this._s*1.5,30);let nextX=0;let nextY=0;if(this._moveNode1){this._a=C3.angleRotate(this._a,targetAngle,this._av*dt);let curMaxSpeed=0;if(C3.toDegrees(da)<=.5)curMaxSpeed=this._maxSpeed;else if(C3.toDegrees(da)>=120||this._movingFromStopped&&this._moveNode===0)this._movingFromStopped=true;else{const t=da/this._av;const dist=C3.distanceTo(wi.GetX(), +wi.GetY(),this._rabbitX,this._rabbitY);const r=dist/(2*Math.sin(da));const curveDist=r*da;curMaxSpeed=C3.clamp(curveDist/t,0,this._maxSpeed)}if(distToFinishcurMaxSpeed)this._s=curMaxSpeed}wi.OffsetXY(Math.cos(this._a)*this._s*dt,Math.sin(this._a)*this._s*dt);if(this._isRotateEnabled){wi.SetAngle(this._a);this._lastKnownAngle=wi.GetAngle()}wi.SetBboxChanged();if(this._moveNode=== +myPath.length&&C3.distanceTo(wi.GetX(),wi.GetY(),nextX,nextY)new Int32Array(this._myVcells));const leny=this._myVcells; +for(let x=0,lenx=this._myHcells;xnew Int32Array(leny));for(let x=0;x0){const seenCandidates=new Set;for(let i=0,len=candidates.length;i({x:(n.x+.5)*cellSize,y:(n.y+.5)*cellSize}));this._hasPath=this._myPath.length>0;if(!calledFromScript)await this.TriggerAsync(C3.Behaviors.Pathfinding.Cnds.OnPathFound)}if(!calledFromScript)this._DoDelayFindPath()}_GetPath(){return this._myPath}GetPropertyValueByIndex(index){switch(index){case MAX_SPEED:return this._GetMaxSpeed(); +case ACCELERATION:return this._GetAcceleration();case DEACCELERATION:return this._GetDeceleration();case ROTATE_SPEED:return C3.toDegrees(this._GetRotateSpeed());case ROTATE_ENABLE:return this._isRotateEnabled;case DIAGONALS_ENABLE:return this.GetMyState().IsDiagonalsEnabled();case ENABLE:return this._IsEnabled()}}SetPropertyValueByIndex(index,value){switch(index){case MAX_SPEED:this._SetMaxSpeed(value);break;case ACCELERATION:this._SetAcceleration(value);break;case DEACCELERATION:this._SetDeceleration(value); +break;case ROTATE_SPEED:this._SetRotateSpeed(C3.toRadians(value));break;case ROTATE_ENABLE:this._isRotateEnabled=!!value;break;case DIAGONALS_ENABLE:this.GetMyState().SetDiagonalsEnabled(!!value);break;case ENABLE:this._SetEnabled(value);break}}async _FindPath(x,y){if(!this._isEnabled)return;const state=this.GetMyState();if(this._isCalculating||!state.IsReady())await new Promise(resolve=>{this._delayFindPath=true;this._delayFindPathResolves.push(resolve);this._delayPathX=x;this._delayPathY=y});else{const wi= +this.GetWorldInfo();await this._DoFindPath(wi.GetX(),wi.GetY(),x,y)}}_StartMoving(){if(!this._hasPath)return;if(this._isMoving)this._firstTickMovingWhileMoving=true;this._movingFromStopped=!this._isMoving;this._isMoving=true;const wi=this.GetWorldInfo();this._rabbitX=wi.GetX();this._rabbitY=wi.GetY();this._rabbitA=wi.GetAngle()}_Stop(){this._isMoving=false}_SetMaxSpeed(s){this._maxSpeed=s}_GetMaxSpeed(){return this._maxSpeed}_SetSpeed(s){this._s=C3.clamp(s,0,this._maxSpeed)}_GetSpeed(){return this._IsMoving()? +this._s:0}_SetAcceleration(a){this._acc=a}_GetAcceleration(){return this._acc}_SetDeceleration(d){this._dec=d}_GetDeceleration(){return this._dec}_SetRotateSpeed(r){this._av=r}_GetRotateSpeed(){return this._av}_IsCalculatingPath(){return this._isCalculating}_IsMoving(){return this._isMoving}_HasPath(){return this._hasPath}_GetMovingAngle(){return this._a}_GetNodeCount(){return this._myPath.length}_GetCurrentNode(){return this._moveNode}_GetNodeAt(i){i=Math.floor(i);if(i<0||i>=this._myPath.length)return null; +else return this._myPath[i]}_GetNodeXAt(i){const n=this._GetNodeAt(i);return n?n.x:0}_GetNodeYAt(i){const n=this._GetNodeAt(i);return n?n.y:0}_SetDirectMovementMode(m){if(m<0||m>2)throw new Error("invalid direct movement mode");this._directMovementMode=m}_GetDirectMovementMode(){return this._directMovementMode}_SetEnabled(e){this._isEnabled=!!e;if(this._isEnabled){this._StartTicking();this._StartTicking2()}else{this._StopTicking();this._StopTicking2()}}_IsEnabled(){return this._isEnabled}GetDebuggerProperties(){const prefix= +"behaviors.pathfinding";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".debugger.has-path",value:this._hasPath},{name:prefix+".debugger.is-calculating-path",value:this._IsCalculatingPath()},{name:prefix+".debugger.is-moving",value:this._IsMoving()},{name:prefix+".debugger.speed",value:this._GetSpeed(),onedit:v=>this._SetSpeed(v)},{name:prefix+".debugger.angle-of-motion",value:C3.toDegrees(this._a),onedit:v=>this._a=C3.toRadians(v)},{name:prefix+".properties.max-speed.name", +value:this._GetMaxSpeed(),onedit:v=>this._SetMaxSpeed(v)},{name:prefix+".properties.acceleration.name",value:this._GetAcceleration(),onedit:v=>this._SetAcceleration(v)},{name:prefix+".properties.deceleration.name",value:this._GetDeceleration(),onedit:v=>this._SetDeceleration(v)},{name:prefix+".properties.rotate-speed.name",value:C3.toDegrees(this._GetRotateSpeed()),onedit:v=>this._SetRotateSpeed(C3.toRadians(v))},{name:prefix+".properties.enabled.name",value:this._IsEnabled(),onedit:v=>this._SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.IPathfindingBehaviorInstance}}; +const map=new WeakMap;const DIRECT_MOVEMENT_STRS=["none","to-destination","anywhere-along-path"];self.IPathfindingBehaviorInstance=class IPathfindingBehaviorInstance extends IBehaviorInstance{constructor(){super();const sdkInst=IBehaviorInstance._GetInitInst().GetSdkInstance();map.set(this,sdkInst);Object.defineProperties(this,{map:{value:sdkInst.GetMyState().GetScriptInterface(),writable:false}})}async findPath(x,y){C3X.RequireFiniteNumber(x);C3X.RequireFiniteNumber(y);const inst=map.get(this);await inst._FindPath(x, +y);return inst._HasPath()}async calculatePath(fromX,fromY,toX,toY){C3X.RequireFiniteNumber(fromX);C3X.RequireFiniteNumber(fromY);C3X.RequireFiniteNumber(toX);C3X.RequireFiniteNumber(toY);const inst=map.get(this);await inst._DoFindPath(fromX,fromY,toX,toY,true);return inst._HasPath()}startMoving(){map.get(this)._StartMoving()}stop(){map.get(this)._Stop()}set maxSpeed(s){C3X.RequireFiniteNumber(s);map.get(this)._SetMaxSpeed(s)}get maxSpeed(){return map.get(this)._GetMaxSpeed()}set speed(s){C3X.RequireFiniteNumber(s); +map.get(this)._SetSpeed(s)}get speed(){return map.get(this)._GetSpeed()}set acceleration(a){C3X.RequireFiniteNumber(a);map.get(this)._SetAcceleration(a)}get acceleration(){return map.get(this)._GetAcceleration()}set deceleration(d){C3X.RequireFiniteNumber(d);map.get(this)._SetDeceleration(d)}get deceleration(){return map.get(this)._GetAcceleration()}set rotateSpeed(r){C3X.RequireFiniteNumber(r);map.get(this)._SetRotateSpeed(r)}get rotateSpeed(){return map.get(this)._GetRotateSpeed()}get isCalculatingPath(){return map.get(this)._IsCalculatingPath()}get isMoving(){return map.get(this)._IsMoving()}get currentNode(){return map.get(this)._GetCurrentNode()}getNodeCount(){return map.get(this)._GetNodeCount()}getNodeXAt(i){C3X.RequireFiniteNumber(i); +return map.get(this)._GetNodeXAt(i)}getNodeYAt(i){C3X.RequireFiniteNumber(i);return map.get(this)._GetNodeYAt(i)}getNodeAt(i){C3X.RequireFiniteNumber(i);const n=map.get(this)._GetNodeAt(i);return n?[n.x,n.y]:[0,0]}*nodes(){const binst=map.get(this);for(let i=0,len=binst._GetNodeCount();i=this._maxOpacity){wi.SetOpacity(this._maxOpacity);this._stage=1;this._stageTime.Reset();this.DispatchScriptEvent("fadeinend");this.Trigger(C3.Behaviors.Fade.Cnds.OnFadeInEnd)}}if(this._stage===1)if(this._stageTime.Get()>=this._waitTime){this._stage=2;this._stageTime.Reset();this.DispatchScriptEvent("waitend");this.Trigger(C3.Behaviors.Fade.Cnds.OnWaitEnd)}if(this._stage===2)if(this._fadeOutTime!== +0){wi.SetOpacity(this._maxOpacity-this._stageTime.Get()/this._fadeOutTime*this._maxOpacity);this._runtime.UpdateRender();if(wi.GetOpacity()<=0){this._stage=3;this._stageTime.Reset();this.DispatchScriptEvent("fadeoutend");this.Trigger(C3.Behaviors.Fade.Cnds.OnFadeOutEnd);if(this._destroy)this._runtime.DestroyInstance(this._inst)}}else{this._stage=3;this._stageTime.Reset()}if(this._stage===3)this._StopTicking()}_StartFade(){if(!this._activeAtStart&&!this._setMaxOpacity){this._maxOpacity=this._inst.GetWorldInfo().GetOpacity()|| +1;this._setMaxOpacity=true}if(this._stage===3)this.Start()}_RestartFade(){this.Start()}Start(){this._stage=0;this._stageTime.Reset();if(this._fadeInTime===0){this._stage=1;if(this._waitTime===0)this._stage=2}else{this._inst.GetWorldInfo().SetOpacity(0);this._runtime.UpdateRender()}this._StartTicking()}_SetFadeInTime(t){this._fadeInTime=Math.max(t,0)}_GetFadeInTime(){return this._fadeInTime}_SetWaitTime(t){this._waitTime=Math.max(t,0)}_GetWaitTime(){return this._waitTime}_SetFadeOutTime(t){this._fadeOutTime= +Math.max(t,0)}_GetFadeOutTime(){return this._fadeOutTime}GetPropertyValueByIndex(index){switch(index){case FADE_IN_TIME:return this._GetFadeInTime();case WAIT_TIME:return this._GetWaitTime();case FADE_OUT_TIME:return this._GetFadeOutTime();case DESTROY:return this._destroy}}SetPropertyValueByIndex(index,value){switch(index){case FADE_IN_TIME:this._SetFadeInTime(value);break;case WAIT_TIME:this._SetWaitTime(value);break;case FADE_OUT_TIME:this._SetFadeOutTime(value);break;case DESTROY:this._destroy= +!!value;break}}GetDebuggerProperties(){const prefix="behaviors.fade";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".properties.fade-in-time.name",value:this._GetFadeInTime(),onedit:v=>this._SetFadeInTime(v)},{name:prefix+".properties.wait-time.name",value:this._GetWaitTime(),onedit:v=>this._SetWaitTime(v)},{name:prefix+".properties.fade-out-time.name",value:this._GetFadeOutTime(),onedit:v=>this._SetFadeOutTime(v)},{name:prefix+".debugger.stage",value:[prefix+".debugger."+ +["fade-in","wait","fade-out","done"][this._stage]]}]}]}GetScriptInterfaceClass(){return self.IFadeBehaviorInstance}};const map=new WeakMap;self.IFadeBehaviorInstance=class IFadeBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}startFade(){map.get(this)._StartFade()}restartFade(){map.get(this)._RestartFade()}set fadeInTime(t){C3X.RequireFiniteNumber(t);map.get(this)._SetFadeInTime(t)}get fadeInTime(){return map.get(this)._GetFadeInTime()}set waitTime(t){C3X.RequireFiniteNumber(t); +map.get(this)._SetWaitTime(t)}get waitTime(){return map.get(this)._GetWaitTime()}set fadeOutTime(t){C3X.RequireFiniteNumber(t);map.get(this)._SetFadeOutTime(t)}get fadeOutTime(){return map.get(this)._GetFadeOutTime()}}}{const C3=self.C3;C3.Behaviors.Fade.Cnds={OnFadeOutEnd(){return true},OnFadeInEnd(){return true},OnWaitEnd(){return true}}} +{const C3=self.C3;C3.Behaviors.Fade.Acts={StartFade(){this._StartFade()},RestartFade(){this._RestartFade()},SetFadeInTime(t){this._SetFadeInTime(t)},SetWaitTime(t){this._SetWaitTime(t)},SetFadeOutTime(t){this._SetFadeOutTime(t)}}}{const C3=self.C3;C3.Behaviors.Fade.Exps={FadeInTime(){return this._GetFadeInTime()},WaitTime(){return this._GetWaitTime()},FadeOutTime(){return this._GetFadeOutTime()}}}; + +} + +// scripts/behaviors/Sin/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Sin=class SinBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Sin.Type=class SinType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const MOVEMENT=0;const WAVE=1;const PERIOD=2;const PERIOD_RANDOM=3;const PERIOD_OFFSET=4;const PERIOD_OFFSET_RANDOM=5;const MAGNITUDE=6;const MAGNITUDE_RANDOM=7;const ENABLE=8;const HORIZONTAL=0;const VERTICAL=1;const SIZE=2;const WIDTH=3;const HEIGHT=4;const ANGLE=5;const OPACITY=6;const VALUE=7;const FORWARDS_BACKWARDS=8;const ZELEVATION=9;const SINE=0;const TRIANGLE=1;const SAWTOOTH=2;const REVERSE_SAWTOOTH=3;const SQUARE= +4;const _2pi=2*Math.PI;const _pi_2=Math.PI/2;const _3pi_2=3*Math.PI/2;const MOVEMENT_LOOKUP=[0,1,8,3,4,2,5,6,9,7];C3.Behaviors.Sin.Instance=class SinInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._i=0;this._movement=0;this._wave=0;this._period=0;this._mag=0;this._isEnabled=true;this._basePeriod=0;this._basePeriodOffset=0;this._baseMag=0;this._periodRandom=0;this._periodOffsetRandom=0;this._magnitudeRandom=0;this._initialValue=0;this._initialValue2= +0;this._lastKnownValue=0;this._lastKnownValue2=0;this._ratio=0;if(properties){this._movement=MOVEMENT_LOOKUP[properties[MOVEMENT]];this._wave=properties[WAVE];this._periodRandom=this._runtime.Random()*properties[PERIOD_RANDOM];this._basePeriod=properties[PERIOD];this._period=properties[PERIOD];this._period+=this._periodRandom;this._basePeriodOffset=properties[PERIOD_OFFSET];if(this._period!==0){this._periodOffsetRandom=this._runtime.Random()*properties[PERIOD_OFFSET_RANDOM];this._i=properties[PERIOD_OFFSET]/ +this._period*_2pi;this._i+=this._periodOffsetRandom/this._period*_2pi}this._magnitudeRandom=this._runtime.Random()*properties[MAGNITUDE_RANDOM];this._baseMag=properties[MAGNITUDE];this._mag=properties[MAGNITUDE];this._mag+=this._magnitudeRandom;this._isEnabled=!!properties[ENABLE]}if(this._movement===ANGLE)this._mag=C3.toRadians(this._mag);this.Init();if(this._isEnabled)this._StartTicking()}Release(){super.Release()}SaveToJson(){return{"i":this._i,"e":this._isEnabled,"mv":this._movement,"w":this._wave, +"p":this._period,"mag":this._mag,"iv":this._initialValue,"iv2":this._initialValue2,"r":this._ratio,"lkv":this._lastKnownValue,"lkv2":this._lastKnownValue2}}LoadFromJson(o){this._i=o["i"];this._SetEnabled(o["e"]);this._movement=o["mv"];this._wave=o["w"];this._period=o["p"];this._mag=o["mag"];this._initialValue=o["iv"];this._initialValue2=o["iv2"];this._ratio=o["r"];this._lastKnownValue=o["lkv"];this._lastKnownValue2=o["lkv2"]}Init(){const wi=this._inst.GetWorldInfo();switch(this._movement){case HORIZONTAL:this._initialValue= +wi.GetX();break;case VERTICAL:this._initialValue=wi.GetY();break;case SIZE:this._initialValue=wi.GetWidth();this._ratio=wi.GetHeight()/wi.GetWidth();break;case WIDTH:this._initialValue=wi.GetWidth();break;case HEIGHT:this._initialValue=wi.GetHeight();break;case ANGLE:this._initialValue=wi.GetAngle();break;case OPACITY:this._initialValue=wi.GetOpacity();break;case VALUE:this._initialValue=0;break;case FORWARDS_BACKWARDS:this._initialValue=wi.GetX();this._initialValue2=wi.GetY();break;case ZELEVATION:this._initialValue= +wi.GetZElevation();break;default:}this._lastKnownValue=this._initialValue;this._lastKnownValue2=this._initialValue2}WaveFunc(x){x=x%_2pi;switch(this._wave){case SINE:return Math.sin(x);case TRIANGLE:if(x<=_pi_2)return x/_pi_2;else if(x<=_3pi_2)return 1-2*(x-_pi_2)/Math.PI;else return(x-_3pi_2)/_pi_2-1;case SAWTOOTH:return 2*x/_2pi-1;case REVERSE_SAWTOOTH:return-2*x/_2pi+1;case SQUARE:return xthis._SetEnabled(v)},{name:prefix+".properties.period.name",value:this._GetPeriod(),onedit:v=>this._SetPeriod(v)}, +{name:prefix+".properties.magnitude.name",value:this._GetMagnitude_ConvertAngle(),onedit:v=>this._SetMagnitude_ConvertAngle(v)},{name:prefix+".debugger.value",value:this.WaveFunc(this._GetPhase())*this._GetMagnitude_ConvertAngle()}]}]}GetScriptInterfaceClass(){return self.ISineBehaviorInstance}};const map=new WeakMap;const VALID_MOVEMENTS=["horizontal","vertical","size","width","height","angle","opacity","value-only","forwards-backwards","z-elevation"];const VALID_WAVES=["sine","triangle","sawtooth", +"reverse-sawtooth","square"];self.ISineBehaviorInstance=class ISineBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}set period(x){C3X.RequireFiniteNumber(x);map.get(this)._SetPeriod(x)}get period(){return map.get(this)._GetPeriod()}set magnitude(m){C3X.RequireFiniteNumber(m);map.get(this)._SetMagnitude(m)}get magnitude(){return map.get(this)._GetMagnitude()}set phase(p){map.get(this)._SetPhase(p)}get phase(){return map.get(this)._GetPhase()}set movement(m){C3X.RequireString(m); +const i=VALID_MOVEMENTS.indexOf(m);if(i===-1)throw new Error("invalid movement");map.get(this)._SetMovement(i)}get movement(){return VALID_MOVEMENTS[map.get(this)._GetMovement()]}set wave(w){C3X.RequireString(w);const i=VALID_WAVES.indexOf(w);if(i===-1)throw new Error("invalid wave");map.get(this)._SetWave(i)}get wave(){return VALID_WAVES[map.get(this)._GetWave()]}get value(){const inst=map.get(this);return inst.WaveFunc(inst._GetPhase())*inst._GetMagnitude()}updateInitialState(){map.get(this).Init()}set isEnabled(e){map.get(this)._SetEnabled(!!e)}get isEnabled(){return map.get(this)._IsEnabled()}}} +{const C3=self.C3;C3.Behaviors.Sin.Cnds={IsEnabled(){return this._IsEnabled()},CompareMovement(m){return this._GetMovement()===m},ComparePeriod(cmp,v){return C3.compare(this._GetPeriod(),cmp,v)},CompareMagnitude(cmp,v){return C3.compare(this._GetMagnitude_ConvertAngle(),cmp,v)},CompareWave(w){return this._GetWave()===w}}} +{const C3=self.C3;C3.Behaviors.Sin.Acts={SetEnabled(e){this._SetEnabled(e!==0)},SetPeriod(x){this._SetPeriod(x)},SetMagnitude(x){this._SetMagnitude_ConvertAngle(x)},SetMovement(m){this._SetMovement(m)},SetWave(w){this._wave=w},SetPhase(x){const _2pi=Math.PI*2;this._SetPhase(x*_2pi%_2pi)},UpdateInitialState(){this.Init()}}} +{const C3=self.C3;C3.Behaviors.Sin.Exps={CyclePosition(){return this._GetPhase()/(2*Math.PI)},Period(){return this._GetPeriod()},Magnitude(){return this._GetMagnitude_ConvertAngle()},Value(){return this.WaveFunc(this._GetPhase())*this._GetMagnitude_ConvertAngle()}}}; + +} + +// scripts/behaviors/Anchor/c3runtime/runtime.js +{ +'use strict';{const C3=self.C3;C3.Behaviors.Anchor=class AnchorBehavior extends C3.SDKBehaviorBase{constructor(opts){super(opts)}Release(){super.Release()}}}{const C3=self.C3;C3.Behaviors.Anchor.Type=class AnchorType extends C3.SDKBehaviorTypeBase{constructor(behaviorType){super(behaviorType)}Release(){super.Release()}OnCreate(){}}} +{const C3=self.C3;const C3X=self.C3X;const IBehaviorInstance=self.IBehaviorInstance;const ANCHOR_LEFT=0;const ANCHOR_TOP=1;const ANCHOR_RIGHT=2;const ANCHOR_BOTTOM=3;const ENABLE=4;C3.Behaviors.Anchor.Instance=class AnchorInstance extends C3.SDKBehaviorInstanceBase{constructor(behInst,properties){super(behInst);this._anchorLeft=2;this._anchorTop=2;this._anchorRight=0;this._anchorBottom=0;this._isEnabled=true;const bbox=this._inst.GetWorldInfo().GetBoundingBox();this._xLeft=bbox.getLeft();this._yTop= +bbox.getTop();this._xRight=this._runtime.GetOriginalViewportWidth()-bbox.getLeft();this._yBottom=this._runtime.GetOriginalViewportHeight()-bbox.getTop();this._rDiff=this._runtime.GetOriginalViewportWidth()-bbox.getRight();this._bDiff=this._runtime.GetOriginalViewportHeight()-bbox.getBottom();if(properties){this._anchorLeft=properties[ANCHOR_LEFT];this._anchorTop=properties[ANCHOR_TOP];this._anchorRight=properties[ANCHOR_RIGHT];this._anchorBottom=properties[ANCHOR_BOTTOM];this._isEnabled=!!properties[ENABLE]}const rt= +this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(rt,"layoutchange",()=>this._OnLayoutChange()));if(this._isEnabled)this._StartTicking()}Release(){super.Release()}SaveToJson(){return{"xl":this._xLeft,"yt":this._yTop,"xr":this._xRight,"yb":this._yBottom,"rd":this._rDiff,"bd":this._bDiff,"al":this._anchorLeft,"at":this._anchorTop,"ar":this._anchorRight,"ab":this._anchorBottom,"e":this._isEnabled}}LoadFromJson(o){this._xLeft=o["xl"];this._yTop=o["yt"];this._xRight= +o["xr"];this._yBottom=o["yb"];this._rDiff=o["rd"];this._bDiff=o["bd"];this._anchorLeft=o["al"];this._anchorTop=o["at"];this._anchorRight=o["ar"];this._anchorBottom=o["ab"];this._isEnabled=o["e"];if(this._isEnabled)this._StartTicking();else this._StopTicking()}_SetEnabled(e){if(this._isEnabled&&!e){this._isEnabled=false;this._StopTicking()}else if(!this._isEnabled&&e){const bbox=this._inst.GetWorldInfo().GetBoundingBox();this._xLeft=bbox.getLeft();this._yTop=bbox.getTop();this._xRight=this._runtime.GetOriginalViewportWidth()- +bbox.getLeft();this._yBottom=this._runtime.GetOriginalViewportHeight()-bbox.getTop();this._rDiff=this._runtime.GetOriginalViewportWidth()-bbox.getRight();this._bDiff=this._runtime.GetOriginalViewportHeight()-bbox.getBottom();this._isEnabled=true;this._StartTicking()}}_IsEnabled(){return this._isEnabled}_UpdatePosition(){if(!this._isEnabled)return;const wi=this._inst.GetWorldInfo();const viewport=wi.GetLayer().GetViewport();if(this._anchorLeft===0){const n=viewport.getLeft()+this._xLeft-wi.GetBoundingBox().getLeft(); +if(n!==0){wi.OffsetX(n);wi.SetBboxChanged()}}else if(this._anchorLeft===1){const n=viewport.getRight()-this._xRight-wi.GetBoundingBox().getLeft();if(n!==0){wi.OffsetX(n);wi.SetBboxChanged()}}if(this._anchorTop===0){const n=viewport.getTop()+this._yTop-wi.GetBoundingBox().getTop();if(n!==0){wi.OffsetY(n);wi.SetBboxChanged()}}else if(this._anchorTop===1){const n=viewport.getBottom()-this._yBottom-wi.GetBoundingBox().getTop();if(n!==0){wi.OffsetY(n);wi.SetBboxChanged()}}if(this._anchorRight===1){const n= +viewport.getRight()-this._rDiff-wi.GetBoundingBox().getRight();if(n!==0){wi.OffsetX(wi.GetOriginX()*n);wi.SetWidth(Math.max(wi.GetWidth()+n),0);wi.SetBboxChanged();this._rDiff=viewport.getRight()-wi.GetBoundingBox().getRight()}}if(this._anchorBottom===1){const n=viewport.getBottom()-this._bDiff-wi.GetBoundingBox().getBottom();if(n!==0){wi.OffsetY(wi.GetOriginY()*n);wi.SetHeight(Math.max(wi.GetHeight()+n,0));wi.SetBboxChanged();this._bDiff=viewport.getBottom()-wi.GetBoundingBox().getBottom()}}}Tick(){this._UpdatePosition()}_OnLayoutChange(){this._UpdatePosition()}GetPropertyValueByIndex(index){switch(index){case ANCHOR_LEFT:return this._anchorLeft; +case ANCHOR_TOP:return this._anchorTop;case ANCHOR_RIGHT:return this._anchorRight;case ANCHOR_BOTTOM:return this._anchorBottom;case ENABLE:return this._isEnabled}}SetPropertyValueByIndex(index,value){switch(index){case ANCHOR_LEFT:this._anchorLeft=value;break;case ANCHOR_TOP:this._anchorTop=value;break;case ANCHOR_RIGHT:this._anchorRight=value;break;case ANCHOR_BOTTOM:this._anchorBottom=value;break;case ENABLE:this._isEnabled=!!value;if(this._isEnabled)this._StartTicking();else this._StopTicking(); +break}}GetDebuggerProperties(){const prefix="behaviors.anchor";return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:prefix+".properties.enabled.name",value:this._IsEnabled(),onedit:v=>this._SetEnabled(v)}]}]}GetScriptInterfaceClass(){return self.IAnchorBehaviorInstance}};const map=new WeakMap;self.IAnchorBehaviorInstance=class IAnchorBehaviorInstance extends IBehaviorInstance{constructor(){super();map.set(this,IBehaviorInstance._GetInitInst().GetSdkInstance())}get isEnabled(){return map.get(this)._IsEnabled()}set isEnabled(e){map.get(this)._SetEnabled(e)}}} +{const C3=self.C3;C3.Behaviors.Anchor.Cnds={IsEnabled(){return this._IsEnabled()}}}{const C3=self.C3;C3.Behaviors.Anchor.Acts={SetEnabled(e){this._SetEnabled(e!==0)}}}{const C3=self.C3;C3.Behaviors.Anchor.Exps={}}; + +} + +// scripts/expTable.js +{ + +const C3 = self.C3; + +function unaryminus(n) +{ + return (typeof n === "number" ? -n : n); +} + +function bothNumbers(a, b) +{ + return typeof a === "number" && typeof b === "number"; +} + +function add(l, r) +{ + if (bothNumbers(l, r)) + return l + r; + else + return l; +} + +function subtract(l, r) +{ + if (bothNumbers(l, r)) + return l - r; + else + return l; +} + +function multiply(l, r) +{ + if (bothNumbers(l, r)) + return l * r; + else + return l; +} + +function divide(l, r) +{ + if (bothNumbers(l, r)) + return l / r; + else + return l; +} + +function mod(l, r) +{ + if (bothNumbers(l, r)) + return l % r; + else + return l; +} + +function pow(l, r) +{ + if (bothNumbers(l, r)) + return Math.pow(l, r); + else + return l; +} + +function and(l, r) +{ + if (typeof l === "string" || typeof r === "string") + { + // & with either side string does string concatenation + let lstr, rstr; + + if (typeof l === "number") + lstr = (Math.round(l * 1e10) / 1e10).toString(); + else + lstr = l; + + if (typeof r === "number") + rstr = (Math.round(r * 1e10) / 1e10).toString(); + else + rstr = r; + + return lstr + rstr; + } + else + { + // & with neither side a string does logical AND + return (l && r ? 1 : 0); + } +} + +function or(l, r) +{ + if (bothNumbers(l, r)) + return (l || r ? 1 : 0); + else + return l; +} + +self.C3_ExpressionFuncs = [ + () => 1, + () => 120, + () => 0, + () => "ui_start", + () => "idle", + p => { + const n0 = p._GetNode(0); + return () => n0.ExpObject(); + }, + () => "[outline=black]0[/outline]", + () => "playerdata", + () => 0.3, + () => 0.2, + () => 800, + () => "bigger", + () => 192, + () => "", + () => "boturn", + () => 2, + () => "talking1", + p => { + const v0 = p._GetNode(0).GetVar(); + return () => v0.GetValue(); + }, + () => 100, + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() + 100); + }, + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 300); + }, + () => 1900, + () => 1400, + () => "move", + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() + 200); + }, + () => 0.5, + () => "需要先修理好发电机,才能点击发电!", + () => "talking2", + () => "接下来,请点击地板,消耗电力创建炮台或者英雄!", + () => "waiting", + () => "gorepair", + () => "daiji", + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => f0(); + }, + () => 9000, + () => "smaller", + () => 1300, + () => 0.4, + () => "Animation 1", + p => { + const n0 = p._GetNode(0); + const n1 = p._GetNode(1); + return () => (n0.ExpObject() - (n1.ExpObject() / 3)); + }, + () => 3, + () => 1.05, + () => 0.1, + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => f0((-115), (-75)); + }, + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => f0(2000, 3000); + }, + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => f0(1, 2); + }, + () => "bomb", + () => 5, + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + const f1 = p._GetNode(1).GetBoundMethod(); + return () => (200 + f0(f1(100))); + }, + () => "daojishi", + p => { + const v0 = p._GetNode(0).GetVar(); + return () => (and("[outline=black]", v0.GetValue()) + "[/outline]"); + }, + () => "turns", + p => { + const v0 = p._GetNode(0).GetVar(); + return () => (and("[outline=black]", v0.GetValue()) + "/10[/outline]"); + }, + () => "game_top", + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => (f0() + 200); + }, + p => { + const n0 = p._GetNode(0); + const n1 = p._GetNode(1); + return () => (n0.ExpObject() - n1.ExpObject()); + }, + () => -90, + () => "[outline=black]+1[/outline]", + () => "dianli", + () => 10, + () => "paotai", + () => 90, + () => -562949953422335, + () => "[outline=black]-10[/outline]", + () => "game_battle", + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + const f1 = p._GetNode(1).GetBoundMethod(); + return () => f0(f1()); + }, + () => 400, + () => 300, + p => { + const n0 = p._GetNode(0); + return () => n0.ExpInstVar(); + }, + () => "zou", + p => { + const f0 = p._GetNode(0).GetBoundMethod(); + return () => (f0() / 2); + }, + p => { + const n0 = p._GetNode(0); + return () => n0.ExpObject("pao"); + }, + p => { + const n0 = p._GetNode(0); + const n1 = p._GetNode(1); + return () => (n0.ExpInstVar() * n1.ExpInstVar()); + }, + () => "bul", + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 40); + }, + () => "shouji", + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 100); + }, + p => { + const n0 = p._GetNode(0); + const n1 = p._GetNode(1); + return () => (n0.ExpObject() - (n1.ExpObject() / 2)); + }, + p => { + const v0 = p._GetNode(0).GetVar(); + return () => (and(("[outline=black]" + "-"), v0.GetValue()) + "[/outline]"); + }, + p => { + const n0 = p._GetNode(0); + const n1 = p._GetNode(1); + return () => (181 * (n0.ExpInstVar() / n1.ExpInstVar())); + }, + () => "siwang", + p => { + const n0 = p._GetNode(0); + const f1 = p._GetNode(1).GetBoundMethod(); + const f2 = p._GetNode(2).GetBoundMethod(); + return () => (n0.ExpInstVar() + f1(f2(100))); + }, + () => "xiuli", + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 140); + }, + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 380); + }, + () => "pao", + () => 0.8, + p => { + const n0 = p._GetNode(0); + return () => (n0.ExpObject() - 200); + }, + () => "fadianchang", + () => "repair", + () => 14, + () => "fix", + () => 50 +]; + + +} + diff --git a/scripts/dispatchworker.js b/scripts/dispatchworker.js new file mode 100644 index 0000000..74aff55 --- /dev/null +++ b/scripts/dispatchworker.js @@ -0,0 +1,10 @@ +'use strict';self.inputPort=null;self.jobQueue=[];self.jobWorkers=[];self.sentBlobs=[];self.sentBuffers=[];self.importedScripts=[];self.lastBroadcasts=new Map; +class JobWorker{constructor(port,number){this._port=port;this._number=number;this._isReady=false;this._isBusy=false;this._port.onmessage=e=>this._OnMessage(e.data)}ImportScripts(scripts){this._port.postMessage({"type":"_import_scripts","scripts":scripts})}SendBlob(blob,id){this._port.postMessage({"type":"_send_blob","blob":blob,"id":id})}SendBuffer(buffer,id){this._port.postMessage({"type":"_send_buffer","buffer":buffer,"id":id})}SendJob(job){if(this._isBusy||!this._isReady)throw new Error("cannot take job"); +this._isBusy=true;this._port.postMessage(job,job["transferables"])}_InitBroadcast(job){this._port.postMessage(job,job["transferables"])}SendReady(){this._port.postMessage({"type":"_ready"})}IsReady(){return this._isReady}_OnReady(){this._isReady=true;this.MaybeStartNextJob()}IsBusy(){return this._isBusy}GetNumber(){return this._number}_OnMessage(msg){const type=msg["type"];switch(type){case "ready":this._OnReady();return;case "done":this._OnJobDone();return;default:console.error("unknown message from worker '"+ +type+"'");return}}_OnJobDone(){this._isBusy=false;this.MaybeStartNextJob()}MaybeStartNextJob(){if(this._isBusy||!this._isReady)return;const i=this._FindAvailableJob();if(i===-1)return;const job=self.jobQueue[i];const isBroadcast=job["isBroadcast"];if(isBroadcast){job["doneFlags"][this._number]=true;if(job["doneFlags"].every(x=>x))self.jobQueue.splice(i,1)}else self.jobQueue.splice(i,1);this.SendJob(job)}_FindAvailableJob(){for(let i=0,len=self.jobQueue.length;i=job["maxWorkerNum"])continue;if(!job["isBroadcast"]||this._number{const msg=e.data;const type=msg["type"];if(type==="_init"){self.inputPort=msg["in-port"];self.inputPort.onmessage=OnInputPortMessage}else if(type==="_addJobWorker")AddJobWorker(msg["port"])}); +function OnInputPortMessage(e){const msg=e.data;const type=msg["type"];if(type==="_cancel"){CancelJob(msg.jobId);return}else if(type==="_import_scripts"){const scripts=msg["scripts"];for(const w of self.jobWorkers)w.ImportScripts(scripts);self.importedScripts.push(scripts);return}else if(type==="_send_blob"){const blob=msg["blob"];const id=msg["id"];for(const w of self.jobWorkers)w.SendBlob(blob,id);self.sentBlobs.push([blob,id]);return}else if(type==="_send_buffer"){const buffer=msg["buffer"];const id= +msg["id"];for(const w of self.jobWorkers)w.SendBuffer(buffer,id);self.sentBuffers.push([buffer,id]);return}else if(type==="_no_more_workers"){self.sentBlobs.length=0;self.sentBuffers.length=0;self.importedScripts.length=0;self.lastBroadcasts.clear();return}self.jobQueue.push(msg);if(msg["isBroadcast"]){const maxWorkerNum=msg["maxWorkerNum"];const curWorkerCount=self.jobWorkers.length;const useWorkerCount=typeof maxWorkerNum==="number"?Math.min(maxWorkerNum,curWorkerCount):curWorkerCount;msg["doneFlags"]= +(new Array(useWorkerCount)).fill(false);msg["transferables"]=[];const broadcastKey=msg["params"]&&msg["params"]["broadcastKey"]?msg["params"]["broadcastKey"]:msg["type"];self.lastBroadcasts.delete(broadcastKey);self.lastBroadcasts.set(broadcastKey,msg)}for(const w of self.jobWorkers)w.MaybeStartNextJob()}; diff --git a/scripts/jobworker.js b/scripts/jobworker.js new file mode 100644 index 0000000..6f5140f --- /dev/null +++ b/scripts/jobworker.js @@ -0,0 +1,9 @@ +'use strict';self.dispatchPort=null;self.outputPort=null;self.workerNumber=-1;self.activeJobId=null;self.sentBlobs=new Map;self.sentBuffers=new Map;self.JobHandlers={}; +function FlipImageData(data,width,height){const stride=width*4;const tempRow=new Uint8Array(stride);const imageBuffer=data.buffer;for(let topY=0,len=Math.floor(height/2);topY{const msg=e.data;const type=msg["type"];switch(type){case "init":self.workerNumber=msg["number"];self.dispatchPort=msg["dispatch-port"];self.dispatchPort.onmessage=OnDispatchWorkerMessage;self.outputPort=msg["output-port"];return;case "terminate":self.close();return;default:console.error("unknown message '"+type+"'");return}});function SendReady(){self.dispatchPort.postMessage({"type":"ready"});self.outputPort.postMessage({"type":"ready"})} +function SendError(isBroadcast,e){if(!isBroadcast)self.outputPort.postMessage({"type":"error","jobId":self.activeJobId,"error":e.toString()});SendDone()}function SendResult(isBroadcast,ret){if(!isBroadcast){const transferables=ret.transferables||[];self.outputPort.postMessage({"type":"result","jobId":self.activeJobId,"result":ret.result},transferables)}SendDone()}function SendDone(){self.activeJobId=null;self.dispatchPort.postMessage({"type":"done"})} +function SendProgress(val){self.outputPort.postMessage({"type":"progress","jobId":self.activeJobId,"progress":val})} +function OnDispatchWorkerMessage(e){const msg=e.data;const type=msg["type"];if(type==="_import_scripts"){importScripts(...msg["scripts"]);return}else if(type==="_send_blob"){self.sentBlobs.set(msg["id"],msg["blob"]);return}else if(type==="_send_buffer"){self.sentBuffers.set(msg["id"],msg["buffer"]);return}else if(type==="_ready"){SendReady();return}const jobId=msg["jobId"];const isBroadcast=msg["isBroadcast"];const params=msg["params"];let ret;self.activeJobId=jobId;if(!self.JobHandlers.hasOwnProperty(type)){console.error(`no handler for message type '${type}'`); +return}try{ret=self.JobHandlers[type](params)}catch(e){SendError(isBroadcast,"Exception in job handler: "+e);return}if(ret&&ret.then)ret.then(asyncRet=>SendResult(isBroadcast,asyncRet)).catch(err=>SendError(isBroadcast,"Rejection in job handler: "+err));else SendResult(isBroadcast,ret)}; diff --git a/scripts/main.js b/scripts/main.js new file mode 100644 index 0000000..ad12f39 --- /dev/null +++ b/scripts/main.js @@ -0,0 +1,177 @@ +// Generated by Construct, the game and animation creation tool +// Visit: https://www.construct.net + +// workers/domHandler.js +'use strict';{window.DOMHandler=class DOMHandler{constructor(iRuntime,componentId){this._iRuntime=iRuntime;this._componentId=componentId;this._hasTickCallback=false;this._tickCallback=()=>this.Tick()}Attach(){}PostToRuntime(handler,data,dispatchOpts,transferables){this._iRuntime.PostToRuntimeComponent(this._componentId,handler,data,dispatchOpts,transferables)}PostToRuntimeAsync(handler,data,dispatchOpts,transferables){return this._iRuntime.PostToRuntimeComponentAsync(this._componentId,handler,data, +dispatchOpts,transferables)}_PostToRuntimeMaybeSync(name,data,dispatchOpts){if(this._iRuntime.UsesWorker())this.PostToRuntime(name,data,dispatchOpts);else this._iRuntime._GetLocalRuntime()["_OnMessageFromDOM"]({"type":"event","component":this._componentId,"handler":name,"dispatchOpts":dispatchOpts||null,"data":data,"responseId":null})}AddRuntimeMessageHandler(handler,func){this._iRuntime.AddRuntimeComponentMessageHandler(this._componentId,handler,func)}AddRuntimeMessageHandlers(list){for(const [handler, +func]of list)this.AddRuntimeMessageHandler(handler,func)}GetRuntimeInterface(){return this._iRuntime}GetComponentID(){return this._componentId}_StartTicking(){if(this._hasTickCallback)return;this._iRuntime._AddRAFCallback(this._tickCallback);this._hasTickCallback=true}_StopTicking(){if(!this._hasTickCallback)return;this._iRuntime._RemoveRAFCallback(this._tickCallback);this._hasTickCallback=false}Tick(){}};window.RateLimiter=class RateLimiter{constructor(callback,interval){this._callback=callback; +this._interval=interval;this._timerId=-1;this._lastCallTime=-Infinity;this._timerCallFunc=()=>this._OnTimer();this._ignoreReset=false;this._canRunImmediate=false}SetCanRunImmediate(c){this._canRunImmediate=!!c}Call(){if(this._timerId!==-1)return;const nowTime=Date.now();const timeSinceLastCall=nowTime-this._lastCallTime;const interval=this._interval;if(timeSinceLastCall>=interval&&this._canRunImmediate){this._lastCallTime=nowTime;this._RunCallback()}else this._timerId=self.setTimeout(this._timerCallFunc, +Math.max(interval-timeSinceLastCall,4))}_RunCallback(){this._ignoreReset=true;this._callback();this._ignoreReset=false}Reset(){if(this._ignoreReset)return;this._CancelTimer();this._lastCallTime=Date.now()}_OnTimer(){this._timerId=-1;this._lastCallTime=Date.now();this._RunCallback()}_CancelTimer(){if(this._timerId!==-1){self.clearTimeout(this._timerId);this._timerId=-1}}Release(){this._CancelTimer();this._callback=null;this._timerCallFunc=null}}}; + + +// workers/domElementHandler.js +'use strict';{class ElementState{constructor(elem){this._elem=elem;this._hadFirstUpdate=false;this._isVisibleFlag=true;this._wantHtmlIndex=-1;this._actualHtmlIndex=-1;this._htmlZIndex=-1}SetVisibleFlag(f){this._isVisibleFlag=!!f}GetVisibleFlag(){return this._isVisibleFlag}HadFirstUpdate(){return this._hadFirstUpdate}SetHadFirstUpdate(){this._hadFirstUpdate=true}GetWantHTMLIndex(){return this._wantHtmlIndex}SetWantHTMLIndex(i){this._wantHtmlIndex=i}GetActualHTMLIndex(){return this._actualHtmlIndex}SetActualHTMLIndex(i){this._actualHtmlIndex= +i}SetHTMLZIndex(z){this._htmlZIndex=z}GetHTMLZIndex(){return this._htmlZIndex}GetElement(){return this._elem}}window.DOMElementHandler=class DOMElementHandler extends self.DOMHandler{constructor(iRuntime,componentId){super(iRuntime,componentId);this._elementMap=new Map;this._autoAttach=true;this.AddRuntimeMessageHandlers([["create",e=>this._OnCreate(e)],["destroy",e=>this._OnDestroy(e)],["set-visible",e=>this._OnSetVisible(e)],["update-position",e=>this._OnUpdatePosition(e)],["update-state",e=>this._OnUpdateState(e)], +["focus",e=>this._OnSetFocus(e)],["set-css-style",e=>this._OnSetCssStyle(e)],["set-attribute",e=>this._OnSetAttribute(e)],["remove-attribute",e=>this._OnRemoveAttribute(e)]]);this.AddDOMElementMessageHandler("get-element",elem=>elem)}SetAutoAttach(e){this._autoAttach=!!e}AddDOMElementMessageHandler(handler,func){this.AddRuntimeMessageHandler(handler,e=>{const elementId=e["elementId"];const elem=this.GetElementById(elementId);return func(elem,e)})}_OnCreate(e){const elementId=e["elementId"];const elem= +this.CreateElement(elementId,e);const elementState=new ElementState(elem);this._elementMap.set(elementId,elementState);elem.style.boxSizing="border-box";elem.style.display="none";elementState.SetVisibleFlag(e["isVisible"]);const focusElem=this._GetFocusElement(elem);focusElem.addEventListener("focus",e=>this._OnFocus(elementId));focusElem.addEventListener("blur",e=>this._OnBlur(elementId));const wantHtmlIndex=e["htmlIndex"];elementState.SetWantHTMLIndex(wantHtmlIndex);elementState.SetHTMLZIndex(e["htmlZIndex"]); +if(this._autoAttach){const actualHtmlIndex=this.GetRuntimeInterface().GetAvailableHTMLIndex(wantHtmlIndex);elementState.SetActualHTMLIndex(actualHtmlIndex);const parent=this.GetRuntimeInterface().GetHTMLWrapElement(actualHtmlIndex);parent.appendChild(elem)}}CreateElement(elementId,e){throw new Error("required override");}DestroyElement(elem){}_OnDestroy(e){const elementId=e["elementId"];const elem=this.GetElementById(elementId);this.DestroyElement(elem);if(this._autoAttach)elem.parentElement.removeChild(elem); +this._elementMap.delete(elementId)}PostToRuntimeElement(handler,elementId,data){if(!data)data={};data["elementId"]=elementId;this.PostToRuntime(handler,data)}_PostToRuntimeElementMaybeSync(handler,elementId,data){if(!data)data={};data["elementId"]=elementId;this._PostToRuntimeMaybeSync(handler,data)}_OnSetVisible(e){if(!this._autoAttach)return;const elemState=this._elementMap.get(e["elementId"]);const elem=elemState.GetElement();if(elemState.HadFirstUpdate())elem.style.display=e["isVisible"]?"":"none"; +else elemState.SetVisibleFlag(e["isVisible"])}_OnUpdatePosition(e){if(!this._autoAttach)return;const elemState=this._elementMap.get(e["elementId"]);const elem=elemState.GetElement();const iRuntime=this.GetRuntimeInterface();elem.style.left=e["left"]+"px";elem.style.top=e["top"]+"px";elem.style.width=e["width"]+"px";elem.style.height=e["height"]+"px";const fontSize=e["fontSize"];if(fontSize!==null)elem.style.fontSize=fontSize+"em";const wantHtmlIndex=e["htmlIndex"];elemState.SetWantHTMLIndex(wantHtmlIndex); +const actualHtmlIndex=iRuntime.GetAvailableHTMLIndex(wantHtmlIndex);if(actualHtmlIndex!==elemState.GetActualHTMLIndex()){elem.remove();const parent=iRuntime.GetHTMLWrapElement(actualHtmlIndex);parent.appendChild(elem);elemState.SetActualHTMLIndex(actualHtmlIndex);iRuntime._UpdateHTMLElementsZOrder()}const htmlZIndex=e["htmlZIndex"];if(htmlZIndex!==elemState.GetHTMLZIndex()){elemState.SetHTMLZIndex(htmlZIndex);iRuntime._UpdateHTMLElementsZOrder()}if(!elemState.HadFirstUpdate()){elemState.SetHadFirstUpdate(); +if(elemState.GetVisibleFlag())elem.style.display=""}}_OnHTMLLayersChanged(){if(!this._autoAttach)return;for(const elemState of this._elementMap.values()){const wantHtmlIndex=this.GetRuntimeInterface().GetAvailableHTMLIndex(elemState.GetWantHTMLIndex());const actualHtmlIndex=elemState.GetActualHTMLIndex();if(wantHtmlIndex!==-1&&actualHtmlIndex!==-1&&wantHtmlIndex!==actualHtmlIndex){const elem=elemState.GetElement();elem.remove();const parent=this.GetRuntimeInterface().GetHTMLWrapElement(wantHtmlIndex); +parent.appendChild(elem);elemState.SetActualHTMLIndex(wantHtmlIndex)}}}_GetAllElementStatesForZOrderUpdate(){if(!this._autoAttach)return null;return[...this._elementMap.values()]}_OnUpdateState(e){const elem=this.GetElementById(e["elementId"]);this.UpdateState(elem,e)}UpdateState(elem,e){throw new Error("required override");}_GetFocusElement(elem){return elem}_OnFocus(elementId){this.PostToRuntimeElement("elem-focused",elementId)}_OnBlur(elementId){this.PostToRuntimeElement("elem-blurred",elementId)}_OnSetFocus(e){const elem= +this._GetFocusElement(this.GetElementById(e["elementId"]));if(e["focus"])elem.focus();else elem.blur()}_OnSetCssStyle(e){const elem=this.GetElementById(e["elementId"]);const prop=e["prop"];const val=e["val"];if(prop.startsWith("--"))elem.style.setProperty(prop,val);else elem.style[prop]=val}_OnSetAttribute(e){const elem=this.GetElementById(e["elementId"]);elem.setAttribute(e["name"],e["val"])}_OnRemoveAttribute(e){const elem=this.GetElementById(e["elementId"]);elem.removeAttribute(e["name"])}GetElementById(elementId){const elementState= +this._elementMap.get(elementId);if(!elementState)throw new Error(`no element with id ${elementId}`);return elementState.GetElement()}}}; + + +// workers/domSide.js +'use strict';{const isiOSLike=/(iphone|ipod|ipad|macos|macintosh|mac os x)/i.test(navigator.userAgent);const isAndroid=/android/i.test(navigator.userAgent);const isSafari=/safari/i.test(navigator.userAgent)&&!/(chrome|chromium|edg\/|OPR\/|nwjs)/i.test(navigator.userAgent);let resolveCounter=0;function AddScript(url){const elem=document.createElement("script");elem.async=false;elem.type="module";if(url.isStringSrc)return new Promise(resolve=>{const resolveName="c3_resolve_"+resolveCounter;++resolveCounter; +self[resolveName]=resolve;elem.textContent=url.str+`\n\nself["${resolveName}"]();`;document.head.appendChild(elem)});else return new Promise((resolve,reject)=>{elem.onload=resolve;elem.onerror=reject;elem.src=url;document.head.appendChild(elem)})}async function CheckSupportsWorkerMode(){if(!navigator["userActivation"]||typeof OffscreenCanvas==="undefined")return false;try{const workerScript=` + self.addEventListener("message", () => + { + try { + const offscreenCanvas = new OffscreenCanvas(32, 32); + const gl = offscreenCanvas.getContext("webgl"); + self.postMessage(!!gl); + } + catch (err) + { + console.warn("Feature detection worker error:", err); + self.postMessage(false); + } + });`;let isWorkerModuleSupported=false;const workerScriptBlob=new Blob([workerScript],{"type":"text/javascript"});const w=new Worker(URL.createObjectURL(workerScriptBlob),{get type(){isWorkerModuleSupported=true}});const result=await new Promise(resolve=>{w.addEventListener("message",e=>{w.terminate();resolve(e.data)});w.postMessage("")});return isWorkerModuleSupported&&result}catch(err){console.warn("Error feature detecting worker mode: ",err);return false}}let tmpAudio=new Audio;const supportedAudioFormats= +{"audio/webm; codecs=opus":!!tmpAudio.canPlayType("audio/webm; codecs=opus"),"audio/ogg; codecs=opus":!!tmpAudio.canPlayType("audio/ogg; codecs=opus"),"audio/webm; codecs=vorbis":!!tmpAudio.canPlayType("audio/webm; codecs=vorbis"),"audio/ogg; codecs=vorbis":!!tmpAudio.canPlayType("audio/ogg; codecs=vorbis"),"audio/mp4":!!tmpAudio.canPlayType("audio/mp4"),"audio/mpeg":!!tmpAudio.canPlayType("audio/mpeg")};tmpAudio=null;async function BlobToString(blob){const arrayBuffer=await BlobToArrayBuffer(blob); +const textDecoder=new TextDecoder("utf-8");return textDecoder.decode(arrayBuffer)}function BlobToArrayBuffer(blob){return new Promise((resolve,reject)=>{const fileReader=new FileReader;fileReader.onload=e=>resolve(e.target.result);fileReader.onerror=err=>reject(err);fileReader.readAsArrayBuffer(blob)})}const queuedArrayBufferReads=[];let activeArrayBufferReads=0;const MAX_ARRAYBUFFER_READS=8;window["RealFile"]=window["File"];const domHandlerClasses=[];const runtimeEventHandlers=new Map;const pendingResponsePromises= +new Map;let nextResponseId=0;const runOnStartupFunctions=[];self.runOnStartup=function runOnStartup(f){if(typeof f!=="function")throw new Error("runOnStartup called without a function");runOnStartupFunctions.push(f)};const WEBVIEW_EXPORT_TYPES=new Set(["cordova","playable-ad-single-file","playable-ad-zip","instant-games"]);function IsWebViewExportType(exportType){return WEBVIEW_EXPORT_TYPES.has(exportType)}let isWrapperFullscreen=false;window.RuntimeInterface=class RuntimeInterface{constructor(opts){this._useWorker= +opts.useWorker;this._messageChannelPort=null;this._runtimeBaseUrl="";this._scriptFolder=opts.scriptFolder;this._worker=null;this._localRuntime=null;this._domHandlers=[];this._runtimeDomHandler=null;this._isFirstSizeUpdate=true;this._canvasLayers=[];this._pendingRemoveElements=[];this._pendingUpdateHTMLZOrder=false;this._updateHTMLZOrderRAFCallback=()=>this._DoUpdateHTMLElementsZOrder();this._isExportingToVideo=false;this._exportToVideoDuration=0;this._jobScheduler=null;this._rafId=-1;this._rafFunc= +()=>this._OnRAFCallback();this._rafCallbacks=new Set;this._wrapperInitResolve=null;this._wrapperComponentIds=[];this._exportType=opts.exportType;this._isFileProtocol=location.protocol.substr(0,4)==="file";this._directoryHandles=[];if(this._exportType==="playable-ad-single-file"||this._exportType==="playable-ad-zip"||this._exportType==="instant-games")this._useWorker=false;if(isSafari)this._useWorker=false;if(this._exportType==="cordova"&&this._useWorker)if(isAndroid){const chromeVer=/Chrome\/(\d+)/i.exec(navigator.userAgent); +if(!chromeVer||!(parseInt(chromeVer[1],10)>=90))this._useWorker=false}if(this.IsAnyWebView2Wrapper())self["chrome"]["webview"].addEventListener("message",e=>this._OnWrapperMessage(e.data,e["additionalObjects"]));else if(this._exportType==="macos-wkwebview")self["C3WrapperOnMessage"]=msg=>this._OnWrapperMessage(msg);this._localFileBlobs=null;this._localFileStrings=null;if(this._exportType==="html5"&&!window.isSecureContext)console.warn("[Construct] Warning: the browser indicates this is not a secure context. Some features may be unavailable. Use secure (HTTPS) hosting to ensure all features are available."); +this.AddRuntimeComponentMessageHandler("canvas","update-size",e=>this._OnUpdateCanvasSize(e));this.AddRuntimeComponentMessageHandler("canvas","set-html-layer-count",e=>this["_OnSetHTMLLayerCount"](e));this.AddRuntimeComponentMessageHandler("canvas","cleanup-html-layers",()=>this._OnCleanUpHTMLLayers());this.AddRuntimeComponentMessageHandler("runtime","cordova-fetch-local-file",e=>this._OnCordovaFetchLocalFile(e));this.AddRuntimeComponentMessageHandler("runtime","create-job-worker",e=>this._OnCreateJobWorker(e)); +this.AddRuntimeComponentMessageHandler("runtime","send-wrapper-extension-message",e=>this._OnSendWrapperExtensionMessage(e));if(this._exportType==="cordova")document.addEventListener("deviceready",()=>this._Init(opts));else this._Init(opts)}Release(){this._CancelAnimationFrame();if(this._messageChannelPort){this._messageChannelPort.onmessage=null;this._messageChannelPort=null}if(this._worker){this._worker.terminate();this._worker=null}if(this._localRuntime){this._localRuntime.Release();this._localRuntime= +null}for(const {canvas,htmlWrap}of this._canvasLayers){canvas.remove();htmlWrap.remove()}this._canvasLayers.length=0}GetMainCanvas(){return this._canvasLayers[0].canvas}GetAvailableHTMLIndex(index){return Math.min(index,this._canvasLayers.length-1)}GetHTMLWrapElement(index){if(index<0||index>=this._canvasLayers.length)throw new RangeError("invalid canvas layer");return this._canvasLayers[index].htmlWrap}["_GetHTMLWrapElement"](index){return this.GetHTMLWrapElement(index)}GetRuntimeBaseURL(){return this._runtimeBaseUrl}UsesWorker(){return this._useWorker}GetExportType(){return this._exportType}IsFileProtocol(){return this._isFileProtocol}GetScriptFolder(){return this._scriptFolder}IsiOSCordova(){return isiOSLike&& +this._exportType==="cordova"}IsiOSWebView(){const ua=navigator.userAgent;return isiOSLike&&IsWebViewExportType(this._exportType)||navigator["standalone"]||/crios\/|fxios\/|edgios\//i.test(ua)}IsAndroid(){return isAndroid}IsAndroidWebView(){return isAndroid&&IsWebViewExportType(this._exportType)}IsWindowsWebView2(){return this._exportType==="windows-webview2"||!!(this._exportType==="preview"&&window["chrome"]&&window["chrome"]["webview"]&&window["chrome"]["webview"]["postMessage"])}IsAnyWebView2Wrapper(){return this.IsWindowsWebView2()|| +this._exportType==="xbox-uwp-webview2"}async _Init(opts){if(this._useWorker){const isWorkerModeSupported=await CheckSupportsWorkerMode();if(!isWorkerModeSupported)this._useWorker=false}if(this._exportType==="macos-wkwebview")this._SendWrapperMessage({"type":"ready"});else if(this.IsAnyWebView2Wrapper()){this._SetupWebView2Polyfills();const result=await this._InitWrapper();this._wrapperComponentIds=result["registeredComponentIds"]}if(this._exportType==="playable-ad-single-file"){this._localFileBlobs= +self["c3_base64files"];this._localFileStrings={};await this._ConvertDataUrisToBlobs()}if(this._exportType==="nwjs"&&self["nw"]&&self["nw"]["App"]["manifest"]["c3-steam-mode"]){let frameNum=0;this._AddRAFCallback(()=>{frameNum++;document.documentElement.style.opacity=frameNum%2===0?"1":"0.999"})}if(opts.runtimeBaseUrl)this._runtimeBaseUrl=opts.runtimeBaseUrl;else{const origin=location.origin;this._runtimeBaseUrl=(origin==="null"?"file:///":origin)+location.pathname;const i=this._runtimeBaseUrl.lastIndexOf("/"); +if(i!==-1)this._runtimeBaseUrl=this._runtimeBaseUrl.substr(0,i+1)}const messageChannel=new MessageChannel;this._messageChannelPort=messageChannel.port1;this._messageChannelPort.onmessage=e=>this["_OnMessageFromRuntime"](e.data);if(window["c3_addPortMessageHandler"])window["c3_addPortMessageHandler"](e=>this._OnMessageFromDebugger(e));this._jobScheduler=new self.JobSchedulerDOM(this);await this._jobScheduler.Init();if(typeof window["StatusBar"]==="object")window["StatusBar"]["hide"]();if(typeof window["AndroidFullScreen"]=== +"object")try{await new Promise((resolve,reject)=>{window["AndroidFullScreen"]["immersiveMode"](resolve,reject)})}catch(err){console.error("Failed to enter Android immersive mode: ",err)}if(this._useWorker)await this._InitWorker(opts,messageChannel.port2);else await this._InitDOM(opts,messageChannel.port2)}_GetCommonRuntimeOptions(opts){return{"runtimeBaseUrl":this._runtimeBaseUrl,"previewUrl":location.href,"windowInnerWidth":this._GetWindowInnerWidth(),"windowInnerHeight":this._GetWindowInnerHeight(), +"cssDisplayMode":this.GetCssDisplayMode(),"devicePixelRatio":window.devicePixelRatio,"isFullscreen":RuntimeInterface.IsDocumentFullscreen(),"swClientId":window["cr_swClientId"]||"","exportType":opts.exportType,"fileMap":globalThis.c3_swFileMap,"scriptFolder":this._scriptFolder,"isDebug":(new URLSearchParams(self.location.search)).has("debug"),"ife":!!self.ife,"jobScheduler":this._jobScheduler.GetPortData(),"supportedAudioFormats":supportedAudioFormats,"isFileProtocol":this._isFileProtocol,"isiOSCordova":this.IsiOSCordova(), +"isiOSWebView":this.IsiOSWebView(),"isWindowsWebView2":this.IsWindowsWebView2(),"isAnyWebView2Wrapper":this.IsAnyWebView2Wrapper(),"wrapperComponentIds":this._wrapperComponentIds,"isFBInstantAvailable":typeof self["FBInstant"]!=="undefined"}}async _InitWorker(opts,port2){const workerMainUrl=opts.workerMainUrl;if(this._exportType==="preview"){this._worker=new Worker("previewworker.js",{type:"module",name:"Runtime"});await new Promise((resolve,reject)=>{const messageHandler=e=>{this._worker.removeEventListener("message", +messageHandler);if(e.data&&e.data["type"]==="ok")resolve();else reject()};this._worker.addEventListener("message",messageHandler);this._worker.postMessage({"type":"construct-worker-init","import":(new URL(workerMainUrl,this._runtimeBaseUrl)).toString()})})}else this._worker=await this.CreateWorker(workerMainUrl,{type:"module",name:"Runtime"});const canvas=document.createElement("canvas");canvas.style.display="none";const offscreenCanvas=canvas["transferControlToOffscreen"]();document.body.appendChild(canvas); +const htmlWrap=document.createElement("div");htmlWrap.className="c3htmlwrap";document.body.appendChild(htmlWrap);this._canvasLayers.push({canvas,htmlWrap});window["c3canvas"]=canvas;if(self["C3_InsertHTMLPlaceholders"])self["C3_InsertHTMLPlaceholders"]();this._worker.postMessage(Object.assign(this._GetCommonRuntimeOptions(opts),{"type":"init-runtime","isInWorker":true,"messagePort":port2,"canvas":offscreenCanvas,"runtimeScriptList":opts.runtimeScriptList,"projectMainScriptPath":opts.projectMainScriptPath, +"scriptsInEventsPath":opts.scriptsInEventsPath}),[port2,offscreenCanvas,...this._jobScheduler.GetPortTransferables()]);this._domHandlers=domHandlerClasses.map(C=>new C(this));this._FindRuntimeDOMHandler();this._runtimeDomHandler._AddDefaultCanvasEventHandlers(canvas);this._runtimeDomHandler._AddDefaultHTMLWrapEventHandlers(htmlWrap);this._runtimeDomHandler._EnableWindowResizeEvent();self["c3_callFunction"]=(name,params)=>this._runtimeDomHandler._InvokeFunctionFromJS(name,params);if(this._exportType=== +"preview")self["goToLastErrorScript"]=()=>this.PostToRuntimeComponent("runtime","go-to-last-error-script")}async _InitDOM(opts,port2){const canvas=document.createElement("canvas");canvas.style.display="none";document.body.appendChild(canvas);const htmlWrap=document.createElement("div");htmlWrap.className="c3htmlwrap";document.body.appendChild(htmlWrap);this._canvasLayers.push({canvas,htmlWrap});window["c3canvas"]=canvas;if(self["C3_InsertHTMLPlaceholders"])self["C3_InsertHTMLPlaceholders"]();this._domHandlers= +domHandlerClasses.map(C=>new C(this));this._FindRuntimeDOMHandler();this._runtimeDomHandler._AddDefaultCanvasEventHandlers(canvas);this._runtimeDomHandler._AddDefaultHTMLWrapEventHandlers(htmlWrap);const runtimeScriptList=await Promise.all(opts.runtimeScriptList.map(url=>this._MaybeGetPlatformSpecificScriptURL(url)));await Promise.all(runtimeScriptList.map(url=>AddScript(url)));const projectMainScriptPath=opts.projectMainScriptPath;const scriptsInEventsPath=opts.scriptsInEventsPath;if(projectMainScriptPath)try{await AddScript(projectMainScriptPath); +if(this._exportType==="preview"&&!globalThis.C3_ProjectMainScriptOK)throw new Error("main script did not run to completion");}catch(err){this._RemoveLoadingMessage();console.error("Error loading project main script: ",err);alert(`Failed to load the project main script (${projectMainScriptPath}). Check all your JavaScript code has valid syntax, all imports are written correctly, and that an exception was not thrown running the script. Press F12 and check the console for error details.`)}if(scriptsInEventsPath)try{await AddScript(scriptsInEventsPath); +if(this._exportType==="preview"&&!globalThis.C3.ScriptsInEvents)throw new Error("scripts in events did not run to completion");}catch(err){this._RemoveLoadingMessage();console.error("Error loading scripts in events: ",err);alert(`Failed to load scripts in events. Check all your JavaScript code has valid syntax, all imports are written correctly, and that an exception was not thrown running the 'Imports for events' script. Press F12 and check the console for error details.`)}const runtimeOpts=Object.assign(this._GetCommonRuntimeOptions(opts), +{"isInWorker":false,"messagePort":port2,"canvas":canvas,"runOnStartupFunctions":runOnStartupFunctions});this._runtimeDomHandler._EnableWindowResizeEvent();this._OnBeforeCreateRuntime();this._localRuntime=self["C3_CreateRuntime"](runtimeOpts);await self["C3_InitRuntime"](this._localRuntime,runtimeOpts)}async CreateWorker(url,workerOpts){if(url.startsWith("blob:"))return new Worker(url,workerOpts);if(this._exportType==="cordova"&&this._isFileProtocol){const arrayBuffer=await this.CordovaFetchLocalFileAsArrayBuffer(url); +const blob=new Blob([arrayBuffer],{type:"application/javascript"});return new Worker(URL.createObjectURL(blob),workerOpts)}if(this._exportType==="playable-ad-single-file"){const blob=this._localFileBlobs[url];if(!blob)throw new Error("missing script: "+url);return new Worker(URL.createObjectURL(blob),workerOpts)}const absUrl=new URL(url,location.href);const isCrossOrigin=location.origin!==absUrl.origin;if(isCrossOrigin){const response=await fetch(absUrl);if(!response.ok)throw new Error("failed to fetch worker script"); +const blob=await response.blob();return new Worker(URL.createObjectURL(blob),workerOpts)}else return new Worker(absUrl,workerOpts)}_GetWindowInnerWidth(){return Math.max(window.innerWidth,1)}_GetWindowInnerHeight(){return Math.max(window.innerHeight,1)}GetCssDisplayMode(){if(this.IsAnyWebView2Wrapper())return"standalone";const exportType=this.GetExportType();const standaloneExportTypes=new Set(["cordova","nwjs","macos-wkwebview"]);if(standaloneExportTypes.has(exportType))return"standalone";if(window.matchMedia("(display-mode: fullscreen)").matches)return"fullscreen"; +else if(window.matchMedia("(display-mode: standalone)").matches)return"standalone";else if(window.matchMedia("(display-mode: minimal-ui)").matches)return"minimal-ui";else if(navigator["standalone"])return"standalone";else return"browser"}_OnBeforeCreateRuntime(){this._RemoveLoadingMessage()}_RemoveLoadingMessage(){const loadingElem=window["cr_previewLoadingElem"];if(loadingElem){loadingElem.parentElement.removeChild(loadingElem);window["cr_previewLoadingElem"]=null}}async _OnCreateJobWorker(e){const outputPort= +await this._jobScheduler._CreateJobWorker();return{"outputPort":outputPort,"transferables":[outputPort]}}_OnUpdateCanvasSize(e){if(this.IsExportingToVideo())return;const widthPx=e["styleWidth"]+"px";const heightPx=e["styleHeight"]+"px";const leftPx=e["marginLeft"]+"px";const topPx=e["marginTop"]+"px";for(const {canvas,htmlWrap}of this._canvasLayers){canvas.style.width=widthPx;canvas.style.height=heightPx;canvas.style.marginLeft=leftPx;canvas.style.marginTop=topPx;htmlWrap.style.width=widthPx;htmlWrap.style.height= +heightPx;htmlWrap.style.marginLeft=leftPx;htmlWrap.style.marginTop=topPx;if(this._isFirstSizeUpdate){canvas.style.display="";htmlWrap.style.display=""}}document.documentElement.style.setProperty("--construct-scale",e["displayScale"]);this._isFirstSizeUpdate=false}["_OnSetHTMLLayerCount"](e){const count=e["count"];const immediate=e["immediate"];const widthPx=e["styleWidth"]+"px";const heightPx=e["styleHeight"]+"px";const leftPx=e["marginLeft"]+"px";const topPx=e["marginTop"]+"px";const addedCanvases= +[];const transferables=[];if(countcount){const {canvas,htmlWrap}=this._canvasLayers.pop();htmlWrap.remove();if(this._useWorker&&!immediate)this._pendingRemoveElements.push(canvas);else canvas.remove()}else if(count>this._canvasLayers.length)for(let i=0,len=count-this._canvasLayers.length;i{const a1=a.GetActualHTMLIndex();const b1=b.GetActualHTMLIndex();if(a1!==b1)return a1-b1;const a2=a.GetHTMLZIndex();const b2=b.GetHTMLZIndex();return a2-b2});let curHtmlIndex=0;let s=0,i=0,len=allElementStates.length;for(;i=this._canvasLayers.length)return;const newChildren=arr.map(es=>es.GetElement());const newChildrenSet=new Set(newChildren);const htmlWrap=this.GetHTMLWrapElement(htmlIndex);const existingChildren=Array.from(htmlWrap.children).filter(elem=>newChildrenSet.has(elem));let i=0,len=Math.min(newChildren.length,existingChildren.length);for(;i{pendingResponsePromises.set(responseId,{resolve,reject})});this._messageChannelPort.postMessage({"type":"event","component":component,"handler":handler,"dispatchOpts":dispatchOpts||null,"data":data,"responseId":responseId},transferables);return ret}["_OnMessageFromRuntime"](data){const type=data["type"];if(type==="event")return this._OnEventFromRuntime(data);else if(type==="result")this._OnResultFromRuntime(data); +else if(type==="runtime-ready")this._OnRuntimeReady();else if(type==="alert-error"){this._RemoveLoadingMessage();alert(data["message"])}else if(type==="creating-runtime")this._OnBeforeCreateRuntime();else throw new Error(`unknown message '${type}'`);}_OnEventFromRuntime(e){const component=e["component"];const handler=e["handler"];const data=e["data"];const responseId=e["responseId"];const handlerMap=runtimeEventHandlers.get(component);if(!handlerMap){console.warn(`[DOM] No event handlers for component '${component}'`); +return}const func=handlerMap.get(handler);if(!func){console.warn(`[DOM] No handler '${handler}' for component '${component}'`);return}let ret=null;try{ret=func(data)}catch(err){console.error(`Exception in '${component}' handler '${handler}':`,err);if(responseId!==null)this._PostResultToRuntime(responseId,false,""+err);return}if(responseId===null)return ret;else if(ret&&ret.then)ret.then(result=>this._PostResultToRuntime(responseId,true,result)).catch(err=>{console.error(`Rejection from '${component}' handler '${handler}':`, +err);this._PostResultToRuntime(responseId,false,""+err)});else this._PostResultToRuntime(responseId,true,ret)}_PostResultToRuntime(responseId,isOk,result){let transferables;if(result&&result["transferables"])transferables=result["transferables"];this._messageChannelPort.postMessage({"type":"result","responseId":responseId,"isOk":isOk,"result":result},transferables)}_OnResultFromRuntime(data){const responseId=data["responseId"];const isOk=data["isOk"];const result=data["result"];const pendingPromise= +pendingResponsePromises.get(responseId);if(isOk)pendingPromise.resolve(result);else pendingPromise.reject(result);pendingResponsePromises.delete(responseId)}AddRuntimeComponentMessageHandler(component,handler,func){let handlerMap=runtimeEventHandlers.get(component);if(!handlerMap){handlerMap=new Map;runtimeEventHandlers.set(component,handlerMap)}if(handlerMap.has(handler))throw new Error(`[DOM] Component '${component}' already has handler '${handler}'`);handlerMap.set(handler,func)}static AddDOMHandlerClass(Class){if(domHandlerClasses.includes(Class))throw new Error("DOM handler already added"); +domHandlerClasses.push(Class)}_FindRuntimeDOMHandler(){for(const dh of this._domHandlers)if(dh.GetComponentID()==="runtime"){this._runtimeDomHandler=dh;return}throw new Error("cannot find runtime DOM handler");}_OnMessageFromDebugger(e){this.PostToRuntimeComponent("debugger","message",e)}_OnRuntimeReady(){for(const h of this._domHandlers)h.Attach()}static IsDocumentFullscreen(){return!!(document["fullscreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||isWrapperFullscreen)}static _SetWrapperIsFullscreenFlag(f){isWrapperFullscreen= +!!f}async GetRemotePreviewStatusInfo(){return await this.PostToRuntimeComponentAsync("runtime","get-remote-preview-status-info")}_AddRAFCallback(f){this._rafCallbacks.add(f);this._RequestAnimationFrame()}_RemoveRAFCallback(f){this._rafCallbacks.delete(f);if(this._rafCallbacks.size===0)this._CancelAnimationFrame()}_RequestAnimationFrame(){if(this._rafId===-1&&this._rafCallbacks.size>0)this._rafId=requestAnimationFrame(this._rafFunc)}_CancelAnimationFrame(){if(this._rafId!==-1){cancelAnimationFrame(this._rafId); +this._rafId=-1}}_OnRAFCallback(){this._rafId=-1;for(const f of this._rafCallbacks)f();this._RequestAnimationFrame()}TryPlayMedia(mediaElem){this._runtimeDomHandler.TryPlayMedia(mediaElem)}RemovePendingPlay(mediaElem){this._runtimeDomHandler.RemovePendingPlay(mediaElem)}_PlayPendingMedia(){this._runtimeDomHandler._PlayPendingMedia()}SetSilent(s){this._runtimeDomHandler.SetSilent(s)}IsAudioFormatSupported(typeStr){return!!supportedAudioFormats[typeStr]}async _WasmDecodeWebMOpus(arrayBuffer){const result= +await this.PostToRuntimeComponentAsync("runtime","opus-decode",{"arrayBuffer":arrayBuffer},null,[arrayBuffer]);return new Float32Array(result)}SetIsExportingToVideo(duration){this._isExportingToVideo=true;this._exportToVideoDuration=duration}IsExportingToVideo(){return this._isExportingToVideo}GetExportToVideoDuration(){return this._exportToVideoDuration}IsAbsoluteURL(url){return/^(?:[a-z\-]+:)?\/\//.test(url)||url.substr(0,5)==="data:"||url.substr(0,5)==="blob:"}IsRelativeURL(url){return!this.IsAbsoluteURL(url)}async _MaybeGetPlatformSpecificScriptURL(url){if(this._exportType=== +"cordova"&&(url.startsWith("file:")||this._isFileProtocol&&this.IsRelativeURL(url))){let filename=url;if(filename.startsWith(this._runtimeBaseUrl))filename=filename.substr(this._runtimeBaseUrl.length);const arrayBuffer=await this.CordovaFetchLocalFileAsArrayBuffer(filename);const blob=new Blob([arrayBuffer],{type:"application/javascript"});return URL.createObjectURL(blob)}else if(this._exportType==="playable-ad-single-file")if(this._localFileStrings.hasOwnProperty(url))return{isStringSrc:true,str:this._localFileStrings[url]}; +else if(this._localFileBlobs.hasOwnProperty(url))return URL.createObjectURL(this._localFileBlobs[url]);else throw new Error("missing script: "+url);else return url}async _OnCordovaFetchLocalFile(e){const filename=e["filename"];switch(e["as"]){case "text":return await this.CordovaFetchLocalFileAsText(filename);case "buffer":return await this.CordovaFetchLocalFileAsArrayBuffer(filename);default:throw new Error("unsupported type");}}CordovaFetchLocalFile(filename){const path=window["cordova"]["file"]["applicationDirectory"]+ +"www/"+filename;return new Promise((resolve,reject)=>{window["resolveLocalFileSystemURL"](path,entry=>{entry["file"](resolve,reject)},reject)})}async CordovaFetchLocalFileAsText(filename){const file=await this.CordovaFetchLocalFile(filename);return await BlobToString(file)}_CordovaMaybeStartNextArrayBufferRead(){if(!queuedArrayBufferReads.length)return;if(activeArrayBufferReads>=MAX_ARRAYBUFFER_READS)return;activeArrayBufferReads++;const job=queuedArrayBufferReads.shift();this._CordovaDoFetchLocalFileAsAsArrayBuffer(job.filename, +job.successCallback,job.errorCallback)}CordovaFetchLocalFileAsArrayBuffer(filename){return new Promise((resolve,reject)=>{queuedArrayBufferReads.push({filename:filename,successCallback:result=>{activeArrayBufferReads--;this._CordovaMaybeStartNextArrayBufferRead();resolve(result)},errorCallback:err=>{activeArrayBufferReads--;this._CordovaMaybeStartNextArrayBufferRead();reject(err)}});this._CordovaMaybeStartNextArrayBufferRead()})}async _CordovaDoFetchLocalFileAsAsArrayBuffer(filename,successCallback, +errorCallback){try{const file=await this.CordovaFetchLocalFile(filename);const arrayBuffer=await BlobToArrayBuffer(file);successCallback(arrayBuffer)}catch(err){errorCallback(err)}}["_PlayableAdFetchBlob"](url){if(this._localFileBlobs.hasOwnProperty(url))return this._localFileBlobs[url];else throw new Error("missing file: "+url);}_GetPermissionAPI(){const api=window["cordova"]&&window["cordova"]["plugins"]&&window["cordova"]["plugins"]["permissions"];if(typeof api!=="object")throw new Error("Permission API is not loaded"); +return api}_MapPermissionID(api,permission){const permissionID=api[permission];if(typeof permissionID!=="string")throw new Error("Invalid permission name");return permissionID}_HasPermission(id){const api=this._GetPermissionAPI();return new Promise((resolve,reject)=>api["checkPermission"](this._MapPermissionID(api,id),status=>resolve(!!status["hasPermission"]),reject))}_RequestPermission(id){const api=this._GetPermissionAPI();return new Promise((resolve,reject)=>api["requestPermission"](this._MapPermissionID(api, +id),status=>resolve(!!status["hasPermission"]),reject))}async RequestPermissions(permissions){if(this.GetExportType()!=="cordova")return true;if(this.IsiOSCordova())return true;for(const id of permissions){const alreadyGranted=await this._HasPermission(id);if(alreadyGranted)continue;const granted=await this._RequestPermission(id);if(granted===false)return false}return true}async RequirePermissions(...permissions){if(await this.RequestPermissions(permissions)===false)throw new Error("Permission not granted"); +}_OnWrapperMessage(msg,additionalObjects){if(msg==="entered-fullscreen"){RuntimeInterface._SetWrapperIsFullscreenFlag(true);this._runtimeDomHandler._OnFullscreenChange()}else if(msg==="exited-fullscreen"){RuntimeInterface._SetWrapperIsFullscreenFlag(false);this._runtimeDomHandler._OnFullscreenChange()}else if(typeof msg==="object"){const type=msg["type"];if(type==="directory-handles")this._directoryHandles=additionalObjects;else if(type==="wrapper-init-response"){this._wrapperInitResolve(msg);this._wrapperInitResolve= +null}else if(type==="extension-message")this.PostToRuntimeComponent("runtime","wrapper-extension-message",msg);else console.warn("Unknown wrapper message: ",msg)}else console.warn("Unknown wrapper message: ",msg)}_OnSendWrapperExtensionMessage(data){this._SendWrapperMessage({"type":"extension-message","componentId":data["componentId"],"messageId":data["messageId"],"params":data["params"]||[],"asyncId":data["asyncId"]})}_SendWrapperMessage(o){if(this.IsAnyWebView2Wrapper())window["chrome"]["webview"]["postMessage"](JSON.stringify(o)); +else if(this._exportType==="macos-wkwebview")window["webkit"]["messageHandlers"]["C3Wrapper"]["postMessage"](JSON.stringify(o));else;}_SetupWebView2Polyfills(){window.moveTo=(x,y)=>{this._SendWrapperMessage({"type":"set-window-position","windowX":Math.ceil(x),"windowY":Math.ceil(y)})};window.resizeTo=(w,h)=>{this._SendWrapperMessage({"type":"set-window-size","windowWidth":Math.ceil(w),"windowHeight":Math.ceil(h)})}}_InitWrapper(){if(!this.IsAnyWebView2Wrapper())return Promise.resolve();return new Promise(resolve=> +{this._wrapperInitResolve=resolve;this._SendWrapperMessage({"type":"wrapper-init"})})}_GetDirectoryHandles(){return this._directoryHandles}async _ConvertDataUrisToBlobs(){const promises=[];for(const [filename,data]of Object.entries(this._localFileBlobs))promises.push(this._ConvertDataUriToBlobs(filename,data));await Promise.all(promises)}async _ConvertDataUriToBlobs(filename,data){if(typeof data==="object"){this._localFileBlobs[filename]=new Blob([data["str"]],{"type":data["type"]});this._localFileStrings[filename]= +data["str"]}else{let blob=await this._FetchDataUri(data);if(!blob)blob=this._DataURIToBinaryBlobSync(data);this._localFileBlobs[filename]=blob}}async _FetchDataUri(dataUri){try{const response=await fetch(dataUri);return await response.blob()}catch(err){console.warn("Failed to fetch a data: URI. Falling back to a slower workaround. This is probably because the Content Security Policy unnecessarily blocked it. Allow data: URIs in your CSP to avoid this.",err);return null}}_DataURIToBinaryBlobSync(datauri){const o= +this._ParseDataURI(datauri);return this._BinaryStringToBlob(o.data,o.mime_type)}_ParseDataURI(datauri){const comma=datauri.indexOf(",");if(comma<0)throw new URIError("expected comma in data: uri");const typepart=datauri.substring(5,comma);const datapart=datauri.substring(comma+1);const typearr=typepart.split(";");const mimetype=typearr[0]||"";const encoding1=typearr[1];const encoding2=typearr[2];let decodeddata;if(encoding1==="base64"||encoding2==="base64")decodeddata=atob(datapart);else decodeddata= +decodeURIComponent(datapart);return{mime_type:mimetype,data:decodeddata}}_BinaryStringToBlob(binstr,mime_type){let len=binstr.length;let len32=len>>2;let a8=new Uint8Array(len);let a32=new Uint32Array(a8.buffer,0,len32);let i,j;for(i=0,j=0;i{const styleLink=document.createElement("link");styleLink.onload=()=>resolve(styleLink);styleLink.onerror=err=>reject(err);styleLink.rel="stylesheet";styleLink.href=cssUrl;document.head.appendChild(styleLink)})}function FetchImage(url){return new Promise((resolve,reject)=>{const img=new Image;img.onload=()=>resolve(img);img.onerror=err=>reject(err);img.src=url})}async function BlobToImage(blob){const blobUrl= +URL.createObjectURL(blob);try{return await FetchImage(blobUrl)}finally{URL.revokeObjectURL(blobUrl)}}function BlobToString(blob){return new Promise((resolve,reject)=>{let fileReader=new FileReader;fileReader.onload=e=>resolve(e.target.result);fileReader.onerror=err=>reject(err);fileReader.readAsText(blob)})}function IsInContentEditable(el){do{if(el.parentNode&&el.hasAttribute("contenteditable"))return true;el=el.parentNode}while(el);return false}const keyboardInputElementTagNames=new Set(["input", +"textarea","datalist","select"]);function IsKeyboardInputElement(elem){return keyboardInputElementTagNames.has(elem.tagName.toLowerCase())||IsInContentEditable(elem)}const canvasOrDocTags=new Set(["canvas","body","html"]);function PreventDefaultOnCanvasOrDoc(e){if(!e.target.tagName)return;const tagName=e.target.tagName.toLowerCase();if(canvasOrDocTags.has(tagName))e.preventDefault()}function PreventDefaultOnHTMLWrap(e){if(!e.target.tagName)return;if(e.target.classList.contains("c3htmlwrap"))e.preventDefault()} +function BlockWheelZoom(e){if(e.metaKey||e.ctrlKey)e.preventDefault()}self["C3_GetSvgImageSize"]=async function(blob){const img=await BlobToImage(blob);if(img.width>0&&img.height>0)return[img.width,img.height];else{img.style.position="absolute";img.style.left="0px";img.style.top="0px";img.style.visibility="hidden";document.body.appendChild(img);const rc=img.getBoundingClientRect();document.body.removeChild(img);return[rc.width,rc.height]}};self["C3_RasterSvgImageBlob"]=async function(blob,imageWidth, +imageHeight,surfaceWidth,surfaceHeight){const img=await BlobToImage(blob);const canvas=document.createElement("canvas");canvas.width=surfaceWidth;canvas.height=surfaceHeight;const ctx=canvas.getContext("2d");ctx.drawImage(img,0,0,imageWidth,imageHeight);return canvas};let isCordovaPaused=false;document.addEventListener("pause",()=>isCordovaPaused=true);document.addEventListener("resume",()=>isCordovaPaused=false);function ParentHasFocus(){try{return window.parent&&window.parent.document.hasFocus()}catch(err){return false}} +const DOM_COMPONENT_ID="runtime";const HANDLER_CLASS=class RuntimeDOMHandler extends self.DOMHandler{constructor(iRuntime){super(iRuntime,DOM_COMPONENT_ID);this._enableWindowResizeEvent=false;this._simulatedResizeTimerId=-1;this._targetOrientation="any";this._attachedDeviceOrientationEvent=false;this._attachedDeviceMotionEvent=false;this._pageVisibilityIsHidden=false;this._screenReaderTextWrap=document.createElement("div");this._screenReaderTextWrap.className="c3-screen-reader-text";this._screenReaderTextWrap.setAttribute("aria-live", +"polite");document.body.appendChild(this._screenReaderTextWrap);this._debugHighlightElem=null;this._isExportToVideo=false;this._exportVideoProgressMessage="";this._exportVideoUpdateTimerId=-1;this._enableAndroidVKDetection=false;this._lastWindowWidth=iRuntime._GetWindowInnerWidth();this._lastWindowHeight=iRuntime._GetWindowInnerHeight();this._virtualKeyboardHeight=0;this._vkTranslateYOffset=0;iRuntime.AddRuntimeComponentMessageHandler("runtime","invoke-download",e=>this._OnInvokeDownload(e));iRuntime.AddRuntimeComponentMessageHandler("runtime", +"load-webfonts",e=>this._OnLoadWebFonts(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","raster-svg-image",e=>this._OnRasterSvgImage(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","get-svg-image-size",e=>this._OnGetSvgImageSize(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","set-target-orientation",e=>this._OnSetTargetOrientation(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","register-sw",()=>this._OnRegisterSW());iRuntime.AddRuntimeComponentMessageHandler("runtime", +"post-to-debugger",e=>this._OnPostToDebugger(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","go-to-script",e=>this._OnPostToDebugger(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","before-start-ticking",()=>this._OnBeforeStartTicking());iRuntime.AddRuntimeComponentMessageHandler("runtime","debug-highlight",e=>this._OnDebugHighlight(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","enable-device-orientation",()=>this._AttachDeviceOrientationEvent());iRuntime.AddRuntimeComponentMessageHandler("runtime", +"enable-device-motion",()=>this._AttachDeviceMotionEvent());iRuntime.AddRuntimeComponentMessageHandler("runtime","add-stylesheet",e=>this._OnAddStylesheet(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","script-create-worker",e=>this._OnScriptCreateWorker(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","alert",e=>this._OnAlert(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","screen-reader-text",e=>this._OnScreenReaderTextEvent(e));iRuntime.AddRuntimeComponentMessageHandler("runtime", +"hide-cordova-splash",()=>this._OnHideCordovaSplash());iRuntime.AddRuntimeComponentMessageHandler("runtime","set-exporting-to-video",e=>this._SetExportingToVideo(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","export-to-video-progress",e=>this._OnExportVideoProgress(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","exported-to-video",e=>this._OnExportedToVideo(e));iRuntime.AddRuntimeComponentMessageHandler("runtime","exported-to-image-sequence",e=>this._OnExportedToImageSequence(e)); +const allowDefaultContextMenuTagNames=new Set(["input","textarea","datalist"]);window.addEventListener("contextmenu",e=>{const t=e.target;const name=t.tagName.toLowerCase();if(!allowDefaultContextMenuTagNames.has(name)&&!IsInContentEditable(t))e.preventDefault()});window.addEventListener("selectstart",PreventDefaultOnCanvasOrDoc);window.addEventListener("gesturehold",PreventDefaultOnCanvasOrDoc);window.addEventListener("touchstart",PreventDefaultOnCanvasOrDoc,{"passive":false});window.addEventListener("pointerdown", +PreventDefaultOnCanvasOrDoc,{"passive":false});this._mousePointerLastButtons=0;window.addEventListener("mousedown",e=>{if(e.button===1)e.preventDefault()});window.addEventListener("mousewheel",BlockWheelZoom,{"passive":false});window.addEventListener("wheel",BlockWheelZoom,{"passive":false});window.addEventListener("resize",()=>this._OnWindowResize());window.addEventListener("fullscreenchange",()=>this._OnFullscreenChange());window.addEventListener("webkitfullscreenchange",()=>this._OnFullscreenChange()); +window.addEventListener("mozfullscreenchange",()=>this._OnFullscreenChange());window.addEventListener("fullscreenerror",e=>this._OnFullscreenError(e));window.addEventListener("webkitfullscreenerror",e=>this._OnFullscreenError(e));window.addEventListener("mozfullscreenerror",e=>this._OnFullscreenError(e));if(iRuntime.IsiOSWebView()){let lastVisualViewportHeight=Infinity;window["visualViewport"].addEventListener("resize",()=>{const curVisualViewportHeight=window["visualViewport"].height;if(curVisualViewportHeight> +lastVisualViewportHeight){document.scrollingElement.scrollTop=0;document.scrollingElement.scrollLeft=0}lastVisualViewportHeight=curVisualViewportHeight});document.documentElement.setAttribute("ioswebview","")}this._mediaPendingPlay=new Set;this._mediaRemovedPendingPlay=new WeakSet;this._isSilent=false}_AddDefaultCanvasEventHandlers(canvas){canvas.addEventListener("selectstart",PreventDefaultOnCanvasOrDoc);canvas.addEventListener("gesturehold",PreventDefaultOnCanvasOrDoc);canvas.addEventListener("pointerdown", +PreventDefaultOnCanvasOrDoc)}_AddDefaultHTMLWrapEventHandlers(htmlwrap){htmlwrap.addEventListener("selectstart",PreventDefaultOnHTMLWrap);htmlwrap.addEventListener("gesturehold",PreventDefaultOnHTMLWrap);htmlwrap.addEventListener("touchstart",PreventDefaultOnHTMLWrap)}_OnBeforeStartTicking(){self.setTimeout(()=>{this._enableAndroidVKDetection=true},1E3);if(this._iRuntime.GetExportType()==="cordova"){document.addEventListener("pause",()=>this._OnVisibilityChange(true));document.addEventListener("resume", +()=>this._OnVisibilityChange(false))}else document.addEventListener("visibilitychange",()=>this._OnVisibilityChange(document.visibilityState==="hidden"));this._pageVisibilityIsHidden=!!(document.visibilityState==="hidden"||isCordovaPaused);return{"isSuspended":this._pageVisibilityIsHidden}}Attach(){window.addEventListener("focus",()=>this._PostRuntimeEvent("window-focus"));window.addEventListener("blur",()=>{this._PostRuntimeEvent("window-blur",{"parentHasFocus":ParentHasFocus()});this._mousePointerLastButtons= +0});window.addEventListener("focusin",e=>{if(IsKeyboardInputElement(e.target))this._PostRuntimeEvent("keyboard-blur")});window.addEventListener("keydown",e=>this._OnKeyEvent("keydown",e));window.addEventListener("keyup",e=>this._OnKeyEvent("keyup",e));window.addEventListener("mousedown",e=>this._OnMouseEvent("mousedown",e,DISPATCH_SCRIPT_ONLY));window.addEventListener("mousemove",e=>this._OnMouseEvent("mousemove",e,DISPATCH_SCRIPT_ONLY));window.addEventListener("mouseup",e=>this._OnMouseEvent("mouseup", +e,DISPATCH_SCRIPT_ONLY));window.addEventListener("dblclick",e=>this._OnMouseEvent("dblclick",e,DISPATCH_RUNTIME_AND_SCRIPT));window.addEventListener("wheel",e=>this._OnMouseWheelEvent("wheel",e,DISPATCH_RUNTIME_AND_SCRIPT));window.addEventListener("pointerdown",e=>{this._HandlePointerDownFocus(e);this._OnPointerEvent("pointerdown",e)});if(this._iRuntime.UsesWorker()&&typeof window["onpointerrawupdate"]!=="undefined"&&self===self.top)window.addEventListener("pointerrawupdate",e=>this._OnPointerRawUpdate(e)); +else window.addEventListener("pointermove",e=>this._OnPointerEvent("pointermove",e));window.addEventListener("pointerup",e=>this._OnPointerEvent("pointerup",e));window.addEventListener("pointercancel",e=>this._OnPointerEvent("pointercancel",e));const playFunc=()=>this._PlayPendingMedia();window.addEventListener("pointerup",playFunc,true);window.addEventListener("touchend",playFunc,true);window.addEventListener("click",playFunc,true);window.addEventListener("keydown",playFunc,true);window.addEventListener("gamepadconnected", +playFunc,true);if(this._iRuntime.IsAndroid()&&!this._iRuntime.IsAndroidWebView()&&navigator["virtualKeyboard"]){navigator["virtualKeyboard"]["overlaysContent"]=true;navigator["virtualKeyboard"].addEventListener("geometrychange",()=>{this._OnAndroidVirtualKeyboardChange(this._GetWindowInnerHeight(),navigator["virtualKeyboard"]["boundingRect"]["height"])})}if(this._iRuntime.IsiOSWebView()){document.scrollingElement.scrollTop=0;document.scrollingElement.scrollLeft=0}}_OnAndroidVirtualKeyboardChange(windowHeight, +vkHeight){document.body.style.position="";document.body.style.overflow="";document.body.style.transform="";this._vkTranslateYOffset=0;if(vkHeight>0){const activeElement=document.activeElement;if(activeElement){const rc=activeElement.getBoundingClientRect();const rcMidY=(rc.top+rc.bottom)/2;const targetY=(windowHeight-vkHeight)/2;let shiftY=rcMidY-targetY;if(shiftY>vkHeight)shiftY=vkHeight;if(shiftY<0)shiftY=0;if(shiftY>0){document.body.style.position="absolute";document.body.style.overflow="visible"; +document.body.style.transform=`translateY(${-shiftY}px)`;this._vkTranslateYOffset=shiftY}}}}_PostRuntimeEvent(name,data){this.PostToRuntime(name,data||null,DISPATCH_RUNTIME_ONLY)}_GetWindowInnerWidth(){return this._iRuntime._GetWindowInnerWidth()}_GetWindowInnerHeight(){return this._iRuntime._GetWindowInnerHeight()}_EnableWindowResizeEvent(){this._enableWindowResizeEvent=true;this._lastWindowWidth=this._iRuntime._GetWindowInnerWidth();this._lastWindowHeight=this._iRuntime._GetWindowInnerHeight()}_OnWindowResize(){if(this._isExportToVideo)return; +if(!this._enableWindowResizeEvent)return;const width=this._GetWindowInnerWidth();const height=this._GetWindowInnerHeight();if(this._iRuntime.IsAndroidWebView())if(this._enableAndroidVKDetection)if(this._lastWindowWidth===width&&height0){this._virtualKeyboardHeight=0;this._OnAndroidVirtualKeyboardChange(height, +this._virtualKeyboardHeight)}this._lastWindowWidth=width;this._lastWindowHeight=height}else{this._lastWindowWidth=width;this._lastWindowHeight=height}this.PostToRuntime("window-resize",{"innerWidth":width,"innerHeight":height,"devicePixelRatio":window.devicePixelRatio,"isFullscreen":RuntimeInterface.IsDocumentFullscreen(),"cssDisplayMode":this._iRuntime.GetCssDisplayMode()});if(this._iRuntime.IsiOSWebView()){if(this._simulatedResizeTimerId!==-1)clearTimeout(this._simulatedResizeTimerId);this._OnSimulatedResize(width, +height,0)}}_ScheduleSimulatedResize(width,height,count){if(this._simulatedResizeTimerId!==-1)clearTimeout(this._simulatedResizeTimerId);this._simulatedResizeTimerId=setTimeout(()=>this._OnSimulatedResize(width,height,count),48)}_OnSimulatedResize(originalWidth,originalHeight,count){const width=this._GetWindowInnerWidth();const height=this._GetWindowInnerHeight();this._simulatedResizeTimerId=-1;if(width!=originalWidth||height!=originalHeight)this.PostToRuntime("window-resize",{"innerWidth":width,"innerHeight":height, +"devicePixelRatio":window.devicePixelRatio,"isFullscreen":RuntimeInterface.IsDocumentFullscreen(),"cssDisplayMode":this._iRuntime.GetCssDisplayMode()});else if(count<10)this._ScheduleSimulatedResize(width,height,count+1)}_OnSetTargetOrientation(e){this._targetOrientation=e["targetOrientation"]}_TrySetTargetOrientation(){const orientation=this._targetOrientation;if(screen["orientation"]&&screen["orientation"]["lock"])screen["orientation"]["lock"](orientation).catch(err=>console.warn("[Construct] Failed to lock orientation: ", +err));else try{let result=false;if(screen["lockOrientation"])result=screen["lockOrientation"](orientation);else if(screen["webkitLockOrientation"])result=screen["webkitLockOrientation"](orientation);else if(screen["mozLockOrientation"])result=screen["mozLockOrientation"](orientation);else if(screen["msLockOrientation"])result=screen["msLockOrientation"](orientation);if(!result)console.warn("[Construct] Failed to lock orientation")}catch(err){console.warn("[Construct] Failed to lock orientation: ", +err)}}_OnFullscreenChange(){if(this._isExportToVideo)return;const isDocFullscreen=RuntimeInterface.IsDocumentFullscreen();if(isDocFullscreen&&this._targetOrientation!=="any")this._TrySetTargetOrientation();this.PostToRuntime("fullscreenchange",{"isFullscreen":isDocFullscreen,"innerWidth":this._GetWindowInnerWidth(),"innerHeight":this._GetWindowInnerHeight()})}_OnFullscreenError(e){console.warn("[Construct] Fullscreen request failed: ",e);this.PostToRuntime("fullscreenerror",{"isFullscreen":RuntimeInterface.IsDocumentFullscreen(), +"innerWidth":this._GetWindowInnerWidth(),"innerHeight":this._GetWindowInnerHeight()})}_OnVisibilityChange(isHidden){if(this._pageVisibilityIsHidden===isHidden)return;this._pageVisibilityIsHidden=isHidden;if(isHidden)this._iRuntime._CancelAnimationFrame();else this._iRuntime._RequestAnimationFrame();this.PostToRuntime("visibilitychange",{"hidden":isHidden});if(!isHidden&&this._iRuntime.IsiOSWebView()){const resetScrollFunc=()=>{document.scrollingElement.scrollTop=0;document.scrollingElement.scrollLeft= +0};setTimeout(resetScrollFunc,50);setTimeout(resetScrollFunc,100);setTimeout(resetScrollFunc,250);setTimeout(resetScrollFunc,500)}}_OnKeyEvent(name,e){if(typeof e.key==="undefined")return;if(e.key==="Backspace")PreventDefaultOnCanvasOrDoc(e);if(this._iRuntime.GetExportType()==="nwjs"&&e.key==="u"&&(e.ctrlKey||e.metaKey))e.preventDefault();if(this._isExportToVideo)return;const code=KEY_CODE_ALIASES.get(e.code)||e.code;this._PostToRuntimeMaybeSync(name,{"code":code,"key":e.key,"which":e.which,"repeat":e.repeat, +"altKey":e.altKey,"ctrlKey":e.ctrlKey,"metaKey":e.metaKey,"shiftKey":e.shiftKey,"timeStamp":e.timeStamp},DISPATCH_RUNTIME_AND_SCRIPT)}_OnMouseWheelEvent(name,e,opts){if(this._isExportToVideo)return;this.PostToRuntime(name,{"clientX":e.clientX,"clientY":e.clientY+this._vkTranslateYOffset,"pageX":e.pageX,"pageY":e.pageY+this._vkTranslateYOffset,"deltaX":e.deltaX,"deltaY":e.deltaY,"deltaZ":e.deltaZ,"deltaMode":e.deltaMode,"timeStamp":e.timeStamp},opts)}_OnMouseEvent(name,e,opts){if(this._isExportToVideo)return; +if(IsCompatibilityMouseEvent(e))return;this._PostToRuntimeMaybeSync(name,{"button":e.button,"buttons":e.buttons,"clientX":e.clientX,"clientY":e.clientY+this._vkTranslateYOffset,"pageX":e.pageX,"pageY":e.pageY+this._vkTranslateYOffset,"movementX":e.movementX||0,"movementY":e.movementY||0,"timeStamp":e.timeStamp},opts)}_OnPointerEvent(name,e){if(this._isExportToVideo)return;let lastButtons=0;if(e.pointerType==="mouse")lastButtons=this._mousePointerLastButtons;this._PostToRuntimeMaybeSync(name,{"pointerId":e.pointerId, +"pointerType":e.pointerType,"button":e.button,"buttons":e.buttons,"lastButtons":lastButtons,"clientX":e.clientX,"clientY":e.clientY+this._vkTranslateYOffset,"pageX":e.pageX,"pageY":e.pageY+this._vkTranslateYOffset,"movementX":e.movementX||0,"movementY":e.movementY||0,"width":e.width||0,"height":e.height||0,"pressure":e.pressure||0,"tangentialPressure":e["tangentialPressure"]||0,"tiltX":e.tiltX||0,"tiltY":e.tiltY||0,"twist":e["twist"]||0,"timeStamp":e.timeStamp},DISPATCH_RUNTIME_AND_SCRIPT);if(e.pointerType=== +"mouse")this._mousePointerLastButtons=e.buttons}_OnPointerRawUpdate(e){this._OnPointerEvent("pointermove",e)}_OnTouchEvent(fireName,e){if(this._isExportToVideo)return;for(let i=0,len=e.changedTouches.length;ithis._OnDeviceOrientation(e));window.addEventListener("deviceorientationabsolute",e=>this._OnDeviceOrientationAbsolute(e))}_AttachDeviceMotionEvent(){if(this._attachedDeviceMotionEvent)return;this._attachedDeviceMotionEvent=true;window.addEventListener("devicemotion", +e=>this._OnDeviceMotion(e))}_OnDeviceOrientation(e){if(this._isExportToVideo)return;this.PostToRuntime("deviceorientation",{"absolute":!!e["absolute"],"alpha":e["alpha"]||0,"beta":e["beta"]||0,"gamma":e["gamma"]||0,"timeStamp":e.timeStamp,"webkitCompassHeading":e["webkitCompassHeading"],"webkitCompassAccuracy":e["webkitCompassAccuracy"]},DISPATCH_RUNTIME_AND_SCRIPT)}_OnDeviceOrientationAbsolute(e){if(this._isExportToVideo)return;this.PostToRuntime("deviceorientationabsolute",{"absolute":!!e["absolute"], +"alpha":e["alpha"]||0,"beta":e["beta"]||0,"gamma":e["gamma"]||0,"timeStamp":e.timeStamp},DISPATCH_RUNTIME_AND_SCRIPT)}_OnDeviceMotion(e){if(this._isExportToVideo)return;let accProp=null;const acc=e["acceleration"];if(acc)accProp={"x":acc["x"]||0,"y":acc["y"]||0,"z":acc["z"]||0};let withGProp=null;const withG=e["accelerationIncludingGravity"];if(withG)withGProp={"x":withG["x"]||0,"y":withG["y"]||0,"z":withG["z"]||0};let rotationRateProp=null;const rotationRate=e["rotationRate"];if(rotationRate)rotationRateProp= +{"alpha":rotationRate["alpha"]||0,"beta":rotationRate["beta"]||0,"gamma":rotationRate["gamma"]||0};this.PostToRuntime("devicemotion",{"acceleration":accProp,"accelerationIncludingGravity":withGProp,"rotationRate":rotationRateProp,"interval":e["interval"],"timeStamp":e.timeStamp},DISPATCH_RUNTIME_AND_SCRIPT)}_OnInvokeDownload(e){const url=e["url"];const filename=e["filename"];const a=document.createElement("a");const body=document.body;a.textContent=filename;a.href=url;a.download=filename;body.appendChild(a); +a.click();body.removeChild(a)}async _OnLoadWebFonts(e){const webfonts=e["webfonts"];await Promise.all(webfonts.map(async info=>{const fontFace=new FontFace(info.name,`url('${info.url}')`);document.fonts.add(fontFace);await fontFace.load()}))}async _OnRasterSvgImage(e){const blob=e["blob"];const imageWidth=e["imageWidth"];const imageHeight=e["imageHeight"];const surfaceWidth=e["surfaceWidth"];const surfaceHeight=e["surfaceHeight"];const imageBitmapOpts=e["imageBitmapOpts"];const canvas=await self["C3_RasterSvgImageBlob"](blob, +imageWidth,imageHeight,surfaceWidth,surfaceHeight);let ret;if(imageBitmapOpts)ret=await createImageBitmap(canvas,imageBitmapOpts);else ret=await createImageBitmap(canvas);return{"imageBitmap":ret,"transferables":[ret]}}async _OnGetSvgImageSize(e){return await self["C3_GetSvgImageSize"](e["blob"])}async _OnAddStylesheet(e){await AddStyleSheet(e["url"])}_PlayPendingMedia(){const mediaToTryPlay=[...this._mediaPendingPlay];this._mediaPendingPlay.clear();if(!this._isSilent)for(const mediaElem of mediaToTryPlay){const playRet= +mediaElem.play();if(playRet)playRet.catch(err=>{if(!this._mediaRemovedPendingPlay.has(mediaElem))this._mediaPendingPlay.add(mediaElem)})}}TryPlayMedia(mediaElem){if(typeof mediaElem.play!=="function")throw new Error("missing play function");this._mediaRemovedPendingPlay.delete(mediaElem);let playRet;try{playRet=mediaElem.play()}catch(err){this._mediaPendingPlay.add(mediaElem);return}if(playRet)playRet.catch(err=>{if(!this._mediaRemovedPendingPlay.has(mediaElem))this._mediaPendingPlay.add(mediaElem)})}RemovePendingPlay(mediaElem){this._mediaPendingPlay.delete(mediaElem); +this._mediaRemovedPendingPlay.add(mediaElem)}SetSilent(s){this._isSilent=!!s}_OnHideCordovaSplash(){if(navigator["splashscreen"]&&navigator["splashscreen"]["hide"])navigator["splashscreen"]["hide"]()}_OnDebugHighlight(e){const show=e["show"];if(!show){if(this._debugHighlightElem)this._debugHighlightElem.style.display="none";return}if(!this._debugHighlightElem){this._debugHighlightElem=document.createElement("div");this._debugHighlightElem.id="inspectOutline";document.body.appendChild(this._debugHighlightElem)}const elem= +this._debugHighlightElem;elem.style.display="";elem.style.left=e["left"]-1+"px";elem.style.top=e["top"]-1+"px";elem.style.width=e["width"]+2+"px";elem.style.height=e["height"]+2+"px";elem.textContent=e["name"]}_OnRegisterSW(){if(window["C3_RegisterSW"])window["C3_RegisterSW"]()}_OnPostToDebugger(data){if(!window["c3_postToMessagePort"])return;data["from"]="runtime";window["c3_postToMessagePort"](data)}_InvokeFunctionFromJS(name,params){return this.PostToRuntimeAsync("js-invoke-function",{"name":name, +"params":params})}_OnScriptCreateWorker(e){const url=e["url"];const opts=e["opts"];const port2=e["port2"];const worker=new Worker(url,opts);worker.postMessage({"type":"construct-worker-init","port2":port2},[port2])}_OnAlert(e){alert(e["message"])}_OnScreenReaderTextEvent(e){const type=e["type"];if(type==="create"){const p=document.createElement("p");p.id="c3-sr-"+e["id"];p.textContent=e["text"];this._screenReaderTextWrap.appendChild(p)}else if(type==="update"){const p=document.getElementById("c3-sr-"+ +e["id"]);if(p)p.textContent=e["text"];else console.warn(`[Construct] Missing screen reader text with id ${e["id"]}`)}else if(type==="release"){const p=document.getElementById("c3-sr-"+e["id"]);if(p)p.remove();else console.warn(`[Construct] Missing screen reader text with id ${e["id"]}`)}else console.warn(`[Construct] Unknown screen reader text update '${type}'`)}_SetExportingToVideo(e){this._isExportToVideo=true;const headerElem=document.createElement("h1");headerElem.id="exportToVideoMessage";headerElem.textContent= +e["message"];document.body.prepend(headerElem);document.body.classList.add("exportingToVideo");this.GetRuntimeInterface().GetMainCanvas().style.display="";this._iRuntime.SetIsExportingToVideo(e["duration"])}_OnExportVideoProgress(e){this._exportVideoProgressMessage=e["message"];if(this._exportVideoUpdateTimerId===-1)this._exportVideoUpdateTimerId=setTimeout(()=>this._DoUpdateExportVideoProgressMessage(),250)}_DoUpdateExportVideoProgressMessage(){this._exportVideoUpdateTimerId=-1;const headerElem= +document.getElementById("exportToVideoMessage");if(headerElem)headerElem.textContent=this._exportVideoProgressMessage}_OnExportedToVideo(e){window.c3_postToMessagePort({"type":"exported-video","arrayBuffer":e["arrayBuffer"],"contentType":e["contentType"],"time":e["time"]})}_OnExportedToImageSequence(e){window.c3_postToMessagePort({"type":"exported-image-sequence","blobArr":e["blobArr"],"time":e["time"],"gif":e["gif"]})}};RuntimeInterface.AddDOMHandlerClass(HANDLER_CLASS)}; + + +// workers/jobSchedulerDom.js +'use strict';{const DISPATCH_WORKER_SCRIPT_NAME="dispatchworker.js";const JOB_WORKER_SCRIPT_NAME="jobworker.js";self.JobSchedulerDOM=class JobSchedulerDOM{constructor(runtimeInterface){this._runtimeInterface=runtimeInterface;this._maxNumWorkers=Math.min(navigator.hardwareConcurrency||2,16);this._dispatchWorker=null;this._jobWorkers=[];this._inputPort=null;this._outputPort=null}async Init(){if(this._hasInitialised)throw new Error("already initialised");this._hasInitialised=true;const dispatchWorkerScriptUrl= +this._runtimeInterface.GetScriptFolder()+DISPATCH_WORKER_SCRIPT_NAME;this._dispatchWorker=await this._runtimeInterface.CreateWorker(dispatchWorkerScriptUrl,{name:"DispatchWorker"});const messageChannel=new MessageChannel;this._inputPort=messageChannel.port1;this._dispatchWorker.postMessage({"type":"_init","in-port":messageChannel.port2},[messageChannel.port2]);this._outputPort=await this._CreateJobWorker()}async _CreateJobWorker(){const number=this._jobWorkers.length;const jobWorkerScriptUrl=this._runtimeInterface.GetScriptFolder()+ +JOB_WORKER_SCRIPT_NAME;const jobWorker=await this._runtimeInterface.CreateWorker(jobWorkerScriptUrl,{name:"JobWorker"+number});const dispatchChannel=new MessageChannel;const outputChannel=new MessageChannel;this._dispatchWorker.postMessage({"type":"_addJobWorker","port":dispatchChannel.port1},[dispatchChannel.port1]);jobWorker.postMessage({"type":"init","number":number,"dispatch-port":dispatchChannel.port2,"output-port":outputChannel.port2},[dispatchChannel.port2,outputChannel.port2]);this._jobWorkers.push(jobWorker); +return outputChannel.port1}GetPortData(){return{"inputPort":this._inputPort,"outputPort":this._outputPort,"maxNumWorkers":this._maxNumWorkers}}GetPortTransferables(){return[this._inputPort,this._outputPort]}}}; + + +// scripts/plugins/Touch/dom/domSide.js +'use strict';{const DOM_COMPONENT_ID="touch";const HANDLER_CLASS=class TouchDOMHandler extends self.DOMHandler{constructor(iRuntime){super(iRuntime,DOM_COMPONENT_ID);this.AddRuntimeMessageHandler("request-permission",e=>this._OnRequestPermission(e))}async _OnRequestPermission(e){const type=e["type"];let result=true;if(type===0)result=await this._RequestOrientationPermission();else if(type===1)result=await this._RequestMotionPermission();this.PostToRuntime("permission-result",{"type":type,"result":result})}async _RequestOrientationPermission(){if(!self["DeviceOrientationEvent"]|| +!self["DeviceOrientationEvent"]["requestPermission"])return true;try{const state=await self["DeviceOrientationEvent"]["requestPermission"]();return state==="granted"}catch(err){console.warn("[Touch] Failed to request orientation permission: ",err);return false}}async _RequestMotionPermission(){if(!self["DeviceMotionEvent"]||!self["DeviceMotionEvent"]["requestPermission"])return true;try{const state=await self["DeviceMotionEvent"]["requestPermission"]();return state==="granted"}catch(err){console.warn("[Touch] Failed to request motion permission: ", +err);return false}}};self.RuntimeInterface.AddDOMHandlerClass(HANDLER_CLASS)}; + + +// scripts/plugins/LocalStorage/dom/domSide.js +'use strict';{const DOM_COMPONENT_ID="localstorage";const HANDLER_CLASS=class LocalStorageDOMHandler extends self.DOMHandler{constructor(iRuntime){super(iRuntime,DOM_COMPONENT_ID);this.AddRuntimeMessageHandlers([["init",()=>this._Init()],["request-persistent",()=>this._OnRequestPersistent()]])}async _Init(){let isPersistent=false;try{isPersistent=await navigator["storage"]["persisted"]()}catch(err){isPersistent=false;console.warn("[Construct] Error checking storage persisted state: ",err)}return{"isPersistent":isPersistent}}async _OnRequestPersistent(){try{const isPersistent= +await navigator["storage"]["persist"]();return{"isOk":true,"isPersistent":isPersistent}}catch(err){console.error("[Construct] Error requesting persistent storage: ",err);return{"isOk":false}}}};self.RuntimeInterface.AddDOMHandlerClass(HANDLER_CLASS)}; + + +// start-export.js +'use strict';{if(window["C3_Is_Supported"]){const enableWorker=true;window["c3_runtimeInterface"]=new self.RuntimeInterface({useWorker:enableWorker,workerMainUrl:"workermain.js",runtimeScriptList:["scripts/c3main.js"],scriptFolder:"scripts/",exportType:"html5"})}}; + diff --git a/scripts/modernjscheck.js b/scripts/modernjscheck.js new file mode 100644 index 0000000..2820ed6 --- /dev/null +++ b/scripts/modernjscheck.js @@ -0,0 +1 @@ +'use strict';(function(){let pass=true;if((null??2)!==2)pass=false;if(pass)window["C3_ModernJSSupport_OK"]=true})(); diff --git a/scripts/new-post.js b/scripts/new-post.js deleted file mode 100644 index 05a944c..0000000 --- a/scripts/new-post.js +++ /dev/null @@ -1,52 +0,0 @@ -/* This is a script to create a new post markdown file with front-matter */ - -import fs from "fs" -import path from "path" - -function getDate() { - const today = new Date() - const year = today.getFullYear() - const month = String(today.getMonth() + 1).padStart(2, "0") - const day = String(today.getDate()).padStart(2, "0") - - return `${year}-${month}-${day}` -} - -const args = process.argv.slice(2) - -if (args.length === 0) { - console.error(`Error: No filename argument provided -Usage: npm run new-post -- `) - process.exit(1) // Terminate the script and return error code 1 -} - -let fileName = args[0] - -// Add .md extension if not present -const fileExtensionRegex = /\.(md|mdx)$/i -if (!fileExtensionRegex.test(fileName)) { - fileName += ".md" -} - -const targetDir = "./src/content/posts/" -const fullPath = path.join(targetDir, fileName) - -if (fs.existsSync(fullPath)) { - console.error(`Error:File ${fullPath} already exists `) - process.exit(1) -} - -const content = `--- -title: ${args[0]} -published: ${getDate()} -description: '' -image: '' -tags: [] -category: '' -draft: false ---- -` - -fs.writeFileSync(path.join(targetDir, fileName), content) - -console.log(`Post ${fullPath} created`) diff --git a/scripts/objRefTable.js b/scripts/objRefTable.js new file mode 100644 index 0000000..97983ac --- /dev/null +++ b/scripts/objRefTable.js @@ -0,0 +1,250 @@ +const C3 = self.C3; +self.C3_GetObjectRefTable = function () { + return [ + C3.Plugins.Sprite, + C3.Behaviors.solid, + C3.Behaviors.Turret, + C3.Behaviors.Tween, + C3.Behaviors.Timer, + C3.Behaviors.Bullet, + C3.Behaviors.destroy, + C3.Plugins.TiledBg, + C3.Behaviors.Pin, + C3.Plugins.Touch, + C3.Behaviors.MoveTo, + C3.Behaviors.Pathfinding, + C3.Behaviors.Fade, + C3.Plugins.Text, + C3.Plugins.LocalStorage, + C3.Behaviors.Sin, + C3.Behaviors.Anchor, + C3.Plugins.System.Acts.SetVar, + C3.Plugins.System.Cnds.OnLayoutStart, + C3.Plugins.System.Acts.SetLayerVisible, + C3.Plugins.Sprite.Acts.SetInstanceVar, + C3.Plugins.Sprite.Acts.SetPos, + C3.Plugins.Sprite.Exps.X, + C3.Plugins.Sprite.Exps.Y, + C3.Behaviors.Pin.Acts.PinByProperties, + C3.Plugins.Text.Acts.SetText, + C3.Plugins.Sprite.Acts.SetVisible, + C3.Plugins.LocalStorage.Acts.CheckItemExists, + C3.Behaviors.Fade.Acts.SetFadeInTime, + C3.Behaviors.Fade.Acts.SetWaitTime, + C3.Behaviors.Fade.Acts.SetFadeOutTime, + C3.Behaviors.Fade.Acts.StartFade, + C3.Plugins.Sprite.Acts.SetSize, + C3.Behaviors.Tween.Acts.TweenTwoProperties, + C3.Plugins.Text.Cnds.CompareInstanceVar, + C3.Plugins.System.Cnds.EveryTick, + C3.Plugins.System.Acts.SortZOrderByInstVar, + C3.Plugins.TiledBg.Acts.ZMoveToObject, + C3.Behaviors.Tween.Cnds.OnTweensFinished, + C3.Plugins.System.Acts.Wait, + C3.Behaviors.Fade.Acts.RestartFade, + C3.Plugins.LocalStorage.Cnds.OnItemExists, + C3.Plugins.LocalStorage.Cnds.OnItemMissing, + C3.Plugins.Sprite.Cnds.CompareInstanceVar, + C3.Plugins.Text.Acts.TypewriterText, + C3.Plugins.System.Cnds.Else, + C3.Plugins.Text.Cnds.OnTypewriterTextFinished, + C3.Plugins.Touch.Cnds.OnTouchStart, + C3.Plugins.Touch.Cnds.IsTouchingObject, + C3.Plugins.TiledBg.Acts.SetPos, + C3.Plugins.TiledBg.Acts.SetSize, + C3.Plugins.System.Exps.layoutwidth, + C3.Plugins.System.Exps.layoutheight, + C3.Plugins.Sprite.Cnds.OnAnimFinished, + C3.Plugins.Sprite.Acts.Destroy, + C3.Plugins.System.Cnds.CompareVar, + C3.Plugins.Touch.Cnds.OnTouchObject, + C3.Plugins.System.Acts.CreateObject, + C3.Plugins.Sprite.Exps.LayerName, + C3.Plugins.Sprite.Exps.Height, + C3.Plugins.Sprite.Acts.SetScale, + C3.Plugins.System.Cnds.Repeat, + C3.Behaviors.Bullet.Acts.SetAngleOfMotion, + C3.Plugins.System.Exps.random, + C3.Behaviors.Bullet.Acts.SetSpeed, + C3.Behaviors.Timer.Acts.StartTimer, + C3.Behaviors.Timer.Cnds.OnTimer, + C3.Plugins.Sprite.Cnds.OnFrameChanged, + C3.Plugins.Sprite.Cnds.IsAnimPlaying, + C3.Plugins.Sprite.Cnds.CompareFrame, + C3.Plugins.Sprite.Cnds.IsOverlapping, + C3.Plugins.System.Cnds.ForEach, + C3.Plugins.Sprite.Exps.UID, + C3.Plugins.System.Exps.int, + C3.Plugins.System.Cnds.Every, + C3.Plugins.System.Acts.SubVar, + C3.Plugins.System.Acts.AddVar, + C3.Plugins.Touch.Exps.X, + C3.Plugins.Text.Acts.SetFontColor, + C3.Behaviors.Pathfinding.Acts.FindPath, + C3.Plugins.System.Acts.WaitForPreviousActions, + C3.Behaviors.Pathfinding.Acts.StartMoving, + C3.Plugins.Sprite.Acts.SetAnim, + C3.Plugins.Sprite.Cnds.CompareX, + C3.Plugins.Sprite.Acts.SetMirrored, + C3.Behaviors.Turret.Cnds.OnShoot, + C3.Plugins.Sprite.Exps.ImagePointX, + C3.Plugins.Sprite.Exps.ImagePointY, + C3.Plugins.Sprite.Exps.Angle, + C3.Behaviors.Tween.Acts.TweenOneProperty, + C3.Plugins.Sprite.Exps.Width, + C3.Plugins.Sprite.Cnds.PickByUID, + C3.Behaviors.Pathfinding.Acts.Stop, + C3.Plugins.Sprite.Acts.SubInstanceVar, + C3.Plugins.Sprite.Cnds.PickChildren, + C3.Plugins.TiledBg.Acts.SetWidth, + C3.Plugins.Sprite.Acts.SetCollisions, + C3.Plugins.TiledBg.Acts.Destroy, + C3.Plugins.Sprite.Cnds.OnCollision, + C3.Plugins.System.Cnds.LayerVisible, + C3.Plugins.System.Cnds.Compare, + C3.Behaviors.Pathfinding.Cnds.IsMoving, + C3.Behaviors.Pathfinding.Cnds.OnArrived, + C3.Behaviors.Turret.Acts.AddTarget, + C3.Plugins.Sprite.Acts.SetAngle, + C3.Plugins.Sprite.Acts.ZMoveToObject, + C3.Behaviors.MoveTo.Cnds.IsMoving, + C3.Behaviors.MoveTo.Cnds.OnArrived, + C3.Behaviors.MoveTo.Cnds.OnHitSolid + ]; +}; +self.C3_JsPropNameTable = [ + {bg: 0}, + {binansuo: 0}, + {bg2: 0}, + {sy: 0}, + {interal: 0}, + {Solid: 0}, + {fadianchang: 0}, + {atk: 0}, + {lv: 0}, + {Turret: 0}, + {Tween: 0}, + {paotai: 0}, + {cankao: 0}, + {ui_dianli: 0}, + {Timer: 0}, + {ui_daojishi: 0}, + {ui_boci: 0}, + {Bullet: 0}, + {DestroyOutsideLayout: 0}, + {paodan: 0}, + {getBulilding: 0}, + {base: 0}, + {puid: 0}, + {Pin: 0}, + {role_hp3: 0}, + {role_hp2: 0}, + {role_hp1: 0}, + {boss_hp2: 0}, + {boss_hp1: 0}, + {boss_hp3: 0}, + {skillbg: 0}, + {icon_skill1: 0}, + {icon_skill2: 0}, + {icon_skill3: 0}, + {eny_hp3: 0}, + {eny_hp2: 0}, + {eny_hp1: 0}, + {state: 0}, + {nextState: 0}, + {role_1: 0}, + {Touch: 0}, + {MoveTo: 0}, + {Pathfinding: 0}, + {role_proxy: 0}, + {hp: 0}, + {maxhp: 0}, + {Fade: 0}, + {eny_1: 0}, + {typeid: 0}, + {ui_nomberText: 0}, + {paodan_ef: 0}, + {升级橙: 0}, + {LocalStorage: 0}, + {newbiebg: 0}, + {newbieround: 0}, + {newbiehandbg: 0}, + {Sine: 0}, + {newbiehand: 0}, + {talkbg: 0}, + {talkbgText: 0}, + {tips: 0}, + {buildingType: 0}, + {pid: 0}, + {ef_repair: 0}, + {eny_hurttext: 0}, + {icondianli: 0}, + {dianlitext: 0}, + {ef_skill: 0}, + {Bullet2: 0}, + {bomb: 0}, + {bomb_ef: 0}, + {Anchor: 0}, + {uiicons: 0}, + {objs: 0}, + {hps: 0}, + {gamestart: 0}, + {gameturnTimer: 0}, + {gameturns: 0}, + {gamesdianli: 0}, + {talking: 0}, + {enyPid: 0}, + {hurtValue: 0} +]; + +self.InstanceType = { + bg: class extends self.ISpriteInstance {}, + binansuo: class extends self.ISpriteInstance {}, + bg2: class extends self.ISpriteInstance {}, + fadianchang: class extends self.ISpriteInstance {}, + paotai: class extends self.ISpriteInstance {}, + cankao: class extends self.ISpriteInstance {}, + ui_dianli: class extends self.ISpriteInstance {}, + ui_daojishi: class extends self.ISpriteInstance {}, + ui_boci: class extends self.ISpriteInstance {}, + paodan: class extends self.ISpriteInstance {}, + base: class extends self.ISpriteInstance {}, + role_hp3: class extends self.ITiledBackgroundInstance {}, + role_hp2: class extends self.ITiledBackgroundInstance {}, + role_hp1: class extends self.ITiledBackgroundInstance {}, + boss_hp2: class extends self.ITiledBackgroundInstance {}, + boss_hp1: class extends self.ITiledBackgroundInstance {}, + boss_hp3: class extends self.ITiledBackgroundInstance {}, + skillbg: class extends self.ISpriteInstance {}, + icon_skill1: class extends self.ISpriteInstance {}, + icon_skill2: class extends self.ISpriteInstance {}, + icon_skill3: class extends self.ISpriteInstance {}, + eny_hp3: class extends self.ITiledBackgroundInstance {}, + eny_hp2: class extends self.ITiledBackgroundInstance {}, + eny_hp1: class extends self.ITiledBackgroundInstance {}, + role_1: class extends self.ISpriteInstance {}, + Touch: class extends self.IInstance {}, + role_proxy: class extends self.ISpriteInstance {}, + eny_1: class extends self.ISpriteInstance {}, + ui_nomberText: class extends self.ITextInstance {}, + paodan_ef: class extends self.ISpriteInstance {}, + 升级橙: class extends self.ISpriteInstance {}, + LocalStorage: class extends self.IInstance {}, + newbiebg: class extends self.ITiledBackgroundInstance {}, + newbieround: class extends self.ISpriteInstance {}, + newbiehandbg: class extends self.ISpriteInstance {}, + newbiehand: class extends self.ISpriteInstance {}, + talkbg: class extends self.ISpriteInstance {}, + talkbgText: class extends self.ITextInstance {}, + tips: class extends self.ISpriteInstance {}, + ef_repair: class extends self.ISpriteInstance {}, + eny_hurttext: class extends self.ITextInstance {}, + icondianli: class extends self.ISpriteInstance {}, + dianlitext: class extends self.ITextInstance {}, + ef_skill: class extends self.ISpriteInstance {}, + bomb: class extends self.ISpriteInstance {}, + bomb_ef: class extends self.ISpriteInstance {}, + uiicons: class extends self.ISpriteInstance {}, + objs: class extends self.ISpriteInstance {}, + hps: class extends self.ITiledBackgroundInstance {} +} \ No newline at end of file diff --git a/scripts/offlineclient.js b/scripts/offlineclient.js new file mode 100644 index 0000000..8a6145d --- /dev/null +++ b/scripts/offlineclient.js @@ -0,0 +1,2 @@ +'use strict';{class OfflineClient{constructor(){this._broadcastChannel=typeof BroadcastChannel==="undefined"?null:new BroadcastChannel("offline");this._queuedMessages=[];this._onMessageCallback=null;if(this._broadcastChannel)this._broadcastChannel.onmessage=e=>this._OnBroadcastChannelMessage(e)}_OnBroadcastChannelMessage(e){if(this._onMessageCallback){this._onMessageCallback(e);return}this._queuedMessages.push(e)}SetMessageCallback(f){this._onMessageCallback=f;for(let e of this._queuedMessages)this._onMessageCallback(e); +this._queuedMessages.length=0}}window.OfflineClientInfo=new OfflineClient}; diff --git a/scripts/register-sw.js b/scripts/register-sw.js new file mode 100644 index 0000000..f152b5f --- /dev/null +++ b/scripts/register-sw.js @@ -0,0 +1 @@ +'use strict';{window.C3_RegisterSW=async function C3_RegisterSW(){if(!navigator.serviceWorker)return;try{const reg=await navigator.serviceWorker.register("sw.js",{scope:"./"});console.info("Registered service worker on "+reg.scope)}catch(err){console.warn("Failed to register service worker: ",err)}}}; diff --git a/scripts/supportcheck.js b/scripts/supportcheck.js new file mode 100644 index 0000000..466575e --- /dev/null +++ b/scripts/supportcheck.js @@ -0,0 +1,5 @@ +'use strict';(function(){var isKasperskyScriptInjected=!!document.querySelector('script[src*="kaspersky"]');var tmpCanvas=document.createElement("canvas");var hasWebGL=!!tmpCanvas.getContext("webgl");var missingFeatures=[];if(!hasWebGL)missingFeatures.push("WebGL");if(typeof WebAssembly==="undefined")missingFeatures.push("WebAssembly");if(!("noModule"in HTMLScriptElement.prototype))missingFeatures.push("JavaScript Modules");if(!window["C3_ModernJSSupport_OK"])missingFeatures.push("Modern JavaScript support"); +if(missingFeatures.length===0&&!isKasperskyScriptInjected)window["C3_Is_Supported"]=true;else{var msgWrap=document.createElement("div");msgWrap.id="notSupportedWrap";document.body.appendChild(msgWrap);var msgTitle=document.createElement("h2");msgTitle.id="notSupportedTitle";if(isKasperskyScriptInjected)msgTitle.textContent="Kaspersky Internet Security broke this export";else msgTitle.textContent="Software update needed";msgWrap.appendChild(msgTitle);var msgBody=document.createElement("p");msgBody.className= +"notSupportedMessage";var msgText="This content is not supported because your device's software appears to be out-of-date. ";var ua=navigator.userAgent;if(/android/i.test(ua))msgText+='

On Android, fix this by making sure the
Android System Webview app has updates enabled and is up-to-date.';else if(/iphone|ipad|ipod/i.test(ua)){msgText+="Alternatively if Lockdown mode is enabled, try turning it off to view this content."; +msgText+="

Note: using the iOS simulator requires Xcode 12+. Otherwise try testing on a real device instead."}else if(/msie/i.test(ua)||/trident/i.test(ua)||/edge\//i.test(ua))msgText+="

Note: Internet Explorer and the legacy Edge browser are not supported. Try using Chrome or Firefox instead.";else if(isKasperskyScriptInjected)msgText= +"It appears a script was added to this export by Kaspersky software. This prevents the exported project from working. Try disabling Kaspersky and exporting again.";else msgText+="Try installing any available software updates. Alternatively try on a different device.";msgText+="

Missing features: "+missingFeatures.join(", ")+"
User agent: "+navigator.userAgent+"
";msgBody.innerHTML=msgText;msgWrap.appendChild(msgBody)}})(); diff --git a/src/assets/images/avatar.jpg b/src/assets/images/avatar.jpg deleted file mode 100644 index 06ba152..0000000 Binary files a/src/assets/images/avatar.jpg and /dev/null differ diff --git a/src/assets/images/banner.jpg b/src/assets/images/banner.jpg deleted file mode 100644 index f4e439f..0000000 Binary files a/src/assets/images/banner.jpg and /dev/null differ diff --git a/src/assets/images/demo-avatar.png b/src/assets/images/demo-avatar.png deleted file mode 100644 index 84320d4..0000000 Binary files a/src/assets/images/demo-avatar.png and /dev/null differ diff --git a/src/assets/images/demo-banner.png b/src/assets/images/demo-banner.png deleted file mode 100644 index f8c0310..0000000 Binary files a/src/assets/images/demo-banner.png and /dev/null differ diff --git a/src/components/ArchivePanel.astro b/src/components/ArchivePanel.astro deleted file mode 100644 index 243bd30..0000000 --- a/src/components/ArchivePanel.astro +++ /dev/null @@ -1,128 +0,0 @@ ---- -import {getSortedPosts} from "../utils/content-utils"; -import {getPostUrlBySlug} from "../utils/url-utils"; -import {i18n} from "../i18n/translation"; -import I18nKey from "../i18n/i18nKey"; -import {UNCATEGORIZED} from "@constants/constants"; - -interface Props { - keyword: string; - tags: string[]; - categories: string[]; -} -const { keyword, tags, categories} = Astro.props; - -let posts = await getSortedPosts() - -if (Array.isArray(tags) && tags.length > 0) { - posts = posts.filter(post => - Array.isArray(post.data.tags) && post.data.tags.some(tag => tags.includes(tag)) - ); -} - -if (Array.isArray(categories) && categories.length > 0) { - posts = posts.filter(post => - (post.data.category && categories.includes(post.data.category)) || - (!post.data.category && categories.includes(UNCATEGORIZED)) - ); -} - -const groups = function () { - const groupedPosts = posts.reduce((grouped, post) => { - const year = post.data.published.getFullYear() - if (!grouped[year]) { - grouped[year] = [] - } - grouped[year].push(post) - return grouped - }, {}) - - // convert the object to an array - const groupedPostsArray = Object.keys(groupedPosts).map(key => ({ - year: key, - posts: groupedPosts[key] - })) - - // sort years by latest first - groupedPostsArray.sort((a, b) => b.year - a.year) - return groupedPostsArray; -}(); - -function formatDate(date: Date) { - const month = (date.getMonth() + 1).toString().padStart(2, '0'); - const day = date.getDate().toString().padStart(2, '0'); - return `${month}-${day}`; -} - -function formatTag(tag: string[]) { - return tag.map(t => `#${t}`).join(' '); -} - ---- - -
- { - groups.map(group => ( -
-
-
{group.year}
-
-
-
-
{group.posts.length} {i18n(I18nKey.postsCount)}
-
- {group.posts.map(post => ( - -
- -
- {formatDate(post.data.published)} -
- -
-
-
- -
- {post.data.title} -
- - -
-
- ))} -
- )) - } -
- - \ No newline at end of file diff --git a/src/components/ConfigCarrier.astro b/src/components/ConfigCarrier.astro deleted file mode 100644 index d598196..0000000 --- a/src/components/ConfigCarrier.astro +++ /dev/null @@ -1,8 +0,0 @@ ---- - -import {siteConfig} from "../config"; - ---- - -
-
diff --git a/src/components/Footer.astro b/src/components/Footer.astro deleted file mode 100644 index dc68c03..0000000 --- a/src/components/Footer.astro +++ /dev/null @@ -1,13 +0,0 @@ ---- - -import {profileConfig} from "../config"; - ---- - -
-
- © 2023 {profileConfig.name}. All Rights Reserved. -
- Powered by Fuwari -
-
\ No newline at end of file diff --git a/src/components/GlobalStyles.astro b/src/components/GlobalStyles.astro deleted file mode 100644 index d16169c..0000000 --- a/src/components/GlobalStyles.astro +++ /dev/null @@ -1,279 +0,0 @@ ---- - ---- - -
- -
- - - \ No newline at end of file diff --git a/src/components/Navbar.astro b/src/components/Navbar.astro deleted file mode 100644 index 8d96168..0000000 --- a/src/components/Navbar.astro +++ /dev/null @@ -1,117 +0,0 @@ ---- -import { Icon } from 'astro-icon/components'; -import DisplaySettings from "./widget/DisplaySettings.svelte"; -import {LinkPreset, NavBarLink} from "../types/config"; -import {navBarConfig, siteConfig} from "../config"; -import NavMenuPanel from "./widget/NavMenuPanel.astro"; -import Search from "./Search.svelte"; -import {LinkPresets} from "../constants/link-presets"; -const className = Astro.props.class; - -let links: NavBarLink[] = navBarConfig.links.map((item: NavBarLink | LinkPreset): NavBarLink => { - if (typeof item === "number") { - return LinkPresets[item] - } - return item; -}); - ---- -
- -
- - {siteConfig.title} -
-
- -
- - - - - - - - - - -
- - - - -
- - - - - -{import.meta.env.PROD && } \ No newline at end of file diff --git a/src/components/PostCard.astro b/src/components/PostCard.astro deleted file mode 100644 index 974b084..0000000 --- a/src/components/PostCard.astro +++ /dev/null @@ -1,93 +0,0 @@ ---- -import path from "path"; -import PostMetadata from "./PostMeta.astro"; -import ImageWrapper from "./misc/ImageWrapper.astro"; -import { Icon } from 'astro-icon/components'; -import {i18n} from "../i18n/translation"; -import I18nKey from "../i18n/i18nKey"; -import {getDir} from "../utils/url-utils"; - -interface Props { - class: string; - entry: any; - title: string; - url: string; - published: Date; - tags: string[]; - category: string; - image: string; - description: string; - words: number; - draft: boolean; - style: string; -} -const { entry, title, url, published, tags, category, image, description, words, style } = Astro.props; -const className = Astro.props.class; - -const hasCover = image !== undefined && image !== null && image !== ''; - -const coverWidth = "28%"; - -const { remarkPluginFrontmatter } = await entry.render(); - ---- -
-
- - {title} - - - - - - -
- { description } -
- - -
-
{remarkPluginFrontmatter.words} {" " + i18n(I18nKey.wordsCount)}
-
|
-
{remarkPluginFrontmatter.minutes} {" " + i18n(I18nKey.minutesCount)}
-
- -
- - {hasCover && -
-
- - -
- - -
} - - {!hasCover && - - } -
-
- - diff --git a/src/components/PostMeta.astro b/src/components/PostMeta.astro deleted file mode 100644 index 060b440..0000000 --- a/src/components/PostMeta.astro +++ /dev/null @@ -1,77 +0,0 @@ ---- -import {formatDateToYYYYMMDD} from "../utils/date-utils"; -import { Icon } from 'astro-icon/components'; -import {i18n} from "../i18n/translation"; -import I18nKey from "../i18n/i18nKey"; - -interface Props { - class: string; - published: Date; - tags: string[]; - category: string; - hideTagsForMobile: boolean; -} -const {published, tags, category, hideTagsForMobile} = Astro.props; -const className = Astro.props.class; ---- - -
- -
-
- -
- {formatDateToYYYYMMDD(published)} -
- - - - - -
-
- -
-
- {(tags && tags.length > 0) && tags.map(tag => )} - {!(tags && tags.length > 0) &&
{i18n(I18nKey.noTags)}
} -
-
-
- - \ No newline at end of file diff --git a/src/components/PostPage.astro b/src/components/PostPage.astro deleted file mode 100644 index a221cb7..0000000 --- a/src/components/PostPage.astro +++ /dev/null @@ -1,28 +0,0 @@ ---- -import {getPostUrlBySlug} from "@utils/url-utils"; -import PostCard from "./PostCard.astro"; - -const {page} = Astro.props; - -let delay = 0 -const interval = 50 ---- -
- {page.data.map((entry: { data: { draft: boolean; title: string; tags: string[]; category: string; published: Date; image: string; description: string; }; slug: string; }) => { - return ( - - ); - })} -
\ No newline at end of file diff --git a/src/components/Search.svelte b/src/components/Search.svelte deleted file mode 100644 index a193ae6..0000000 --- a/src/components/Search.svelte +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - -
- - -
- - -
- - - {#each result as item} - -
- {item.meta.title} -
-
- {@html item.excerpt} -
-
- {/each} -
diff --git a/src/components/control/BackToTop.astro b/src/components/control/BackToTop.astro deleted file mode 100644 index 2929472..0000000 --- a/src/components/control/BackToTop.astro +++ /dev/null @@ -1,57 +0,0 @@ ---- -import { Icon } from 'astro-icon/components'; ---- - - - - - - - diff --git a/src/components/control/ButtonLink.astro b/src/components/control/ButtonLink.astro deleted file mode 100644 index b58d920..0000000 --- a/src/components/control/ButtonLink.astro +++ /dev/null @@ -1,43 +0,0 @@ ---- -interface Props { - badge?: string - url?: string - label?: string -} -const { badge, url, name } = Astro.props ---- - - - diff --git a/src/components/control/ButtonTag.astro b/src/components/control/ButtonTag.astro deleted file mode 100644 index 14acfbd..0000000 --- a/src/components/control/ButtonTag.astro +++ /dev/null @@ -1,13 +0,0 @@ ---- -interface Props { - size?: string; - dot?: boolean; - href?: string; - label?: string; -} -const { size, dot, href, label }: Props = Astro.props; ---- - - {dot &&
} - -
diff --git a/src/components/control/Pagination.astro b/src/components/control/Pagination.astro deleted file mode 100644 index a12afc5..0000000 --- a/src/components/control/Pagination.astro +++ /dev/null @@ -1,93 +0,0 @@ ---- -import type { Page } from "astro"; -import { Icon } from 'astro-icon/components'; -interface Props { - page: Page; - class?: string; - style?: string; -} - -const {page, style} = Astro.props; - -const HIDDEN = -1; - -const className = Astro.props.class; - -const ADJ_DIST = 2; -const VISIBLE = ADJ_DIST * 2 + 1; - -// for test -let count = 1; -let l = page.currentPage, r = page.currentPage; -while (0 < l - 1 && r + 1 <= page.lastPage && count + 2 <= VISIBLE) { - count += 2; - l--; - r++; -} -while (0 < l - 1 && count < VISIBLE) { - count++; - l--; -} -while (r + 1 <= page.lastPage && count < VISIBLE) { - count++; - r++; -} - -let pages: number[] = []; -if (l > 1) - pages.push(1); -if (l == 3) - pages.push(2); -if (l > 3) - pages.push(HIDDEN); -for (let i = l; i <= r; i++) - pages.push(i); -if (r < page.lastPage - 2) - pages.push(HIDDEN); -if (r == page.lastPage - 2) - pages.push(page.lastPage - 1); -if (r < page.lastPage) - pages.push(page.lastPage); - -const parts: string[] = page.url.current.split('/'); -const commonUrl: string = parts.slice(0, -1).join('/') + '/'; - -const getPageUrl = (p: number) => { - if (p == 1) - return commonUrl; - return commonUrl + p; -} - ---- - -
- - - -
- {pages.map((p) => { - if (p == HIDDEN) - return ; - if (p == page.currentPage) - return
- {p} -
- return {p} - })} -
- - - -
\ No newline at end of file diff --git a/src/components/misc/ImageWrapper.astro b/src/components/misc/ImageWrapper.astro deleted file mode 100644 index 81bf197..0000000 --- a/src/components/misc/ImageWrapper.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -import path from "path"; -interface Props { - id?: string - src: string; - class?: string; - alt?: string - basePath?: string -} -import { Image } from 'astro:assets'; - -const {id, src, alt, basePath = '/'} = Astro.props; -const className = Astro.props.class; - -const isLocal = !(src.startsWith('/') || src.startsWith('http') || src.startsWith('https') || src.startsWith('data:')); - -// TODO temporary workaround for images dynamic import -// https://github.com/withastro/astro/issues/3373 -let img; -if (isLocal) { - const files = import.meta.glob("../../**", { import: 'default' }); - let normalizedPath = path.normalize(path.join("../../", basePath, src)).replace(/\\/g, "/"); - img = await (files[normalizedPath])(); -} - ---- -
-
- {isLocal && {alt} - {!isLocal && {alt} -
- diff --git a/src/components/misc/License.astro b/src/components/misc/License.astro deleted file mode 100644 index c47f9df..0000000 --- a/src/components/misc/License.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -import {formatDateToYYYYMMDD} from "../../utils/date-utils"; -import { Icon } from 'astro-icon/components'; -import {licenseConfig, profileConfig} from "../../config"; -import {i18n} from "../../i18n/translation"; -import I18nKey from "../../i18n/i18nKey"; - -interface Props { - title: string; - slug: string; - pubDate: Date; - class: string; -} - -const { title, slug, pubDate } = Astro.props; -const className = Astro.props.class; -const profileConf = profileConfig; -const licenseConf = licenseConfig; -const postUrl = decodeURIComponent(Astro.url.toString()); - ---- -
-
- {title} -
- - {postUrl} - -
-
-
{i18n(I18nKey.author)}
-
{profileConf.name}
-
-
-
{i18n(I18nKey.publishedAt)}
-
{formatDateToYYYYMMDD(pubDate)}
-
-
-
{i18n(I18nKey.license)}
- {licenseConf.name} -
-
- -
\ No newline at end of file diff --git a/src/components/misc/Markdown.astro b/src/components/misc/Markdown.astro deleted file mode 100644 index a74246b..0000000 --- a/src/components/misc/Markdown.astro +++ /dev/null @@ -1,151 +0,0 @@ ---- -import '@fontsource-variable/jetbrains-mono'; -import '@fontsource-variable/jetbrains-mono/wght-italic.css'; - -interface Props { - class: string; -} -const className = Astro.props.class; ---- -
- - - -
- - - - \ No newline at end of file diff --git a/src/components/widget/Categories.astro b/src/components/widget/Categories.astro deleted file mode 100644 index 9f2c52e..0000000 --- a/src/components/widget/Categories.astro +++ /dev/null @@ -1,38 +0,0 @@ ---- -import WidgetLayout from "./WidgetLayout.astro"; - -import {i18n} from "../../i18n/translation"; -import I18nKey from "../../i18n/i18nKey"; -import {Category, getCategoryList} from "../../utils/content-utils"; -import {getCategoryUrl} from "../../utils/url-utils"; -import ButtonLink from "../control/ButtonLink.astro"; - -const categories = await getCategoryList(); - -const COLLAPSED_HEIGHT = "7.5rem"; -const COLLAPSE_THRESHOLD = 5; - -const isCollapsed = categories.length >= COLLAPSE_THRESHOLD; - -interface Props { - class?: string; - style?: string; -} -const className = Astro.props.class -const style = Astro.props.style - ---- - - - {categories.map((c) => - - {c.name} - - )} - \ No newline at end of file diff --git a/src/components/widget/DisplaySettings.svelte b/src/components/widget/DisplaySettings.svelte deleted file mode 100644 index c7d3714..0000000 --- a/src/components/widget/DisplaySettings.svelte +++ /dev/null @@ -1,91 +0,0 @@ - - -
-
-
- {i18n(I18nKey.themeColor)} - -
-
-
- {hue} -
-
-
-
- -
-
- - - diff --git a/src/components/widget/NavMenuPanel.astro b/src/components/widget/NavMenuPanel.astro deleted file mode 100644 index a9ea3e2..0000000 --- a/src/components/widget/NavMenuPanel.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -import {NavBarLink} from "../../types/config"; -import {siteConfig} from "../../config"; -import {Icon} from "astro-icon/components"; - -interface Props { - links: NavBarLink[], -} - -const links = Astro.props.links; ---- - diff --git a/src/components/widget/Profile.astro b/src/components/widget/Profile.astro deleted file mode 100644 index 5b08e8d..0000000 --- a/src/components/widget/Profile.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -import ImageWrapper from "../misc/ImageWrapper.astro"; -import {Icon} from "astro-icon/components"; -import {profileConfig} from "../../config"; - -const config = profileConfig; ---- -
- -
- - -
- -
-
{config.name}
-
-
{config.bio}
-
- {config.links.map(item => - - - - )} -
-
- diff --git a/src/components/widget/SideBar.astro b/src/components/widget/SideBar.astro deleted file mode 100644 index 49d5006..0000000 --- a/src/components/widget/SideBar.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import Profile from "./Profile.astro"; -import Tag from "./Tags.astro"; -import Categories from "./Categories.astro"; - -const className = Astro.props.class; ---- - diff --git a/src/components/widget/Tags.astro b/src/components/widget/Tags.astro deleted file mode 100644 index 5df18e3..0000000 --- a/src/components/widget/Tags.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- - -import WidgetLayout from "./WidgetLayout.astro"; -import ButtonTag from "../control/ButtonTag.astro"; -import {getTagList} from "../../utils/content-utils"; -import {i18n} from "../../i18n/translation"; -import I18nKey from "../../i18n/i18nKey"; - -const tags = await getTagList(); - -const COLLAPSED_HEIGHT = "7.5rem"; - -const isCollapsed = tags.length >= 20; - -interface Props { - class?: string; - style?: string; -} -const className = Astro.props.class -const style = Astro.props.style - ---- - -
- {tags.map(t => ( - - {t.name} - - ))} -
-
\ No newline at end of file diff --git a/src/components/widget/WidgetLayout.astro b/src/components/widget/WidgetLayout.astro deleted file mode 100644 index 3d8e1a4..0000000 --- a/src/components/widget/WidgetLayout.astro +++ /dev/null @@ -1,65 +0,0 @@ ---- -import { Icon } from 'astro-icon/components'; -import {i18n} from "../../i18n/translation"; -import I18nKey from "../../i18n/i18nKey"; -interface Props { - id: string; - name?: string; - isCollapsed?: boolean; - collapsedHeight?: string; - class?: string; - style?: string; -} -const props = Astro.props; -const { - id, - name, - isCollapsed, - collapsedHeight, - style, -} = Astro.props -const className = Astro.props.class - ---- - -
{name}
-
- -
- {isCollapsed &&
- -
} -
- - - - \ No newline at end of file diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 43858fd..0000000 --- a/src/config.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { - LicenseConfig, - NavBarConfig, - ProfileConfig, - SiteConfig, -} from './types/config' -import { LinkPreset } from './types/config' - -export const siteConfig: SiteConfig = { - title: 'Fragtex_Blog', - subtitle: 'Always Booming!', - lang: 'zh', - themeHue: 250, - banner: { - enable: true, - src: 'assets/images/banner.jpg', - }, -} - -export const navBarConfig: NavBarConfig = { - links: [ - LinkPreset.Home, - LinkPreset.Archive, - LinkPreset.About, - { - name: 'GitHub', - url: 'https://github.com/Fragtex254', - external: true, - }, - ], -} - -export const profileConfig: ProfileConfig = { - avatar: 'assets/images/avatar.jpg', - name: 'Fragtex Choi', - bio: '天分太浅 只敢认真', - links: [ - { - name: 'Twitter', - icon: 'fa6-brands:twitter', - url: 'https://twitter.com', - }, - { - name: 'Steam', - icon: 'fa6-brands:bilibili', - url: 'https://bilibli.com', - }, - { - name: 'GitHub', - icon: 'fa6-brands:github', - url: 'https://github.com/saicaca/fuwari', - }, - ], -} - -export const licenseConfig: LicenseConfig = { - enable: true, - name: 'CC BY-NC-SA 4.0', - url: 'https://creativecommons.org/licenses/by-nc-sa/4.0/', -} diff --git a/src/constants/constants.ts b/src/constants/constants.ts deleted file mode 100644 index 8fa89e3..0000000 --- a/src/constants/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const UNCATEGORIZED = '__uncategorized__' - -export const PAGE_SIZE = 8 diff --git a/src/constants/link-presets.ts b/src/constants/link-presets.ts deleted file mode 100644 index 16fcecb..0000000 --- a/src/constants/link-presets.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { LinkPreset, type NavBarLink } from '@/types/config' -import I18nKey from '@i18n/i18nKey' -import { i18n } from '@i18n/translation' - -export const LinkPresets: { [key in LinkPreset]: NavBarLink } = { - [LinkPreset.Home]: { - name: i18n(I18nKey.home), - url: '/', - }, - [LinkPreset.About]: { - name: i18n(I18nKey.about), - url: '/about', - }, - [LinkPreset.Archive]: { - name: i18n(I18nKey.archive), - url: '/archive', - }, -} diff --git a/src/content/config.ts b/src/content/config.ts deleted file mode 100644 index 5066aaa..0000000 --- a/src/content/config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineCollection, z } from 'astro:content' - -const postsCollection = defineCollection({ - schema: z.object({ - title: z.string(), - published: z.date(), - draft: z.boolean().optional(), - description: z.string().optional(), - image: z.string().optional(), - tags: z.array(z.string()).optional(), - category: z.string().optional(), - }), -}) -export const collections = { - posts: postsCollection, -} diff --git a/src/content/posts/draft.md b/src/content/posts/draft.md deleted file mode 100644 index 77aba5a..0000000 --- a/src/content/posts/draft.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Draft Example -published: 2022-07-01 -tags: [Markdown, Blogging, Demo] -category: Examples -draft: true ---- - -# This Article is a Draft - -This article is currently in a draft state and is not published. Therefore, it will not be visible to the general audience. The content is still a work in progress and may require further editing and review. - -When the article is ready for publication, you can update the "draft" field to "false" in the Frontmatter: - -```markdown ---- -title: Draft Example -published: 2024-01-11T04:40:26.381Z -tags: [Markdown, Blogging, Demo] -category: Examples -draft: false ---- diff --git a/src/content/posts/guide/cover.jpeg b/src/content/posts/guide/cover.jpeg deleted file mode 100644 index 66104c3..0000000 Binary files a/src/content/posts/guide/cover.jpeg and /dev/null differ diff --git a/src/content/posts/guide/index.md b/src/content/posts/guide/index.md deleted file mode 100644 index f6ff48f..0000000 --- a/src/content/posts/guide/index.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Simple Guides for Fuwari -published: 2023-09-01 -description: "How to use this blog template." -image: "./cover.jpeg" -tags: ["Fuwari", "Blogging", "Customization"] -category: Guides -draft: true ---- - -> Cover image source: [Source](https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/208fc754-890d-4adb-9753-2c963332675d/width=2048/01651-1456859105-(colour_1.5),girl,_Blue,yellow,green,cyan,purple,red,pink,_best,8k,UHD,masterpiece,male%20focus,%201boy,gloves,%20ponytail,%20long%20hair,.jpeg) - -This blog template is built with [Astro](https://astro.build/). For the things that are not mentioned in this guide, you may find the answers in the [Astro Docs](https://docs.astro.build/). - -## Front-matter of Posts - -```yaml ---- -title: My First Blog Post -published: 2023-09-09 -description: This is the first post of my new Astro blog. -image: ./cover.jpg -tags: [Foo, Bar] -category: Front-end -draft: false ---- -``` - -| Attribute | Description | -|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `title` | The title of the post. | -| `published` | The date the post was published. | -| `description` | A short description of the post. Displayed on index page. | -| `image` | The cover image path of the post.
1. Start with `http://` or `https://`: Use web image
2. Start with `/`: For image in `public` dir
3. With none of the prefixes: Relative to the markdown file | -| `tags` | The tags of the post. | -| `category` | The category of the post. | -| `draft` | If this post is still a draft, which won't be displayed. | - -## Where to Place the Post Files - - - -Your post files should be placed in `src/content/posts/` directory. You can also create sub-directories to better organize your posts and assets. - -``` -src/content/posts/ -├── post-1.md -└── post-2/ - ├── cover.png - └── index.md -``` diff --git a/src/content/posts/markdown.md b/src/content/posts/markdown.md deleted file mode 100644 index 8daddac..0000000 --- a/src/content/posts/markdown.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Markdown Example -published: 2023-10-01 -description: A simple example of a Markdown blog post. -tags: [Markdown, Blogging, Demo] -category: Examples -draft: true ---- - -# An h1 header - -Paragraphs are separated by a blank line. - -2nd paragraph. _Italic_, **bold**, and `monospace`. Itemized lists -look like: - -- this one -- that one -- the other one - -Note that --- not considering the asterisk --- the actual text -content starts at 4-columns in. - -> Block quotes are -> written like so. -> -> They can span multiple paragraphs, -> if you like. - -Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., "it's all -in chapters 12--14"). Three dots ... will be converted to an ellipsis. -Unicode is supported. ☺ - -## An h2 header - -Here's a numbered list: - -1. first item -2. second item -3. third item - -Note again how the actual text starts at 4 columns in (4 characters -from the left side). Here's a code sample: - - # Let me re-iterate ... - for i in 1 .. 10 { do-something(i) } - -As you probably guessed, indented 4 spaces. By the way, instead of -indenting the block, you can use delimited blocks, if you like: - -``` -define foobar() { - print "Welcome to flavor country!"; -} -``` - -(which makes copying & pasting easier). You can optionally mark the -delimited block for Pandoc to syntax highlight it: - -```python -import time -# Quick, count to ten! -for i in range(10): - # (but not *too* quick) - time.sleep(0.5) - print i -``` - -### An h3 header - -Now a nested list: - -1. First, get these ingredients: - - - carrots - - celery - - lentils - -2. Boil some water. - -3. Dump everything in the pot and follow - this algorithm: - - find wooden spoon - uncover pot - stir - cover pot - balance wooden spoon precariously on pot handle - wait 10 minutes - goto first step (or shut off burner when done) - - Do not bump wooden spoon or it will fall. - -Notice again how text always lines up on 4-space indents (including -that last line which continues item 3 above). - -Here's a link to [a website](http://foo.bar), to a [local -doc](local-doc.html), and to a [section heading in the current -doc](#an-h2-header). Here's a footnote [^1]. - -[^1]: Footnote text goes here. - -Tables can look like this: - -size material color - ---- - -9 leather brown -10 hemp canvas natural -11 glass transparent - -Table: Shoes, their sizes, and what they're made of - -(The above is the caption for the table.) Pandoc also supports -multi-line tables: - ---- - -keyword text - ---- - -red Sunsets, apples, and -other red or reddish -things. - -green Leaves, grass, frogs -and other things it's -not easy being. - ---- - -A horizontal rule follows. - ---- - -Here's a definition list: - -apples -: Good for making applesauce. -oranges -: Citrus! -tomatoes -: There's no "e" in tomatoe. - -Again, text is indented 4 spaces. (Put a blank line between each -term/definition pair to spread things out more.) - -Here's a "line block": - -| Line one -| Line too -| Line tree - -and images can be specified like so: - -[//]: # (![example image](./demo-banner.png "An exemplary image")) - -Inline math equations go in like so: $\omega = d\phi / dt$. Display -math should get its own line and be put in in double-dollarsigns: - -$$I = \int \rho R^{2} dV$$ - -And note that you can backslash-escape any punctuation characters -which you wish to be displayed literally, ex.: \`foo\`, \*bar\*, etc. diff --git a/src/content/posts/video.md b/src/content/posts/video.md deleted file mode 100644 index 6c713b9..0000000 --- a/src/content/posts/video.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Include Video in the Posts -published: 2022-08-01 -description: This post demonstrates how to include embedded video in a blog post. -tags: [Example, Video] -category: Examples -draft: true ---- - -Just copy the embed code from YouTube or other platforms, and paste it in the markdown file. - -```yaml ---- -title: Include Video in the Post -published: 2023-10-19 -// ... ---- - - -``` - -## YouTube - - - -## Bilibili - - diff --git a/src/content/spec/about.md b/src/content/spec/about.md deleted file mode 100644 index ecbb28e..0000000 --- a/src/content/spec/about.md +++ /dev/null @@ -1,7 +0,0 @@ -# About -This is the demo site for [Fuwari](https://github.com/saicaca/fuwari). - -> ### Sources of images used in this site -> - [Unsplash](https://unsplash.com/) -> - [星と少女](https://www.pixiv.net/artworks/108916539) by [Stella](https://www.pixiv.net/users/93273965) -> - [Rabbit - v1.4 Showcase](https://civitai.com/posts/586908) by [Rabbit_YourMajesty](https://civitai.com/user/Rabbit_YourMajesty) \ No newline at end of file diff --git a/src/env.d.ts b/src/env.d.ts deleted file mode 100644 index 9c03f0a..0000000 --- a/src/env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/src/i18n/i18nKey.ts b/src/i18n/i18nKey.ts deleted file mode 100644 index c2e247d..0000000 --- a/src/i18n/i18nKey.ts +++ /dev/null @@ -1,32 +0,0 @@ -enum I18nKey { - home = 'home', - about = 'about', - archive = 'archive', - - tags = 'tags', - categories = 'categories', - recentPosts = 'recentPosts', - - comments = 'comments', - - untitled = 'untitled', - uncategorized = 'uncategorized', - noTags = 'noTags', - - wordCount = 'wordCount', - wordsCount = 'wordsCount', - minuteCount = 'minuteCount', - minutesCount = 'minutesCount', - postCount = 'postCount', - postsCount = 'postsCount', - - themeColor = 'themeColor', - - more = 'more', - - author = 'author', - publishedAt = 'publishedAt', - license = 'license', -} - -export default I18nKey diff --git a/src/i18n/languages/en.ts b/src/i18n/languages/en.ts deleted file mode 100644 index feeabae..0000000 --- a/src/i18n/languages/en.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Key from '../i18nKey' -import type { Translation } from '../translation' - -export const en: Translation = { - [Key.home]: 'Home', - [Key.about]: 'About', - [Key.archive]: 'Archive', - - [Key.tags]: 'Tags', - [Key.categories]: 'Categories', - [Key.recentPosts]: 'Recent Posts', - - [Key.comments]: 'Comments', - - [Key.untitled]: 'Untitled', - [Key.uncategorized]: 'Uncategorized', - [Key.noTags]: 'No Tags', - - [Key.wordCount]: 'word', - [Key.wordsCount]: 'words', - [Key.minuteCount]: 'minute', - [Key.minutesCount]: 'minutes', - [Key.postCount]: 'post', - [Key.postsCount]: 'posts', - - [Key.themeColor]: 'Theme Color', - - [Key.more]: 'More', - - [Key.author]: 'Author', - [Key.publishedAt]: 'Published at', - [Key.license]: 'License', -} diff --git a/src/i18n/languages/ja.ts b/src/i18n/languages/ja.ts deleted file mode 100644 index cc50687..0000000 --- a/src/i18n/languages/ja.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Key from '../i18nKey' -import type { Translation } from '../translation' - -export const ja: Translation = { - [Key.home]: 'Home', - [Key.about]: 'About', - [Key.archive]: 'Archive', - - [Key.tags]: 'タグ', - [Key.categories]: 'カテゴリ', - [Key.recentPosts]: '最近の投稿', - - [Key.comments]: 'コメント', - - [Key.untitled]: 'タイトルなし', - [Key.uncategorized]: 'カテゴリなし', - [Key.noTags]: 'タグなし', - - [Key.wordCount]: '文字', - [Key.wordsCount]: '文字', - [Key.minuteCount]: '分', - [Key.minutesCount]: '分', - [Key.postCount]: '件の投稿', - [Key.postsCount]: '件の投稿', - - [Key.themeColor]: 'テーマカラー', - - [Key.more]: 'もっと', - - [Key.author]: '作者', - [Key.publishedAt]: '公開日', - [Key.license]: 'ライセンス', -} diff --git a/src/i18n/languages/zh_CN.ts b/src/i18n/languages/zh_CN.ts deleted file mode 100644 index af2db40..0000000 --- a/src/i18n/languages/zh_CN.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Key from '../i18nKey' -import type { Translation } from '../translation' - -export const zh_CN: Translation = { - [Key.home]: '主页', - [Key.about]: '关于', - [Key.archive]: '归档', - - [Key.tags]: '标签', - [Key.categories]: '分类', - [Key.recentPosts]: '最新文章', - - [Key.comments]: '评论', - - [Key.untitled]: '无标题', - [Key.uncategorized]: '未分类', - [Key.noTags]: '无标签', - - [Key.wordCount]: '字', - [Key.wordsCount]: '字', - [Key.minuteCount]: '分钟', - [Key.minutesCount]: '分钟', - [Key.postCount]: '篇文章', - [Key.postsCount]: '篇文章', - - [Key.themeColor]: '主题色', - - [Key.more]: '更多', - - [Key.author]: '作者', - [Key.publishedAt]: '发布于', - [Key.license]: '许可协议', -} diff --git a/src/i18n/languages/zh_TW.ts b/src/i18n/languages/zh_TW.ts deleted file mode 100644 index f30718f..0000000 --- a/src/i18n/languages/zh_TW.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Key from '../i18nKey' -import type { Translation } from '../translation' - -export const zh_TW: Translation = { - [Key.home]: '首頁', - [Key.about]: '關於', - [Key.archive]: '彙整', - - [Key.tags]: '標籤', - [Key.categories]: '分類', - [Key.recentPosts]: '最新文章', - - [Key.comments]: '評論', - - [Key.untitled]: '無標題', - [Key.uncategorized]: '未分類', - [Key.noTags]: '無標籤', - - [Key.wordCount]: '字', - [Key.wordsCount]: '字', - [Key.minuteCount]: '分鐘', - [Key.minutesCount]: '分鐘', - [Key.postCount]: '篇文章', - [Key.postsCount]: '篇文章', - - [Key.themeColor]: '主題色', - - [Key.more]: '更多', - - [Key.author]: '作者', - [Key.publishedAt]: '發佈於', - [Key.license]: '許可協議', -} diff --git a/src/i18n/translation.ts b/src/i18n/translation.ts deleted file mode 100644 index 89fe2a6..0000000 --- a/src/i18n/translation.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { siteConfig } from '../config' -import type I18nKey from './i18nKey' -import { en } from './languages/en' -import { ja } from './languages/ja' -import { zh_CN } from './languages/zh_CN' -import { zh_TW } from './languages/zh_TW' - -export type Translation = { - [K in I18nKey]: string -} - -const defaultTranslation = en - -const map: { [key: string]: Translation } = { - en: en, - en_us: en, - en_gb: en, - en_au: en, - zh_cn: zh_CN, - zh_tw: zh_TW, - ja: ja, - ja_jp: ja, -} - -export function getTranslation(lang: string): Translation { - return map[lang.toLowerCase()] || defaultTranslation -} - -export function i18n(key: I18nKey): string { - const lang = siteConfig.lang || 'en' - return getTranslation(lang)[key] -} diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro deleted file mode 100644 index 1629682..0000000 --- a/src/layouts/Layout.astro +++ /dev/null @@ -1,304 +0,0 @@ ---- -import GlobalStyles from "@components/GlobalStyles.astro"; -import '@fontsource/roboto/400.css'; -import '@fontsource/roboto/500.css'; -import '@fontsource/roboto/700.css'; -import ImageWrapper from "@components/misc/ImageWrapper.astro"; - -import {pathsEqual} from "@utils/url-utils"; -import ConfigCarrier from "@components/ConfigCarrier.astro"; -import {siteConfig} from "@/config"; - -interface Props { - title: string; - banner: string; -} - -let { title, banner } = Astro.props; - -const isHomePage = pathsEqual(Astro.url.pathname, '/'); - -const testPathName = Astro.url.pathname; - -const anim = { - old: { - name: 'fadeIn', - duration: '4s', - easing: 'linear', - fillMode: 'forwards', - mixBlendMode: 'normal', - }, - new: { - name: 'fadeOut', - duration: '4s', - easing: 'linear', - fillMode: 'backwards', - mixBlendMode: 'normal', - } -}; - -const myFade = { - forwards: anim, - backwards: anim, -}; - -// defines global css variables -// why doing this in Layout instead of GlobalStyles: https://github.com/withastro/astro/issues/6728#issuecomment-1502203757 -const configHue = siteConfig.themeHue; -if (!banner || typeof banner !== 'string' || banner.trim() === '') { - banner = siteConfig.banner.src; -} - -// TODO don't use post cover as banner for now -banner = siteConfig.banner.src; - -const enableBanner = siteConfig.banner.enable; - -let pageTitle; -if (title) { - pageTitle = `${title} - ${siteConfig.title}`; -} else { - pageTitle = `${siteConfig.title} - ${siteConfig.subtitle}`; -} - ---- - - - - - - {pageTitle} - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/layouts/MainGridLayout.astro b/src/layouts/MainGridLayout.astro deleted file mode 100644 index c7cabc6..0000000 --- a/src/layouts/MainGridLayout.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -import Layout from "./Layout.astro"; -import Navbar from "@components/Navbar.astro"; -import SideBar from "@components/widget/SideBar.astro"; -import {pathsEqual} from "@utils/url-utils"; -import Footer from "@components/Footer.astro"; -import BackToTop from "@components/control/BackToTop.astro"; -import {siteConfig} from "@/config"; - -interface Props { - title: string; - banner?: string; -} - -const { title, banner } = Astro.props -const isHomePage = pathsEqual(Astro.url.pathname, '/') -const enableBanner = siteConfig.banner.enable - ---- - - -
-
-
- -
- - -
- -
- -
- -
- - - -
-
diff --git a/src/pages/[...page].astro b/src/pages/[...page].astro deleted file mode 100644 index d370537..0000000 --- a/src/pages/[...page].astro +++ /dev/null @@ -1,24 +0,0 @@ ---- -import MainGridLayout from "../layouts/MainGridLayout.astro"; -import PostCard from "../components/PostCard.astro"; -import Pagination from "../components/control/Pagination.astro"; -import {getSortedPosts} from "../utils/content-utils"; -import {getPostUrlBySlug} from "../utils/url-utils"; -import {PAGE_SIZE} from "../constants/constants"; -import PostPage from "../components/PostPage.astro"; - -export async function getStaticPaths({ paginate }) { - const allBlogPosts = await getSortedPosts(); - return paginate(allBlogPosts, { pageSize: PAGE_SIZE }); -} - -const {page} = Astro.props; - -const len = page.data.length; - ---- - - - - - \ No newline at end of file diff --git a/src/pages/about.astro b/src/pages/about.astro deleted file mode 100644 index bcb52e2..0000000 --- a/src/pages/about.astro +++ /dev/null @@ -1,23 +0,0 @@ ---- - -import MainGridLayout from "../layouts/MainGridLayout.astro"; - -import { getEntry } from 'astro:content' -import {i18n} from "../i18n/translation"; -import I18nKey from "../i18n/i18nKey"; -import Markdown from "@components/misc/Markdown.astro"; - -const aboutPost = await getEntry('spec', 'about') - -const { Content } = await aboutPost.render() - ---- - -
-
- - - -
-
-
\ No newline at end of file diff --git a/src/pages/archive/category/[category].astro b/src/pages/archive/category/[category].astro deleted file mode 100644 index 5e053d3..0000000 --- a/src/pages/archive/category/[category].astro +++ /dev/null @@ -1,25 +0,0 @@ ---- -import {getCategoryList, getSortedPosts} from "@utils/content-utils"; -import MainGridLayout from "@layouts/MainGridLayout.astro"; -import ArchivePanel from "@components/ArchivePanel.astro"; -import {i18n} from "@i18n/translation"; -import I18nKey from "@i18n/i18nKey"; - -export async function getStaticPaths() { - const categories = await getCategoryList(); - return categories.map(category => { - return { - params: { - category: category.name - } - } - }); -} - -const { category } = Astro.params; - ---- - - - - diff --git a/src/pages/archive/category/uncategorized.astro b/src/pages/archive/category/uncategorized.astro deleted file mode 100644 index d580146..0000000 --- a/src/pages/archive/category/uncategorized.astro +++ /dev/null @@ -1,11 +0,0 @@ ---- -import MainGridLayout from "@layouts/MainGridLayout.astro"; -import ArchivePanel from "@components/ArchivePanel.astro"; -import {i18n} from "@i18n/translation"; -import I18nKey from "@i18n/i18nKey"; -import {UNCATEGORIZED} from "@constants/constants"; ---- - - - - diff --git a/src/pages/archive/index.astro b/src/pages/archive/index.astro deleted file mode 100644 index cf0d419..0000000 --- a/src/pages/archive/index.astro +++ /dev/null @@ -1,12 +0,0 @@ ---- -import { getCollection, getEntry } from "astro:content"; -import MainGridLayout from "@layouts/MainGridLayout.astro"; -import ArchivePanel from "@components/ArchivePanel.astro"; -import {i18n} from "@i18n/translation"; -import I18nKey from "@i18n/i18nKey"; ---- - - - - - diff --git a/src/pages/archive/tag/[tag].astro b/src/pages/archive/tag/[tag].astro deleted file mode 100644 index eecbc2c..0000000 --- a/src/pages/archive/tag/[tag].astro +++ /dev/null @@ -1,34 +0,0 @@ ---- -import {getSortedPosts} from "@utils/content-utils"; -import MainGridLayout from "@layouts/MainGridLayout.astro"; -import ArchivePanel from "@components/ArchivePanel.astro"; -import {i18n} from "@i18n/translation"; -import I18nKey from "@i18n/i18nKey"; - - -export async function getStaticPaths() { - let posts = await getSortedPosts() - - const allTags = posts.reduce((acc, post) => { - post.data.tags.forEach(tag => acc.add(tag)); - return acc; - }, new Set()); - - const allTagsArray = Array.from(allTags); - - return allTagsArray.map(tag => { - return { - params: { - tag: tag - } - } - }); -} - -const { tag } = Astro.params; - ---- - - - - diff --git a/src/pages/posts/[...slug].astro b/src/pages/posts/[...slug].astro deleted file mode 100644 index 5b65733..0000000 --- a/src/pages/posts/[...slug].astro +++ /dev/null @@ -1,121 +0,0 @@ ---- -import { getCollection } from 'astro:content'; -import MainGridLayout from "@layouts/MainGridLayout.astro"; -import ImageWrapper from "../../components/misc/ImageWrapper.astro"; -import {Icon} from "astro-icon/components"; -import PostMetadata from "../../components/PostMeta.astro"; -import {i18n} from "@i18n/translation"; -import I18nKey from "@i18n/i18nKey"; -import {getDir, getPostUrlBySlug} from "@utils/url-utils"; -import License from "@components/misc/License.astro"; -import {licenseConfig} from "src/config"; -import Markdown from "@components/misc/Markdown.astro"; -import path from "path"; - -export async function getStaticPaths() { - const blogEntries = await getCollection('posts', ({ data }) => { - return import.meta.env.PROD ? data.draft !== true : true; - }); - return blogEntries.map(entry => ({ - params: { slug: entry.slug }, props: { entry }, - })); -} - -const { entry } = Astro.props; -const { Content } = await entry.render(); - -const { remarkPluginFrontmatter } = await entry.render(); - ---- - -
-
- -
-
-
- -
-
{remarkPluginFrontmatter.words} {" " + i18n(I18nKey.wordsCount)}
-
-
-
- -
-
{remarkPluginFrontmatter.minutes} {" " + i18n(I18nKey.minutesCount)}
-
-
- - -
-
- {entry.data.title} -
-
- - -
- - {!entry.data.image &&
} -
- - - - {entry.data.image && -
-
- - - -
- - \ No newline at end of file diff --git a/src/plugins/remark-reading-time.mjs b/src/plugins/remark-reading-time.mjs deleted file mode 100644 index fd171a6..0000000 --- a/src/plugins/remark-reading-time.mjs +++ /dev/null @@ -1,15 +0,0 @@ -// biome-ignore lint/suspicious/noShadowRestrictedNames: -import { toString } from 'mdast-util-to-string' -import getReadingTime from 'reading-time' - -export function remarkReadingTime() { - return (tree, { data }) => { - const textOnPage = toString(tree) - const readingTime = getReadingTime(textOnPage) - data.astro.frontmatter.minutes = Math.max( - 1, - Math.round(readingTime.minutes), - ) - data.astro.frontmatter.words = readingTime.words - } -} diff --git a/src/types/config.ts b/src/types/config.ts deleted file mode 100644 index 965456d..0000000 --- a/src/types/config.ts +++ /dev/null @@ -1,45 +0,0 @@ -export type SiteConfig = { - title: string - subtitle: string - - lang: string - - themeHue: number - banner: { - enable: boolean - src: string - } -} - -export enum LinkPreset { - Home = 0, - Archive = 1, - About = 2, -} - -export type NavBarLink = { - name: string - url: string - external?: boolean -} - -export type NavBarConfig = { - links: (NavBarLink | LinkPreset)[] -} - -export type ProfileConfig = { - avatar?: string - name: string - bio?: string - links: { - name: string - url: string - icon: string - }[] -} - -export type LicenseConfig = { - enable: boolean - name: string - url: string -} diff --git a/src/utils/content-utils.ts b/src/utils/content-utils.ts deleted file mode 100644 index 023c177..0000000 --- a/src/utils/content-utils.ts +++ /dev/null @@ -1,83 +0,0 @@ -import I18nKey from '@i18n/i18nKey' -import { i18n } from '@i18n/translation' -import { getCollection } from 'astro:content' - -export async function getSortedPosts() { - const allBlogPosts = await getCollection('posts', ({ data }) => { - return import.meta.env.PROD ? data.draft !== true : true - }) - const sorted = allBlogPosts.sort((a, b) => { - const dateA = new Date(a.data.published) - const dateB = new Date(b.data.published) - return dateA > dateB ? -1 : 1 - }) - - for (let i = 1; i < sorted.length; i++) { - sorted[i].data.nextSlug = sorted[i - 1].slug - sorted[i].data.nextTitle = sorted[i - 1].data.title - } - for (let i = 0; i < sorted.length - 1; i++) { - sorted[i].data.prevSlug = sorted[i + 1].slug - sorted[i].data.prevTitle = sorted[i + 1].data.title - } - - return sorted -} - -export type Tag = { - name: string - count: number -} - -export async function getTagList(): Promise { - const allBlogPosts = await getCollection('posts', ({ data }) => { - return import.meta.env.PROD ? data.draft !== true : true - }) - - const countMap: { [key: string]: number } = {} - allBlogPosts.map(post => { - post.data.tags.map((tag: string) => { - if (!countMap[tag]) countMap[tag] = 0 - countMap[tag]++ - }) - }) - - // sort tags - const keys: string[] = Object.keys(countMap).sort((a, b) => { - return a.toLowerCase().localeCompare(b.toLowerCase()) - }) - - return keys.map(key => ({ name: key, count: countMap[key] })) -} - -export type Category = { - name: string - count: number -} - -export async function getCategoryList(): Promise { - const allBlogPosts = await getCollection('posts', ({ data }) => { - return import.meta.env.PROD ? data.draft !== true : true - }) - const count: { [key: string]: number } = {} - allBlogPosts.map(post => { - if (!post.data.category) { - const ucKey = i18n(I18nKey.uncategorized) - count[ucKey] = count[ucKey] ? count[ucKey] + 1 : 1 - return - } - count[post.data.category] = count[post.data.category] - ? count[post.data.category] + 1 - : 1 - }) - - const lst = Object.keys(count).sort((a, b) => { - return a.toLowerCase().localeCompare(b.toLowerCase()) - }) - - const ret: Category[] = [] - for (const c of lst) { - ret.push({ name: c, count: count[c] }) - } - return ret -} diff --git a/src/utils/date-utils.ts b/src/utils/date-utils.ts deleted file mode 100644 index 99802fd..0000000 --- a/src/utils/date-utils.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function formatDateToYYYYMMDD(date: Date): string { - const year = date.getFullYear() - const month = (date.getMonth() + 1).toString().padStart(2, '0') - const day = date.getDate().toString().padStart(2, '0') - - return `${year}-${month}-${day}` -} diff --git a/src/utils/setting-utils.ts b/src/utils/setting-utils.ts deleted file mode 100644 index 1343783..0000000 --- a/src/utils/setting-utils.ts +++ /dev/null @@ -1,19 +0,0 @@ -export function getDefaultHue(): number { - const fallback = '250' - const configCarrier = document.getElementById('config-carrier') - return parseInt(configCarrier?.dataset.hue || fallback) -} - -export function getHue(): number { - const stored = localStorage.getItem('hue') - return stored ? parseInt(stored) : getDefaultHue() -} - -export function setHue(hue: number): void { - localStorage.setItem('hue', String(hue)) - const r = document.querySelector(':root') - if (!r) { - return - } - r.style.setProperty('--hue', hue) -} diff --git a/src/utils/url-utils.ts b/src/utils/url-utils.ts deleted file mode 100644 index 67a0918..0000000 --- a/src/utils/url-utils.ts +++ /dev/null @@ -1,33 +0,0 @@ -import i18nKey from '@i18n/i18nKey' -import { i18n } from '@i18n/translation' - -export function pathsEqual(path1: string, path2: string) { - const normalizedPath1 = path1.replace(/^\/|\/$/g, '').toLowerCase() - const normalizedPath2 = path2.replace(/^\/|\/$/g, '').toLowerCase() - return normalizedPath1 === normalizedPath2 -} - -function joinUrl(...parts: string[]): string { - const joined = parts.join('/') - return joined.replace(/([^:]\/)\/+/g, '$1') -} - -export function getPostUrlBySlug(slug: string): string | null { - if (!slug) return null - return `/posts/${slug}` -} - -export function getCategoryUrl(category: string): string | null { - if (!category) return null - if (category === i18n(i18nKey.uncategorized)) - return '/archive/category/uncategorized' - return `/archive/category/${category}` -} - -export function getDir(path: string): string { - const lastSlashIndex = path.lastIndexOf('/') - if (lastSlashIndex < 0) { - return '/' - } - return path.substring(0, lastSlashIndex + 1) -} diff --git a/style.css b/style.css new file mode 100644 index 0000000..4aa1280 --- /dev/null +++ b/style.css @@ -0,0 +1,111 @@ +html, body { + padding: 0; + margin: 0; + overflow: hidden; + height: 100%; +} + +body { + background: #000000; + color: white; +} + +html, body, canvas { + touch-action-delay: none; + touch-action: none; +} + +canvas, .c3htmlwrap { + position: absolute; +} + +.c3htmlwrap { + contain: strict; +} + +.c3overlay { + pointer-events: none; +} + +.c3htmlwrap > * { + pointer-events: auto; +} + +/* HACK - work around elements being selectable only in iOS WKWebView for some reason */ +html[ioswebview] .c3htmlwrap, +html[ioswebview] canvas { + -webkit-user-select: none; + user-select: none; +} + +html[ioswebview] .c3htmlwrap > * { + -webkit-user-select: auto; + user-select: auto; +} + +#notSupportedWrap { + margin: 2em auto 1em auto; + width: 75%; + max-width: 45em; + border: 2px solid #aaa; + border-radius: 1em; + padding: 2em; + background-color: #f0f0f0; + font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; + color: black; +} + +#notSupportedTitle { + font-size: 1.8em; +} + +.notSupportedMessage { + font-size: 1.2em; +} + +.notSupportedMessage em { + color: #888; +} + +/* bbcode styles */ +.bbCodeH1 { + font-size: 2em; + font-weight: bold; +} + +.bbCodeH2 { + font-size: 1.5em; + font-weight: bold; +} + +.bbCodeH3 { + font-size: 1.25em; + font-weight: bold; +} + +.bbCodeH4 { + font-size: 1.1em; + font-weight: bold; +} + +.bbCodeItem::before { + content: " • "; +} + +/* For text icons converted to HTML: size the height to the line height + preserving the aspect ratio. Also add position: relative as that allows + just adding a 'top' style for the iconoffsety style. */ +.c3-text-icon { + height: 1em; + width: auto; + position: relative; +} + +/* screen reader text */ +.c3-screen-reader-text { + position: absolute; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); +} \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..ff8cb3e --- /dev/null +++ b/sw.js @@ -0,0 +1,16 @@ +'use strict';const OFFLINE_DATA_FILE="offline.json";const CACHE_NAME_PREFIX="c3offline";const BROADCASTCHANNEL_NAME="offline";const CONSOLE_PREFIX="[SW] ";const LAZYLOAD_KEYNAME="";const broadcastChannel=typeof BroadcastChannel==="undefined"?null:new BroadcastChannel(BROADCASTCHANNEL_NAME); +class PromiseThrottle{constructor(maxParallel){this._maxParallel=maxParallel;this._queue=[];this._activeCount=0}Add(func){return new Promise((resolve,reject)=>{this._queue.push({func,resolve,reject});this._MaybeStartNext()})}async _MaybeStartNext(){if(!this._queue.length||this._activeCount>=this._maxParallel)return;this._activeCount++;const job=this._queue.shift();try{const result=await job.func();job.resolve(result)}catch(err){job.reject(err)}this._activeCount--;this._MaybeStartNext()}} +const networkThrottle=new PromiseThrottle(20);function PostBroadcastMessage(o){if(!broadcastChannel)return;setTimeout(()=>broadcastChannel.postMessage(o),3E3)}function Broadcast(type){PostBroadcastMessage({"type":type})}function BroadcastDownloadingUpdate(version){PostBroadcastMessage({"type":"downloading-update","version":version})}function BroadcastUpdateReady(version){PostBroadcastMessage({"type":"update-ready","version":version})} +function IsUrlInLazyLoadList(url,lazyLoadList){if(!lazyLoadList)return false;try{for(const lazyLoadRegex of lazyLoadList)if((new RegExp(lazyLoadRegex)).test(url))return true}catch(err){console.error(CONSOLE_PREFIX+"Error matching in lazy-load list: ",err)}return false}function WriteLazyLoadListToStorage(lazyLoadList){if(typeof localforage==="undefined")return Promise.resolve();else return localforage.setItem(LAZYLOAD_KEYNAME,lazyLoadList)} +function ReadLazyLoadListFromStorage(){if(typeof localforage==="undefined")return Promise.resolve([]);else return localforage.getItem(LAZYLOAD_KEYNAME)}function GetCacheBaseName(){return CACHE_NAME_PREFIX+"-"+self.registration.scope}function GetCacheVersionName(version){return GetCacheBaseName()+"-v"+version}async function GetAvailableCacheNames(){const cacheNames=await caches.keys();const cacheBaseName=GetCacheBaseName();return cacheNames.filter(n=>n.startsWith(cacheBaseName))} +async function IsUpdatePending(){const availableCacheNames=await GetAvailableCacheNames();return availableCacheNames.length>=2}async function GetMainPageUrl(){const allClients=await clients.matchAll({includeUncontrolled:true,type:"window"});for(const c of allClients){let url=c.url;if(url.startsWith(self.registration.scope))url=url.substring(self.registration.scope.length);if(url&&url!=="/"){if(url.startsWith("?"))url="/"+url;return url}}return""} +function fetchWithBypass(request,bypassCache){if(typeof request==="string")request=new Request(request);if(bypassCache)return fetch(request.url,{headers:request.headers,mode:request.mode,credentials:request.credentials,redirect:request.redirect,cache:"no-store"});else return fetch(request)} +async function CreateCacheFromFileList(cacheName,fileList,bypassCache){const responses=await Promise.all(fileList.map(url=>networkThrottle.Add(()=>fetchWithBypass(url,bypassCache))));let allOk=true;for(const response of responses)if(!response.ok){allOk=false;console.error(CONSOLE_PREFIX+"Error fetching '"+response.url+"' ("+response.status+" "+response.statusText+")")}if(!allOk)throw new Error("not all resources were fetched successfully");const cache=await caches.open(cacheName);try{return await Promise.all(responses.map((response, +i)=>cache.put(fileList[i],response)))}catch(err){console.error(CONSOLE_PREFIX+"Error writing cache entries: ",err);caches.delete(cacheName);throw err;}} +async function UpdateCheck(isFirst){try{const response=await fetchWithBypass(OFFLINE_DATA_FILE,true);if(!response.ok)throw new Error(OFFLINE_DATA_FILE+" responded with "+response.status+" "+response.statusText);const data=await response.json();const version=data.version;const fileList=data.fileList;const lazyLoadList=data.lazyLoad;const currentCacheName=GetCacheVersionName(version);const cacheExists=await caches.has(currentCacheName);if(cacheExists){const isUpdatePending=await IsUpdatePending();if(isUpdatePending){console.log(CONSOLE_PREFIX+ +"Update pending");Broadcast("update-pending")}else{console.log(CONSOLE_PREFIX+"Up to date");Broadcast("up-to-date")}return}const mainPageUrl=await GetMainPageUrl();fileList.unshift("./");if(mainPageUrl&&fileList.indexOf(mainPageUrl)===-1)fileList.unshift(mainPageUrl);console.log(CONSOLE_PREFIX+"Caching "+fileList.length+" files for offline use");if(isFirst)Broadcast("downloading");else BroadcastDownloadingUpdate(version);if(lazyLoadList)await WriteLazyLoadListToStorage(lazyLoadList);await CreateCacheFromFileList(currentCacheName, +fileList,!isFirst);const isUpdatePending=await IsUpdatePending();if(isUpdatePending){console.log(CONSOLE_PREFIX+"All resources saved, update ready");BroadcastUpdateReady(version)}else{console.log(CONSOLE_PREFIX+"All resources saved, offline support ready");Broadcast("offline-ready")}}catch(err){console.warn(CONSOLE_PREFIX+"Update check failed: ",err)}}self.addEventListener("install",event=>{event.waitUntil(UpdateCheck(true).catch(()=>null))}); +async function GetCacheNameToUse(availableCacheNames,doUpdateCheck){if(availableCacheNames.length===1||!doUpdateCheck)return availableCacheNames[0];const allClients=await clients.matchAll();if(allClients.length>1)return availableCacheNames[0];const latestCacheName=availableCacheNames[availableCacheNames.length-1];console.log(CONSOLE_PREFIX+"Updating to new version");await Promise.all(availableCacheNames.slice(0,-1).map(c=>caches.delete(c)));return latestCacheName} +async function HandleFetch(event,doUpdateCheck){const availableCacheNames=await GetAvailableCacheNames();if(!availableCacheNames.length)return fetch(event.request);const useCacheName=await GetCacheNameToUse(availableCacheNames,doUpdateCheck);const cache=await caches.open(useCacheName);const cachedResponse=await cache.match(event.request);if(cachedResponse)return cachedResponse;const result=await Promise.all([fetch(event.request),ReadLazyLoadListFromStorage()]);const fetchResponse=result[0];const lazyLoadList= +result[1];if(IsUrlInLazyLoadList(event.request.url,lazyLoadList))try{await cache.put(event.request,fetchResponse.clone())}catch(err){console.warn(CONSOLE_PREFIX+"Error caching '"+event.request.url+"': ",err)}return fetchResponse} +self.addEventListener("fetch",event=>{if((new URL(event.request.url)).origin!==location.origin)return;const doUpdateCheck=event.request.mode==="navigate";const responsePromise=HandleFetch(event,doUpdateCheck);if(doUpdateCheck)event.waitUntil(responsePromise.then(()=>UpdateCheck(false)));event.respondWith(responsePromise)}); diff --git a/tailwind.config.cjs b/tailwind.config.cjs deleted file mode 100644 index 3508a48..0000000 --- a/tailwind.config.cjs +++ /dev/null @@ -1,14 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -const defaultTheme = require("tailwindcss/defaultTheme") -module.exports = { - content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], - darkMode: "class", // allows toggling dark mode manually - theme: { - extend: { - fontFamily: { - sans: ["Roboto", "sans-serif", ...defaultTheme.fontFamily.sans], - }, - }, - }, - plugins: [require("@tailwindcss/typography")], -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 86513ab..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "astro/tsconfigs/strict", - "compilerOptions": { - "baseUrl": ".", - "strictNullChecks": true, - "allowJs": true, - "plugins": [ - { - "name": "@astrojs/ts-plugin" - } - ], - "paths": { - "@components/*": ["src/components/*"], - "@assets/*": ["src/assets/*"], - "@constants/*": ["src/constants/*"], - "@utils/*": ["src/utils/*"], - "@i18n/*": ["src/i18n/*"], - "@layouts/*": ["src/layouts/*"], - "@/*": ["src/*"] - } - }, - "include": ["src/**/*"] -} diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 0967ef4..0000000 --- a/vercel.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/workermain.js b/workermain.js new file mode 100644 index 0000000..63eb2ae --- /dev/null +++ b/workermain.js @@ -0,0 +1,8 @@ +'use strict';let hasInitialised=false;let runtime=null;function HandleInitRuntimeMessage(e){const data=e.data;if(data&&data["type"]==="init-runtime"){InitRuntime(data);self.removeEventListener("message",HandleInitRuntimeMessage)}}self.addEventListener("message",HandleInitRuntimeMessage);self.c3_import=url=>import(url);function IsAbsoluteURL(url){return/^(?:[a-z\-]+:)?\/\//.test(url)||url.substr(0,5)==="data:"||url.substr(0,5)==="blob:"}function IsRelativeURL(url){return!IsAbsoluteURL(url)} +async function LoadScripts(scriptsArr){if(scriptsArr.length===1){const url=scriptsArr[0];await import(((IsRelativeURL(url)?"./":"")+url))}else{const scriptStr=scriptsArr.map(url=>`import "${IsRelativeURL(url)?"./":""}${url}";`).join("\n");const blobUrl=URL.createObjectURL(new Blob([scriptStr],{type:"application/javascript"}));try{await import(blobUrl)}catch(err){console.warn("[Construct] Unable to import script from blob: URL. Falling back to loading scripts sequentially, which could significantly increase loading time. Make sure blob: URLs are allowed for best performance.", +err);for(const url of scriptsArr)await import(((IsRelativeURL(url)?"./":"")+url))}}} +async function InitRuntime(data){if(hasInitialised)throw new Error("already initialised");hasInitialised=true;const messagePort=data["messagePort"];const exportType=data["exportType"];self.devicePixelRatio=data["devicePixelRatio"];const runOnStartupFunctions=[];self.runOnStartup=function runOnStartup(f){if(typeof f!=="function")throw new Error("runOnStartup called without a function");runOnStartupFunctions.push(f)};const runtimeScriptList=data["runtimeScriptList"].map(url=>(new URL(url,location.href)).toString()); +try{await LoadScripts([...runtimeScriptList])}catch(err){console.error("[C3 runtime] Failed to load all engine scripts in worker: ",err);return}const projectMainScriptPath=data["projectMainScriptPath"];const scriptsInEventsPath=data["scriptsInEventsPath"];const projectMainScriptPathLoadURL=(new URL(projectMainScriptPath,location.href)).toString();const scriptsInEventsPathLoadURL=(new URL(scriptsInEventsPath,location.href)).toString();if(projectMainScriptPath)try{await LoadScripts([projectMainScriptPathLoadURL]); +if(exportType==="preview"&&!globalThis.C3_ProjectMainScriptOK)throw new Error("main script did not run to completion");}catch(err){console.error("Error loading project main script: ",err);const msg=`Failed to load the project main script (${projectMainScriptPath}). Check all your JavaScript code has valid syntax, all imports are written correctly, and that an exception was not thrown running the script. Press F12 and check the console for error details.`;messagePort.postMessage({"type":"alert-error", +"message":msg})}if(scriptsInEventsPath)try{await LoadScripts([scriptsInEventsPathLoadURL]);if(exportType==="preview"&&!globalThis.C3.ScriptsInEvents)throw new Error("scripts in events did not run to completion");}catch(err){console.error("Error loading scripts in events: ",err);const msg=`Failed to load scripts in events. Check all your JavaScript code has valid syntax, all imports are written correctly, and that an exception was not thrown running the 'Imports for events' script. Press F12 and check the console for error details.`; +messagePort.postMessage({"type":"alert-error","message":msg})}data["runOnStartupFunctions"]=runOnStartupFunctions;messagePort.postMessage({"type":"creating-runtime"});runtime=self["C3_CreateRuntime"](data);await self["C3_InitRuntime"](runtime,data)};