From 05f55c490fea7b4dd16c2bcb79b62e86311df29a Mon Sep 17 00:00:00 2001 From: evanpelle Date: Sun, 4 Aug 2024 19:51:23 -0700 Subject: [PATCH] First Commit --- .github/workflows/ci.yml | 26 + .gitignore | 3 + .gitmodules | 3 + LICENSE | 21 + README.md | 22 + TODO.txt | 8 + jest.config.ts | 6 + package-lock.json | 12101 ++++++++++++++++++++ package.json | 56 + resources/base.css | 125 + resources/maps/Europe.png | Bin 0 -> 36945 bytes resources/maps/World.json | 3 + resources/maps/World.png | Bin 0 -> 222591 bytes resources/themes/overpass-bold.woff | Bin 0 -> 29840 bytes resources/themes/overpass-regular.woff | Bin 0 -> 30204 bytes resources/themes/pastel-mm-bg.jpg | Bin 0 -> 21642 bytes resources/themes/pastel.css | 521 + resources/themes/pastel.json | 36 + resources/themes/vanchrome.woff | Bin 0 -> 13540 bytes resources/themes/wf-logo-pastel.png | Bin 0 -> 61297 bytes src/client/Client.ts | 93 + src/client/ClientGame.ts | 231 + src/client/GameRenderer.ts | 261 + src/client/InputHandler.ts | 93 + src/client/NameBoxCalculator.ts | 127 + src/client/index.html | 21 + src/core/EventBus.ts | 40 + src/core/Game.ts | 153 + src/core/GameImpl.ts | 415 + src/core/PseudoRandom.ts | 33 + src/core/Schemas.ts | 100 + src/core/Settings.ts | 84 + src/core/TerrainMapLoader.ts | 25 + src/core/Ticker.ts | 33 + src/core/Util.ts | 11 + src/core/execution/AttackExecution.ts | 112 + src/core/execution/BoatAttackExecution.ts | 158 + src/core/execution/BotExecution.ts | 55 + src/core/execution/BotSpawner.ts | 60 + src/core/execution/Executor.ts | 55 + src/core/execution/PlayerExecution.ts | 25 + src/core/execution/SpawnExecution.ts | 42 + src/core/execution/Util.ts | 25 + src/global.d.ts | 4 + src/server/Client.ts | 7 + src/server/GameManager.ts | 66 + src/server/GameServer.ts | 69 + src/server/Lobby.ts | 21 + src/server/Server.ts | 70 + tests/GameImpl.test.ts | 170 + tests/NameBoxCalculator.test.ts | 194 + tsconfig.json | 19 + webpack.config.js | 59 + 53 files changed, 15862 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 LICENSE create mode 100644 README.md create mode 100644 TODO.txt create mode 100644 jest.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/base.css create mode 100644 resources/maps/Europe.png create mode 100644 resources/maps/World.json create mode 100644 resources/maps/World.png create mode 100644 resources/themes/overpass-bold.woff create mode 100644 resources/themes/overpass-regular.woff create mode 100644 resources/themes/pastel-mm-bg.jpg create mode 100644 resources/themes/pastel.css create mode 100644 resources/themes/pastel.json create mode 100644 resources/themes/vanchrome.woff create mode 100644 resources/themes/wf-logo-pastel.png create mode 100644 src/client/Client.ts create mode 100644 src/client/ClientGame.ts create mode 100644 src/client/GameRenderer.ts create mode 100644 src/client/InputHandler.ts create mode 100644 src/client/NameBoxCalculator.ts create mode 100644 src/client/index.html create mode 100644 src/core/EventBus.ts create mode 100644 src/core/Game.ts create mode 100644 src/core/GameImpl.ts create mode 100644 src/core/PseudoRandom.ts create mode 100644 src/core/Schemas.ts create mode 100644 src/core/Settings.ts create mode 100644 src/core/TerrainMapLoader.ts create mode 100644 src/core/Ticker.ts create mode 100644 src/core/Util.ts create mode 100644 src/core/execution/AttackExecution.ts create mode 100644 src/core/execution/BoatAttackExecution.ts create mode 100644 src/core/execution/BotExecution.ts create mode 100644 src/core/execution/BotSpawner.ts create mode 100644 src/core/execution/Executor.ts create mode 100644 src/core/execution/PlayerExecution.ts create mode 100644 src/core/execution/SpawnExecution.ts create mode 100644 src/core/execution/Util.ts create mode 100644 src/global.d.ts create mode 100644 src/server/Client.ts create mode 100644 src/server/GameManager.ts create mode 100644 src/server/GameServer.ts create mode 100644 src/server/Lobby.ts create mode 100644 src/server/Server.ts create mode 100644 tests/GameImpl.test.ts create mode 100644 tests/NameBoxCalculator.test.ts create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..0234d9062 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,26 @@ +name: CI + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Setup npm + run: npm install + - name: Prebuild + run: npm run prebuild + - name: Build + run: npm run build-prod + - uses: actions/upload-artifact@v4 + with: + path: out/index.html + retention-days: 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..fb963a90d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build/ +node_modules/ +out/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..40c352aa9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/map/codec"] + path = src/map/codec + url = https://github.com/WarFrontIO/MapCodec diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..66550bd84 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 WarFront.io Team + +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 new file mode 100644 index 000000000..882214ac2 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# OpenFront.io + +OpenFront is an online rts. + +This is a fork/rewrite of WarFront.io. Credit to https://github.com/WarFrontIO. + +## Building + +To build the project, you will need to have Node.js and npm installed. You can download them from [here](https://nodejs.org/). + +Before building the project, you will need to install the dependencies. You can do this by running the following command in the project directory: + +```bash +git submodule update --init --recursive +npm install +``` + +To run dev build: + +```bash +npm run dev +``` diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 000000000..53113337d --- /dev/null +++ b/TODO.txt @@ -0,0 +1,8 @@ +* fix conquer expansion +* improve front page +* make boats larger +* perf improvements on graphics (only draw images to canvas on ticks) +* better troop addition logic +* maybe cache neigbors? +* have boats not get close to shore +* better algorithm for name render placement \ No newline at end of file diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 000000000..da0ba537d --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,6 @@ +module.exports = { + transform: {'^.+\\.ts?$': 'ts-jest'}, + testEnvironment: 'node', + testRegex: '/tests/.*\\.(test|spec)?\\.(ts|tsx)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'] +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..4bcb6bfdc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12101 @@ +{ + "name": "warfront-client", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "warfront-client", + "dependencies": { + "@types/express": "^4.17.21", + "@types/jimp": "^0.2.28", + "colord": "^2.9.3", + "express": "^4.19.2", + "jimp": "^0.22.12", + "node-addon-api": "^8.1.0", + "node-gyp": "^10.2.0", + "priority-queue-typescript": "^1.0.1", + "typia": "^6.5.2", + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/preset-typescript": "^7.24.7", + "@types/chai": "^4.3.17", + "@types/jest": "^29.5.12", + "@types/mocha": "^10.0.7", + "@types/sinon": "^17.0.3", + "@types/ws": "^8.5.11", + "babel-jest": "^29.7.0", + "chai": "^5.1.1", + "concurrently": "^8.2.2", + "html-inline-script-webpack-plugin": "^3.2.1", + "html-webpack-plugin": "^5.6.0", + "jest": "^29.7.0", + "mocha": "^10.7.0", + "mrmime": "^2.0.0", + "sinon": "^18.0.0", + "sinon-chai": "^4.0.0", + "ts-jest": "^29.2.4", + "ts-loader": "^9.5.1", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.5.4", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jimp/bmp": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.12.tgz", + "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.12.tgz", + "integrity": "sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "isomorphic-fetch": "^3.0.0", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.6.0" + } + }, + "node_modules/@jimp/custom": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz", + "integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==", + "dependencies": { + "@jimp/core": "^0.22.12" + } + }, + "node_modules/@jimp/gif": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.12.tgz", + "integrity": "sha512-y6BFTJgch9mbor2H234VSjd9iwAhaNf/t3US5qpYIs0TSbAvM02Fbc28IaDETj9+4YB4676sz4RcN/zwhfu1pg==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "gifwrap": "^0.10.1", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.12.tgz", + "integrity": "sha512-Rq26XC/uQWaQKyb/5lksCTCxXhtY01NJeBN+dQv5yNYedN0i7iYu+fXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "jpeg-js": "^0.4.4" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.12.tgz", + "integrity": "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.12.tgz", + "integrity": "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.12.tgz", + "integrity": "sha512-SWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.12.tgz", + "integrity": "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "tinycolor2": "^1.6.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.12.tgz", + "integrity": "sha512-Eo3DmfixJw3N79lWk8q/0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.12.tgz", + "integrity": "sha512-z0w/1xH/v/knZkpTNx+E8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/W56+4nJ1brhSd233HBJCo01BXA==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.12.tgz", + "integrity": "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.12.tgz", + "integrity": "sha512-qpRM8JRicxfK6aPPqKZA6+GzBwUIitiHaZw0QrJ64Ygd3+AsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.12.tgz", + "integrity": "sha512-jYgGdSdSKl1UUEanX8A85v4+QUm+PE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.12.tgz", + "integrity": "sha512-LGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/jJpPaeaishjlxvczjgII+Q==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.12.tgz", + "integrity": "sha512-m251Rop7GN8W0Yo/rF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.12.tgz", + "integrity": "sha512-sBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+uqWFF53+n3c8Y0P2HWlUjflEla2h/vWShvhg==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.12.tgz", + "integrity": "sha512-N+6rwxdB+7OCR6PYijaA/iizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.12.tgz", + "integrity": "sha512-4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.12.tgz", + "integrity": "sha512-0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+As1FtA==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.12.tgz", + "integrity": "sha512-c7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "load-bmfont": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.12.tgz", + "integrity": "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.12.tgz", + "integrity": "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.12.tgz", + "integrity": "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.12.tgz", + "integrity": "sha512-FX8mTJuCt7/3zXVoeD/qHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.12.tgz", + "integrity": "sha512-4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw==", + "dependencies": { + "@jimp/utils": "^0.22.12" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.12.tgz", + "integrity": "sha512-yBJ8vQrDkBbTgQZLty9k4+KtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/XWILoTZsjTUASQcGoH0TuC0N7xm3ww==", + "dependencies": { + "@jimp/plugin-blit": "^0.22.12", + "@jimp/plugin-blur": "^0.22.12", + "@jimp/plugin-circle": "^0.22.12", + "@jimp/plugin-color": "^0.22.12", + "@jimp/plugin-contain": "^0.22.12", + "@jimp/plugin-cover": "^0.22.12", + "@jimp/plugin-crop": "^0.22.12", + "@jimp/plugin-displace": "^0.22.12", + "@jimp/plugin-dither": "^0.22.12", + "@jimp/plugin-fisheye": "^0.22.12", + "@jimp/plugin-flip": "^0.22.12", + "@jimp/plugin-gaussian": "^0.22.12", + "@jimp/plugin-invert": "^0.22.12", + "@jimp/plugin-mask": "^0.22.12", + "@jimp/plugin-normalize": "^0.22.12", + "@jimp/plugin-print": "^0.22.12", + "@jimp/plugin-resize": "^0.22.12", + "@jimp/plugin-rotate": "^0.22.12", + "@jimp/plugin-scale": "^0.22.12", + "@jimp/plugin-shadow": "^0.22.12", + "@jimp/plugin-threshold": "^0.22.12", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.12.tgz", + "integrity": "sha512-Mrp6dr3UTn+aLK8ty/dSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg==", + "dependencies": { + "@jimp/utils": "^0.22.12", + "pngjs": "^6.0.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.12.tgz", + "integrity": "sha512-E1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg==", + "dependencies": { + "utif2": "^4.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.12.tgz", + "integrity": "sha512-wwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/m30YyuTtfUJgMRMA==", + "dependencies": { + "@jimp/bmp": "^0.22.12", + "@jimp/gif": "^0.22.12", + "@jimp/jpeg": "^0.22.12", + "@jimp/png": "^0.22.12", + "@jimp/tiff": "^0.22.12", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.12.tgz", + "integrity": "sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q==", + "dependencies": { + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/utils/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz", + "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@samchon/openapi": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-0.4.2.tgz", + "integrity": "sha512-lpL+HExpCH65EA8M4L0+bcC0T+0MQCaXjaHdmQ6oHQeSjTgS7ZyoA3l2B6FrkF6XA+mWosQhCmXH5t+VqmoGUQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "dev": true + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", + "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jimp": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@types/jimp/-/jimp-0.2.28.tgz", + "integrity": "sha512-nLIVbImtcaEf90y2XQsMzfgWK5EZxfDg6EVWobrkFTFJiLqmx/yU5Jh+LYUN94ztzXX1GwQLFYHaEi8tfMeZzw==", + "deprecated": "This is a stub types definition for jimp (https://github.com/oliver-moran/jimp#readme). jimp provides its own type definitions, so you don't need @types/jimp installed!", + "dependencies": { + "jimp": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/mocha": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", + "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sinon": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "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.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001646", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", + "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, + "node_modules/chai": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "dev": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "engines": { + "node": ">= 16" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/comment-json": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.4.tgz", + "integrity": "sha512-E5AjpSW+O+N5T2GsOQMHLLsJvrYw6G/AFt9GvU6NguEAfzKShh7hRiLtVo6S9KbRpFMGqE5ojo0/hE+sdteWvQ==", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", + "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", + "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-inline-script-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/html-inline-script-webpack-plugin/-/html-inline-script-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-PEj9Ve31BE0dva6eTD6wHMOztgIdPxF6gx3wad7ohBkCn7MXpuUvPC9t5ThMJ2NrVi1jWGBYU76DfoS+8dabRw==", + "dev": true, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": "^5.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.12.tgz", + "integrity": "sha512-R5jZaYDnfkxKJy1dwLpj/7cvyjxiclxU3F4TrI/J4j2rS0niq6YDUMoPn5hs8GDpO+OZGo7Ky057CRtWesyhfg==", + "dependencies": { + "@jimp/custom": "^0.22.12", + "@jimp/plugins": "^0.22.12", + "@jimp/types": "^0.22.12", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jimp/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/launch-editor": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", + "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz", + "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==", + "dev": true, + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.1.2", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz", + "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nise": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.0.0.tgz", + "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-addon-api": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.1.0.tgz", + "integrity": "sha512-yBY+qqWSv3dWKGODD6OGE6GnTX7Q2r+4+DfpqxHSHh8x0B4EKP9+wVGLS6U/AM1vxSNNmUEuIV5EGhYwPpfOwQ==", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", + "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/priority-queue-typescript": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/priority-queue-typescript/-/priority-queue-typescript-1.0.1.tgz", + "integrity": "sha512-Apycf6CgjdPRNfpZ8qgQeHVRe4B6R51QAd94k6fE13tGUpW1RLv8+ZeJipl2f0j/No3nt2Gk7dF2f+i1Au/I2w==" + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sinon": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz", + "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.2.0", + "nise": "^6.0.0", + "supports-color": "^7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon-chai": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-4.0.0.tgz", + "integrity": "sha512-cWqO7O2I4XfJDWyWElAQ9D/dtdh5Mo0RHndsfiiYyjWnlPzBJdIvjCVURO4EjyYaC3BjV+ISNXCfTXPXTEIEWA==", + "dev": true, + "peerDependencies": { + "chai": "^5.0.0", + "sinon": ">=4.0.0" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/terser": { + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", + "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-jest": { + "version": "29.2.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.4.tgz", + "integrity": "sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "0.x", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" + } + }, + "node_modules/ts-mocha/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-mocha/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/ts-mocha/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-mocha/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typia": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/typia/-/typia-6.5.2.tgz", + "integrity": "sha512-s1yqB7m8Zz4yoeLdq1OQ7Nq/svHqOr02fl9B3dOiU7m+4p5wHvJVTj7gLRtq0t51ExFUlDzSkY9STwBUNACOgA==", + "dependencies": { + "@samchon/openapi": "^0.4.2", + "commander": "^10.0.0", + "comment-json": "^4.2.3", + "inquirer": "^8.2.5", + "randexp": "^0.5.3" + }, + "bin": { + "typia": "lib/executable/typia.js" + }, + "peerDependencies": { + "typescript": ">=4.8.0 <5.6.0" + } + }, + "node_modules/typia/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "dependencies": { + "pako": "^1.0.11" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz", + "integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..26009390a --- /dev/null +++ b/package.json @@ -0,0 +1,56 @@ +{ + "name": "warfront-client", + "scripts": { + "prebuild": "tsc --project scripts", + "build-dev": "webpack --config webpack.config.js --mode development", + "build-prod": "webpack --config webpack.config.js --mode production", + "start:client": "webpack serve --open --node-env development", + "start:server": "node --loader ts-node/esm --experimental-specifier-resolution=node src/server/Server.ts", + "dev": "concurrently \"npm run start:client\" \"npm run start:server\"", + "build": "tsc", + "test": "jest" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/preset-typescript": "^7.24.7", + "@types/chai": "^4.3.17", + "@types/jest": "^29.5.12", + "@types/mocha": "^10.0.7", + "@types/sinon": "^17.0.3", + "@types/ws": "^8.5.11", + "babel-jest": "^29.7.0", + "chai": "^5.1.1", + "concurrently": "^8.2.2", + "html-inline-script-webpack-plugin": "^3.2.1", + "html-webpack-plugin": "^5.6.0", + "jest": "^29.7.0", + "mocha": "^10.7.0", + "mrmime": "^2.0.0", + "sinon": "^18.0.0", + "sinon-chai": "^4.0.0", + "ts-jest": "^29.2.4", + "ts-loader": "^9.5.1", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.5.4", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + }, + "dependencies": { + "@types/express": "^4.17.21", + "@types/jimp": "^0.2.28", + "colord": "^2.9.3", + "express": "^4.19.2", + "jimp": "^0.22.12", + "node-addon-api": "^8.1.0", + "node-gyp": "^10.2.0", + "priority-queue-typescript": "^1.0.1", + "typia": "^6.5.2", + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "type": "module" +} \ No newline at end of file diff --git a/resources/base.css b/resources/base.css new file mode 100644 index 000000000..23f824b26 --- /dev/null +++ b/resources/base.css @@ -0,0 +1,125 @@ +/* + Josh's Custom CSS Reset + https://www.joshwcomeau.com/css/custom-css-reset/ +*/ +*, +*::before, +*::after { + box-sizing: border-box; +} + +* { + margin: 0; +} + +body { + line-height: 1.31; + -webkit-font-smoothing: antialiased; +} + +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; +} + +input, +button, +textarea, +select { + font: inherit; +} + +p, +h1, +h2, +h3, +h4, +h5, +h6 { + overflow-wrap: break-word; +} + +#root, +#__next { + isolation: isolate; +} + +/* Generic margins */ +.m-1_2 { + margin: 0.5em; +} + +.m-1 { + margin: 1em; +} + +.mr-1_2 { + margin-right: 0.5em; +} + +.mr-1 { + margin-right: 1em; +} + +/* Generic padding */ + +.p-1_2 { + padding: 0.5em; +} + +.p-1 { + padding: 1em; +} + +.pt-1 { + padding-top: 1em; +} + +/* Generic widths */ + +.w-100 { + width: 100%; +} + + +/* Typography helpers */ + +.text-center { + text-align: center; +} + +.text-lg { + font-size: 1.25em; +} + +.text-xl { + font-size: 1.4em; +} + +.text-xxl { + font-size: 2em; +} + + +/* Custom Scrollbar */ + +::-webkit-scrollbar { + width: 3px; +} + +::-webkit-scrollbar-track { + background: #f1f1f1; +} + +::-webkit-scrollbar-thumb { + background: #888; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} \ No newline at end of file diff --git a/resources/maps/Europe.png b/resources/maps/Europe.png new file mode 100644 index 0000000000000000000000000000000000000000..415ab1beaf2ab7b31111eb6bac65c7255385d345 GIT binary patch literal 36945 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
ftqx&c?U#^?(=BYn&Duc;9=cqkxti zA6=SQtCfy;oMF{-qN~p48GA>xplpALib9%jNj)YM3g8{JNh&1YZ{mMQD}6TY#^=eR zDQJo(VTj+3ips=-1@7zqG?k=U_~WS;&XBaROuV8Gfbg`+blH4vz(AW$?y`)^Zj~G= zapL2Swe<(l16ys#78?S$(^{H>J{6TSNliSb1O8HO;A23~hN(~7mpt0W>vh%TTaRBo zKCWH~>$QJ9yE9VYr(P2Xq}a*D3FkC4LHYZ5h6a+u!m!lEkiJfO36$<`NY zdp5mjBcZ82Z`+V#X|UtI3_DK3k2d3={R3El!tP-uey|(^jxw(2q&*r{4!$|s zx>yr*IQQTCwF=nzyUFY^Ty-?w~aW%JVn7&L6HA>n41RQ9nCOwtz3!Ddw z|GW@U1}8Yz+4&ZwZm!(ZSv`6H4)ac4EcCkP^oJ3ZNN3qo5`2~~- zU4GB9^cH>77~hfl`o_K$)|wF)sbN1F6hEpx8}-^wjTu~58o6ZdIj!AU{%W%0ZII*U z2)}(dw8>R*qVx7Py^`YW#1wVgK9hQ*r@~a9{vxT*XkV z{PoIIBv*c^9NZlG@ymF$0PR99pLtrWTsLV?w>(d4+tc1q#mS`l(<#?E%T?=&`qoes z9MbCk4p-PIOrBFeYZ4T&@7y0uothZgeEYIc?zse3`Jr`gV9m7}>X+x~nTK`1XY5{% zVt(_#Lnx=Ol#&i8yx&Ii?>i7Ri|=)aBycTYzLS+QtSeyX6{)!Hw41$K3iLYy68;Gz z@wA&zPJiK4xLz!1TF@Za6a0Iv^2plrb?(w%1t@|@U3u5aRazfD_9uy9FZW;dg#Z4v zzvYuhwVviBCK4FXoP3wPLE5;QN_7=u{41}At@2&9+R_U$WjqtwkPRTq!8Jj-6lg+9 zVhr~dmYn5+CQm2pULi+QU*MY2*9nFH%ajo-w?)Oj^`hzI{WVXy2fPVf@XI;(h1ufH zQ6TyqLetcuGC$jiGjBdFqtL;m;PG13NmC=A;LNWm8fFlerug=Lpl0dGkT|l z^N(Ou`lG^!p=U;)$NZQ5$tfnFVyf?1xqC10rh3s|*Ahrr$LWVqxcp=V%Oj$0E|Yb# zsnu5;g02-LDu6uqvn0;Exm6p8_2XlIgFbbiCjtyq^{d2v(J7^w`{g0TXZ6Nh5uliQX zo`io{i4?(8g*0Pc!3mCN-a8y69-~&!ua;*>wV>n?%IqO%2WmvjxQ$6qI@OPorEmkK ziYm+~x;SsNYZ%RUzO&SG9Ne3XC+CZ*MY4a&TOg89v&@uS9>cfQ?1 zwf9l)Uh9pU*G-(?tK^se?*%{=vWrWk=oi)i5`(j{^m9W~Zs1XSf>+L7&@Ynfm1jR) zA0**zp(Q<}zs#LJT8km$00zhoc}d*c;04dg7=5_p6f1{Ro(jpd!Pz*gPd|Mg^_|d3 zC)`t_nnVRO4Y3`f*I7(bD${t4!Q$+^qtzVEqgKfQEkXlK7)TfE{bAg_q15Q!@ymAZ zsloeE`@GwYY|TcRhHdM}6I8rETu&{+Kzsr;v~~J24SU_O*L|TL0zVzsh@R(Bv=G0X zFXDqaSOD0u>3w|^ZzS+jRa-pn%d$%NRv$DZM=V>vOG>szta7W&7XWC%FtN_{hLs%q zy+|Yq!NJl^AwF6|yJJFiDnm7$BAb6A$fV;+drj_@yRjTnK{T4j5i|u2kx)Z&NUm+*ZHtNiNu{hw5Zf!oMT|iJ5Rt z%^0HP1QCAPgZzq%WC3qz`c6uyT zYW%d5H0YiU?Y&4;wpV(_N(Vgn1EXw%9#vA=vZz$M2&gF zDY7H*pQ>GnJ+=)xSeg;Uauks^d4b~dHp_o5I zi*bXq_x6V%Q@=;XlnI(=cC6duNMitn=wWNN7?k@1dbn@6qm{+@I*q^&xC1m$UgB4p z?+#~glJrdrKExerbSS{H+@*=*=fAv!ur&R}4W1Cbv}o329i-6#cO*)))bsOdFz9Tn zkSK;BFWrkk;7`9&VkZod-`a1=(Z6A^A_I~Y2K{_q752^KbRV%hPb{cLA94!;krwmn zz8RPy$9xLLWe85kN>|r*BBSc^Uz7GsIEixQK))-9e0t@)J*$vHdMlTCb$tJ(!r?8z z-xh^>3Y6Yb0CY3v%9pwR{DSl~{~qi9TYd)TEJT!FI@!3P3&kvtW!$=R}?v z9@Ue=^RtgkeV;vqV6v!bW^EjSD(7{t@fsGHp`^d!IQS92;{=~$`BJDkl5;SJl{tX` zIU4~-8Ir#!v8-)Ox4Qj(;5(0H#0XtJx0IdrN>c@$auDDFKZ7VLWUwXx-5It(ln)TMcAxfrP*jO4x& zU|lP-^)(Qxh<7a6dFl<1&k&8W@z53+FHWte!f2n%8xpT>8ou=rDAT)K5GtkV|LQ88 zz8*@U&su__0e@u$*zHb_VEd?NRIEQ7)d|kj7120QG6`;y zwdvX_nY=>Z0$t(Q?>jay8CBUO6_!-U&o|*`&aWknyXzwv-19y>3QVh~6rKGK4}ou2 zb$NRpeck@1Z+Jat9p8MGa~Mf#@Y)Jo^Nw};7RQQ?l6`F5lF{ZgCQ!gppYigMy~pLU zjw`RJ0yR7FB^fA+IN68K0y7+j9p=VZZOoHZihmz(tI`ME-Wau{6+B0TAb=RZ{HVPnZAv)9~y7|<4yL--t0aW^ZZJ#W5qILWiuFcg=q{K z-*oy3oQ(r_l;Cp^k#xCTmFVz;Jdq~84E}kud}{|9c5sE8m3MskExDq;Ews`dO5RL+ z1Y}hX<3OVAuJRliUoZjaKq~F4O2wvvhvEH{m>Ic-2VDM=f((n>%kdj#6h>T@^T00f z-xd)3-ox2OR%K@UTdCbgi>Ox&x+*@)LHf#oP43k_eePt#cwJwza={V(9%7$_hqvbi zwYMmKj-zqC+0e5O#{2Yp-!CoIi9`aS&Y&>_$2n*QTpyuIu|k;VO(@)cfQO0H!+~>` zMa2$XLCYhYLj!FcJ|PP8vV+epCZXujRdGLQeiV?9i*YN?@?s=W%)65F@I-K#6VZt8 zp?e=L>e)nX*tQBH1_yZ*;G%7T!(`H*oNTuD2+tATUPAN;f1v--IprW0t!FOd%d4iK zlEajubz3Fe8q#U{O1ILn;@g>CLqT$gLQY7k7brNcF7j*JTs{rx*T9Uv3$_XtuOH8U zq!o9p>V1z`U!RTXb|3cbF;-ZRNX?0By3}_jJqMCStke5_&89@b2F#WIZ)q zP3a5pm~eG|C0LZ_Z2kZUHYJlqIv`1Wc*D;uYe7@JRTO)V<;)xUNDp*BfKlrqbE0;S zzq`{E9X>7#%C13Frikhb?QEaM+^Sx2nnX(lT^-LrjGmqqshz8y8kLU-(LwcE8r`u4QEZH3?*Q9Oy zeH$gAot(obe>-y8e_b44@#m7+%SzrxCQ2$1a9;zbP!O zZJD&??#ft`a^WcV$SDPuel}Yvy~1UjK-x%*vZc~{dv#q<1Th0`9=SNbj`LQ`iY_F= zNVzQhHoiI-U@~^M3ng7b16en_^F{q8d{}Y9wDk!F=B-BB9m?@q7YKHoEzI$DR~>eo zrGY+H$WVKrcT$8YAH`%J%L1C!7DQ2#0Z)tOzxCzE*#^JC5)wRZKRscDPHNGXC*5uG z(jVUzU7MK`64%q-Tni2mkUh{*(3vepuy${30o0e=*l-;I@uRTG<{4`Xn$yq{Xo$*g z$aVSSMcl&gAx8pRV8n+B7DxBK;i4DXmi*cI{&pTMf%uQ*Aq2Y2=C zTmQElDDpyXLQO+4Ach|7taa49T*I=}7AMy$h+Fp1F<1UoCoPQkmv-PP2wX#5px9m% z`%LhKH0HlOAMZf@-Gu810yMh~^hsr<3pI==!;3!_2zP#8-zBtx1J(tQU{?f%r-~|p zQUIHh{e#k8R)yDX_Sscop7l?k>mPkUl*3#`mEK8Cj6pl1jN-Fk#IGoxn_pzWWb{(F z9VdN%eGYK&?h--;J9HpWfsORdF%=;gt{bfXDS84>F34eqs3@Y4H=;IUsR}U%Sf{;a zE3HA3#@o& zfn$iS_ku3BulrgGYuGdAw7lAFnc2Db0f-Y2?~Ksuiy0Lj!npB)RX9e| zhwES#svf94k3UkGU$V&;T@TK6_#K_3S#|CmT?P=KfscWLaKeqhNqVe<)8}3)T(N=|jTX`Nq_t^Xt68hrya_c{j#RpB>}~^p~kJJ|wcY zhqWc8S~plzjI5o^D$u*+cAw=;q5x+XmMIXpJ4h(aXoWtU5t=A(Q2;;uGc|)YPJhU<9yVhw`*RKC_deFCW#TxF zVZpN?le1}$XTH;ME+?pG_v7fque-d;+T%#4rc2TCwk7En$wY6=l7QAnw#vnbSQnkb zn+~S+7S!q z;gg^&EVXmji58BXGQ{?DLtb}e<3poptn4@ajk!<<&efM%yXeQF912MQXzjOOi_j=d zDW5JWqO&|D1TCjb4}h8Xj@sd^}0qv6%G{D zO259}Sf@&tKk2iYxT+K19lB=}M;$y3qNA(WNW7DG;3XyPVKZ?&sn}Nf{pd*M`y6qh z>mMwTZ|6=^NO8BsKfoz=#)93HHxShHSHjuW$$F{P_+r)?FXjU{1tH>;m~Z z)yi@Oh?CfVEI~Al&=ZpV9REF+_fs>uTp^)J(58e2O_9b0mN0!}4U6mU^AH#=1nXdD zlYigueL_fS1)1`;EUHJx7>!q`oFe0L4}#}u12piz)@;%zq$CG~#sxw>j?6ES_AWC@ zD<(DGP>ma!k~C)f5IMaw#`4Q@2IXI@p@0J;$-m7ukNMUtA0{ta@7N@c2utk$kEW{* ztD5;4&mkX%CO+hy1atYY&T zJR))sUsb$l)eH5D#v~xIilE_^6=OPqRh7Peac1MSU@{~EjCk2GfdWXe{>&vS9` zkB`YkpU#(aSyT;jLA#tTIOJQ$&~b6HUG&3EY&sNAE%M~$3h1j+VWC2zQ^abNyClzK zuTK~h8bF))FmhCgo|RXTrx;SZR0NjNa93_z-7!Gb;D_nvOMiNJ8$wPLAEnr=yFi=# z=|<(sdl7&K)ymc>^RW@tN73oj`u{4$UV2a zuI7yC{ls`h?y!gOKxirx8G_CLZF!#d<%Eo0Nwc8#Ho>>%Zs)O)>)N_D7(6++kS->J zo#MP5KB7$({D)YKtUyB3D?mL8o$oR0^Vv1CGaW;(KZ_P!rt?^ zYXes9s#Zmv7a|3jEjGU@vorsLmb|L|l#_1}zquLM;-`S9&=(@N#=;&IC_ z9h=ZH^abA0g+3};qZg(@La%~==ja5lQoU89zy?+*t|EIc`lm^7mOkzTZ+#q;iErfeaSVF&GnA1aPqgYKTzMvL?(hCRH`3zr?l)ZpX!se+veq4xD!(< zyZf6{PiP`{{?CA*Rq-*Gec-OtuoeQx|Lb1JcXn@6m4+4^eBZ&zjxQspmTWNFuD#}I z6FR@EmQ=0n`iQ7@m!F-u%STrar8V`@+~@mzv%Xv@m1;gp?++91w)6^$@GZf<6tVJGm@Z>^ly2@WZya?CB2}q5knwjk6su~{p(3IA zj#@j=FL+Hhkdy`A7b~2N?DG0L6-2z6{k8hr46g-`rJqfg8dpl;@R%j(t>S&XJ(|_M zwW6{qyo~+?fcekFQRb~}>~*yInAakK=p5TEv4W#}cJKZ*%nCcMf=&^qjQ%g|!-=kZ zs{f5RP#~vin|QNQ>wvG6yh>-S9Bk3!-@wwM8$;V{V>N%lYAW|3nmy179?Kh0(EG zLqDzST&iZd>69c$JAx%O6hUV8q5OPQf5XAh7FN0G7n+#~h|s13c?EenC8s9ZAz08= z&~jZ>dvUO0AOg-RrG-d!iG~-=+@w?)#OHS+H&l!SxHd7n%`E0P zIdW^lfm{d#kxTnP>lm$dS2MhUD zd*5&SF`H*pH3!z+|5CF%a7F~dIoG$(KmV13!+zX<%GNAt7*$_PJKF8wlTLsEdu~*; zr(ePU=h1+;v(GN-jdtpMP=gP6=9a&BLAx592gkwi>KtrI$`K@rGR?)jQY{M+;&4f94nlHg3FFCNEzBfen!hvmJbVqi#Vi+BgnuOV@|(4;reG z{(+S&9dOTn3))=iO_|4Pu|>XH;6iO(5~0ue*job{03Zir8>;=O*+7hjl03meonetT z>2KPys(Y7gew57!n*#AEI{Y6~g!HaZ=E_oa`R=t#i$7qh?P4Y3Ewepr-Ntw|J1}~F z0HdBQR<$Z^nbHx`L4v3~-Zk&yxWl#q0%+M$cPR%}HCiu-7a7k16d42le8bY?>G?5c zhc{5p+uXe%O?vqNr)}t{F`|A%eh#@%o zhyboNGV$D`-qM?0A7Ej11AS9vkf5hOJ6#PV=$4Oks_o}eix}C7 ziZXTnXcW_zll)CeB`itV;{sd;naDEGzUK)&1{s9`XodVy{#fWh$Gfnvtt&(6VT#=) z^wx!8{Jr~S7m%u-wLSZ3U*+K_BXsH;m^-5tHwssT)Fi3g%emuD5@M8qWLpB~BQDM% zcE)q@<@^>hz!Dc+aB=3*z12kLzBzximrUwVSG@hFn`SP0K&2tx%{iihTBMCNX!Q=+ z>q*n(W84Fqq*6Jdo(VgC$=MN>MK`1xd@7?mf)-bJ}df_gkpI_t1d z7khgbl}4p2s&7TOjg_>BE)pLZCxx7`C<3#ToFx3`m|zJpK3_LW6LTDf3KDe-WF_g@ zTABUwZJiGMyCqDMej=%&YuSyOIprz?(TyHQb>aZst{nD!0L(^M4JYq!!7fX&G zrnXlAjdM(d<lU#qO$2`J4Jd1ReI1Khlg6R6=d@F1dzi#X-FjE%jf-Vg@c|5UW*_D zUBA)#Oj>lRj&O<05AeV6XIoKtZPfjmAO~<`husf_dKjV5FFH+}wgo#_;+$*+2UQq@ z{6cJLOMW-Y=i3w)aIy%}pG8$eZ7|}$>eP#N4V=+?920)7NU8JAEWOO~E004sUFc(L zIM|wVAD!@54WgPr2Sk6P5h+ic(mpgO>)ZEv$6SvVzEb*gRk7#rfJ3rX=axTm=z%9G}h(THRpV1bKb%}7_?lVmfFzs8&;FuNRp#SP*(x_UqGm6GU zx+fiLkBwb_lIqoDwH%U@k2zNYM`uI8R&e_@z%6rdBokRRa4s02bg9^9O`9(lCE+Zz=B2=l#ZtQMl6*F4#YP(LL&0ZTrdlx^QaO7LFH7mizXRZih5c^xBcj-r_ToQ&=`gTpeVE9q*tNmuQzm?Sgh`i zJYTD^v`U8(iHvq{H3SvWJbgIJ?olDg;ZaKBEvE913Ml}KRz8D3A@1n(= zpc3vLq?bU;N4qJ5q2&)m(sB*xl^wH}gDuUGO`Jm7fls>ZaMJa=^-qd{`_+GFRR^-I zDQ^voO0xK{f65A!HF_Wv3;3nC0n+upT8n+JTyMBrlrvP&YC1}!(mWFad~W{c**Lg0 zb<|uff}p_X2E_;EW&7Lwkff9T?glv+8@kmo&4uCAM4EcV7I|)%+;RrZ3ZqE6 zLt<^cf3QjsqVHwJpguo4FLYb1GgP{kTPX_Oq58OJYh<2pI>n7P^^N&z3EO85`Tuha z(WnZsy>}WV5tr9pm7K9^sVSA5_ZU6$F z7vGQ4>|mVBcbBLz^?AXD0bO#k$@lcE2w_ zSEF1o`;x-@j6xBfVV&)W0#xgfMr#CLOKByT!t)kvjeHPL#+Wkgb1=|du~=x)PK-!N zbap7`?K2ZL?9{#}`Deo8eA1~eFX7W-8MbMf-sr;3F{+$@7@0fnEA?Iql@73z zD(5ekb+F0T>rAy{dgg)HLI6UG@AD8vb^k^Byb*5!;c-~g4UL1VGD;{;HK&A6l-Igg z&_zdE$&5sqVQ9MXfiEojU-eOv(@7W~sB3S(UYNdBN!l}y-blUPu&`T}-uE8!F6zHl zQSqZYC{`j70T_D2l5GNH)e3$IO)Zi-&715l^|*5#@*;|x>#oWwlb0a7lBiVMC5?Vv ziw!g!+%u{^){iCyMFg!f)pNQfZv1Xg=N@gi?2~MSTN`gDx$|~}st@RNx})T2Z>W6_ zdeK6SQOR?cgrmc=S1-h}lO$EyUGIj<6o~kn^VL${R5N zu&-I~cjD{2{pC+->Z+p#ndbEJ3+Oe7-X7!B?62X)Nft7+f4nid2xgM-3CWWvbSv69 zx&_-ypj7X|m@}9y0%eTLI1*tkTe{!mveMbI00QC1An=(zob<$TM<>=e_Ni z!BLDyG8i`28zrewtHN#AGhm?K_O#${Gr*0L5^4Sk3JfVfTeum6?c1>x@q7UTMf0Pp zA6dBe1+7Nj_6n}xRD&aNNJ1M~7>_QHyGVcscXp%i4Pqzg$IHj{D2AKLfy_~RRaf8Z zn??fGx_(S*8Eqs?62k-3nI!YJQ~!vmkT!0!IB5oXdvr!UFAEXHL-UK)-lrSbj#i9K zXN@fU-NS#^>lE^j;f+=6aCrHTElPk?!>CVd<5r2hHB$*{fy8Nm7g zvWL{=tN*z6PqDk$Pc*vv6N-slmEvdrppLm4Aedd(72ReJC1e9J`Y5xNXv6*;(=o?I z;ik;#Me|88c;44~+BT4lSSnE3*QcWN+KRpvtbO~nA|zPFXi6PlH*)aWgbER0=xT8h z(Tj=nbmkFeedAy6Mo$W;C&>9<8Sy)JEo6FbWDb!xeG_zj89Pg{q)vkf>ZQ@ht-O@A z>L`FaZ4_JVE>xm?XFFvLfHHv+X+BUte;%~OT#r9;Oqa0#dZ?VV>!zr9#=x-{1xVg7 zsb_+t8A_V*8q&InVF}N>I)>*#0?bI*3RreM-RBPneQvOwQgf`l3 zbqh!(ikp0z^HRmxc>(YME!cpt8WR@W_IBI{Y`c3GCUt`O91Ej3PQ7O>=R-%n9}^kf?FjG??vYvLILq` z;rXu|7d$|F43nfr2N*EHo&A19;!q9@d4}`9;Q<;+HcW%S8q9nMI~?ZO^p*nYaUQ_{h!gx*?XuRq&`++oO@t4^4q#YzU~?b}G9N4R`z9sNgdl)&3x8{0 z0DLt5vWaE+Kk?FE_JhbkIcD)%E<}R0G%__tPl$j!*r__6;}xDCqgKNJgu$KndeNQp3NC#9_;R7b z>@6N(#sUkxzddB&kZ+{XJJ>xhs1WT}Sl|z0p#ri-tz|u>`Qz6%>LyOV>KFkz?qC`9 z#wqzt+dcn6g(YZ;%us5%gY_p3;%*Mtxe;{Z0u~-Xx{UvcwoB(kupdR~Z|r%l{z4Ez z1&kvQX>#fR5h^+8V>_zTBlaR0cD`@6MFqu#428q^)34 zluuK_`z*TWKcqjV-i!>u1H_*XmE&Qb?mSBS42ARo00GRQL#CVk8$ZQ~fVK8#lQVsP z2?-ShDD#($v#2n@=SvTBcfteMmJ63k=B6)cIyPQ5%cegk zv3`>o+XyV@2z!nCiVR@^(3t-Mn$L-?slTOPh}rr~VgM*_7rsP%2D>W|nPIRXegQ>G zdNR^@cu)qe z;_%mo=dcn;e!Wr4d2kPF{3R0_f@?7?%z4@i_db2WdpkWpqVMW6Fif_g`*gWMQT~{O z>S4!LP+-gmdsAo?BxXJvWe|W}CxVq`ldx3hga>aXO#jsNkPB!ojOKo9MD|4xA8}#mk8t_N(02HEe-^-g8W>u7g=XukbX5+r>ZQU#Th}rLj6MSH zIe)GC`ZglrTff(vUWTy;`BDw}R3&ggGMjT%C0gH7-qX4X{@B7*%yu+YGaOJI>7uj8 zTt7!C%(@L9RdJvQY$vm%Yw*k?Kc{u+vf1d0Dx2HCeJ7|Km60(73_(Y?*RL?YQIj<+c+_n213)@UTLegub>>P#28b)_H~n;^(P^mVh68}>d2Gks)v_6)O|YE+ zXfI-!<*8+TCZ_@@1!`;PKr9DfGzN*OC3c~r9qu*(MRcsoQ0uut1h_fO^MXZ3xq!b0 zY}B!X&^Z9$-n$I$eZCWAGp$2Q1E?$kkia5fgAZ)N0dSUYQ6SW0$^t&V<%;+2VsHE*3@w01QSu zi~c}C{-g&01TtR$@9&>oI7VF7P51$`Y$H7jnnB{}WO7FHN>GWZQsOgo3c7I#ZZI+OduX+ zGXkkF{iE}iwzI>cde4H0CKwa2d+pyVM8{ST+S+t9P_uF&Cz62)sQV)P;+63FkN`om4h4X!YHc4c4=W`%-G4PFDCXx zFNqIu82&DJ+&u&u@{ zKEDf*t-53b)zA=}5SitPjpDODQhWfa&meibA*oo*U;K&z4!R{-=6B(SYF*H$_)H}P zy*d2~No}G9k8Qiv&Bz^ydIU+=D#fO~=D}%zXSt?E#kIw%fAcOnVNIHU=fgWVK>iAg z%BikL*G|MtP7ywirQ+z}wyh%2#GRe;>KY!{P;@9?9R{nXDlg|1#7rOl-9=GjYa#%R zqugci!~2D#t%B5Kxl;2?b}dg^GD@yuRZDxNCnIc|7~x)>S11HD_| z+>o6$#Asxkn7;MWf6xLfb02=W*z2t=WgI0E0K|)GCYz#tVV7bGBpPj-W(2XK>#(#M z@K}GwEA}YyHLd>PMN+tezq-?)pXTprNd}C2;?~SJOFMCcv{P8JA^=nsJg$!u z+gud6V4H`>nIhl(Cw|9Q69Dv6m|{fnzg9;s`KRJZ+KrM+;_ z!MD?0oir=fNygiC#hxqAQ2l*&57@buSFJD!p;#;nNGzkyy0OS6EE#YoJUsaIP?>{? z;MjPsA|n|FK(DDfrlkte=jC&!!jkccKYigjp^pR8c{|k~Dz~k6{}F;E>Or3KEAnbt z&<_ywO#92-w_S-Qw+i` zb5QET@j=go`b7(YpSaQP-VynRQJ_v5h&KgtoUi8^tMe7AS(R%c>lb_oA5ti|(jr~( z?H0kJ6v(b8QspG2k;}Aysl@WMN<3>WQ)Vf{f9iRW99{(n3W&55dozoM^WmrR?#)*3 zPBMiRwg2^yG@_nWgU%_=iK8KVVTDmjX$>8$XN5f7Qm;yPm0|LxkRO1?p8hEfZ1PYt zS;H3db@6Q|uJxxDWVAR0Iko`z?K+)i1z+9kedJoPhNebhR-%^6KL=g|6W|{0-vhu# zjMJFX&wTM3f4J4l%CUTOiL@tSd7k;!ZH*FLTr5UV@ZPyGw=8V*6<>1BX2FJLH`WG{ zLcGpxZhz{5Js$uN)44FAsIg1mMr*R@bI#oq1l!B5i=(jmd4CC3?@5;43m{$m8o&m` zPyVHH=DlgnSo)mu;ObuL@{Ve1>D`C@X0nn7SnRjEeCJy>o8sf=6Y-!LyS#l=ilGq{38HjBHx2B1n{}}X zN*coPdAt;rt#>|7c)1$C33~OLbxY|9?^rw&VA;*n=iUUXxFCWQ^q$&RZVoLoJlrBI zcwzb{ERipKtcTof48yi|qVf3BOcjk2o z%0b;mH{2J--uZEV!OjFArw?WRpYf)O)-JXI!-+f+E|w)4xT_9j`9pM7-DS0HmwURP zH3a}+)|tAmcY1%(+_LYz9`~*YE8(+0cRP`nA3RcaPAr(+9vz116~jU2lww~w_h1{U zy!8zf--IBJiuIh}f_1oFasbMlU}hNTL2}txnjc%PO2+SaoJCXWaxT`a_`H4FbxYeT z7o^gV50_7YvZXG>0RW(?w4E=LovgI3tv+|QaPC=w63&kdxG>9W2ku;E(k7wQ2?V@8 z9NDpC2E=p!PFfyPwOyE=M1qDno-lAZNN|LB$+&WZq*Ua235${L0fqdo@}VK05n`sj z0C5JA@5-9<5iaMm?<-=XTTS4Bf_hH)qI)l}10DtD{~R;It|t6m_8DP#21yHgy$ta$Gu}ji?LwKSFhJnwNk&Ec0)L@tE zv+0RsmgeW^1_1s2@V2MGhx`1@{@z3zIv6?VbepEu8_uNpKC1fYXC+rv;z?wss27V7IcSX%>e|u9h7F{7LD*BWYrd65DT5x4n)Ytq#P<#0;iv& z8JM(aHajMkI8gJyXE2yR1|XD~;|M~U@X$nX=*}k{e!5byVgZ2RG@oPQt>TX z34`+h%#QB80$;^8hd;ZLtCCAh{R+;~;PuyBCJ61)u``RyZ`)x((+D6`6&RO_e7OvU z)I+$SnR;#%MDlp1W2MxxNrC}pcx>q)yJi<3kn`WG+W?uX%-+T}MdATAX1#J?+c}u6 z0(}U0mTsy}30O$ID;e;8&5IvgP9RPicsRj37lGCX41b?B9hhSR{{SBX0G969!qj9K zoswi<*q;BdNz7va(9nN&F?$zYQNgZ<_zWT$GzHA$TT5j^5kiCjFp5-92;&#r+(!a$ zYqpF}-#=m5^a9*EbvP-~pr;4ex6&sxKue68jCdwj1-*F+>#YGe60plybN*SP|JnTm zREdTaTr`GBl*gBk%S7Kn^#QuUZmXs9`Q{t-xC0=uK;YSeb0(Oc!usCt$)Ty9S?d5! z9K5FA{}8reFE*A`$Jzte`Wu{**+vPqTUk|$@ag@>fmz#xHSk&Dxflp&uRV`iM3yL^ z&S0Tzhd4Md(Z zW4>9)Ro{Z}qj0F(vhG!uO|XG1kgvpuoi_LgOgw-yuD>F>Y;6eVJpD?B(vAamZxk`A zjvzao8J4$VfLnc@HKHAeQ+6VE*W2wZ%fSo#^M@4-H8}iOJ=fFP9tU7SPglsqamRMx z=1^J$4xI)f3V`*VoWRGElwo{ZeMY30-@CWTVdHS?DTp9@$Xv{3;|Y^MA+hv+V#}2M zCoFI<1IWYMhUx~$yK>m$qEIjLuR7J~?QidKh(B1J13Tp_6vfd`q8ANhKeB3RJJvDh^LI9M7h<*l!NFxvW*`$k7zX(2dCwCoxZMJ2wcid(> zE0rCMJ;Zl87(6J-F*>d{;O)ONdR@wOW4ke_>#_Yx0W@8?7gm2%GUMvRzEg*?B`zd2 znP+(M>OYihdR`ps56w{igit@=P{5zfT4B1=_0ST4JwDoSW^8NZA8N z*B4ug)@k1CsG;bN*b$jeo_0@o}4C=TgSuwYtX+TOS z*-1d7md;JffZG?Ge;gJnkFTNIU--o!J)YX&J~n6=_PvNT*@!!W?G(oB5OQ8KA5(;b zIz1jHUBAd8=;YsdiVcjEzSJUs-qUqv71p;sePOx4ltcRbRw^SM(6$KkJXMEdUH2N7 zIRj|Y6Ob`jh%t~)joTUqfaFo?QPiEeXFzCeixa6? zCmud7NL7|Idnyx&kep=&(!ZWfzdXZ#DT|YHh*LfP{Z9^JaTCsJal&S-V8L-pZm|v# z_gk-kTSNgn!y5*J(7NAXa;?bsVEuQDFr7Uy#tg;w`)O``LnH={65^5i{U+J2bUDoh zvwrF>F4b9@L~1;B=Y$Zj0ZMQHvheNv-|y?5k<-z~%_pxl;3lT2)q&57AKf0eI2Bea z26;ca@xtnr0cWx&2$o1c% z7N7L@xv$#kjpNUw$@q)wiz&+yv)mA8weOhY(1ZsGI!hh1@|^!EmkVz03hsEZ*(1Lh z1x7;%Tp`l+-frCFB={I?44Y~u)=>I>1y^XS4Z~KOk-WkfLb+DlJoWFQX4C3P6K*RB z8$<-lu#-pynoPR4)7SeR`JL%r_sQV8N91Mta8;GywTZbgib{K=p1U8TH9UOTGgA>c zql<}}ZA7G7 zdxM*D9DTuf6DL;fD9Dt}KVGMb@&3Vm3_4s=NTlJb1jg}WN*h116@(q-IqXV$rkRXO zTXKKwAm$Lb7jd||q}8!WfOf6E&SzEu9!Oz}7;xfc2Ev02fAi|Zm&yB*(On}|r*z{`jL%-~s8|{XJZg9V_T?Ix{;p6PZRdNm}!TcNd(nVcA-Y14v zU@svp8qJSyu94V<0;KQl=SD>ylg??C%m})1|4AyYzMvtJon-$L!S|R!=RBiiSjAdb z+3}B87lIA%`Mz*O>FE=ps*l9p17uq>Mu%Ia4d&0#pUz#m9rc&&s^H6E=(9DB)#wr`gc zO4x$#DrZLBK3tL+a5?{|44oloCCdpCni*wfF3IK9HoW7BF&Y){44REtTx;bw^N}!N zT4BxP&{BG7EubXyu8KRRYqs}bEXdPY93@*G^}P6nX@$$3Ut+;*iQ2n6I)z`{BL_u{ z?lPMTc4XwioRC2o$@m-a2ka~#cTe&+`c?h#^#U?p7_RWR1Y0IS&IuDT-4jp+xNA6t zOqIqD;1IH{;=7fxIrz_~6n|qn9@N^cmV~BJhM>;ZW(6tTq21l^*@*6x503q6RN)kN z;gbT+9W%GC9W9{mv>a1eF|)ZSrd-77S-_WohObG;mh|F&0+PHPy?AkaE%@uT`$vKf z;G=MYW_9pmnF-T))7Eg~*~nc(>lBtho7-X@JC*#w`8o@k*}|vpjsqkCPY$t((cy1C z7A5srQB^MD!>ZpM4aWO7m7BMgbp1I4F}`GSY-ti?R=E>meQujDSuCD9fi`!jg}S>6 zT?svWCB&i>XRQfp()5`o*4f%u7;a?}IIE6r&_WTYc4^l(9?6IOEthx;VcDnBIC+mF z?1#HAdG?7AYrO4ZcmEv1Aj_xQkzKf&?3i6WFdCNcE`^TFAk7p=)I&H>I+j27)Bo{i zHfXBnN7;zy;gYoa@2~Wl9|^JCwoOXSJoog%d%W(WUrBYOOi=~a_v-WidH_BsVa0tP zRoXCX!UV%QRxn(+&>>s$InQ(V}xA+dg|;1QW`}9de#ax6Ho+q%6=0j0{~=Z&)*23thd!a&}^sf>hF)2Clc1+li=mjIsjOkMj<96tEu+B`@6?;d%*6eK zD#4Z7K$f6V0F)fJtlFS`QSUSB_YS!Mf9s#Z*&Oa2$P`QLRztapjeev&2##jCyY8(0 zYE-NEI6FqOHPHz-IK%Srm2K2*yhq}vCu^<1P-zRC?1;bSwONrsjzln@r?l;yY2}G-8^%aLct#z(PZbTG(ldf%idW;t_@7c`BuGuvp8}jyI^?Z zW_uK`q+R7t=N56J7^36RgSuvILr&#p@aX!6an5Z$6f4=>YC6ZfWK}N-nyhslG&>G^ z**gB)(IVE0|G;rHZIzYGJmdv)!ET2>KVUGec4n;oBf&x6t26*EFfg#!FEe5aLzlvL z@FXKOj$n!Fsj7qzEf z9v*$KTwi?kVH0wCxbB4NI6Uk2Tl>r6QK{y*W*@Oy0X{4zEMHzRnk%L1dw`O{#$Tb{ zjKxWc!wJEOlqwLrHSzCH?;1liI9jm?Xm_`>B2~CAt43|gL zh2O#H=gqA!UQBLkpKyn-m0ahx5%nd#Ir?F)qDb=)FA- zDudUN;_K-5XD9oc_{wJxPZvCtLRj;W zsv94JAhd|IL~8ZTP3QunTLHT5s(3{c^lZ}@Abtg%04Yo5tBl%;(A$1BVbI( zy6$lZn<1t795SeT4rvwDL2mH3H#mebwUm~1m`WT1**w9Eg6v}AXP@5uu;L@BG^#Q; z!rGeMzQE2V-4E!Tos5%KNc1N8XQNk(w5%Z&!aB2ROjjP|?PR;STUsrv66zM;$ zv89$LYQ%F$vDTSWd#V6u-i{}y$-Ryo#S!-DHZtECI^N4I??qR6QT#9Oz8gi$1x@!d z@;ihkH`$*Njw&K#pj7=#kU~x1Ez5d0$_3OWX0v8)pfmYLj(H}=%ah*Jsp-LJa5!bO0YOLUby1KdK10mKy4V10iKSoH!gsUM%_N{Ix3IfAiXF~@Gq8PQ) zztutgdzHCSTBF_B{Hw`>@Xt6|q}uOSe{vqww6CC_UGNx>&afSw%s5W>xP4^Gva0o! z5a(kAy2X_1iG!YMS~>Kd9*V?-z1g?p9qL6k6_a1z>i>q*H{ky@3m?KVP*HlS<((EI z>-^WZ0dHBRkt-O^fM33G7T#`yp|#49&n@oh_7*wTDTjBaZjEE{_{9bK%&NH<`KO264{bg(;aAo^$Pt%~vS>y$75 zD2OyaqJ{K#Y~j^wJ4FlkUW^AkX3Wn?efemA6sE`c_ib)K*x^VfejMj-o~!JOdDH3i z{kj6}0`;Hg1}{`+g@<-sh^&7RVpThhmj-Elm@RirLjLMPee`kOj+epYzMr7OfWH); z5knR<08a%t(>>ED!mb3?gO|;E`Sw2ErlJ-#m&JjC77R|kcB{iLZ~2Hzf=(1Q_V|yX-XIwprIk&-Hon_|YMpaeyW|8Rj4X8TFI~q?4rRo;PbO~<@{xM1vknkY zXc+Qm;F}dcjyMn6seEKB*W*6BZBG

?-;JdwTuCUO6&=-UJ;Pl}~28Z2(~El=$-U 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

iXKMaVo*qgC1P_s8c) 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ⅅ6DI`+GhT1*<00y7D(wm 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

^?|vij)jRf)%IMp~LgLOH)$m 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 ZDF|K@BVu@(xFkl&NQJTd0Y|b*6##p88}9%B literal 0 HcmV?d00001 diff --git a/resources/themes/pastel-mm-bg.jpg b/resources/themes/pastel-mm-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c6c6d61f230461bd4376ba036d89a8622103d07 GIT binary patch literal 21642 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 literal 0 HcmV?d00001 diff --git a/resources/themes/pastel.css b/resources/themes/pastel.css new file mode 100644 index 000000000..c2a7c619e --- /dev/null +++ b/resources/themes/pastel.css @@ -0,0 +1,521 @@ +@import "../base.css"; + + +/* Fonts */ + +@font-face { + font-family: 'Vanchrome'; + src: url(/resources/themes/vanchrome.woff) format("woff"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Overpass'; + src: url(/resources/themes/overpass-regular.woff) format("woff"); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: 'Overpass'; + src: url(/resources/themes/overpass-bold.woff) format("woff"); + font-weight: 700; + font-style: normal; +} + + +/* Global variables */ + +:root { + + --color-background: #ddecf5; + + --color-light: #FFFFFF; + + --color-primary-dark: #13415c; + --color-primary: #457493; + --color-primary-medium: #77aac9; + --color-primary-light: #9dc4de; + + --color-secondary-dark: #9c8559; + --color-secondary: #c5b47a; + --color-secondary-medium: #e5d59e; + --color-secondary-light: #f3f3c6; + + --color-danger-dark: #7b1e2b; + --color-danger: #c83446; + --color-danger-medium: #ed6780; + --color-danger-light: #ee92a4; + + --color-success-dark: #4f7348; + --color-success: #82ad77; + --color-success-medium: #a3ce94; + --color-success-light: #c0dcaf; + + --color-copy: #555555; +} + +/* General formatting */ + +body { + font-family: 'Overpass', Arial, Helvetica, sans-serif; + background-color: var(--color-background); + font-size: 100%; + + background-image: url(/resources/themes/pastel-mm-bg.jpg); + background-position: center; + background-size: cover; + background-repeat: no-repeat; +} + +@media screen and (max-width: 1023px) { + body { + font-size: 90% !important; + } +} + +@media screen and (max-width: 767px) { + body { + font-size: 80% !important; + } +} + +h1, +h2 { + font-family: 'Vanchrome'; + font-weight: 500; + text-transform: uppercase; +} + +h2 { + font-size: 2.2em; + color: var(--color-primary-dark); + margin-bottom: 0.375em; +} + +a { + text-decoration: none; + color: var(--color-primary); +} + +a:hover { + text-decoration: none; + color: var(--color-primary-light); +} +a:active { + text-decoration: none; + color: var(--color-primary-dark); +} + + +a > svg { + fill: #EEEEEE !important; + display: inline-block !important; +} + +a > svg:hover, +a > svg:active { + fill: #FFFFFF !important; + transform: scale(1.05); +} + +p { + margin-bottom: 0.8em; +} + + +/* Logo and background */ + +.theme-logo { + background-image: url(/resources/themes/wf-logo-pastel.png); + background-position: center; + background-size: contain; + background-repeat: no-repeat; + margin-bottom: 1em; +} + +.background-blur { + backdrop-filter: blur(5px); +} + +.background-vignette { + box-shadow: 0 0 15em rgba(0, 0, 0, 0.6) inset; +} + +@media screen and (max-width: 1023px) { + .background-vignette { + box-shadow: 0 0 8em rgba(0, 0, 0, 0.6) inset !important; + } +} + +@media screen and (max-width: 767px) { + .background-vignette { + box-shadow: 0 0 4em rgba(0, 0, 0, 0.6) inset !important; + } +} + +/* Layout Windows */ + +.wf-window { + position: absolute; + height: 100vh; + width: 100%; + display: flex; + padding: 1em; +} + +.wf-window-centered { + justify-items: center; + justify-content: center; + align-items: center; + align-content: center; + flex-flow: column; +} + +@media screen and (max-height: 511px) { + .wf-window-centered { + flex-flow: row !important; + } + +} + +.wf-window-spaced { + justify-items: center; + justify-content: space-between; + align-items: center; + align-content: space-between; + flex-flow: column; + pointer-events: none; +} + +/* General elements */ + +.wf-footer { + position: absolute; + height: 2em; width: 100%; + top: calc(100% - 2em); + background-color: rgba(0,0,0,0.2); + color: #CCCCCC; + padding: 0.25em; + text-align: center; + font-size: 0.8em; +} + +.wf-footer a { + color: #CCCCCC; +} + +.wf-footer a:hover { + color: #EEEEEE; +} + +.wf-footer a:active { + color: #AAAAAA; +} + +/* Ingame HUD */ + +.wf-hud-menubar { + height: 4em; + padding: 0.5em; + width: 100%; + display: flex; + flex-direction: row; + align-items: flex-start; + align-content: flex-start; + justify-items: flex-end; + justify-content: flex-end; + pointer-events: all; +} + +/* Layout elements */ + +.wf-grid { + display: grid; + gap: 0.5em; +} + +.wf-grid-1col { + grid-template-columns: 1fr; +} + +.wf-grid-2col { + grid-template-columns: 1fr 1fr; +} + +@media screen and (max-width: 767px) { + .wf-grid-2col { + grid-template-columns: 1fr !important; + } +} + +.wf-grid-gap-lg { + gap: 1em; +} + +.wf-grid-gap-xl { + gap: 2em; +} + +/* Buttons */ + +.wf-btn { + display: inline-block; + text-align: center; + font-family: 'Overpass'; + font-size: 1em; + font-weight: 600; + padding: 0.5em 0.75em 0.5em 0.75em; + color: white; + background-color: #666666; + border: 2px solid #888888; + outline: 1px solid #444444; + outline-offset: -1px; + font-optical-sizing: auto; + text-decoration: none; + cursor: default; +} + +.wf-btn:hover { + background-color: #888888; + border: 2px solid #AAAAAA; + outline: 1px solid #666666; + transform: scale(1.01); + color: white; +} + +.wf-btn:active { + background-color: #444444; + border: 2px solid #888888; + outline: 1px solid #444444; + transform: scale(1.01); + color: white; +} + +.wf-btn-block { + display: block; + width: 100%; +} + +.wf-btn-circle { + padding-left: 0; + padding-right: 0; + border-radius: 100%; + width: 2.625em; + height: 2.625em; + padding-top: 0.45em !important; +} + +.wf-btn-circle > svg { + width: 1.5em; + height: 1.5em; + fill: var(--color-light); + display: block; + margin: 0 auto; +} + +.wf-btn-featured { + font-family: 'Vanchrome', sans-serif; + padding: 0.15em 0.5em; + font-size: 2em; + text-transform: uppercase; + font-weight: 500; +} + +/* Button colors */ + +/* Button colors */ + +.wf-btn-primary { + background-color: var(--color-primary); + border-color: var(--color-primary-medium); + outline-color: var(--color-primary-dark); +} + +.wf-btn-primary:hover { + background-color: var(--color-primary-medium); + border-color: var(--color-primary-light); + outline-color: var(--color-primary); +} + +.wf-btn-primary:active { + background-color: var(--color-primary-dark); + border-color: var(--color-primary-medium); + outline-color: var(--color-primary); +} + +.wf-btn-primary:disabled { + background-color: var(--color-primary-dark); + border-color: var(--color-primary-medium); + outline-color: var(--color-primary); + color: #999999; +} + +.wf-btn-secondary { + background-color: var(--color-secondary); + border-color: var(--color-secondary-medium); + outline-color: var(--color-secondary-dark); +} + +.wf-btn-secondary:hover { + background-color: var(--color-secondary-medium); + border-color: var(--color-secondary-light); + outline-color: var(--color-secondary); +} + +.wf-btn-secondary:active { + background-color: var(--color-secondary-dark); + border-color: var(--color-secondary-medium); + outline-color: var(--color-secondary); +} + +.wf-btn-danger { + background-color: var(--color-danger); + border: 2px solid var(--color-danger-medium); + outline: 1px solid var(--color-danger-dark); +} + +.wf-btn-danger:hover { + background-color: var(--color-danger-medium); + border-color: var(--color-danger-light); + outline-color: var(--color-danger); +} + +.wf-btn-danger:active { + background-color: var(--color-danger-dark); + border-color: var(--color-danger-medium); + outline-color: var(--color-danger); +} + +.wf-btn-success { + background-color: var(--color-success); + border: 2px solid var(--color-success-medium); + outline: 1px solid var(--color-success-dark); +} + +.wf-btn-success:hover { + background-color: var(--color-success-medium); + border-color: var(--color-success-light); + outline-color: var(--color-success); +} + +.wf-btn-success:active { + background-color: var(--color-success-dark); + border-color: var(--color-success-medium); + outline-color: var(--color-success); +} + +/* Panels and Modals */ + +.wf-panel { + background-color: #eeeeeebb; + flex-grow: 0; +} + +.wf-panel-header { + font-family: 'Vanchrome'; + font-size: 2.2em; + font-weight: 500; + text-transform: uppercase; + line-height: 0; + margin: 0; + padding: 0.75em 0.375em !important; + background-color: var(--color-danger); + color: white; + border-bottom: 3px solid var(--color-danger-dark); +} + +a.wf-panel-header-button { + text-decoration: none; + color: white; + float: right; + margin-right: 0.375em; + padding-top: 0.375em; +} + +a.wf-panel-header-button:hover { + color: var(--color-primary-light); +} + +a.wf-panel-header-button:active { + color: var(--color-primary-dark); +} + +.wf-modal-header { + font-size: 1em; + color: var(--color-primary); + margin: -0.5em -0.5em 0.5em -0.5em; + padding: 0.5em 0.5em 0.5em 0.5em; + border-bottom: 3px solid var(--color-primary-light); +} + +a.wf-modal-header-button { + text-decoration: none; + color: var(--color-primary); + float: right; +} + +a.wf-modal-header-button:hover { + color: var(--color-primary-light); +} + +a.wf-modal-header-button:active { + color: var(--color-primary-dark); +} + +.wf-panel-body { + color: var(--color-copy); + padding: 0.5em; + border: 3px solid var(--color-primary-light); + outline: 1px solid var(--color-primary); + outline-offset: -1px; + box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, 0.5); + max-height: 90vh; + overflow: auto; + width: 100%; +} + +.wf-panel-header + .wf-panel-body { + padding: 1em; +} + +.wf-panel-header+.wf-panel-body { + border-top: none; +} + +/* Labels */ + +.wf-lbl { + display: block; + background-color: #CCC; + border-left: 2px solid #999; + padding: 0.375em; +} + +.wf-lbl-danger { + background-color: var(--color-danger-light); + color: var(--color-danger-dark); + border-left: 2px solid var(--color-danger-dark); +} + +/* Form elements */ + +input.wf-form-control { + display: block; + background-color: var(color-form-element-bg); + border: none; + border-bottom: 2px solid var(--color-primary); + padding: 0.375em; + line-height: 1em; +} + +.wf-form-control-error { + border-bottom: 2px solid var(--color-danger) !important; +} + +input.wf-form-control:focus { + border: none; + outline: none; + border-bottom: 2px solid var(--color-secondary); +} diff --git a/resources/themes/pastel.json b/resources/themes/pastel.json new file mode 100644 index 000000000..37cf1ef5c --- /dev/null +++ b/resources/themes/pastel.json @@ -0,0 +1,36 @@ +{ + "territory": [ + "saturation * 0.5", + "lightness = 0.75" + ], + "border": [ + "saturation * 0.5", + "lightness = 0.65" + ], + "tiles": [ + "lightness = 0.8" + ], + "tileOverwrite": { + "grass": "rgb(244, 243, 198)", + "water": "rgb(160, 203, 231)" + }, + "shaders": [ + { + "type": "territory-outline", + "color": "rgba(152, 185, 223, 1)", + "thickness": 1 + }, + { + "type": "territory-outline-smooth", + "color": "rgba(255, 255, 255, 0.1)", + "thickness": 15 + }, + { + "type": "territory-inline", + "color": "rgba(201, 187, 139, 1)", + "thickness": 1 + } + ], + "background": "#7ba6c2", + "font": "Overpass" +} \ No newline at end of file diff --git a/resources/themes/vanchrome.woff b/resources/themes/vanchrome.woff new file mode 100644 index 0000000000000000000000000000000000000000..c3b2f7eab7dffba05f63a4df580c82e4552efebe GIT binary patch literal 13540 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 o@b6FBt$??>VssNgh9an1D_ + private game: ClientGame + + private lobbiesContainer: HTMLElement | null; + private lobbiesInterval: NodeJS.Timeout | null = null; + + constructor() { + this.startButton = document.getElementById('startButton') as HTMLButtonElement | null; + this.lobbiesContainer = document.getElementById('lobbies-container'); + + } + + initialize(): void { + this.terrainMap = loadTerrainMap() + this.startLobbyPolling() + } + + private startLobbyPolling(): void { + this.fetchAndUpdateLobbies(); // Fetch immediately on start + this.lobbiesInterval = setInterval(() => this.fetchAndUpdateLobbies(), 1000); + } + + private async fetchAndUpdateLobbies(): Promise { + try { + const data = await this.fetchLobbies(); + this.updateLobbiesDisplay(data.lobbies); + } catch (error) { + console.error('Error fetching and updating lobbies:', error); + } + } + + private updateLobbiesDisplay(lobbies: Array<{id: string}>): void { + if (!this.lobbiesContainer) return; + + this.lobbiesContainer.innerHTML = ''; // Clear existing lobbies + + lobbies.forEach(lobby => { + const button = document.createElement('button'); + button.textContent = `Join Lobby ${lobby.id}`; + button.onclick = () => this.joinLobby(lobby.id); + this.lobbiesContainer.appendChild(button); + }); + + // Join first lobby + if (!this.hasJoined && lobbies.length > 0) { + this.hasJoined = true + console.log(`joining lobby ${lobbies[0].id}`) + this.joinLobby(lobbies[0].id) + } + } + + async fetchLobbies() { + const url = '/lobbies'; + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}, statusText: ${response.statusText}`); + } + const data = await response.json(); + return data; + } catch (error) { + console.error('Error fetching lobbies:', error); + throw error; + } + } + + private async joinLobby(lobbyID: string) { + this.terrainMap.then((map) => { + this.game = createClientGame(uuidv4().slice(0, 4), generateUniqueID(), lobbyID, defaultSettings, map) + this.game.joinLobby() + }) + } +} + +// Initialize the client when the DOM is loaded +document.addEventListener('DOMContentLoaded', () => { + new Client().initialize(); +}); \ No newline at end of file diff --git a/src/client/ClientGame.ts b/src/client/ClientGame.ts new file mode 100644 index 000000000..14e41d3ac --- /dev/null +++ b/src/client/ClientGame.ts @@ -0,0 +1,231 @@ +import {Executor} from "../core/execution/Executor"; +import {Cell, ClientID, MutableGame, LobbyID, PlayerEvent, PlayerID, PlayerInfo, MutablePlayer, TerrainMap, TileEvent, Player, Game, BoatEvent} from "../core/Game"; +import {createGame} from "../core/GameImpl"; +import {Ticker, TickEvent} from "../core/Ticker"; +import {EventBus} from "../core/EventBus"; +import {Settings} from "../core/Settings"; +import {GameRenderer} from "./GameRenderer"; +import {InputHandler, MouseUpEvent, ZoomEvent, DragEvent, MouseDownEvent} from "./InputHandler" +import {ClientIntentMessageSchema, ClientJoinMessageSchema, ClientMessageSchema, ServerMessage, ServerMessageSchema, ServerSyncMessage, Turn} from "../core/Schemas"; +import {AttackIntent, Intent, SpawnIntent} from "../core/Schemas"; + + + +export function createClientGame(name: string, clientID: ClientID, lobbyID: LobbyID, settings: Settings, terrainMap: TerrainMap): ClientGame { + let eventBus = new EventBus() + let gs = createGame(terrainMap, eventBus) + let gameRenderer = new GameRenderer(gs, settings.theme(), document.createElement("canvas")) + let ticker = new Ticker(settings.tickIntervalMs(), eventBus) + + return new ClientGame( + name, + clientID, + lobbyID, + ticker, + eventBus, + gs, + gameRenderer, + new InputHandler(eventBus), + new Executor(gs) + ) +} + +export class ClientGame { + + private myPlayer: Player + private turns: Turn[] = [] + private socket: WebSocket + private started = false + + private ticksPerTurn = 1 + + private ticksThisTurn = 0 + private currTurn = 0 + + constructor( + private playerName: string, + private id: ClientID, + private lobbyID: LobbyID, + private ticker: Ticker, + private eventBus: EventBus, + private gs: Game, + private renderer: GameRenderer, + private input: InputHandler, + private executor: Executor + ) { } + + public joinLobby() { + this.socket = new WebSocket(`ws://localhost:3000`) + this.socket.onopen = () => { + console.log('Connected to game server!'); + this.socket.send( + JSON.stringify( + ClientJoinMessageSchema.parse({ + type: "join", + lobbyID: this.lobbyID, + clientID: this.id + }) + ) + ) + }; + this.socket.onmessage = (event: MessageEvent) => { + const message: ServerMessage = ServerMessageSchema.parse(JSON.parse(event.data)) + if (message.type == "start") { + console.log("starting game!") + this.start() + } + if (message.type == "turn") { + this.addTurn(message.turn) + } + }; + } + + public start() { + this.started = true + console.log('starting game!') + // TODO: make each class do this, or maybe have client intercept all requests? + //this.eventBus.on(TickEvent, (e) => this.tick(e)) + this.eventBus.on(TileEvent, (e) => this.renderer.tileUpdate(e)) + this.eventBus.on(PlayerEvent, (e) => this.playerEvent(e)) + this.eventBus.on(BoatEvent, (e) => this.renderer.boatEvent(e)) + this.eventBus.on(MouseUpEvent, (e) => this.inputEvent(e)) + this.eventBus.on(ZoomEvent, (e) => this.renderer.onZoom(e)) + this.eventBus.on(DragEvent, (e) => this.renderer.onMove(e)) + + this.renderer.initialize() + this.input.initialize() + this.executor.spawnBots(500) + + + setInterval(() => this.tick(), 10); + } + + public addTurn(turn: Turn): void { + this.turns.push(turn) + } + + public tick() { + if (this.ticksThisTurn >= this.ticksPerTurn) { + if (this.currTurn >= this.turns.length) { + return + } + this.executor.addTurn(this.turns[this.currTurn]) + this.currTurn++ + this.ticksThisTurn = 0 + } + this.ticksThisTurn++ + console.log('client ticking') + this.gs.tick() + } + + private playerEvent(event: PlayerEvent) { + console.log('received new player event!') + // TODO: what if multiple players has same name + if (event.player.info().name == this.playerName) { + console.log('setting name') + this.myPlayer = event.player + } + this.renderer.playerEvent(event) + } + + private inputEvent(event: MouseDownEvent) { + const cell = this.renderer.screenToWorldCoordinates(event.x, event.y) + const tile = this.gs.tile(cell) + if (!tile.hasOwner() && !this.hasSpawned()) { + this.sendSpawnIntent(cell) + return + } + if (!this.hasSpawned()) { + return + } + + const owner = tile.owner() + const targetID = owner.isPlayer() ? owner.id() : null + if (tile.owner() != this.myPlayer) { + if (this.myPlayer.sharesBorderWith(tile.owner())) { + this.sendAttackIntent(targetID, cell) + } else { + // TODO verify on ocean + console.log('going to send boat') + this.sendBoatAttackIntent(targetID, cell) + } + } + + } + + private hasSpawned(): boolean { + return this.myPlayer != null + } + + private sendSpawnIntent(cell: Cell) { + const spawn = JSON.stringify( + ClientIntentMessageSchema.parse({ + type: "intent", + clientID: this.id, + intent: { + type: "spawn", + name: this.playerName, + isBot: false, + x: cell.x, + y: cell.y + } + }) + ) + console.log(spawn) + if (this.socket.readyState === WebSocket.OPEN) { + console.log(`seding spawn intent: ${spawn}`) + this.socket.send(spawn) + } else { + console.log('WebSocket is not open. Current state:', this.socket.readyState); + } + } + + private sendAttackIntent(targetID: PlayerID, cell: Cell) { + const attack = JSON.stringify( + ClientIntentMessageSchema.parse({ + type: "intent", + clientID: this.id, + intent: { + type: "attack", + attackerID: this.myPlayer.id(), + targetID: targetID, + troops: 2000, + targetX: cell.x, + targetY: cell.y + } + }) + ) + console.log(attack) + if (this.socket.readyState === WebSocket.OPEN) { + console.log(`sending attack intent: ${attack}`) + this.socket.send(attack) + } else { + console.log('WebSocket is not open. Current state:', this.socket.readyState); + } + } + + private sendBoatAttackIntent(targetID: PlayerID, cell: Cell) { + const attack = JSON.stringify( + ClientIntentMessageSchema.parse({ + type: "intent", + clientID: this.id, + intent: { + type: "boat", + attackerID: this.myPlayer.id(), + targetID: targetID, + troops: 2000, + x: cell.x, + y: cell.y, + } + }) + ) + console.log(attack) + if (this.socket.readyState === WebSocket.OPEN) { + console.log(`sending boat attack intent: ${attack}`) + this.socket.send(attack) + } else { + console.log('WebSocket is not open. Current state:', this.socket.readyState); + } + } + +} \ No newline at end of file diff --git a/src/client/GameRenderer.ts b/src/client/GameRenderer.ts new file mode 100644 index 000000000..f001bcc59 --- /dev/null +++ b/src/client/GameRenderer.ts @@ -0,0 +1,261 @@ +import {Colord} from "colord"; +import {Cell, MutableGame, Game, PlayerEvent, Tile, TileEvent, Player, Execution, BoatEvent} from "../core/Game"; +import {Theme} from "../core/Settings"; +import {DragEvent, ZoomEvent} from "./InputHandler"; +import {calculateBoundingBox, placeName} from "./NameBoxCalculator"; +import {PseudoRandom} from "../core/PseudoRandom"; +import {BoatAttackExecution} from "../core/execution/BoatAttackExecution"; + +class NameRender { + constructor(public lastRendered: number, public location: Cell, public fontSize: number) { } +} + +export class GameRenderer { + + private scale: number = .8 + private offsetX: number = 0 + private offsetY: number = 100 + + private context: CanvasRenderingContext2D + + private imageData: ImageData + + private nameRenders: Map = new Map() + + private rand = new PseudoRandom(10) + + constructor(private gs: Game, private theme: Theme, private canvas: HTMLCanvasElement) { + this.context = canvas.getContext("2d") + } + + initialize() { + this.canvas = document.createElement('canvas'); + this.context = this.canvas.getContext('2d'); + + // Set canvas style to fill the screen + this.canvas.style.position = 'fixed'; + this.canvas.style.left = '0'; + this.canvas.style.top = '0'; + this.canvas.style.width = '100%'; + this.canvas.style.height = '100%'; + + this.imageData = this.context.getImageData(0, 0, this.gs.width(), this.gs.height()) + this.initImageData() + + + document.body.appendChild(this.canvas); + window.addEventListener('resize', () => this.resizeCanvas()); + this.resizeCanvas(); + + requestAnimationFrame(() => this.renderGame()); + } + + initImageData() { + this.gs.forEachTile((tile) => { + //const color = this.theme.terrainColor(tile.terrain()) + this.paintTile(tile) + }) + } + + resizeCanvas() { + this.canvas.width = window.innerWidth; + this.canvas.height = window.innerHeight; + //this.redraw() + } + + renderGame() { + // Clear the canvas + this.context.setTransform(1, 0, 0, 1, 0, 0); + this.context.clearRect(0, 0, this.gs.width(), this.gs.height()); + + // Set background + this.context.fillStyle = this.theme.backgroundColor().toHex(); + this.context.fillRect(0, 0, this.gs.width(), this.gs.height()); + + // Create a temporary canvas for the game content + const tempCanvas = document.createElement('canvas'); + const tempCtx = tempCanvas.getContext('2d'); + tempCanvas.width = this.gs.width(); + tempCanvas.height = this.gs.height(); + + // Put the ImageData on the temp canvas + tempCtx.putImageData(this.imageData, 0, 0); + + // Disable image smoothing for pixelated effect + if (this.scale > 3) { + this.context.imageSmoothingEnabled = false; + } else { + this.context.imageSmoothingEnabled = true; + } + + // Apply zoom and pan + this.context.setTransform( + this.scale, + 0, + 0, + this.scale, + this.gs.width() / 2 - this.offsetX * this.scale, + this.gs.height() / 2 - this.offsetY * this.scale + ); + + // Draw the game content from the temp canvas + this.context.drawImage( + tempCanvas, + -this.gs.width() / 2, + -this.gs.height() / 2, + this.gs.width(), + this.gs.height() + ); + + let numCalcs = 0 + for (const player of this.gs.players()) { + if (numCalcs < 50 && this.maybeRecalculatePlayerInfo(player)) { + numCalcs++ + } + this.renderPlayerInfo(player) + } + + // const paths = this.gs.executions().map(e => e as Execution).filter(e => e instanceof BoatAttackExecution).map(e => e as BoatAttackExecution).filter(e => e.path != null).map(e => e.path) + // paths.forEach(p => { + // p.forEach(t => { + // this.paintCell(t.cell(), new Colord({r: 255, g: 255, b: 255})) + // }) + // }) + + requestAnimationFrame(() => this.renderGame()); + } + + maybeRecalculatePlayerInfo(player: Player): boolean { + if (!this.nameRenders.has(player)) { + this.nameRenders.set(player, new NameRender(0, null, null)) + } + + const render = this.nameRenders.get(player) + + let wasUpdated = false + + if (Date.now() - render.lastRendered > 1000) { + render.lastRendered = Date.now() + this.rand.nextInt(0, 100) + wasUpdated = true + + const box = calculateBoundingBox(player) + const centerX = box.min.x + ((box.max.x - box.min.x) / 2) + const centerY = box.min.y + ((box.max.y - box.min.y) / 2) + render.location = new Cell(centerX, centerY) + render.fontSize = Math.max(Math.min(box.max.x - box.min.x, box.max.y - box.min.y) / player.info().name.length / 2, 1) + } + return wasUpdated + } + + renderPlayerInfo(player: Player) { + if (!player.isAlive()) { + return + } + if (!this.nameRenders.has(player)) { + return + } + + const render = this.nameRenders.get(player) + + this.context.font = `${render.fontSize}px Arial`; + this.context.fillStyle = this.theme.playerInfoColor(player.id()).toHex(); + this.context.textAlign = 'center'; + this.context.textBaseline = 'middle'; + + const nameCenterX = render.location.x - this.gs.width() / 2 + const nameCenterY = render.location.y - this.gs.height() / 2 + this.context.fillText(player.info().name, nameCenterX, nameCenterY - render.fontSize / 2); + this.context.fillText(String(Math.floor(player.troops())), nameCenterX, nameCenterY + render.fontSize); + } + + tileUpdate(event: TileEvent) { + this.paintTile(event.tile) + this.gs.neighbors(event.tile.cell()).forEach(c => this.paintTile(this.gs.tile(c))) + } + + playerEvent(event: PlayerEvent) { + } + + boatEvent(event: BoatEvent) { + this.paintCell(event.boat.cell(), new Colord({r: 255, g: 255, b: 255})) + this.gs.neighbors(event.boat.cell()).map(c => this.gs.tile(c)).forEach(t => this.paintTile(t)) + } + + resize(width: number, height: number): void { + this.canvas.width = Math.ceil(width / window.devicePixelRatio); + this.canvas.height = Math.ceil(height / window.devicePixelRatio); + } + + paintTile(tile: Tile) { + // const index = (tile.cell().y * this.gs.width()) + tile.cell().x + // color.toRGB().writeToBuffer(this.imageData.data, index * 4) + let terrainColor = this.theme.terrainColor(tile.terrain()) + this.paintCell(tile.cell(), terrainColor) + const owner = tile.owner() + if (owner.isPlayer()) { + if (tile.isBorder()) { + this.paintCell(tile.cell(), this.theme.borderColor(owner.id())) + } else { + this.paintCell(tile.cell(), this.theme.territoryColor(owner.id())) + } + } + } + + paintCell(cell: Cell, color: Colord) { + const index = (cell.y * this.gs.width()) + cell.x + const offset = index * 4 + this.imageData.data[offset] = color.rgba.r; + this.imageData.data[offset + 1] = color.rgba.g; + this.imageData.data[offset + 2] = color.rgba.b; + this.imageData.data[offset + 3] = color.rgba.a * 255 | 0 + } + + onZoom(event: ZoomEvent) { + const oldScale = this.scale; + const zoomFactor = 1 + event.delta / 600; + this.scale *= zoomFactor; + + // Clamp the scale to prevent extreme zooming + this.scale = Math.max(0.1, Math.min(10, this.scale)); + + const canvasRect = this.canvas.getBoundingClientRect(); + const canvasX = event.x - canvasRect.left; + const canvasY = event.y - canvasRect.top; + + // Calculate the world point we want to zoom towards + const zoomPointX = (canvasX - this.gs.width() / 2) / oldScale + this.offsetX; + const zoomPointY = (canvasY - this.gs.height() / 2) / oldScale + this.offsetY; + + // Adjust the offset + this.offsetX = zoomPointX - (canvasX - this.gs.width() / 2) / this.scale; + this.offsetY = zoomPointY - (canvasY - this.gs.height() / 2) / this.scale; + } + + onMove(event: DragEvent) { + this.offsetX -= event.deltaX / this.scale; + this.offsetY -= event.deltaY / this.scale; + } + + + screenToWorldCoordinates(screenX: number, screenY: number): Cell { + + const canvasRect = this.canvas.getBoundingClientRect(); + const canvasX = screenX - canvasRect.left; + const canvasY = screenY - canvasRect.top; + + // Calculate the world point we want to zoom towards + const centerX = (canvasX - this.gs.width() / 2) / this.scale + this.offsetX; + const centerY = (canvasY - this.gs.height() / 2) / this.scale + this.offsetY; + + const gameX = centerX + this.gs.width() / 2 + const gameY = centerY + this.gs.height() / 2 + + + console.log(`zoom point ${centerX} ${centerY}`) + console.log(`Current scale: ${this.scale}`); + console.log(`Current offset: ${this.offsetX}, ${this.offsetY}`); + + return new Cell(Math.floor(gameX), Math.floor(gameY)); + } + +} \ No newline at end of file diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts new file mode 100644 index 000000000..bad6f4f70 --- /dev/null +++ b/src/client/InputHandler.ts @@ -0,0 +1,93 @@ +import {EventBus, GameEvent} from "../core/EventBus"; +import {Cell} from "../core/Game"; + +export class MouseUpEvent implements GameEvent { + constructor( + public readonly x: number, + public readonly y: number, + ) { } +} + +export class MouseDownEvent implements GameEvent { + constructor( + public readonly x: number, + public readonly y: number, + ) { } +} + +export class ZoomEvent implements GameEvent { + constructor( + public readonly x: number, + public readonly y: number, + public readonly delta: number + ) { } +} + +export class DragEvent implements GameEvent { + constructor( + public readonly deltaX: number, + public readonly deltaY: number, + ) { } +} + +export class InputHandler { + + private lastMouseDownX: number = 0 + private lastMouseDownY: number + + private isMouseDown: boolean = false; + private lastMouseX: number = 0; + private lastMouseY: number = 0; + + constructor(private eventBus: EventBus) { } + + initialize() { + document.addEventListener("pointerdown", (e) => this.onPointerDown(e)); + document.addEventListener("pointerup", (e) => this.onPointerUp(e)); + document.addEventListener("wheel", (e) => this.onScroll(e), {passive: false}); + document.addEventListener('mousedown', this.onMouseDown.bind(this)); + document.addEventListener('mousemove', this.onMouseMove.bind(this)); + document.addEventListener('mouseup', this.onMouseUp.bind(this)); + document.addEventListener('mouseleave', this.onMouseUp.bind(this)) + } + + onPointerDown(event: PointerEvent) { + this.lastMouseDownX = event.x + this.lastMouseDownY = event.y + this.eventBus.emit(new MouseDownEvent(event.x, event.y)) + } + + onPointerUp(event: PointerEvent) { + const dist = Math.abs(event.x - this.lastMouseDownX) + Math.abs(event.y - this.lastMouseDownY); + if (dist < 10) { + this.eventBus.emit(new MouseUpEvent(event.x, event.y)) + } + } + + private onScroll(event: WheelEvent) { + this.eventBus.emit(new ZoomEvent(event.x, event.y, event.deltaY)) + } + + private onMouseDown(event: MouseEvent) { + this.isMouseDown = true; + this.lastMouseX = event.clientX; + this.lastMouseY = event.clientY; + } + + private onMouseMove(event: MouseEvent) { + if (!this.isMouseDown) return; + + const deltaX = event.clientX - this.lastMouseX; + const deltaY = event.clientY - this.lastMouseY; + + this.eventBus.emit(new DragEvent(deltaX, deltaY)) + + this.lastMouseX = event.clientX; + this.lastMouseY = event.clientY; + } + + private onMouseUp(event: MouseEvent) { + this.isMouseDown = false; + } + +} \ No newline at end of file diff --git a/src/client/NameBoxCalculator.ts b/src/client/NameBoxCalculator.ts new file mode 100644 index 000000000..68111c1fc --- /dev/null +++ b/src/client/NameBoxCalculator.ts @@ -0,0 +1,127 @@ +import {Game, Player, Tile, Cell} from '../core/Game'; + +export interface Point { + x: number; + y: number; +} + +export interface Rectangle { + x: number; + y: number; + width: number; + height: number; +} + +export function placeName(game: Game, player: Player): [position: Cell, fontSize: number] { + const boundingBox = calculateBoundingBox(player); + const grid = createGrid(game, player, boundingBox); + const largestRectangle = findLargestInscribedRectangle(grid); + + const center = new Cell( + largestRectangle.x + largestRectangle.width / 2, + largestRectangle.y + largestRectangle.height / 2, + ) + + const fontSize = calculateFontSize(largestRectangle, player.info().name); + + return [center, fontSize] +} + +export function calculateBoundingBox(player: Player): {min: Point; max: Point} { + let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; + + player.borderTiles().forEach((tile: Tile) => { + const cell = tile.cell(); + minX = Math.min(minX, cell.x); + minY = Math.min(minY, cell.y); + maxX = Math.max(maxX, cell.x); + maxY = Math.max(maxY, cell.y); + }); + + return {min: {x: minX, y: minY}, max: {x: maxX, y: maxY}}; +} + +export function createGrid(game: Game, player: Player, boundingBox: {min: Point; max: Point}): boolean[][] { + const width = boundingBox.max.x - boundingBox.min.x + 1; + const height = boundingBox.max.y - boundingBox.min.y + 1; + const grid: boolean[][] = Array(width).fill(null).map(() => Array(height).fill(false)); + + for (let y = boundingBox.min.y; y <= boundingBox.max.y; y++) { + for (let x = boundingBox.min.x; x <= boundingBox.max.x; x++) { + const cell = new Cell(x, y); + if (game.isOnMap(cell)) { + const tile = game.tile(cell); + grid[x - boundingBox.min.x][y - boundingBox.min.y] = tile.owner() === player; + } + } + } + + return grid; +} + +export function findLargestInscribedRectangle(grid: boolean[][]): Rectangle { + const rows = grid[0].length; + const cols = grid.length; + const heights: number[] = new Array(cols).fill(0); + let largestRect: Rectangle = {x: 0, y: 0, width: 0, height: 0}; + + for (let row = 0; row < rows; row++) { + for (let col = 0; col < cols; col++) { + if (grid[col][row]) { + heights[row]++; + } else { + heights[row] = 0; + } + } + + const rectForRow = largestRectangleInHistogram(heights); + + if (rectForRow.width * rectForRow.height > largestRect.width * largestRect.height) { + largestRect = { + x: rectForRow.x, + y: row - rectForRow.height + 1, + width: rectForRow.width, + height: rectForRow.height + }; + } + } + + return largestRect; +} + +export function largestRectangleInHistogram(widths: number[]): Rectangle { + const stack: number[] = []; + let maxArea = 0; + let largestRect: Rectangle = {x: 0, y: 0, width: 0, height: 0}; + + for (let i = 0; i <= widths.length; i++) { + const h = i === widths.length ? 0 : widths[i]; + + while (stack.length > 0 && h < widths[stack[stack.length - 1]]) { + const height = widths[stack.pop()!]; + const width = stack.length === 0 ? i : i - stack[stack.length - 1] - 1; + + if (height * width > maxArea) { + maxArea = height * width; + largestRect = { + x: stack.length === 0 ? 0 : stack[stack.length - 1] + 1, + y: 0, + width: width, + height: height + }; + } + } + + stack.push(i); + } + + return largestRect; +} + +export function calculateFontSize(rectangle: Rectangle, name: string): number { + // This is a simplified calculation. You might want to adjust it based on your specific font and rendering system. + const aspectRatio = name.length; // Assuming width:height ratio of 2:1 for each character + const widthConstrained = rectangle.width / name.length; + const heightConstrained = rectangle.height / 2; + return Math.min(widthConstrained, heightConstrained); +} \ No newline at end of file diff --git a/src/client/index.html b/src/client/index.html new file mode 100644 index 000000000..dc4b8ed64 --- /dev/null +++ b/src/client/index.html @@ -0,0 +1,21 @@ + + + + + + + Warfront + + + +

Warfront

+ +
+
+

Available Lobbies

+ +
+
+ + + \ No newline at end of file diff --git a/src/core/EventBus.ts b/src/core/EventBus.ts new file mode 100644 index 000000000..95f8acf84 --- /dev/null +++ b/src/core/EventBus.ts @@ -0,0 +1,40 @@ +export interface GameEvent { } + +export interface EventConstructor { + new(...args: any[]): T; +} + +export class EventBus { + private listeners: Map void>> = new Map(); + + emit(event: T): void { + const eventConstructor = event.constructor as EventConstructor; + const callbacks = this.listeners.get(eventConstructor); + if (callbacks) { + for (const callback of callbacks) { + callback(event); + } + } + } + + on( + eventType: EventConstructor, + callback: (event: T) => void + ): void { + if (!this.listeners.has(eventType)) { + this.listeners.set(eventType, []); + } + const callbacks = this.listeners.get(eventType)!; + callbacks.push(callback as (event: GameEvent) => void); + } + + off(eventType: EventConstructor, callback: (event: T) => void): void { + const callbacks = this.listeners.get(eventType); + if (callbacks) { + const index = callbacks.indexOf(callback as (event: GameEvent) => void); + if (index > -1) { + callbacks.splice(index, 1); + } + } + } +} \ No newline at end of file diff --git a/src/core/Game.ts b/src/core/Game.ts new file mode 100644 index 000000000..b94210a80 --- /dev/null +++ b/src/core/Game.ts @@ -0,0 +1,153 @@ +import {GameEvent} from "./EventBus" + +export type ClientID = string + +export type PlayerID = number // TODO: make string? + +export type GameID = string + +export type LobbyID = string + +export class Cell { + constructor( + public readonly x, + public readonly y + ) { } + + toString(): string {return `Cell[${this.x},${this.y}]`} +} + +export interface ExecutionView { + isActive(): boolean + owner(): Player +} + +export interface Execution extends ExecutionView { + init(mg: MutableGame, ticks: number) + tick(ticks: number) + owner(): MutablePlayer +} + +export class PlayerInfo { + constructor( + public readonly name: string, + public readonly isBot: boolean + ) { } +} + +// TODO: make terrain api better. +export class Terrain { + constructor( + public readonly expansionCost: number, + public readonly expansionTime: number, + ) { } +} + +export type TerrainType = typeof TerrainTypes[keyof typeof TerrainTypes]; + +export const TerrainTypes = { + Land: new Terrain(1, 1), + Water: new Terrain(0, 0) +} + +export interface TerrainMap { + terrain(cell: Cell): Terrain + width(): number + height(): number +} + +export interface Tile { + owner(): Player | TerraNullius + hasOwner(): boolean + isBorder(): boolean + isInterior(): boolean + cell(): Cell + terrain(): Terrain + game(): Game + neighbors(): Tile[] + onShore(): boolean +} + +export interface Boat { + troops(): number + cell(): Cell + owner(): Player + target(): Player | TerraNullius +} + +export interface MutableBoat extends Boat { + move(cell: Cell): void + owner(): MutablePlayer + target(): MutablePlayer | TerraNullius + setTroops(troops: number): void +} + +export interface TerraNullius { + ownsTile(cell: Cell): boolean + isPlayer(): false +} + +export interface Player { + info(): PlayerInfo + id(): PlayerID + troops(): number + boats(): Boat[] + ownsTile(cell: Cell): boolean + isAlive(): boolean + executions(): ExecutionView[] + borderTiles(): ReadonlySet + borderTilesWith(other: Player | TerraNullius): ReadonlySet + isPlayer(): this is Player + neighbors(): (Player | TerraNullius)[] + numTilesOwned(): number + sharesBorderWith(other: Player | TerraNullius): boolean +} + +export interface MutablePlayer extends Player { + setTroops(troops: number): void + addTroops(troops: number): void + removeTroops(troops: number): void + conquer(cell: Cell): void + executions(): Execution[] + neighbors(): (MutablePlayer | TerraNullius)[] + boats(): MutableBoat[] + addBoat(troops: number, cell: Cell, target: Player | TerraNullius): MutableBoat +} + +export interface Game { + // Throws exception is player not found + player(id: PlayerID): Player + players(): Player[] + tile(cell: Cell): Tile + isOnMap(cell: Cell): boolean + neighbors(cell: Cell): Cell[] + width(): number + height(): number + forEachTile(fn: (tile: Tile) => void): void + executions(): ExecutionView[] + terraNullius(): TerraNullius + tick() + addExecution(...exec: Execution[]) +} + +export interface MutableGame extends Game { + player(id: PlayerID): MutablePlayer + players(): MutablePlayer[] + addPlayer(playerInfo: PlayerInfo): MutablePlayer + executions(): Execution[] + removeInactiveExecutions(): void + removeExecution(exec: Execution) +} + + +export class TileEvent implements GameEvent { + constructor(public readonly tile: Tile) { } +} + +export class PlayerEvent implements GameEvent { + constructor(public readonly player: Player) { } +} + +export class BoatEvent implements GameEvent { + constructor(public readonly boat: Boat) { } +} diff --git a/src/core/GameImpl.ts b/src/core/GameImpl.ts new file mode 100644 index 000000000..feb31089c --- /dev/null +++ b/src/core/GameImpl.ts @@ -0,0 +1,415 @@ +import {EventBus} from "./EventBus"; +import {Cell, Execution, MutableGame, Game, MutablePlayer, PlayerEvent, PlayerID, PlayerInfo, Player, TerrainMap, TerrainType, TerrainTypes, TerraNullius, Tile, TileEvent, Boat, MutableBoat, BoatEvent} from "./Game"; + +export function createGame(terrainMap: TerrainMap, eventBus: EventBus): Game { + return new GameImpl(terrainMap, eventBus) +} + +type CellString = string + +class TileImpl implements Tile { + + constructor( + private readonly gs: GameImpl, + public _owner: PlayerImpl | TerraNulliusImpl, + private readonly _cell: Cell, + private readonly _terrain: TerrainType + ) { } + + onShore(): boolean { + return this.neighbors() + .filter(t => t.terrain() == TerrainTypes.Water) + .length > 0 + } + + hasOwner(): boolean {return this._owner != this.gs._terraNullius} + owner(): MutablePlayer | TerraNullius {return this._owner} + isBorder(): boolean {return this.gs.isBorder(this)} + isInterior(): boolean {return this.hasOwner() && !this.isBorder()} + cell(): Cell {return this._cell} + terrain(): TerrainType {return this._terrain} + + neighbors(): Tile[] { + return this.gs.neighbors(this._cell).map(c => this.gs.tile(c)) + } + + game(): Game {return this.gs} +} + +export class BoatImpl implements MutableBoat { + + constructor( + private g: GameImpl, + private _cell: Cell, + private _troops: number, + private _owner: PlayerImpl, + private _target: PlayerImpl | TerraNulliusImpl + ) { } + + move(cell: Cell): void { + this._cell = cell + this.g.fireBoatUpdateEvent(this) + } + setTroops(troops: number): void { + this._troops = troops + } + troops(): number { + return this._troops + } + cell(): Cell { + return this._cell + } + owner(): PlayerImpl { + return this._owner + } + target(): PlayerImpl | TerraNullius { + return this._target + } +} + +export class PlayerImpl implements MutablePlayer { + + public _boats: BoatImpl[] = [] + + public _borderTiles: Map = new Map() + _borderWith: Map> = new Map() + public tiles: Map = new Map() + + constructor(private gs: GameImpl, public readonly _id: PlayerID, public readonly playerInfo: PlayerInfo, private _troops) { } + + addBoat(troops: number, cell: Cell, target: Player | TerraNullius): BoatImpl { + const b = new BoatImpl(this.gs, cell, troops, this, target as PlayerImpl | TerraNulliusImpl) + this._boats.push(b) + this.gs.fireBoatUpdateEvent(b) + return b + } + boats(): BoatImpl[] { + return this._boats + } + sharesBorderWith(other: Player | TerraNullius): boolean { + if (!this._borderWith.has(other)) { + return false + } + return this._borderWith.get(other).size > 0 + } + numTilesOwned(): number { + return this.tiles.size + } + + borderTiles(): ReadonlySet { + return new Set(this._borderTiles.values()) + } + + neighbors(): (MutablePlayer | TerraNullius)[] { + const ns: (MutablePlayer | TerraNullius)[] = [] + for (const [player, tiles] of this._borderWith) { + if (tiles.size > 0) { + ns.push(player as MutablePlayer) + } + } + return ns + } + + addTroops(troops: number): void { + this._troops += troops + } + removeTroops(troops: number): void { + this._troops -= troops + } + + isPlayer(): this is MutablePlayer {return true as const} + ownsTile(cell: Cell): boolean {return this.tiles.has(cell.toString())} + setTroops(troops: number) {this._troops = troops} + conquer(cell: Cell) {this.gs.conquer(this, cell)} + info(): PlayerInfo {return this.playerInfo} + id(): PlayerID {return this._id} + troops(): number {return this._troops} + isAlive(): boolean {return this.tiles.size > 0} + gameState(): MutableGame {return this.gs} + executions(): Execution[] { + return this.gs.executions().filter(exec => exec.owner().id() == this.id()) + } + + borderTilesWith(other: Player | TerraNullius): ReadonlySet { + return this._borderWith.get(other) || new Set(); + } + + updateBorderWithTile(tile: Tile, oldOwner: Player | TerraNullius, newOwner: Player | TerraNullius) { + if (!this._borderWith.has(oldOwner)) { + this._borderWith.set(oldOwner, new Set()) + } + if (!this._borderWith.has(newOwner)) { + this._borderWith.set(newOwner, new Set()) + } + + // Delete old neighbors + if (this.gs.tileNeighbors(tile).filter(t => t.owner() == newOwner).length == 0) { + this._borderWith.get(oldOwner).delete(tile) + } + } + + addCalcBorderWithTile(tile: Tile) { + this.gs.neighbors(tile.cell()).map(c => this.gs.tile(c)).forEach(t => { + this.insertBorderWithTile(tile, t.owner()) + }) + } + + removeCalcBorderWithTile(tile: Tile, oldNeighbor: Player | TerraNullius) { + const length = this.gs.neighbors(tile.cell()).map(c => this.gs.tile(c)).filter(t => t.owner() == oldNeighbor).length + if (length == 0) { + this.deleteBorderWithTile(tile, oldNeighbor) + } + } + + insertBorderWithTile(tile: Tile, player: Player | TerraNullius) { + if (!this._borderWith.has(player)) { + this._borderWith.set(player, new Set()) + } + if (player != this) { + this._borderWith.get(player).add(tile) + } + } + + deleteBorderWithTile(tile: Tile, player: Player | TerraNullius) { + if (!this._borderWith.has(player)) { + this._borderWith.set(player, new Set()) + } + this._borderWith.get(player).delete(tile) + } +} + +class TerraNulliusImpl implements TerraNullius { + _borderWith: Map> = new Map() + public tiles: Map = new Map() + + constructor(private gs: MutableGame) { } + + id(): PlayerID { + return 0 + } + ownsTile(cell: Cell): boolean { + return this.tiles.has(cell) + } + isPlayer(): false {return false as const} + +} + +export class TerrainMapImpl implements TerrainMap { + + constructor(public readonly tiles: TerrainType[][]) { } + + terrain(cell: Cell): TerrainType { + return this.tiles[cell.x][cell.y] + } + + width(): number { + return this.tiles.length + } + + height(): number { + return this.tiles[0].length + } +} + +export class GameImpl implements MutableGame { + private ticks = 0 + + private unInitExecs: Execution[] = [] + + idCounter: PlayerID = 1; // Zero reserved for TerraNullius + map: TileImpl[][] + _players: Map = new Map + private execs: Execution[] = [] + private _width: number + private _height: number + _terraNullius: TerraNulliusImpl + + constructor(terrainMap: TerrainMap, private eventBus: EventBus) { + this._terraNullius = new TerraNulliusImpl(this) + this._width = terrainMap.width(); + this._height = terrainMap.height(); + this.map = new Array(this._width); + for (let x = 0; x < this._width; x++) { + this.map[x] = new Array(this._height); + for (let y = 0; y < this._height; y++) { + let cell = new Cell(x, y); + this.map[x][y] = new TileImpl(this, this._terraNullius, cell, terrainMap.terrain(cell)); + } + } + } + + tick() { + this.executions().forEach(e => e.tick(this.ticks)) + this.unInitExecs.forEach(e => e.init(this, this.ticks)) + + this.removeInactiveExecutions() + + this.execs.push(...this.unInitExecs) + this.unInitExecs = [] + this.ticks++ + } + + terraNullius(): TerraNullius { + return this._terraNullius + } + + removeInactiveExecutions(): void { + this.execs = this.execs.filter(e => e.isActive()) + } + + players(): MutablePlayer[] { + return Array.from(this._players.values()).filter(p => p.isAlive()) + } + + executions(): Execution[] { + return this.execs + } + + addExecution(...exec: Execution[]) { + this.unInitExecs.push(...exec) + } + + removeExecution(exec: Execution) { + this.execs.filter(execution => execution !== exec) + } + + width(): number { + return this._width + } + + height(): number { + return this._height + } + + forEachTile(fn: (tile: Tile) => void): void { + for (let x = 0; x < this._width; x++) { + for (let y = 0; y < this._height; y++) { + fn(this.tile(new Cell(x, y))) + } + } + } + + playerView(id: PlayerID): MutablePlayer { + return this.player(id) + } + + addPlayer(playerInfo: PlayerInfo): MutablePlayer { + let id = this.idCounter + this.idCounter++ + let player = new PlayerImpl(this, id, playerInfo, 10000) + this._players.set(id, player) + this.eventBus.emit(new PlayerEvent(player)) + return player + } + + player(id: PlayerID | null): MutablePlayer { + if (!this._players.has(id)) { + throw new Error(`Player with id ${id} not found`) + } + return this._players.get(id) + } + + tile(cell: Cell): Tile { + this.assertIsOnMap(cell) + return this.map[cell.x][cell.y] + } + + isOnMap(cell: Cell): boolean { + return cell.x >= 0 + && cell.x < this._width + && cell.y >= 0 + && cell.y < this._height + } + + neighbors(cell: Cell): Cell[] { + this.assertIsOnMap(cell) + return [ + new Cell(cell.x + 1, cell.y), + new Cell(cell.x - 1, cell.y), + new Cell(cell.x, cell.y + 1), + new Cell(cell.x, cell.y - 1) + ].filter(c => this.isOnMap(c)) + } + + tileNeighbors(tile: Tile): Tile[] { + return this.neighbors(tile.cell()).map(c => this.tile(c)) + } + + private assertIsOnMap(cell: Cell) { + if (!this.isOnMap(cell)) { + throw new Error(`cell ${cell.toString()} is not on map`) + } + } + + conquer(owner: PlayerImpl, cell: Cell): void { + if (owner.ownsTile(cell)) { + throw new Error(`Player ${owner} already owns cell ${cell.toString()}`) + } + if (!owner.isPlayer()) { + throw new Error("Must be a player") + } + let tile = this.tile(cell) as TileImpl + let previousOwner = tile._owner + if (previousOwner.isPlayer()) { + previousOwner.tiles.delete(cell.toString()) + previousOwner._borderTiles.delete(cell.toString()) + } + tile._owner = owner + owner.tiles.set(cell.toString(), tile) + this.updateBorders(cell) + this.updateBordersWith(tile, previousOwner) + this.eventBus.emit(new TileEvent(tile)) + } + + private updateBorders(cell: Cell) { + const cells: Cell[] = [] + cells.push(cell) + this.neighbors(cell).forEach(c => cells.push(c)) + cells.map(c => this.tile(c)).filter(c => c.hasOwner()).forEach(t => { + if (this.isBorder(t)) { + (t.owner() as PlayerImpl)._borderTiles.set(t.cell().toString(), t) + } else { + (t.owner() as PlayerImpl)._borderTiles.delete(t.cell().toString()) + } + }) + } + + private updateBordersWith(tile: TileImpl, previousOwner: PlayerImpl | TerraNulliusImpl) { + const newOwner = tile._owner + const neighbors = this.neighbors(tile.cell()).map(c => this.tile(c)) + + if (newOwner.isPlayer()) { + newOwner.addCalcBorderWithTile(tile) + } + + neighbors.map(t => (t as TileImpl)).forEach(t => { + const p = t._owner + if (p.isPlayer()) { + p.addCalcBorderWithTile(t) + p.removeCalcBorderWithTile(t, previousOwner) + } + if (previousOwner.isPlayer()) { + previousOwner.deleteBorderWithTile(tile, p) + } + }) + } + + isBorder(tile: Tile): boolean { + this.assertIsOnMap(tile.cell()) + if (!tile.hasOwner()) { + return false + } + for (const neighbor of this.neighbors(tile.cell())) { + let bordersEnemy = this.tile(neighbor).owner() != tile.owner() + if (bordersEnemy) { + return true + } + } + return false + } + + public fireBoatUpdateEvent(boat: Boat) { + this.eventBus.emit(new BoatEvent(boat)) + } + +} \ No newline at end of file diff --git a/src/core/PseudoRandom.ts b/src/core/PseudoRandom.ts new file mode 100644 index 000000000..6ddd18fc2 --- /dev/null +++ b/src/core/PseudoRandom.ts @@ -0,0 +1,33 @@ +export class PseudoRandom { + private m: number = 0x80000000; // 2**31 + private a: number = 1103515245; + private c: number = 12345; + private state: number; + + constructor(seed: number) { + this.state = seed % this.m; + } + + /** + * Generates the next pseudorandom number. + * @returns A number between 0 (inclusive) and 1 (exclusive). + */ + next(): number { + this.state = (this.a * this.state + this.c) % this.m; + return this.state / this.m; + } + + /** + * Generates a random integer between min (inclusive) and max (exclusive). + */ + nextInt(min: number, max: number): number { + return Math.floor(this.next() * (max - min) + min); + } + + /** + * Generates a random float between min (inclusive) and max (exclusive). + */ + nextFloat(min: number, max: number): number { + return this.next() * (max - min) + min; + } +} \ No newline at end of file diff --git a/src/core/Schemas.ts b/src/core/Schemas.ts new file mode 100644 index 000000000..d0eae60b0 --- /dev/null +++ b/src/core/Schemas.ts @@ -0,0 +1,100 @@ +import {z} from 'zod'; + +export type Intent = SpawnIntent | AttackIntent | BoatAttackIntent + +export type AttackIntent = z.infer +export type SpawnIntent = z.infer +export type BoatAttackIntent = z.infer + +export type Turn = z.infer + +export type ClientMessage = ClientIntentMessage | ClientJoinMessage +export type ServerMessage = ServerSyncMessage | ServerStartGameMessage + +export type ServerSyncMessage = z.infer +export type ServerStartGameMessage = z.infer + + +export type ClientIntentMessage = z.infer +export type ClientJoinMessage = z.infer + + + +// Zod schemas +const BaseIntentSchema = z.object({ + type: z.enum(['attack', 'spawn', 'boat']), +}); + +export const AttackIntentSchema = BaseIntentSchema.extend({ + type: z.literal('attack'), + attackerID: z.number(), + targetID: z.number().nullable(), + troops: z.number(), + targetX: z.number(), + targetY: z.number() +}); + + +export const SpawnIntentSchema = BaseIntentSchema.extend({ + type: z.literal('spawn'), + name: z.string(), + isBot: z.boolean(), + x: z.number(), + y: z.number(), +}) + +export const BoatAttackIntentSchema = BaseIntentSchema.extend({ + type: z.literal('boat'), + attackerID: z.number(), + targetID: z.number().nullable(), + troops: z.number(), + x: z.number(), + y: z.number(), +}) + +const IntentSchema = z.union([AttackIntentSchema, SpawnIntentSchema, BoatAttackIntentSchema]); + +const TurnSchema = z.object({ + turnNumber: z.number(), + intents: z.array(IntentSchema) +}) + +// Server + +const ServerBaseMessageSchema = z.object({ + type: z.string() +}) + +export const ServerTurnMessageSchema = ServerBaseMessageSchema.extend({ + type: z.literal('turn'), + turn: TurnSchema, +}) + +export const ServerStartGameMessageSchema = ServerBaseMessageSchema.extend({ + type: z.literal('start'), +}) + + +export const ServerMessageSchema = z.union([ServerTurnMessageSchema, ServerStartGameMessageSchema]); + + +// Client + +const ClientBaseMessageSchema = z.object({ + type: z.string() +}) + +export const ClientIntentMessageSchema = ClientBaseMessageSchema.extend({ + type: z.literal('intent'), + clientID: z.string(), + //gameID: z.string(), + intent: IntentSchema +}) + +export const ClientJoinMessageSchema = ClientBaseMessageSchema.extend({ + type: z.literal('join'), + clientID: z.string(), + lobbyID: z.string() +}) + +export const ClientMessageSchema = z.union([ClientIntentMessageSchema, ClientJoinMessageSchema]); \ No newline at end of file diff --git a/src/core/Settings.ts b/src/core/Settings.ts new file mode 100644 index 000000000..fadb50782 --- /dev/null +++ b/src/core/Settings.ts @@ -0,0 +1,84 @@ +import {PlayerID, TerrainType, TerrainTypes} from "./Game"; +import {Colord, colord} from "colord"; + +export interface Settings { + theme(): Theme; + turnIntervalMs(): number + tickIntervalMs(): number + ticksPerTurn(): number + lobbyCreationRate(): number + lobbyLifetime(): number +} + +export interface Theme { + playerInfoColor(id: PlayerID): Colord; + territoryColor(id: PlayerID): Colord; + borderColor(id: PlayerID): Colord; + terrainColor(tile: TerrainType): Colord; + backgroundColor(): Colord; + font(): string; + shaderArgs(): {name: string; args: {[key: string]: any}}[]; +} + +export const defaultSettings = new class implements Settings { + ticksPerTurn(): number { + return 1 + } + turnIntervalMs(): number { + return 1000 / 10 + } + lobbyCreationRate(): number { + return 5 * 1000 + } + lobbyLifetime(): number { + return 2 * 1000 + } + theme(): Theme {return pastelTheme;} + + tickIntervalMs(): number { + return 1000 / 20; // 50ms + } +} + +const pastelTheme = new class implements Theme { + private background = colord({r: 100, g: 100, b: 100}); + private land = colord({r: 244, g: 243, b: 198}); + private water = colord({r: 160, g: 203, b: 231}); + private territory = colord({r: 173, g: 216, b: 230}); + + playerInfoColor(id: PlayerID): Colord { + return colord({r: 0, g: 0, b: 0}) + } + + territoryColor(id: PlayerID): Colord { + return colord({r: (id * 10) % 250, g: (id * 100) % 250, b: (id) % 250}); + } + + borderColor(id: PlayerID): Colord { + const tc = this.territoryColor(id).rgba; + return colord({ + r: Math.min(tc.r + 20, 255), + g: Math.min(tc.g + 20, 255), + b: Math.min(tc.b + 20, 255) + }) + } + + terrainColor(tile: TerrainType): Colord { + if (tile == TerrainTypes.Land) { + return this.land; + } + return this.water; + } + + backgroundColor(): Colord { + return this.background; + } + + font(): string { + return "Overpass"; + } + + shaderArgs(): {name: string; args: {[key: string]: any}}[] { + throw new Error("Method not implemented."); + } +} \ No newline at end of file diff --git a/src/core/TerrainMapLoader.ts b/src/core/TerrainMapLoader.ts new file mode 100644 index 000000000..543c2c086 --- /dev/null +++ b/src/core/TerrainMapLoader.ts @@ -0,0 +1,25 @@ +import {Jimp as JimpType, JimpConstructors} from '@jimp/core'; +import 'jimp'; +import {TerrainMap, TerrainType, TerrainTypes} from './Game'; +import {TerrainMapImpl} from './GameImpl'; + +declare const Jimp: JimpType & JimpConstructors; + +export async function loadTerrainMap(): Promise { + const imageModule = await import(`../../resources/maps/World.png`); + const imageUrl = imageModule.default; + const image = await Jimp.read(imageUrl) + const {width, height} = image.bitmap; + + const terrain: TerrainType[][] = Array(width).fill(null).map(() => Array(height).fill(TerrainTypes.Water)); + + image.scan(0, 0, width, height, function (x: number, y: number, idx: number) { + const red = this.bitmap.data[idx + 0]; + + if (red > 100) { + terrain[x][y] = TerrainTypes.Land; + } + }) + + return new TerrainMapImpl(terrain); +} \ No newline at end of file diff --git a/src/core/Ticker.ts b/src/core/Ticker.ts new file mode 100644 index 000000000..9b8a85da8 --- /dev/null +++ b/src/core/Ticker.ts @@ -0,0 +1,33 @@ +import {EventBus, GameEvent} from "./EventBus"; +import {Settings} from "./Settings"; + +export class TickEvent implements GameEvent { + constructor(public readonly tickCount: number) { } +} + +export class Ticker { + private ticker: NodeJS.Timeout; + private tickCount: number; + + constructor(private tickInterval: number, private eventBus: EventBus) { + + } + + start() { + this.tickCount = 0; + this.ticker = setInterval(() => this.tick(), this.tickInterval); + } + + stop() { + clearInterval(this.ticker); + } + + private tick() { + this.eventBus.emit(new TickEvent(this.tickCount)) + this.tickCount++; + } + + getTickCount(): number { + return this.tickCount; + } +} \ No newline at end of file diff --git a/src/core/Util.ts b/src/core/Util.ts new file mode 100644 index 000000000..49a684f48 --- /dev/null +++ b/src/core/Util.ts @@ -0,0 +1,11 @@ +import {Cell} from "./Game"; + +export function generateUniqueID(): string { + const array = new Uint8Array(16); + crypto.getRandomValues(array); + return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join(''); +} + +export function manhattanDist(c1: Cell, c2: Cell): number { + return Math.abs(c1.x - c2.x) + Math.abs(c1.y - c2.y); +} \ No newline at end of file diff --git a/src/core/execution/AttackExecution.ts b/src/core/execution/AttackExecution.ts new file mode 100644 index 000000000..3ec74694d --- /dev/null +++ b/src/core/execution/AttackExecution.ts @@ -0,0 +1,112 @@ +import PriorityQueue from "priority-queue-typescript"; +import {Cell, Execution, MutableGame, MutablePlayer, PlayerID, Player, TerrainTypes, TerraNullius, Tile} from "../Game"; +import {PseudoRandom} from "../PseudoRandom"; +import {manhattanDist} from "../Util"; + +export class AttackExecution implements Execution { + private active: boolean = true; + private toConquer: PriorityQueue = new PriorityQueue(11, (a: TileContainer, b: TileContainer) => a.priority - b.priority); + private random = new PseudoRandom(123) + + private _owner: MutablePlayer + private target: MutablePlayer | TerraNullius + + constructor( + private troops: number, + private _ownerID: PlayerID, + private targetID: PlayerID | null, + private targetCell: Cell | null + ) { } + + init(gs: MutableGame, ticks: number) { + this._owner = gs.player(this._ownerID) + this.target = this.targetID == null ? gs.terraNullius() : gs.player(this.targetID) + this.troops = Math.min(this._owner.troops(), this.troops) + this._owner.setTroops(this._owner.troops() - this.troops) + } + + tick(ticks: number) { + if (!this.active) { + return + } + + let numTilesPerTick = this._owner.borderTilesWith(this.target).size / 2 + while (numTilesPerTick > 0) { + if (this.troops < 1) { + this.active = false + return + } + + if (this.toConquer.size() == 0) { + this.calculateToConquer() + } + if (this.toConquer.size() == 0) { + this.active = false + this._owner.addTroops(this.troops) + return + } + + const tileToConquer: Tile = this.toConquer.poll().tile + const onBorder = tileToConquer.neighbors().filter(t => t.owner() == this._owner).length > 0 + if (tileToConquer.owner() != this.target || !onBorder) { + continue + } + this._owner.conquer(tileToConquer.cell()) + this.troops -= 1 + numTilesPerTick -= 1 + } + } + + private calculateToConquer() { + const border = this.owner().borderTilesWith(this.target) + const enemyBorder: Set = new Set() + for (const b of border) { + b.neighbors() + .filter(t => t.terrain() == TerrainTypes.Land) + .filter(t => t.owner() == this.target) + .forEach(t => enemyBorder.add(t)) + } + + // let closestTile: Tile; + // let closestDist: number = Number.POSITIVE_INFINITY; + // for (const enemyTile of enemyBorder) { + // const dist = manhattanDist(enemyTile.cell(), this.targetCell) + // if (dist < closestDist) { + // closestTile = enemyTile + // } + // } + + // tileByDist.forEach(t => console.log(`tile dist: ${manhattanDist(t.cell(), closestTile.cell())}`)) + let tileByDist = [] + if (this.targetCell == null) { + tileByDist = Array.from(enemyBorder).slice().sort((a, b) => this.random.next() - .5) + } else { + tileByDist = Array.from(enemyBorder).slice().sort((a, b) => manhattanDist(a.cell(), this.targetCell) - manhattanDist(b.cell(), this.targetCell)) + } + for (let i = 0; i < Math.min(enemyBorder.size / 2, tileByDist.length); i++) { + const enemyTile = tileByDist[i] + const numOwnedByMe = enemyTile.neighbors() + .filter(t => t.terrain() == TerrainTypes.Land) + .filter(t => t.owner() == this._owner) + .length + // this.toConquer.add(new TileContainer(enemyTile, numOwnedByMe + (this.random.next() % 5) + (-5 * i / tileByDist.length))) + const r = this.random.next() % 4 + this.toConquer.add(new TileContainer(enemyTile, r + numOwnedByMe * 1000)) + } + + } + + owner(): MutablePlayer { + return this._owner + } + + isActive(): boolean { + return this.active + } + +} + + +class TileContainer { + constructor(public readonly tile: Tile, public readonly priority: number) { } +} \ No newline at end of file diff --git a/src/core/execution/BoatAttackExecution.ts b/src/core/execution/BoatAttackExecution.ts new file mode 100644 index 000000000..d7597009a --- /dev/null +++ b/src/core/execution/BoatAttackExecution.ts @@ -0,0 +1,158 @@ +import PriorityQueue from "priority-queue-typescript"; +import {Boat, Cell, Execution, MutableBoat, MutableGame, MutablePlayer, Player, PlayerID, Tile} from "../Game"; +import {manhattanDist} from "../Util"; +import {AttackExecution} from "./AttackExecution"; + +export class BoatAttackExecution implements Execution { + + private lastMove: number + + // TODO: make this configurable + private ticksPerMove = 1 + + private active = true + + private mg: MutableGame + private attacker: MutablePlayer + private target: MutablePlayer + + // TODO make private + public path: Tile[] + private src: Tile + private dst: Tile + + private currTileIndex: number = 0 + + private boat: MutableBoat + + constructor( + private attackerID: PlayerID, + private targetID: PlayerID | null, + private cell: Cell, + private troops: number + ) { } + + init(mg: MutableGame, ticks: number) { + if (this.targetID == null) { + throw new Error("attacking terranullius not supported") + } + this.lastMove = ticks + + this.mg = mg + this.attacker = mg.player(this.attackerID) + this.target = mg.player(this.targetID) + + this.troops = Math.min(this.troops, this.attacker.troops()) + this.attacker.removeTroops(this.troops) + + this.src = this.closestShoreTileToTarget(this.attacker, this.cell) + this.dst = this.closestShoreTileToTarget(this.target, this.cell) + this.path = this.computePath(this.src, this.dst) + if (this.path != null) { + console.log(`got path ${this.path.map(t => t.cell().toString())}`) + this.boat = this.attacker.addBoat(1000, this.src.cell(), this.target) + } else { + console.log('got null path') + this.active = false + } + } + + tick(ticks: number) { + if (!this.active) { + return + } + if (ticks - this.lastMove < this.ticksPerMove) { + return + } + this.lastMove = ticks + this.currTileIndex++ + + if (this.currTileIndex >= this.path.length) { + if (this.dst.owner() == this.attacker) { + this.attacker.addTroops(this.troops) + this.active = false + return + } + this.attacker.conquer(this.dst.cell()) + this.mg.addExecution(new AttackExecution(this.troops, this.attacker.id(), this.targetID, null)) + this.active = false + return + } + + const nextTile = this.path[this.currTileIndex] + this.boat.move(nextTile.cell()) + } + + owner(): MutablePlayer { + return this.attacker + } + + isActive(): boolean { + return this.active + } + + private closestShoreTileToTarget(player: Player, target: Cell): Tile { + const shoreTiles = Array.from(player.borderTiles()).filter(t => t.onShore()) + + return shoreTiles.reduce((closest, current) => { + const closestDistance = manhattanDist(target, closest.cell()); + const currentDistance = manhattanDist(target, current.cell()); + return currentDistance < closestDistance ? current : closest; + }); + } + + private computePath(src: Tile, dst: Tile): Tile[] { + if (!src.onShore() || !dst.onShore()) { + return null; // Both source and destination must be on water + } + + const openSet = new PriorityQueue<{tile: Tile, fScore: number}>( + 11, + (a, b) => a.fScore - b.fScore + ); + const cameFrom = new Map(); + const gScore = new Map(); + + gScore.set(src, 0); + openSet.add({tile: src, fScore: this.heuristic(src, dst)}); + + while (!openSet.empty()) { + const current = openSet.poll()!.tile; + + if (current === dst) { + return this.reconstructPath(cameFrom, current); + } + + for (const neighbor of current.neighbors()) { + if (!neighbor.onShore()) continue; // Skip non-water tiles + + const tentativeGScore = gScore.get(current)! + 1; // Assuming uniform cost + + if (!gScore.has(neighbor) || tentativeGScore < gScore.get(neighbor)!) { + cameFrom.set(neighbor, current); + gScore.set(neighbor, tentativeGScore); + const fScore = tentativeGScore + this.heuristic(neighbor, dst); + + openSet.add({tile: neighbor, fScore: fScore}); + } + } + } + + return null; // No path found + } + + private heuristic(a: Tile, b: Tile): number { + // Manhattan distance + return Math.abs(a.cell().x - b.cell().x) + Math.abs(a.cell().y - b.cell().y); + } + + private reconstructPath(cameFrom: Map, current: Tile): Tile[] { + const path = [current]; + while (cameFrom.has(current)) { + current = cameFrom.get(current)!; + path.unshift(current); + } + return path; + } + +} \ No newline at end of file diff --git a/src/core/execution/BotExecution.ts b/src/core/execution/BotExecution.ts new file mode 100644 index 000000000..19e0557ff --- /dev/null +++ b/src/core/execution/BotExecution.ts @@ -0,0 +1,55 @@ +import {Cell, Execution, MutableGame, MutablePlayer, PlayerID, PlayerInfo} from "../Game" +import {PseudoRandom} from "../PseudoRandom" +import {AttackExecution} from "./AttackExecution"; + +export class BotExecution implements Execution { + private ticks = 0 + + private active = true + private random: PseudoRandom; + private attackRate: number + private gs: MutableGame + + constructor(private bot: MutablePlayer) { + + this.random = new PseudoRandom(bot.id()) + this.attackRate = this.random.nextInt(100, 500) + } + + init(gs: MutableGame, ticks: number) { + this.gs = gs + } + + tick(ticks: number) { + if (!this.bot.isAlive()) { + this.active = false + return + } + + this.ticks++ + + if (this.ticks % this.attackRate == 0) { + const ns = this.bot.neighbors() + if (ns.length == 0) { + return + } + + const toAttack = ns[this.random.nextInt(0, ns.length)] + + this.gs.addExecution(new AttackExecution( + this.bot.troops() / 5, + this.bot.id(), + toAttack.isPlayer() ? toAttack.id() : null, + null + )) + } + } + + owner(): MutablePlayer { + return this.bot + } + + isActive(): boolean { + return this.active + } +} \ No newline at end of file diff --git a/src/core/execution/BotSpawner.ts b/src/core/execution/BotSpawner.ts new file mode 100644 index 000000000..2b98a1832 --- /dev/null +++ b/src/core/execution/BotSpawner.ts @@ -0,0 +1,60 @@ +import {Cell, Game, TerrainTypes} from "../Game"; +import {PseudoRandom} from "../PseudoRandom"; +import {SpawnIntent} from "../Schemas"; +import {getSpawnCells} from "./Util"; + + +export class BotSpawner { + private cellToIndex; + private freeTiles: Cell[]; + private numFreeTiles; + private random = new PseudoRandom(123); + + constructor(private gs: Game) { } + + spawnBots(numBots: number): SpawnIntent[] { + const bots: SpawnIntent[] = []; + this.cellToIndex = new Map(); + this.freeTiles = new Array(); + this.numFreeTiles = 0; + + this.gs.forEachTile(tile => { + if (tile.terrain() == TerrainTypes.Water) { + return; + } + if (tile.hasOwner()) { + return; + } + + this.freeTiles.push(tile.cell()); + this.cellToIndex.set(tile.cell().toString(), this.numFreeTiles); + this.numFreeTiles++; + }); + for (let i = 0; i < numBots; i++) { + bots.push(this.spawnBot("Bot" + i)); + } + return bots; + } + + spawnBot(botName: string): SpawnIntent { + const rand = this.random.nextInt(0, this.numFreeTiles); + const spawn = this.freeTiles[rand]; + const spawnCells = getSpawnCells(this.gs, spawn); + spawnCells.forEach(c => this.removeCell(c)); + const spawnIntent: SpawnIntent = { + type: 'spawn', + name: botName, + isBot: true, + x: spawn.x, + y: spawn.y + }; + return spawnIntent; + } + + private removeCell(cell: Cell) { + const index = this.cellToIndex[cell.toString()]; + this.freeTiles[index] = this.freeTiles[this.numFreeTiles - 1]; + this.cellToIndex[this.freeTiles[index].toString()] = index; + this.numFreeTiles--; + } +} diff --git a/src/core/execution/Executor.ts b/src/core/execution/Executor.ts new file mode 100644 index 000000000..f4d8f5b72 --- /dev/null +++ b/src/core/execution/Executor.ts @@ -0,0 +1,55 @@ +import PriorityQueue from "priority-queue-typescript"; +import {Cell, Execution, MutableGame, Game, MutablePlayer, PlayerInfo, TerraNullius, Tile} from "../Game"; +import {AttackIntent, BoatAttackIntentSchema, Intent, Turn} from "../Schemas"; +import {AttackExecution} from "./AttackExecution"; +import {SpawnExecution} from "./SpawnExecution"; +import {BotSpawner} from "./BotSpawner"; +import {BoatAttackExecution} from "./BoatAttackExecution"; + + +export class Executor { + + constructor(private gs: Game) { + + } + + addTurn(turn: Turn) { + turn.intents.forEach(i => this.addIntent(i)) + } + + addIntent(intent: Intent) { + if (intent.type == "attack") { + this.gs.addExecution( + new AttackExecution( + intent.troops, + intent.attackerID, + intent.targetID, + new Cell(intent.targetX, intent.targetY) + ) + ) + } else if (intent.type == "spawn") { + this.gs.addExecution( + new SpawnExecution( + new PlayerInfo(intent.name, intent.isBot), + new Cell(intent.x, intent.y), + ) + ) + } else if (intent.type == "boat") { + this.gs.addExecution( + new BoatAttackExecution( + intent.attackerID, + intent.targetID, + new Cell(intent.x, intent.y), + intent.troops, + ) + ) + } else { + throw new Error(`intent type ${intent} not found`) + } + } + + + spawnBots(numBots: number): void { + new BotSpawner(this.gs).spawnBots(numBots).forEach(i => this.addIntent(i)) + } +} \ No newline at end of file diff --git a/src/core/execution/PlayerExecution.ts b/src/core/execution/PlayerExecution.ts new file mode 100644 index 000000000..4efe5638f --- /dev/null +++ b/src/core/execution/PlayerExecution.ts @@ -0,0 +1,25 @@ +import {Execution, MutableGame, MutablePlayer, PlayerID} from "../Game" + +export class PlayerExecution implements Execution { + + private player: MutablePlayer + + constructor(private playerID: PlayerID) { + } + + init(gs: MutableGame, ticks: number) { + this.player = gs.player(this.playerID) + } + + tick(ticks: number) { + this.player.addTroops(Math.sqrt(this.player.numTilesOwned() * this.player.troops() + 1000) / 1000) + } + + owner(): MutablePlayer { + return this.player + } + + isActive(): boolean { + return this.player.isAlive() + } +} \ No newline at end of file diff --git a/src/core/execution/SpawnExecution.ts b/src/core/execution/SpawnExecution.ts new file mode 100644 index 000000000..e4f43ea0a --- /dev/null +++ b/src/core/execution/SpawnExecution.ts @@ -0,0 +1,42 @@ +import {Cell, Execution, MutableGame, MutablePlayer, PlayerInfo} from "../Game" +import {BotExecution} from "./BotExecution" +import {PlayerExecution} from "./PlayerExecution" +import {getSpawnCells} from "./Util" + +export class SpawnExecution implements Execution { + + active: boolean = true + private gs: MutableGame + + constructor( + private playerInfo: PlayerInfo, + private cell: Cell, + ) { } + + + init(gs: MutableGame, ticks: number) { + this.gs = gs + } + + tick(ticks: number) { + if (!this.isActive()) { + return + } + const player = this.gs.addPlayer(this.playerInfo) + getSpawnCells(this.gs, this.cell).forEach(c => { + console.log('conquering cell') + player.conquer(c) + }) + this.gs.addExecution(new PlayerExecution(player.id())) + if (player.info().isBot) { + this.gs.addExecution(new BotExecution(player)) + } + this.active = false + } + owner(): MutablePlayer { + return null + } + isActive(): boolean { + return this.active + } +} \ No newline at end of file diff --git a/src/core/execution/Util.ts b/src/core/execution/Util.ts new file mode 100644 index 000000000..9d48f4889 --- /dev/null +++ b/src/core/execution/Util.ts @@ -0,0 +1,25 @@ +import {Game, Cell, TerrainTypes} from "../Game"; + + +export function getSpawnCells(gs: Game, cell: Cell): Cell[] { + let result: Cell[] = []; + for (let dx = -2; dx <= 2; dx++) { + for (let dy = -2; dy <= 2; dy++) { + let c = new Cell(cell.x + dx, cell.y + dy); + if (!gs.isOnMap(c)) { + continue; + } + if (Math.abs(dx) === 2 && Math.abs(dy) === 2) { + continue; + } + if (gs.tile(c).terrain() != TerrainTypes.Land) { + continue; + } + if (gs.tile(c).hasOwner()) { + continue; + } + result.push(c); + } + } + return result; +} diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 000000000..947f19163 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,4 @@ +declare module '*.png' { + const content: string; + export default content; +} \ No newline at end of file diff --git a/src/server/Client.ts b/src/server/Client.ts new file mode 100644 index 000000000..8c1f0cbd0 --- /dev/null +++ b/src/server/Client.ts @@ -0,0 +1,7 @@ +import {ClientID} from "../core/Game"; +import WebSocket from 'ws'; + + +export class Client { + constructor(public readonly id: ClientID, public readonly ws: WebSocket) { } +} \ No newline at end of file diff --git a/src/server/GameManager.ts b/src/server/GameManager.ts new file mode 100644 index 000000000..9edbeae2b --- /dev/null +++ b/src/server/GameManager.ts @@ -0,0 +1,66 @@ +import {GameID, LobbyID} from "../core/Game"; +import {Client} from "./Client"; +import {Lobby} from "./Lobby"; +import {GameServer} from "./GameServer"; +import {defaultSettings, Settings} from "../core/Settings"; +import {generateUniqueID} from "../core/Util"; + +export class GameManager { + + private lastNewLobby: number = 0 + + private _lobbies: Map = new Map() + + private games: Map = new Map() + + constructor(private settings: Settings) { } + + + public hasLobby(lobbyID: LobbyID): boolean { + return this._lobbies.has(lobbyID) + } + + public addClientToLobby(client: Client, lobbyID: LobbyID) { + this._lobbies.get(lobbyID).addClient(client) + } + + addLobby(lobby: Lobby) { + this._lobbies.set(lobby.id, lobby) + } + + lobby(id: LobbyID): Lobby { + return this._lobbies.get(id) + } + + lobbies(): Lobby[] { + return Array.from(this._lobbies.values()) + } + + addGame(game: GameServer) { + this.games.set(game.id, game) + } + + startGame(lobby: Lobby) { + const gs = new GameServer(generateUniqueID(), lobby.clients, defaultSettings) + this.games.set(gs.id, gs) + gs.start() + } + + tick() { + const now = Date.now() + + const active = this.lobbies().filter(l => !l.isExpired(now)) + const expired = this.lobbies().filter(l => l.isExpired(now)) + this._lobbies = new Map(active.map(lobby => [lobby.id, lobby])); + expired.forEach(lobby => { + const game = new GameServer(generateUniqueID(), lobby.clients, this.settings) + this.games.set(game.id, game) + game.start() + }) + + if (now > this.lastNewLobby + this.settings.lobbyCreationRate()) { + this.lastNewLobby = now + this.addLobby(new Lobby(generateUniqueID(), this.settings.lobbyLifetime())) + } + } +} \ No newline at end of file diff --git a/src/server/GameServer.ts b/src/server/GameServer.ts new file mode 100644 index 000000000..de772f0f7 --- /dev/null +++ b/src/server/GameServer.ts @@ -0,0 +1,69 @@ +import {EventBus} from "../core/EventBus"; +import {ClientID, GameID} from "../core/Game"; +import {ClientMessage, ClientMessageSchema, Intent, ServerStartGameMessage, ServerStartGameMessageSchema, ServerTurnMessageSchema, Turn} from "../core/Schemas"; +import {Settings} from "../core/Settings"; +import {Ticker, TickEvent} from "../core/Ticker"; +import {Client} from "./Client"; + +export class GameServer { + + private turns: Turn[] = [] + private intents: Intent[] = [] + + constructor( + public readonly id: GameID, + private clients: Map, + private settings: Settings, + ) { + } + + public start() { + this.clients.forEach(c => { + c.ws.on('message', (message: string) => { + const clientMsg: ClientMessage = ClientMessageSchema.parse(JSON.parse(message)) + if (clientMsg.type == "intent") { + this.addIntent(clientMsg.intent) + } + }) + }) + + + const startGame = JSON.stringify(ServerStartGameMessageSchema.parse( + { + type: "start" + } + )) + this.clients.forEach(c => { + c.ws.send(startGame) + }) + setInterval(() => this.endTurn(), this.settings.turnIntervalMs()); + } + + private addIntent(intent: Intent) { + this.intents.push(intent) + } + + private endTurn() { + const pastTurn: Turn = { + turnNumber: this.turns.length, + intents: this.intents + } + this.turns.push(pastTurn) + this.intents = [] + + const msg = JSON.stringify(ServerTurnMessageSchema.parse( + { + type: "turn", + turn: pastTurn + } + )) + this.clients.forEach(c => { + c.ws.send(msg) + }) + } + + private tick(event: TickEvent) { + + } + +} \ No newline at end of file diff --git a/src/server/Lobby.ts b/src/server/Lobby.ts new file mode 100644 index 000000000..65cf496c2 --- /dev/null +++ b/src/server/Lobby.ts @@ -0,0 +1,21 @@ +import {ClientID} from "../core/Game"; +import {Client} from "./Client"; + +export class Lobby { + + public clients: Map = new Map() + private startGameTs: number + + + constructor(public readonly id: string, durationMs: number) { + this.startGameTs = Date.now() + durationMs + } + + public addClient(client: Client) { + this.clients.set(client.id, client) + } + + public isExpired(now: number): boolean { + return now > this.startGameTs + } +} \ No newline at end of file diff --git a/src/server/Server.ts b/src/server/Server.ts new file mode 100644 index 000000000..6c6cb757d --- /dev/null +++ b/src/server/Server.ts @@ -0,0 +1,70 @@ +import express, {json} from 'express'; +import http from 'http'; +import {WebSocketServer} from 'ws'; +import path from 'path'; +import {fileURLToPath} from 'url'; +import {GameManager} from './GameManager'; +import {Client} from './Client'; +import {ClientMessage, ClientMessageSchema} from '../core/Schemas'; +import {Lobby} from './Lobby'; +import {defaultSettings} from '../core/Settings'; + + + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const app = express(); +const server = http.createServer(app); +const wss = new WebSocketServer({server}); + + +// Serve static files from the 'out' directory +app.use(express.static(path.join(__dirname, '../../out'))); +app.use(express.json()) + +const gm = new GameManager(defaultSettings) + +// New GET endpoint to list lobbies +app.get('/lobbies', (req, res) => { + const lobbyList = Array.from(gm.lobbies()).map(lobby => ({ + id: lobby.id, + })); + + res.json({ + lobbies: lobbyList, + }); +}); + +wss.on('connection', (ws) => { + + ws.on('message', (message: string) => { + console.log(`got message ${message}`) + const clientMsg: ClientMessage = ClientMessageSchema.parse(JSON.parse(message)) + if (clientMsg.type == "join") { + if (gm.hasLobby(clientMsg.lobbyID)) { + gm.addClientToLobby(new Client(clientMsg.clientID, ws), clientMsg.lobbyID) + } + } + // TODO: send error message + }) + +}); + +function runGame() { + setInterval(() => tick(), 1000); +} + +function tick() { + gm.tick() +} + +const PORT = process.env.PORT || 3000; +console.log(`Server will try to run on http://localhost:${PORT}`); + +server.listen(PORT, () => { + console.log(`Server is running on http://localhost:${PORT}`); +}); + +runGame() + diff --git a/tests/GameImpl.test.ts b/tests/GameImpl.test.ts new file mode 100644 index 000000000..d98c59e0c --- /dev/null +++ b/tests/GameImpl.test.ts @@ -0,0 +1,170 @@ +import {GameImpl, PlayerImpl} from '../src/core/GameImpl'; +import {EventBus} from '../src/core/EventBus'; +import {Game, Cell, MutablePlayer, PlayerInfo, TerrainMap, TerrainTypes, Tile} from '../src/core/Game'; + +describe('borderTilesWith', () => { + let game: GameImpl; + let player1: PlayerImpl; + let player2: PlayerImpl; + let terrainMap: TerrainMap; + + beforeEach(() => { + // Create a 5x5 terrain map + terrainMap = { + terrain: jest.fn().mockReturnValue(TerrainTypes.Land), + width: jest.fn().mockReturnValue(5), + height: jest.fn().mockReturnValue(5) + }; + const eventBus = new EventBus(); + game = new GameImpl(terrainMap, eventBus); + player1 = game.addPlayer(new PlayerInfo('Player 1', false)) as PlayerImpl; + player2 = game.addPlayer(new PlayerInfo('Player 2', false)) as PlayerImpl; + }); + + test('should return an empty set when players have no bordering tiles', () => { + const borderTiles = player1.borderTilesWith(player2); + expect(borderTiles.size).toBe(0); + }); + + test('should return correct border tiles when players are adjacent', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player2, new Cell(1, 0)); + + const borderTilesP1 = player1.borderTilesWith(player2); + const borderTilesP2 = player2.borderTilesWith(player1); + + expect(borderTilesP1.size).toBe(1); + expect(borderTilesP2.size).toBe(1); + + const p1BorderTile = Array.from(borderTilesP1)[0]; + const p2BorderTile = Array.from(borderTilesP2)[0]; + + expect(p1BorderTile.cell()).toEqual(new Cell(0, 0)); + expect(p2BorderTile.cell()).toEqual(new Cell(1, 0)); + }); + + test('should update border tiles when a new tile is conquered', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player2, new Cell(2, 0)); + + expect(player1.borderTilesWith(player2).size).toBe(0); + + game.conquer(player2, new Cell(1, 0)); + + const borderTiles = player1.borderTilesWith(player2); + expect(borderTiles.size).toBe(1); + expect(Array.from(borderTiles)[0].cell()).toEqual(new Cell(0, 0)); + }); + + test('should handle multiple border tiles correctly', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player1, new Cell(0, 1)); + game.conquer(player2, new Cell(1, 0)); + game.conquer(player2, new Cell(1, 1)); + + const borderTiles = player1.borderTilesWith(player2); + expect(borderTiles.size).toBe(2); + + const borderCells = Array.from(borderTiles).map(tile => tile.cell()); + expect(borderCells).toEqual(expect.arrayContaining([new Cell(0, 0), new Cell(0, 1)])); + }); + + test('should update border tiles when a tile changes ownership', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player1, new Cell(1, 0)); + game.conquer(player2, new Cell(2, 0)); + + expect(player1.borderTilesWith(player2).size).toBe(1); + + game.conquer(player2, new Cell(1, 0)); + + const borderTilesP1 = player1.borderTilesWith(player2); + const borderTilesP2 = player2.borderTilesWith(player1); + + expect(borderTilesP1.size).toBe(1); + expect(borderTilesP2.size).toBe(1); + + expect(Array.from(borderTilesP1)[0].cell()).toEqual(new Cell(0, 0)); + expect(Array.from(borderTilesP2).map(t => t.cell())).toEqual( + expect.arrayContaining([new Cell(1, 0)]) + ); + }); + + test('should handle border tiles with TerraNullius', () => { + game.conquer(player1, new Cell(0, 0)); + + const borderWithTerraNullius = player1.borderTilesWith(game.terraNullius()); + expect(borderWithTerraNullius.size).toBe(1); + + const borderCells = Array.from(borderWithTerraNullius).map(tile => tile.cell()); + expect(borderCells).toEqual(expect.arrayContaining([new Cell(0, 0)])); + }); + + test('should not include diagonal tiles as borders', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player2, new Cell(1, 1)); + + expect(player1.borderTilesWith(player2).size).toBe(0); + expect(player2.borderTilesWith(player1).size).toBe(0); + }); + + // test('should handle complex border scenarios', () => { + // // Create a more complex border scenario + // // 0 1 2 3 4 + // // 0 1 1 2 2 2 + // // 1 1 1 2 2 2 + // // 2 1 1 1 2 2 + // // 3 1 1 1 1 2 + // // 4 1 1 1 1 1 + + // for (let y = 0; y < 5; y++) { + // for (let x = 0; x < 5; x++) { + // if (x + y < 6) { + // game.conquer(player1, new Cell(x, y)); + // } else { + // game.conquer(player2, new Cell(x, y)); + // } + // } + // } + + // const borderTilesP1 = player1.borderTilesWith(player2); + // const borderTilesP2 = player2.borderTilesWith(player1); + + // expect(borderTilesP1.size).toBe(5); + // expect(borderTilesP2.size).toBe(5); + + // const expectedBorderP1 = [ + // new Cell(2, 0), + // new Cell(2, 1), + // new Cell(3, 2), + // new Cell(3, 3), + // new Cell(4, 3) + // ]; + + // const expectedBorderP2 = [ + // new Cell(2, 2), + // new Cell(3, 1), + // new Cell(3, 2), + // new Cell(4, 1), + // new Cell(4, 2) + // ]; + + // const actualBorderP1 = Array.from(borderTilesP1).map(t => t.cell()); + // const actualBorderP2 = Array.from(borderTilesP2).map(t => t.cell()); + + // expect(actualBorderP1).toEqual(expect.arrayContaining(expectedBorderP1)); + // expect(actualBorderP2).toEqual(expect.arrayContaining(expectedBorderP2)); + // }); + + test('should handle border updates when a player loses all tiles', () => { + game.conquer(player1, new Cell(0, 0)); + game.conquer(player2, new Cell(1, 0)); + + expect(player1.borderTilesWith(player2).size).toBe(1); + + game.conquer(player1, new Cell(1, 0)); // Player 1 takes Player 2's only tile + + expect(player1.borderTilesWith(player2).size).toBe(0); + expect(player2.borderTilesWith(player1).size).toBe(0); + }); +}); \ No newline at end of file diff --git a/tests/NameBoxCalculator.test.ts b/tests/NameBoxCalculator.test.ts new file mode 100644 index 000000000..711a32aa0 --- /dev/null +++ b/tests/NameBoxCalculator.test.ts @@ -0,0 +1,194 @@ +// import {Game, Player, Tile, Cell, TerraNullius, PlayerInfo} from '../src/core/GameApi'; +// import {placeName, calculateBoundingBox, createGrid, findLargestInscribedRectangle, largestRectangleInHistogram, calculateFontSize} from '../src/client/NameBoxCalculator'; + + +// class MockPlayer implements Player { +// constructor(private playerTiles: [number, number][]) { } + +// info(): PlayerInfo { +// return new PlayerInfo("TestPlayer", false); +// } + +// id(): PlayerID { +// return 1; +// } + +// troops(): number { +// return 0; +// } + +// ownsTile(cell: Cell): boolean { +// return this.playerTiles.some(([x, y]) => x === cell.x && y === cell.y); +// } + +// isAlive(): boolean { +// return true; +// } + +// gameState(): Game { +// return {} as Game; // This should be properly implemented +// } + +// executions(): ExecutionView[] { +// return []; +// } + +// borderTilesWith(other: Player | TerraNullius): ReadonlySet { +// return new Set(); +// } + +// isPlayer(): this is Player { +// return true; +// } + +// neighbors(): (Player | TerraNullius)[] { +// return []; +// } +// } + +// class MockGame implements Game { +// private tiles: Tile[][] = []; +// private mockPlayer: Player; + +// constructor(width: number, height: number, playerTiles: [number, number][]) { +// this.tiles = Array(height).fill(null).map(() => Array(width).fill(null)); +// this.mockPlayer = new MockPlayer(playerTiles); + +// for (let y = 0; y < height; y++) { +// for (let x = 0; x < width; x++) { +// this.tiles[y][x] = { +// owner: () => playerTiles.some(([px, py]) => px === x && py === y) ? this.mockPlayer : this.terraNullius(), +// hasOwner: () => playerTiles.some(([px, py]) => px === x && py === y), +// isBorder: () => false, +// isInterior: () => false, +// cell: () => new Cell(x, y), +// terrain: () => ({expansionCost: 1, expansionTime: 1}), +// game: () => this, +// neighbors: () => [] +// }; +// } +// } +// } + +// player(id: PlayerID): Player {return this.mockPlayer;} +// tile(cell: Cell): Tile {return this.tiles[cell.y][cell.x];} +// isOnMap(cell: Cell): boolean {return cell.x >= 0 && cell.x < this.width() && cell.y >= 0 && cell.y < this.height();} +// neighbors(cell: Cell): Cell[] {return [];} +// width(): number {return this.tiles[0].length;} +// height(): number {return this.tiles.length;} +// forEachTile(fn: (tile: Tile) => void): void {this.tiles.flat().forEach(fn);} +// executions(): ExecutionView[] {return [];} +// terraNullius(): TerraNullius {return {ownsTile: () => false, isPlayer: () => false};} +// tick() { } +// addExecution(...exec: Execution[]) { } +// } + +// // Mock implementations +// class MockGame implements Game { +// private tiles: Tile[][] = []; +// private mockPlayer: Player; + +// constructor(width: number, height: number, playerTiles: [number, number][]) { +// this.tiles = Array(height).fill(null).map(() => Array(width).fill(null)); +// this.mockPlayer = { +// info: () => new PlayerInfo("TestPlayer", false), +// id: () => 1, +// troops: () => 0, +// ownsTile: (cell: Cell) => playerTiles.some(([x, y]) => x === cell.x && y === cell.y), +// isAlive: () => true, +// gameState: () => this, +// executions: () => [], +// borderTilesWith: () => new Set(), +// isPlayer: function (this: Player): this is Player {return true}, +// neighbors: () => [] +// }; + +// for (let y = 0; y < height; y++) { +// for (let x = 0; x < width; x++) { +// this.tiles[y][x] = { +// owner: () => playerTiles.some(([px, py]) => px === x && py === y) ? this.mockPlayer : this.terraNullius(), +// hasOwner: () => playerTiles.some(([px, py]) => px === x && py === y), +// isBorder: () => false, +// isInterior: () => false, +// cell: () => new Cell(x, y), +// terrain: () => ({expansionCost: 1, expansionTime: 1}), +// game: () => this, +// neighbors: () => [] +// }; +// } +// } +// } + +// player(id: number): Player {return this.mockPlayer;} +// tile(cell: Cell): Tile {return this.tiles[cell.y][cell.x];} +// isOnMap(cell: Cell): boolean {return cell.x >= 0 && cell.x < this.width() && cell.y >= 0 && cell.y < this.height();} +// neighbors(cell: Cell): Cell[] {return [];} +// width(): number {return this.tiles[0].length;} +// height(): number {return this.tiles.length;} +// forEachTile(fn: (tile: Tile) => void): void {this.tiles.flat().forEach(fn);} +// executions(): any[] {return [];} +// terraNullius(): TerraNullius {return {ownsTile: () => false, isPlayer: () => false};} +// tick() { } +// addExecution(...exec: any[]) { } +// } + +// describe('Territory Name Placement', () => { +// test('placeName should return a position and font size', () => { +// const game = new MockGame(5, 5, [[1, 1], [2, 1], [3, 1], [2, 2], [2, 3]]); +// const player = game.player(1); +// const result = placeName(game, player); + +// expect(result).toHaveProperty('position'); +// expect(result).toHaveProperty('fontSize'); +// expect(result.position).toHaveProperty('x'); +// expect(result.position).toHaveProperty('y'); +// expect(typeof result.fontSize).toBe('number'); +// }); + +// test('calculateBoundingBox should return correct bounding box', () => { +// const game = new MockGame(5, 5, [[1, 1], [3, 3]]); +// const player = game.player(1); +// const boundingBox = calculateBoundingBox(game, player); + +// expect(boundingBox).toEqual({min: {x: 1, y: 1}, max: {x: 3, y: 3}}); +// }); + +// test('createGrid should create correct boolean grid', () => { +// const game = new MockGame(3, 3, [[0, 0], [1, 1], [2, 2]]); +// const player = game.player(1); +// const boundingBox = {min: {x: 0, y: 0}, max: {x: 2, y: 2}}; +// const grid = createGrid(game, player, boundingBox); + +// expect(grid).toEqual([ +// [true, false, false], +// [false, true, false], +// [false, false, true] +// ]); +// }); + +// test('findLargestInscribedRectangle should find correct rectangle', () => { +// const grid = [ +// [true, true, true], +// [true, true, false], +// [true, true, false] +// ]; +// const result = findLargestInscribedRectangle(grid); + +// expect(result).toEqual({x: 0, y: 0, width: 2, height: 3}); +// }); + +// test('largestRectangleInHistogram should find correct rectangle', () => { +// const heights = [2, 1, 5, 6, 2, 3]; +// const result = largestRectangleInHistogram(heights); + +// expect(result).toEqual({x: 2, y: 0, width: 2, height: 5}); +// }); + +// test('calculateFontSize should return correct font size', () => { +// const rectangle = {x: 0, y: 0, width: 100, height: 50}; +// const name = "TestPlayer"; +// const fontSize = calculateFontSize(rectangle, name); + +// expect(fontSize).toBe(25); // 50 / 2 = 25 (height constrained) +// }); +// }); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..64fda67b4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "rootDir": "src", + "moduleResolution": "node", + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true + }, + "include": [ + "src/**/*", + "resources/**/*", + "test/core/GameImpl.test.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..fabde4cd7 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,59 @@ +import path from 'path'; +import {fileURLToPath} from 'url'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export default { + entry: './src/client/Client.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'out'), + }, + module: { + rules: [ + { + test: /\.ts$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.(png|jpe?g|gif)$/i, + type: 'asset/resource', + generator: { + filename: 'images/[hash][ext][query]' + } + } + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './src/client/index.html', + filename: 'index.html' + }), + ], + devServer: { + static: { + directory: path.join(__dirname, 'out'), + }, + compress: true, + port: 9000, + proxy: [ + { + context: ['/socket'], + target: 'ws://localhost:3000', + ws: true, + }, + { + context: ['/lobbies', '/join_game', '/join_lobby'], // Add any other API endpoints here + target: 'http://localhost:3000', + secure: false, + changeOrigin: true, + } + ], + }, +}; \ No newline at end of file