diff --git a/.eslintrc.js b/.eslintrc.js index 08a05048..a2dbbd20 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,10 +3,10 @@ module.exports = { env: { node: true, browser: true, - jest: true + jest: true, }, parserOptions: { - parser: '@typescript-eslint/parser', + parser: "@typescript-eslint/parser", sourceType: "module", ecmaVersion: 2018, ecmaFeatures: { @@ -20,92 +20,92 @@ module.exports = { "eslint:recommended", "plugin:react/recommended", "plugin:react-redux/recommended", - 'plugin:@typescript-eslint/recommended' + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", ], rules: { // override/add rules settings here, such as: // 'vue/no-unused-vars': 'error' - "react/prop-types": 'off', + "object-shorthand": ["error", "always"], + "react/prop-types": "off", // Add TypeScript specific rules (and turn off ESLint equivalents) - '@typescript-eslint/consistent-type-assertions': 'warn', - 'no-array-constructor': 'off', - '@typescript-eslint/no-array-constructor': 'warn', - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'warn', - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'warn', - { - functions: false, - classes: false, - variables: false, - typedefs: false, - }, - ], - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', + "@typescript-eslint/consistent-type-assertions": "warn", + "no-array-constructor": "off", + "@typescript-eslint/no-array-constructor": "warn", + "no-redeclare": "off", + "@typescript-eslint/no-redeclare": "warn", + "no-use-before-define": "off", + "react-redux/useSelector-prefer-selectors": "off", + "@typescript-eslint/no-use-before-define": [ + "warn", + { + functions: false, + classes: false, + variables: false, + typedefs: false, + }, + ], + "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": [ + "error", { allowShortCircuit: true, allowTernary: true, allowTaggedTemplates: true, }, ], - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", { - args: 'none', + args: "none", ignoreRestSiblings: true, }, ], - 'no-useless-constructor': 'off', - '@typescript-eslint/no-useless-constructor': 'warn', - 'react/no-unused-prop-types': 'off', - 'react-redux/no-unused-prop-types': 'warn', - 'react-redux/prefer-separate-component-file': 'off', - semi: [ 'warn', 'never' ] + "no-useless-constructor": "off", + "@typescript-eslint/no-useless-constructor": "warn", + "react/no-unused-prop-types": "off", + "react-redux/no-unused-prop-types": "warn", + "react-redux/prefer-separate-component-file": "off", + "prettier/prettier": "error", + semi: ["warn", "never"], }, settings: { react: { createClass: "createReactClass", // Regex for Component Factory to use, - // default to "createReactClass" - pragma: "React", // Pragma to use, default to "React" - fragment: "Fragment", // Fragment to use (may be a property of ), default to "Fragment" + // default to "createReactClass" + pragma: "React", // Pragma to use, default to "React" + fragment: "Fragment", // Fragment to use (may be a property of ), default to "Fragment" version: "detect", // React version. "detect" automatically picks the version you have installed. - // You can also use `16.0`, `16.3`, etc, if you want to override the detected value. - // It will default to "latest" and warn if missing, and to "detect" in the future - flowVersion: "0.53" // Flow version + // You can also use `16.0`, `16.3`, etc, if you want to override the detected value. + // It will default to "latest" and warn if missing, and to "detect" in the future + flowVersion: "0.53", // Flow version }, propWrapperFunctions: [ - // The names of any function used to wrap propTypes, e.g. `forbidExtraProps`. If this isn't set, any propTypes wrapped in a function will be skipped. - "forbidExtraProps", - {"property": "freeze", "object": "Object"}, - {"property": "myFavoriteWrapper"}, - // for rules that check exact prop wrappers - {"property": "forbidExtraProps", "exact": true} + // The names of any function used to wrap propTypes, e.g. `forbidExtraProps`. If this isn't set, any propTypes wrapped in a function will be skipped. + "forbidExtraProps", + { property: "freeze", object: "Object" }, + { property: "myFavoriteWrapper" }, + // for rules that check exact prop wrappers + { property: "forbidExtraProps", exact: true }, ], componentWrapperFunctions: [ - // The name of any function used to wrap components, e.g. Mobx `observer` function. If this isn't set, components wrapped by these functions will be skipped. - "observer", // `property` - {"property": "styled"}, // `object` is optional - {"property": "observer", "object": "Mobx"}, - {"property": "observer", "object": ""} // sets `object` to whatever value `settings.react.pragma` is set to + // The name of any function used to wrap components, e.g. Mobx `observer` function. If this isn't set, components wrapped by these functions will be skipped. + "observer", // `property` + { property: "styled" }, // `object` is optional + { property: "observer", object: "Mobx" }, + { property: "observer", object: "" }, // sets `object` to whatever value `settings.react.pragma` is set to ], formComponents: [ // Components used as alternatives to
for forms, eg. "CustomForm", - {"name": "Form", "formAttribute": "endpoint"} + { name: "Form", formAttribute: "endpoint" }, ], linkComponents: [ // Components used as alternatives to for linking, eg. "Hyperlink", - {"name": "Link", "linkAttribute": "to"} - ] + { name: "Link", linkAttribute: "to" }, + ], }, - plugins: [ - "react", - "react-redux", - "@typescript-eslint" - ] + plugins: ["react", "react-redux", "@typescript-eslint", "prettier"], } diff --git a/.github/workflows/npmRunDeploy.yml b/.github/workflows/npmRunDeploy.yml index ddd31552..f30c0f5f 100644 --- a/.github/workflows/npmRunDeploy.yml +++ b/.github/workflows/npmRunDeploy.yml @@ -16,11 +16,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v1 with: - node-version: '16.x' + node-version: '20.x' - name: Install Packages run: npm install - name: Build page @@ -31,5 +31,3 @@ jobs: deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} publish_dir: ./build cname: sandify.org - - diff --git a/.github/workflows/npmTest.yml b/.github/workflows/npmTest.yml index 6c2be10a..c83d638f 100644 --- a/.github/workflows/npmTest.yml +++ b/.github/workflows/npmTest.yml @@ -16,12 +16,12 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [20.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: npm install diff --git a/.nvmrc b/.nvmrc index d5d3b29a..5538e1c3 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.14.1 +20.6.1 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..98581ff0 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +node_modules +build +tmp +.eslintcache diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..24e49111 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "semi": false, + "singleAttributePerLine": true +} diff --git a/Dockerfile b/Dockerfile index 89578e7d..b721c896 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Dockerfile for development of sandify -FROM node:16.10.0 +FROM node:20.6.1 RUN npm install -g npm #RUN npm install -g diff --git a/NOTICE b/NOTICE index a8c2fdc8..e2643952 100644 --- a/NOTICE +++ b/NOTICE @@ -323,7 +323,7 @@ THE SOFTWARE. Noisejs, https://gitlab.ilmiont.net/ilmiont/noisejs/ ========================================================= -This project is no longer maintained by the contributor (deleted from Github), and was in turn +This project is no longer maintained by the contributor (deleted from GitHub), and was in turn adapted from an older project, https://github.com/josephg/noisejs. MIT License diff --git a/README.md b/README.md index b6129057..b2ae8eef 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,31 @@ -## Sandify +## Sandify -Sandify is working on a solution to turn your cold, empty hearted, emotionless sand tables into cold, empty hearted emotionless sand table robots with enchanting patterns. +Sandify turns your cold, empty-hearted, emotionless sand tables into cold, empty-hearted, emotionless sand table robots with enchanting patterns. [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fjeffeb3%2Fsandify%2Fbadge&style=for-the-badge)](https://actions-badge.atrox.dev/jeffeb3/sandify/goto) -The output of sandify is code you can run on your sand table. The requirements of this -code are: - - Continuous, since the ball can't lift to travel to another location - - Can't exceed machine limits, since the firmware isn't smart enough about how the limits are - handled. - - Not a requirement, but the patterns would be better if they mostly cover the area. +Sandify outputs code you can run on your sand table. The code produced is: + - Continuous, since the ball can't lift to travel to another location. + - Bounded to never exceed machine limits, as the firmware isn't typically smart enough to handle. -Different designs are possible, and input is welcome from the community. +Sandify supports a large number of shape types and effects, so be creative! Input is welcome from the community. -## Using the tool +## Using Sandify -It's currently hosted at: - -https://sandify.org - - - Visit the webpage - - Adjust the machine limits to match your build - - Play with the inputs until you have a pleasing pattern. - - Save the code with the export button. - -[Check out the wiki](https://github.com/jeffeb3/sandify/wiki) + - Head over to [sandify.org]((https://sandify.org). + - Adjust the machine limits to match your table. + - Add shapes and effects until you create a pleasing pattern. + - Export the code in a format supported by your table. ## More info -See the birthplace here: - -https://forum.v1engineering.com/t/does-this-count-as-a-build/6037?u=jeffeb3 - -## Running sandify from source on a local machine +- Check out the [wiki](https://github.com/jeffeb3/sandify/wiki) for lots of details on features. +- Read about how Sandify [came into being](https://forum.v1engineering.com/t/does-this-count-as-a-build/6037?u=jeffeb3). -AFAIK, the steps to replicate this on your machine are: +## Running from source locally - - Install npm and node.js - - Run 'npm install' from here - - Run 'npm start' and it should open your browser to http://127.0.0.1:3000 + - [Install npm and node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). + - Clone the Sandify repository, and change to that directory. + - `npm install` + - `npm start` + - View in your browser at http://127.0.0.1:3000 or http://localhost:3000. diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..d0c69bc4 --- /dev/null +++ b/TODO.md @@ -0,0 +1,46 @@ +### TODO FOR RELEASE + +- get rectangular preview image from Jeff +- bug: wiper, 90 degrees with noise effect; change wiper size from 4 to 40, hangs browser +- bug: edge-case optimization of pattern with inverted mask is adding a center point within the mask; workaround is to enable "minimize perimeter moves", but this isn't user-friendly obviously + +### FUTURE CONSIDERATION + +- refactor slider so it's precise like fine tuning; support Shift key as well +- use react-router-dom for routes so browser back button works with tabs +- groups + - selectLayersByGroupId - some kind of compound parent key "[a]-[b]" + - big thunk which just changes layer dimensions + - if it has effects, can render those via selector +- store pattern name and other desired attribution (?) in exported file and display it somewhere (either stats tab or in the preview window) +- show pattern start/end type (e.g., 1-0) if start/end if specified +- new fine tuning setting: when backtracking at end, optionally ignore border if enabled + +## NEW IN 1.0.0 + +- User interface + - Layout improvements + - Can zoom in/out in the preview window. + - Can now click on a layer in the preview window to select the layer. + - Improved coloring and display layers and effects when they are selected and dragged to make editing more intuitive. +- Save and load patterns (new .sdf file format) + - Patterns can be saved and loaded from a file. + - Unsaved work is automatically preserved in the browser (can reload the page without losing work) +- Effects + - Effects are now displayed within their parent layer, and are no longer shown in the "layers" list. + - Track + - Improved settings make it easier to either "unwind" a single shape along a prescribed track, or position multiple shapes along a track. + - Fine tuning + - Percentages are based on overall length of the pattern, not number of vertices. Fractional values are supported. + - Fisheye + - Improved rendering when applied to shapes that have straight lines + - Transformer (new) + - New effect to allow resizing and rotation of a given layer +- Shapes + - Loop, scale, spin, and track transformers, as well as fine tuning settings, are now individual effects that can be added to a shape in any order, and are not added by default. + - New "maintain aspect ratio" setting, when enabled, forced a fixed aspect ratio. +- Machines + - Configure (add/remove/edit) multiple machines and switch between them. + - Machine settings from imported patterns are automatically saved as an "[Imported]" machine. +- Export + - Machine and shape settings are no longer added as comments to exported files in various formats. diff --git a/config/jest/fileTransform.js b/config/jest/fileTransform.js index 7a879410..a3eedc5c 100644 --- a/config/jest/fileTransform.js +++ b/config/jest/fileTransform.js @@ -17,7 +17,7 @@ module.exports = { pascalCase: true, }) const componentName = `Svg${pascalCaseFilename}` - return `const React = require('react') + const code = `const React = require('react') module.exports = { __esModule: true, default: ${assetFilename}, @@ -33,6 +33,9 @@ module.exports = { } }), }` + return { + code + } } return `module.exports = ${assetFilename}` diff --git a/index.html b/index.html index dd12700d..c7113703 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,6 @@ - diff --git a/jest.config.js b/jest.config.js index d5df5682..c9768d67 100644 --- a/jest.config.js +++ b/jest.config.js @@ -78,8 +78,9 @@ module.exports = { // A map from regular expressions to module names that allow to stub out resources with a single module moduleNameMapper: { - '^.+\\.scss$': 'identity-obj-proxy', - '^.+\\.css$': 'identity-obj-proxy' + "^.+\\.scss$": "identity-obj-proxy", + "^.+\\.css$": "identity-obj-proxy", + "^@/(.*)$": "/src/$1", }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader @@ -127,16 +128,18 @@ module.exports = { // setupFiles: [], // A list of paths to modules that run some code to configure or set up the testing framework before each test - setupFilesAfterEnv: ['/src/setupTests.js'], + setupFilesAfterEnv: ["/src/setupTests.js"], // A list of paths to snapshot serializer modules Jest should use for snapshot testing // snapshotSerializers: ['enzyme-to-json/serializer'], // The test environment that will be used for testing - testEnvironment: 'jest-environment-jsdom', + testEnvironment: "jsdom", // Options that will be passed to the testEnvironment - // testEnvironmentOptions: {}, + testEnvironmentOptions: { + url: "https://dev.sandify.com" + }, // Adds a location field to test results // testLocationInResults: false, @@ -149,10 +152,10 @@ module.exports = { // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped testPathIgnorePatterns: [ - '/node_modules/', - '/test.js', - '/fixtures.js', - '/gems/' + "/node_modules/", + "/test.js", + "/fixtures.js", + "/gems/", ], // The regexp pattern or array of patterns that Jest uses to detect test files @@ -164,23 +167,19 @@ module.exports = { // This option allows use of a custom test runner // testRunner: "jasmine2", - // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href - testURL: 'https://dev.sandify.com', - // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" // timers: "real", // A map from regular expressions to paths to transformers transform: { - '^.+\\.css$': '/config/jest/cssTransform.js', - '^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)': '/config/jest/fileTransform.js', - '^.+\\.(js|jsx|ts|tsx)$': '/node_modules/babel-jest' + "^.+\\.css$": "/config/jest/cssTransform.js", + "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": + "/config/jest/fileTransform.js", + "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/babel-jest", }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: [ - "/node_modules/points-on-path/src" - ], + transformIgnorePatterns: ["/node_modules/points-on-path/src"], // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them // unmockedModulePathPatterns: undefined, diff --git a/package-lock.json b/package-lock.json index abbecbec..a5320bb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,49 +1,60 @@ { "name": "sandify", - "version": "0.2.8", - "lockfileVersion": 2, + "version": "1.0.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sandify", - "version": "0.2.8", + "version": "1.0.0", "dependencies": { - "@reduxjs/toolkit": "^1.5.1", - "array-move": "^3.0.1", + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", + "@reduxjs/toolkit": "^1.9.5", + "array-move": "^4.0.0", + "bootstrap": "^5.3.1", "buffer": "^6.0.3", - "color": "^3.1.3", + "canvas": "^2.11.2", + "color": "^4.2.3", + "convexhull-js": "^1.0.0", "core-js": "^3.11.0", "curve-matcher": "^1.1.1", "d3": "^7.6.1", "d3-fisheye": "^2.0.1", "gcode-toolpath": "^2.2.0", + "geokdbush": "^1.1.0", "javascript-algorithms": "0.0.5", - "konva": "^7.2.5", - "konva-node": "^0.11.2", + "kdbush": "^4.0.2", + "konva": "^9.2.0", "liang-barsky": "^1.0.4", "lodash": "^4.17.21", - "lru-cache": "^6.0.0", - "mathjs": "^9.3.2", - "node-sass": "^9.0.0", + "lru-cache": "^10.0.1", + "mathjs": "^11.11.0", "opentype.js": "^1.3.4", "point-in-polygon": "^1.1.0", "points-on-path": "^0.2.1", - "rc-slider": "^9.7.5", - "react": "17.0.2", - "react-bootstrap": "^1.5.2", - "react-dom": "^17.0.2", - "react-ga": "^3.3.0", + "rc-slider": "^10.2.1", + "re-reselect": "^4.0.1", + "react": "18.2", + "react-bootstrap": "^2.8.0", + "react-dom": "^18.2", + "react-error-boundary": "^4.0.11", + "react-ga": "^3.3.1", "react-icons": "^4.2.0", - "react-konva": "^17.0.2-0", - "react-redux": "^7.2.3", - "react-select": "^4.3.0", - "react-sortable-hoc": "^2.0", - "react-switch": "^6.0.0", + "react-konva": "^18.2.10", + "react-redux": "^8.1.2", + "react-select": "^5.7.4", + "react-switch": "^7.0.0", + "react-toastify": "^9.1.3", + "react-tooltip": "^5.20.0", "reduce-reducers": "^1.0.4", - "redux": "^4.1.0", - "reselect": "^4.0.0", + "redux": "^4.2.1", + "redux-mock-store": "^1.5.4", + "reselect": "^4.1.8", "sass": "^1.49.11", "seedrandom": "^3.0.5", + "uuid": "^9.0.0", "victor": "^1.1.0" }, "devDependencies": { @@ -51,73 +62,91 @@ "@babel/plugin-transform-runtime": "^7.17.10", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", - "@esbuild-plugins/node-globals-polyfill": "^0.1.1", - "@typescript-eslint/eslint-plugin": "^5.18.0", - "@typescript-eslint/parser": "^5.22.0", - "@vitejs/plugin-react": "^1.0.7", - "babel-jest": "^27.5.1", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.43.0", + "@vitejs/plugin-react": "^4.0.4", + "babel-jest": "^29.6.4", "eslint": "^8.13.0", - "eslint-plugin-jest": "^26.1.4", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-redux": "^4.0.0", - "gh-pages": "^3.2.3", + "gh-pages": "^6.0.0", "identity-obj-proxy": "^3.0.0", - "jest": "^27.5.1", + "jest": "^29.6.4", "jest-canvas-mock": "^2.3.1", - "rollup-plugin-node-polyfills": "^0.2.1", - "vite": "^3.2.7" + "jest-environment-jsdom": "^29.6.4", + "prettier": "3.0.3", + "vite": "^4.4.9", + "vite-plugin-node-polyfills": "^0.12.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -127,148 +156,109 @@ "url": "https://opencollective.com/babel" } }, - "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==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", "dev": true, "dependencies": { - "eslint-scope": "^5.1.1", + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": ">=7.11.0", + "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, - "node_modules/@babel/eslint-parser/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/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/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/@babel/eslint-parser/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, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "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==", - "bin": { - "semver": "bin/semver.js" + "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, + "dependencies": { + "yallist": "^3.0.2" } }, + "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 + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -278,13 +268,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -294,286 +285,259 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@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", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/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, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, - "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==", - "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/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -582,12 +546,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "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.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.22.15", + "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.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -597,14 +561,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -613,16 +577,11 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, "engines": { "node": ">=6.9.0" }, @@ -630,63 +589,49 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "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, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "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, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -695,46 +640,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -743,14 +679,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -759,50 +694,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "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, "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -811,60 +733,46 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "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, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "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, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "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, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" + "@babel/helper-plugin-utils": "^7.10.4" }, "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==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -873,10 +781,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-bigint": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "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==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -885,22 +793,22 @@ "@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, + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { + "node_modules/@babel/plugin-syntax-private-property-in-object": { "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==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -912,60 +820,94 @@ "@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==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "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==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@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.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "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==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -974,85 +916,131 @@ "@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==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "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==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "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==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@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.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1061,13 +1049,13 @@ "@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==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1076,13 +1064,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1091,13 +1080,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1106,15 +1096,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1123,13 +1112,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1138,13 +1127,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1153,20 +1144,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1175,13 +1160,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1190,13 +1175,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1205,14 +1191,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1221,13 +1206,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1236,14 +1222,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1252,13 +1239,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1267,15 +1257,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1284,13 +1273,29 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1299,13 +1304,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1314,15 +1320,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1331,16 +1336,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1349,17 +1355,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1368,14 +1371,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1384,28 +1387,30 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1414,14 +1419,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1430,13 +1435,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1446,12 +1454,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1461,12 +1469,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1476,16 +1484,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1495,12 +1503,42 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1510,13 +1548,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1526,12 +1564,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1541,12 +1580,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1556,17 +1595,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", - "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", + "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1575,22 +1614,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/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, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1600,13 +1630,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1616,12 +1646,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1631,12 +1661,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1646,12 +1676,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1661,12 +1691,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1676,13 +1722,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1691,38 +1737,43 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@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.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@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", @@ -1732,45 +1783,62 @@ "@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-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1779,43 +1847,32 @@ "@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, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1824,43 +1881,51 @@ "@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 + }, "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1869,11 +1934,12 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1886,121 +1952,208 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz", + "integrity": "sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "dependencies": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/modifiers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", + "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.6", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.7", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.1.tgz", + "integrity": "sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/@emotion/babel-plugin": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", - "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", - "stylis": "4.0.13" + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/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==", + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@emotion/memoize": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", - "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.3", - "@emotion/utils": "^1.1.0", - "@emotion/weak-memoize": "^0.2.5", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0", "react": ">=16.8.0" }, "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, "@types/react": { "optional": true } } }, "node_modules/@emotion/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dependencies": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } }, "node_modules/@emotion/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@esbuild-plugins/node-globals-polyfill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", - "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", + "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", "dev": true, "peerDependencies": { "esbuild": "*" } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", - "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz", + "integrity": "sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==", "cpu": [ "arm" ], @@ -2009,4389 +2162,4143 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", - "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz", + "integrity": "sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "optional": true, "os": [ - "linux" + "android" ], + "peer": true, "engines": { "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz", + "integrity": "sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz", + "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz", + "integrity": "sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": ">=10.10.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz", + "integrity": "sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==", + "cpu": [ + "arm64" + ], "dev": true, - "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" - }, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz", + "integrity": "sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-arm": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz", + "integrity": "sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz", + "integrity": "sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz", + "integrity": "sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz", + "integrity": "sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz", + "integrity": "sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz", + "integrity": "sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz", + "integrity": "sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz", + "integrity": "sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "node_modules/@esbuild/linux-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz", + "integrity": "sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@jest/reporters/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==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz", + "integrity": "sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz", + "integrity": "sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/source-map/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==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz", + "integrity": "sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz", + "integrity": "sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz", + "integrity": "sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/@esbuild/win32-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz", + "integrity": "sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@jest/transform/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==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + "node_modules/@eslint/eslintrc/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/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "node_modules/@eslint/eslintrc/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": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" + "argparse": "^2.0.1" }, "bin": { - "node-pre-gyp": "bin/node-pre-gyp" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" + "@floating-ui/utils": "^0.1.3" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">= 8" + "node": ">=10.10.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "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": ">=8" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "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, + "engines": { + "node": ">=8" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "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, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@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": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@popperjs/core": { - "version": "2.11.5", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", - "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@reduxjs/toolkit": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.1.tgz", - "integrity": "sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.0-beta" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@reduxjs/toolkit/node_modules/reselect": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", - "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/@restart/context": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", - "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", - "peerDependencies": { - "react": ">=16.3.2" + "node_modules/@jest/console/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==", + "dev": true + }, + "node_modules/@jest/console/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==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@restart/hooks": { - "version": "0.3.27", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", - "integrity": "sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw==", + "node_modules/@jest/console/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==", + "dev": true, "dependencies": { - "dequal": "^2.0.2" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": ">=16.8.0" + "engines": { + "node": ">=8" } }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "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, "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "@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": ">= 8.0.0" + "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/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@jest/core/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==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "node_modules/@jest/core/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==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/@jest/core/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==", + "dev": true + }, + "node_modules/@jest/core/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==", "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/@jest/core/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==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "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, "dependencies": { - "@babel/types": "^7.3.0" + "@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/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "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, "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/invariant": { - "version": "2.2.35", - "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", - "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "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, "dependencies": { - "@types/istanbul-lib-coverage": "*" + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "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, "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.1.tgz", - "integrity": "sha512-VnWlrVgG0dYt+NqlfMI0yUYb8Rdl4XUROyH+c6gq/iFCiZ805Vi//26UW38DHnxQkbDhnrIWTBiy6oKZqL11cw==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-reconciler": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.4.tgz", - "integrity": "sha512-bdx4aIBkQRDAnzc23JBFeZmVpmfLJHfHikmQukEt9qs4bQtq9f+PDbNwhR9u74FkIUyIDz1I1qJ8OF6RwadKpw==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-redux": { - "version": "7.1.23", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.23.tgz", - "integrity": "sha512-D02o3FPfqQlfu2WeEYwh3x2otYd2Dk1o8wAfsA0B1C2AJEFxE663Ozu7JzuWbznGgW248NaOF6wsqCGNq9d3qw==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", - "dependencies": { - "@types/react": "*" + "@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/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "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, "dependencies": { - "@types/yargs-parser": "*" + "@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/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "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, "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@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": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "typescript": { + "node-notifier": { "optional": true } } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", - "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", + "node_modules/@jest/reporters/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==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "debug": "^4.3.2" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", - "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", - "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", + "node_modules/@jest/reporters/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==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", - "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", + "node_modules/@jest/reporters/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==", + "dev": true + }, + "node_modules/@jest/reporters/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==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", - "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.22.0", - "eslint-visitor-keys": "^3.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "node_modules/@jest/reporters/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==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "eslint": "*" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "node_modules/@jest/reporters/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==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "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, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "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, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/utils/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==", + "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, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@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": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/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": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "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, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@vitejs/plugin-react": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.0.tgz", - "integrity": "sha512-H+yIupjUE4a+E4oeWUv4xUJIMR0DWBIMUG/DYgvj0J9Vu1rdHAlJ5JdbI+N1KDUD7Ee2fZ1DMPZ/NBg6mXtoCw==", + "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, "dependencies": { - "@babel/core": "^7.17.8", - "@babel/plugin-transform-react-jsx": "^7.17.3", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-jsx-self": "^7.16.7", - "@babel/plugin-transform-react-jsx-source": "^7.16.7", - "@rollup/pluginutils": "^4.2.0", - "react-refresh": "^0.11.0", - "resolve": "^1.22.0" + "@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": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@vitejs/plugin-react/node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", - "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", + "node_modules/@jest/transform/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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@vitejs/plugin-react/node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", - "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/@jest/transform/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==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.4.0" + "node": ">=7.0.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } + "node_modules/@jest/transform/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==", + "dev": true }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@jest/transform/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==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8" } }, - "node_modules/acorn-walk": { + "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "debug": "4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "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, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "@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": ">= 8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/types/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==", + "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "color-convert": "^2.0.1" }, "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" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-escapes/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==", + "node_modules/@jest/types/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==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=7.0.0" } }, - "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==", + "node_modules/@jest/types/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==", + "dev": true + }, + "node_modules/@jest/types/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==", + "dev": true, "engines": { "node": ">=8" } }, - "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==", + "node_modules/@jest/types/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==", + "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.0.0" } }, - "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==", + "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/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/array-move": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-move/-/array-move-3.0.1.tgz", - "integrity": "sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==", - "engines": { - "node": ">=10" + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, + "node_modules/@mapbox/node-pre-gyp/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": ">=0.10.0" + "node": ">=10" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "engines": { - "node": "*" + "eslint-scope": "5.1.1" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">= 8" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "object.assign": "^4.1.0" + "engines": { + "node": ">= 8" } }, - "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==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "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" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/@react-aria/ssr": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", + "integrity": "sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@swc/helpers": "^0.5.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-macros/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", + "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" }, "peerDependencies": { - "@babel/core": "^7.0.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, - "bin": { - "semver": "bin/semver.js" + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, + "node_modules/@restart/hooks": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", + "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" + "dequal": "^2.0.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.8.0" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, + "node_modules/@restart/ui": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", + "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.14.0", + "react-dom": ">=16.14.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==", + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.4.tgz", + "integrity": "sha512-dM93Nyqp9Ah14jvThFFA30ifjB8cDKk3Bx69M1nIIHGytXug3VrTv5HEuYBzevu45HvZ0ho7t+40bmScmkzZhg==", "dev": true, "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" + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "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/@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 }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" } }, - "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==", + "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, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "tslib": "^2.4.0" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 10" } }, - "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==", + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, "dependencies": { - "node-int64": "^0.4.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "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/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dev": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@babel/types": "^7.0.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/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dev": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/types": "^7.20.7" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", + "dev": true }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "node_modules/@types/graceful-fs": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "dev": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz", + "integrity": "sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw==", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001430", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", - "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true }, - "node_modules/canvas": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", - "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", - "hasInstallScript": true, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", + "dev": true, "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.15.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/istanbul-lib-report": "*" } }, - "node_modules/chalk/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==", + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/chalk/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==", + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.8.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.5.tgz", + "integrity": "sha512-SPlobFgbidfIeOYlzXiEjSYeIJiOCthv+9tSQVpvk4PAdIIc+2SmjNVzWXk9t0Y7dl73Zdf+OgXKHX9XtkqUpw==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "undici-types": "~5.25.1" } }, - "node_modules/chalk/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/chalk/node_modules/has-flag": { + "node_modules/@types/parse-json": { "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" - } + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "node_modules/chalk/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==", + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + }, + "node_modules/@types/react": { + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "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, - "engines": { - "node": ">=10" + "node_modules/@types/react-reconciler": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.5.tgz", + "integrity": "sha512-Qrwgl4NxNYH1oAJSJtlMGu95uaeMqrGiKzxwI90VvofBkJAj4GxcCAsJMZkwdR/qAxlm84YEXa8Fqu2xXk0arw==", + "dependencies": { + "@types/react": "*" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/@types/react-transition-group": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", + "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", "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" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "@types/react": "*" } }, - "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/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "node_modules/@types/tough-cookie": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", + "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", + "dev": true }, - "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/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, - "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/@types/warning": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.1.tgz", + "integrity": "sha512-ywJmriP+nvjBKNBEMaNZgj2irZHoxcKeYcyMLbqhYKbDVn8yCIULy2Ol/tvIb37O3IBeZj3RU4tXqQTtGwoAMg==" }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/@types/yargs": { + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "node_modules/@types/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", "dev": true }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@typescript-eslint/eslint-plugin/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==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", - "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "lru-cache": "^6.0.0" + }, "bin": { - "color-support": "bin.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": 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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/complex.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.0.tgz", - "integrity": "sha512-RdcrDz7YynXp/YXGwXIZ4MtmxXXniT5WmLFRX93cuXUX+0geWAqB8l1BoLXF+3BkzviVzHlpw27P9ow7MvlcmA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.1" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/convert-source-map/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==" - }, - "node_modules/core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "browserslist": "^4.19.1", - "semver": "7.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "node_modules/@typescript-eslint/typescript-estree/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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">= 8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/cssfontparser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", - "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=", - "dev": true - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/@typescript-eslint/utils/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==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - }, - "node_modules/curve-matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/curve-matcher/-/curve-matcher-1.1.1.tgz", - "integrity": "sha512-dVjbB4izZ+nkxU5oq15ElZk2IFpR1oTb1wEfMolOADse8veTn+iwF6wXejS4ll9DZRtO0/s95BDiIz6QXuE5bA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/d3": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", - "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/d3-array": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, "dependencies": { - "internmap": "1 - 2" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "node_modules/@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": ">=12" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", - "dependencies": { - "d3-array": "^3.2.0" - }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-delaunay": { + "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "delaunator": "5" + "debug": "4" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" + "node": ">= 6.0.0" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "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": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "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==", + "dev": true, "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "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": ">= 10" + "node": ">=8" } }, - "node_modules/d3-dsv/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==", + "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==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dependencies": { - "d3-dsv": "1 - 3" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/d3-fisheye": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/d3-fisheye/-/d3-fisheye-2.1.2.tgz", - "integrity": "sha512-qioAftIns1yjPYEPetZnntMKUAWSt9TAx1MtCfT4n5KbJb/BH1vgnJV7927uKoQHWOAelXacOP0nwD1PuYlo4w==" - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "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, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" + "sprintf-js": "~1.0.2" } }, - "node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "dependencies": { - "d3-array": "2.5.0 - 3" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, "dependencies": { - "d3-color": "1 - 3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", - "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "node_modules/array-move": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz", + "integrity": "sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==", "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" } }, - "node_modules/d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, "dependencies": { - "d3-path": "1 - 3" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "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, "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "@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": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "d3-selection": "2 - 3" + "@babel/core": "^7.8.0" } }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "node_modules/babel-jest/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==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/babel-jest/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==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/babel-jest/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==", + "dev": true + }, + "node_modules/babel-jest/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==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "node_modules/babel-jest/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==", + "dev": true, "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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, + "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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "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, "dependencies": { - "mimic-response": "^2.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "@babel/helper-define-polyfill-provider": "^0.4.3" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "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, "dependencies": { - "robust-predicates": "^3.0.0" + "@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/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "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, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "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/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } + "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/dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=0.6" } }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { "node": ">=8" } }, - "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, - "engines": { - "node": ">=8" - } + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node_modules/bootstrap": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "big-integer": "^1.6.44" }, "engines": { - "node": ">=8" + "node": ">= 5.10.0" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "esutils": "^2.0.2" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/dom-align": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.2.tgz", - "integrity": "sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg==" + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "resolve": "^1.17.0" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==" + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } }, - "node_modules/email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "dev": true + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "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/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, "dependencies": { - "iconv-lite": "^0.6.2" + "pako": "~1.0.5" } }, - "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, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "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" + } + ], "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "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/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, + "dependencies": { + "node-int64": "^0.4.0" } }, - "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/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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.2.1" + } }, - "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==", + "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/buffer-polyfill": { + "name": "buffer", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "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": { - "is-arrayish": "^0.2.1" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/error-ex/node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, - "node_modules/es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "run-applescript": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", - "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.13", - "@esbuild/linux-loong64": "0.15.13", - "esbuild-android-64": "0.15.13", - "esbuild-android-arm64": "0.15.13", - "esbuild-darwin-64": "0.15.13", - "esbuild-darwin-arm64": "0.15.13", - "esbuild-freebsd-64": "0.15.13", - "esbuild-freebsd-arm64": "0.15.13", - "esbuild-linux-32": "0.15.13", - "esbuild-linux-64": "0.15.13", - "esbuild-linux-arm": "0.15.13", - "esbuild-linux-arm64": "0.15.13", - "esbuild-linux-mips64le": "0.15.13", - "esbuild-linux-ppc64le": "0.15.13", - "esbuild-linux-riscv64": "0.15.13", - "esbuild-linux-s390x": "0.15.13", - "esbuild-netbsd-64": "0.15.13", - "esbuild-openbsd-64": "0.15.13", - "esbuild-sunos-64": "0.15.13", - "esbuild-windows-32": "0.15.13", - "esbuild-windows-64": "0.15.13", - "esbuild-windows-arm64": "0.15.13" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", - "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", - "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", - "cpu": [ - "arm64" - ], + "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, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", - "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", - "cpu": [ - "x64" - ], + "node_modules/caniuse-lite": { + "version": "1.0.30001547", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", + "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } + "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" + } + ] }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", - "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", - "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", - "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", - "cpu": [ - "arm64" - ], + "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, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", - "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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": ">=12" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/esbuild-linux-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", - "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/chokidar/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==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", - "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", - "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", - "cpu": [ - "arm64" - ], + "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, - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } ], "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", - "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", - "cpu": [ - "mips64el" - ], + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", - "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", - "cpu": [ - "ppc64" - ], + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "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, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", - "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", - "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", - "cpu": [ - "s390x" - ], + "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, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", - "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "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 + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, "engines": { - "node": ">=12" + "node": ">=12.5.0" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", - "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "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==", + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", - "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" + "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==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/esbuild-windows-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", - "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, - "node_modules/esbuild-windows-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", - "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "node_modules/color/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": ">=12" + "node": ">=7.0.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", - "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", - "cpu": [ - "arm64" - ], + "node_modules/color/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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">=6" + "node": ">= 10" } }, - "node_modules/escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, - "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==", + "node_modules/complex.js": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } }, - "node_modules/escodegen": { + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/convexhull-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/convexhull-js/-/convexhull-js-1.0.0.tgz", + "integrity": "sha512-gPpknWY4saiRCKMuylETxHdFyn/nhURqYy8nD24gDDGccFPpCKTV4wlVWeOs24ltmoiHD9DawlhBq2b0qM9o9w==" + }, + "node_modules/core-js": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/core-js-compat": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "browserslist": "^4.22.1" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" } }, - "node_modules/escodegen/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==", + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "node_modules/eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", + "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, "dependencies": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" }, "bin": { - "eslint": "bin/eslint.js" + "create-jest": "bin/create-jest.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "26.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.4.tgz", - "integrity": "sha512-wgqxujmqc2qpvZqMFWCh6Cniqc8lWpapvXt9j/19DmBDqeDaYhJrSRezYR1SKyemvjx+9e9kny/dgRahraHImA==", + "node_modules/create-jest/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==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-plugin-react-redux": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-redux/-/eslint-plugin-react-redux-4.0.0.tgz", - "integrity": "sha512-oT43AoOgqsXjYKm7JiQCD1Mxp2tjO/ywv/WJn0cVNVirpd91xfvxWnYU93tqKSZwdryxdZ/S+ea2iIYeRdeaZg==", + "node_modules/create-jest/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==", "dev": true, "dependencies": { - "eslint-plugin-react": "^7.28.0", - "eslint-rule-composer": "^0.3.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^7 || ^8", - "eslint-plugin-react": "^7.28.0" + "node": ">=7.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/create-jest/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==", + "dev": true + }, + "node_modules/create-jest/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==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "node_modules/create-jest/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==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "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==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": "*" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } + "node_modules/cssfontparser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", + "integrity": "sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==", + "dev": true }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "cssom": "~0.3.6" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "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==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/curve-matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/curve-matcher/-/curve-matcher-1.1.1.tgz", + "integrity": "sha512-dVjbB4izZ+nkxU5oq15ElZk2IFpR1oTb1wEfMolOADse8veTn+iwF6wXejS4ll9DZRtO0/s95BDiIz6QXuE5bA==", "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", "dependencies": { - "estraverse": "^5.1.0" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "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, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dependencies": { - "estraverse": "^5.2.0" + "internmap": "1 - 2" }, "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "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, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "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, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "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" + "d3-path": "1 - 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=12" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "d3-array": "^3.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "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-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "delaunator": "5" }, "engines": { - "node": ">=8.6.0" + "node": ">=12" } }, - "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-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dependencies": { - "bser": "2.1.1" + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "flat-cache": "^3.0.4" + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/d3-fisheye": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/d3-fisheye/-/d3-fisheye-2.1.2.tgz", + "integrity": "sha512-qioAftIns1yjPYEPetZnntMKUAWSt9TAx1MtCfT4n5KbJb/BH1vgnJV7927uKoQHWOAelXacOP0nwD1PuYlo4w==" + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "to-regex-range": "^5.0.1" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "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==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" } }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, - "node_modules/form-data": { + "node_modules/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "d3-color": "1 - 3" }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "node": ">=12" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "engines": { - "node": ">=6 <7 || >=8" + "node": ">=12" } }, - "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" - }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=12" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dependencies": { - "globule": "^1.0.0" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">= 4.0.0" + "node": ">=12" } }, - "node_modules/gcode-interpreter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gcode-interpreter/-/gcode-interpreter-2.1.0.tgz", - "integrity": "sha512-2NFUuTenhhEkucGj+uYDdXepJpJRtzDkjelcdv/jjNHdqA21c4OQRJaHHja6LN0GlSxytDg1gm0h3j3CNDlQ3g==", + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dependencies": { - "gcode-parser": "^1.3.6" + "d3-path": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/gcode-parser": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/gcode-parser/-/gcode-parser-1.3.7.tgz", - "integrity": "sha512-NvRSvhHT1P7GqcuDruG+DoOe3MklCmR4fxCKMlUlIdkZEJTZ8C6RdnNNffWwJWy1L0oClJBejCU6TY38evNABQ==", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/gcode-toolpath": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gcode-toolpath/-/gcode-toolpath-2.2.0.tgz", - "integrity": "sha512-iiqaEo8/r3UzmJ4GBAuf0ERBWgDC0sjqArD8aRnNNo+9k9RiqHc1nzC0EaaDoLc7h/+1DypyCc2c9tWuuRm2RA==", + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "gcode-interpreter": "^2.0.2" + "d3-time": "1 - 3" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "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==", + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "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==", + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "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==", + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, "engines": { - "node": ">=8.0.0" + "node": ">=12" } }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "engines": { - "node": ">=0.10.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, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "mimic-response": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/gh-pages": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, - "dependencies": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "globby": "^6.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/gh-pages/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "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, - "dependencies": { - "array-uniq": "^1.0.1" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/gh-pages/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gh-pages/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", "dev": true, "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { + "node_modules/default-browser/node_modules/execa": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": "*" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=14.18.0" } }, - "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==", + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globule": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", - "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + "path-key": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4" } }, - "node_modules/has-flag": { + "node_modules/define-lazy-prop": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "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==", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -6400,301 +6307,323 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "robust-predicates": "^3.0.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "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 + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, + "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, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "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==", + "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, "engines": { - "node": ">=10.17.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "dependencies": { - "ms": "^2.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "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==", + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "path-type": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/identity-obj-proxy": { + "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "harmony-reflect": "^1.4.6" + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.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/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", "dev": true, "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", - "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", + "node": ">=10" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "url": "https://bevry.me/fund" } }, - "node_modules/immutable": { + "node_modules/domexception": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/electron-to-chromium": { + "version": "1.4.554", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", + "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, + "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, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "engines": { - "node": ">=0.8.19" - } + "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/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==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "is-arrayish": "^0.2.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/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", - "side-channel": "^1.0.4" + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, - "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==", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "has": "^1.0.3" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6703,1819 +6632,1423 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "node_modules/esbuild": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz", + "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==", "dev": true, - "engines": { - "node": ">= 0.4" + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" + "engines": { + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@esbuild/android-arm": "0.19.4", + "@esbuild/android-arm64": "0.19.4", + "@esbuild/android-x64": "0.19.4", + "@esbuild/darwin-arm64": "0.19.4", + "@esbuild/darwin-x64": "0.19.4", + "@esbuild/freebsd-arm64": "0.19.4", + "@esbuild/freebsd-x64": "0.19.4", + "@esbuild/linux-arm": "0.19.4", + "@esbuild/linux-arm64": "0.19.4", + "@esbuild/linux-ia32": "0.19.4", + "@esbuild/linux-loong64": "0.19.4", + "@esbuild/linux-mips64el": "0.19.4", + "@esbuild/linux-ppc64": "0.19.4", + "@esbuild/linux-riscv64": "0.19.4", + "@esbuild/linux-s390x": "0.19.4", + "@esbuild/linux-x64": "0.19.4", + "@esbuild/netbsd-x64": "0.19.4", + "@esbuild/openbsd-x64": "0.19.4", + "@esbuild/sunos-x64": "0.19.4", + "@esbuild/win32-arm64": "0.19.4", + "@esbuild/win32-ia32": "0.19.4", + "@esbuild/win32-x64": "0.19.4" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } + "node_modules/escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" }, - "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==", + "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": ">=8" + "node": ">=0.8.0" } }, - "node_modules/is-generator-fn": { + "node_modules/escodegen": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, - "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==", "dependencies": { - "is-extglob": "^2.1.1" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "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-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "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==", - "engines": { - "node": ">=0.12.0" + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/eslint-plugin-jest": { + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz", + "integrity": "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/eslint-plugin-prettier": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/eslint-plugin-react-redux": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-redux/-/eslint-plugin-react-redux-4.0.0.tgz", + "integrity": "sha512-oT43AoOgqsXjYKm7JiQCD1Mxp2tjO/ywv/WJn0cVNVirpd91xfvxWnYU93tqKSZwdryxdZ/S+ea2iIYeRdeaZg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "eslint-plugin-react": "^7.28.0", + "eslint-rule-composer": "^0.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^7 || ^8", + "eslint-plugin-react": "^7.28.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "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/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "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": { - "@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" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/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, - "bin": { - "semver": "bin/semver.js" + "node": ">=8.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/istanbul-lib-report/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==", + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-report/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==", + "node_modules/eslint/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==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/eslint/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/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "node_modules/eslint/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==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/javascript-algorithms": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/javascript-algorithms/-/javascript-algorithms-0.0.5.tgz", - "integrity": "sha1-l/iSEOPfFoYjL/+y/c0HueMmO9g=" - }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" + "node_modules/eslint/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==", + "dev": true }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "node_modules/eslint/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, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-canvas-mock": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.3.1.tgz", - "integrity": "sha512-5FnSZPrX3Q2ZfsbYNE3wqKR3+XorN8qFzDzB5o0golWgt6EOX1+emBnpOc9IAQ+NXFj8Nzm3h7ZdE/9H0ylBcg==", - "dev": true, - "dependencies": { - "cssfontparser": "^1.2.1", - "moo-color": "^1.0.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "node_modules/eslint/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": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "node_modules/eslint/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "type-fest": "^0.20.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/eslint/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==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "node_modules/eslint/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": { - "detect-newline": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "node_modules/eslint/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": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "p-locate": "^5.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/eslint/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": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "node_modules/eslint/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==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "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==", "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "estraverse": "^5.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10" } }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "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": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4.0" } }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "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, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "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, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.8.x" } }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "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": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "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, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.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, + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "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-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.6.0" } }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "node_modules/fast-glob/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": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "is-glob": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 6" } }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "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-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "reusify": "^1.0.4" } }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "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, "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bser": "2.1.1" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "flat-cache": "^3.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "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==", + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-worker/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==", - "dev": true, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "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==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" - }, - "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==" + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, - "node_modules/js-yaml": { + "node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=12.0.0" } }, - "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==" - }, - "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/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "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==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "is-callable": "^1.1.3" } }, - "node_modules/jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=4.0" + "node": ">= 6" } }, - "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==", + "node_modules/fraction.js": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.4.tgz", + "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==", "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/konva": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/konva/-/konva-7.2.5.tgz", - "integrity": "sha512-yk/li8rUF+09QNlOdkwbEId+QvfATMe/aMGVouWW1oFoUVTYWHsQuIAE6lWy11DK8mLJEJijkNAXC5K+NVlMew==", - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/lavrton" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/konva" - }, - { - "type": "github", - "url": "https://github.com/sponsors/lavrton" - } - ] - }, - "node_modules/konva-node": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/konva-node/-/konva-node-0.11.2.tgz", - "integrity": "sha512-puuzsIT+ykOBRWK6+M6TNyZnhqQKTiIK82GQdeTummog16WB+Fi/98vqMQGP9SIu2wp816lc04uK6TJ82HOuLQ==", - "deprecated": "konva-node package is deprecated. please use konva package directly. For more information https://github.com/konvajs/konva#4-nodejs-env", "dependencies": { - "canvas": "^2.5.0", - "konva": "^7" - } - }, - "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, + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=14.14" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, + "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": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 8" } }, - "node_modules/liang-barsky": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/liang-barsky/-/liang-barsky-1.0.5.tgz", - "integrity": "sha512-3ReVl+2LKVUYDlASKMJJmi5X17LNOIBYZzDJYG7vqVC/zshlHYWBLs35b1VFRWY4MvwrPhvM1SvRAHYH3OfBHg==" - }, - "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==" - }, - "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==", + "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": { - "p-locate": "^4.1.0" + "yallist": "^4.0.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": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } + "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==" }, - "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" - }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "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==", "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, "dependencies": { - "semver": "^6.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mathjs": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-9.5.2.tgz", - "integrity": "sha512-c0erTq0GP503/Ch2OtDOAn50GIOsuxTMjmE00NI/vKJFSWrDaQHRjx6ai+16xYv70yBSnnpUgHZGNf9FR9IwmA==", + "node_modules/gcode-interpreter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gcode-interpreter/-/gcode-interpreter-2.1.0.tgz", + "integrity": "sha512-2NFUuTenhhEkucGj+uYDdXepJpJRtzDkjelcdv/jjNHdqA21c4OQRJaHHja6LN0GlSxytDg1gm0h3j3CNDlQ3g==", "dependencies": { - "@babel/runtime": "^7.15.4", - "complex.js": "^2.0.15", - "decimal.js": "^10.3.1", - "escape-latex": "^1.2.0", - "fraction.js": "^4.1.1", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^2.0.0" - }, - "bin": { - "mathjs": "bin/cli.js" + "gcode-parser": "^1.3.6" }, "engines": { - "node": ">= 12" + "node": ">=4" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, + "node_modules/gcode-parser": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/gcode-parser/-/gcode-parser-1.3.7.tgz", + "integrity": "sha512-NvRSvhHT1P7GqcuDruG+DoOe3MklCmR4fxCKMlUlIdkZEJTZ8C6RdnNNffWwJWy1L0oClJBejCU6TY38evNABQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "engines": { - "node": ">=10" + "node_modules/gcode-toolpath": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gcode-toolpath/-/gcode-toolpath-2.2.0.tgz", + "integrity": "sha512-iiqaEo8/r3UzmJ4GBAuf0ERBWgDC0sjqArD8aRnNNo+9k9RiqHc1nzC0EaaDoLc7h/+1DypyCc2c9tWuuRm2RA==", + "dependencies": { + "gcode-interpreter": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, - "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/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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, + "node_modules/geokdbush": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/geokdbush/-/geokdbush-1.1.0.tgz", + "integrity": "sha512-pyyrGCMXZwWJaGt1YZIgGQg5ol3JjvEKESTon10HxdfWXlaqh5An8fNJkwOYUE+VkQfCdvYQKPVezTQU9AqWAA==", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "tinyqueue": "^1.2.2" } }, - "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==", + "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": ">= 0.6" + "node": "6.* || 8.* || >= 10.*" } }, - "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==", + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "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": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/gh-pages": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.0.0.tgz", + "integrity": "sha512-FXZWJRsvP/fK2HJGY+Di6FRNHvqFF6gOIELaopDjXXgjeOYSNURcuYwEO/6bwuq6koP5Lnkvnr5GViXzuOB89g==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "async": "^3.2.4", + "commander": "^11.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/gh-pages/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "array-uniq": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/gh-pages/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/gh-pages/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "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": ">=8" + "node": "*" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 8" + "node": ">=10.13.0" } }, - "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" - }, + "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, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/minipass-sized": { + "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/moo-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz", - "integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "color-name": "^1.1.4" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/moo-color/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/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==", "dev": true }, - "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/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 0.4.0" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "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/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "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==", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=4" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { - "node": ">= 10.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" - }, - "node_modules/node-sass": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz", - "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==", - "hasInstallScript": true, - "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "make-fetch-happen": "^10.0.4", - "meow": "^9.0.0", - "nan": "^2.17.0", - "node-gyp": "^8.4.1", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^2.2.1" - }, - "bin": { - "node-sass": "bin/node-sass" - }, + "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==", + "dev": true, "engines": { - "node": ">=16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-sass/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-sass/node_modules/@npmcli/move-file": { + "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/node-sass/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/node-sass/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==", + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/node-sass/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "react-is": "^16.7.0" } }, - "node_modules/node-sass/node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "whatwg-encoding": "^2.0.0" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-sass/node_modules/http-proxy-agent": { + "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 + }, + "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -8525,217 +8058,201 @@ "node": ">= 6" } }, - "node_modules/node-sass/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/node-sass/node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true }, - "node_modules/node-sass/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { - "brace-expansion": "^2.0.1" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/node-sass/node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">=10.17.0" } }, - "node_modules/node-sass/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "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==", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/node-sass/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, "dependencies": { - "minipass": "^3.1.1" + "harmony-reflect": "^1.4.6" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/node-sass/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.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/node-sass/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dependencies": { - "imurmurhash": "^0.1.4" - }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 4" } }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "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==", + "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": { - "path-key": "^3.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.19" } }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "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==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "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/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, "engines": { "node": ">= 0.4" } }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8744,29 +8261,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "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==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8775,28 +8295,37 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "has-bigints": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8805,1833 +8334,1700 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "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==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/opentype.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", - "integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==", + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dependencies": { - "string.prototype.codepointat": "^0.2.1", - "tiny-inflate": "^1.0.3" - }, - "bin": { - "ot": "bin/ot" + "has": "^1.0.3" }, - "engines": { - "node": ">= 8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dependencies": { - "p-try": "^2.0.0" + "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": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "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==", - "dependencies": { - "p-limit": "^2.2.0" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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": ">=6" + "node": ">=8" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, + "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, "engines": { "node": ">=6" } }, - "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==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "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" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" - }, - "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==", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/ljharb" } }, - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, "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==", + "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": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, + "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==", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "pinkie": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "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==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/point-in-polygon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" - }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" - }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "call-bind": "^1.0.2" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "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": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/process-nextick-args": { + "node_modules/is-weakmap": { "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==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "dependencies": { - "react-is": "^16.3.2", - "warning": "^4.0.0" + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" }, - "peerDependencies": { - "react": ">=0.14.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "engines": { + "node": ">=8" + } }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "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, + "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/rc-align": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.11.tgz", - "integrity": "sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A==", + "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, "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "lodash": "^4.17.21", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/rc-motion": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.9.tgz", - "integrity": "sha512-lrIpBQQ5gIDVedaubnhXuTjC3zpW7HvC/34KyvcHlf6fBjuBlwv45PbonFhmk4Rgu7gLQYrKoMGgFVXqxxyLCw==", + "node_modules/istanbul-lib-report/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.19.2" + "yallist": "^4.0.0" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "engines": { + "node": ">=10" } }, - "node_modules/rc-slider": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz", - "integrity": "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==", + "node_modules/istanbul-lib-report/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, "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-tooltip": "^5.0.1", - "rc-util": "^5.16.1", - "shallowequal": "^1.1.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8.x" + "node": ">=10" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rc-tooltip": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz", - "integrity": "sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA==", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.11.2", - "rc-trigger": "^5.0.0" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/rc-trigger": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.12.tgz", - "integrity": "sha512-+rymZRe23f2imQwuelWqWSKj3tAnlDbjEU8yjKzW5zh8AlChJ/brda7Qg3FQ4f2jcAquL7phVOwq5BZp2PdhAg==", + "node_modules/istanbul-lib-report/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.19.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "node": ">=8" } }, - "node_modules/rc-util": { - "version": "5.19.6", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.19.6.tgz", - "integrity": "sha512-/xJ8UtpbuJj7+2ftxVQM6gUzLY+Towq4iB6sP6/2hhn6mwWNLij2I+1qOkLv75I1jqWKpS+gU8A2EmbfLtGxNg==", + "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, "dependencies": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "engines": { + "node": ">=10" } }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/react-bootstrap": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.4.tgz", - "integrity": "sha512-z3BhBD4bEZuLP8VrYqAD7OT7axdcSkkyvWBWnS2U/4MhyabUihrUyucPWkan7aMI1XIHbmH4LCpEtzWGfx/yfA==", - "dependencies": { - "@babel/runtime": "^7.14.0", - "@restart/context": "^2.1.4", - "@restart/hooks": "^0.3.26", - "@types/invariant": "^2.2.33", - "@types/prop-types": "^15.7.3", - "@types/react": ">=16.14.8", - "@types/react-transition-group": "^4.4.1", - "@types/warning": "^3.0.0", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "prop-types-extra": "^1.1.0", - "react-overlays": "^5.1.1", - "react-transition-group": "^4.4.1", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "node_modules/its-fine": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.1.tgz", + "integrity": "sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "@types/react-reconciler": "^0.28.0" }, "peerDependencies": { - "react": "17.0.2" + "react": ">=18.0" } }, - "node_modules/react-ga": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.0.tgz", - "integrity": "sha512-o8RScHj6Lb8cwy3GMrVH6NJvL+y0zpJvKtc0+wmH7Bt23rszJmnqEQxRbyrqUzk9DTJIHoP42bfO5rswC9SWBQ==", - "peerDependencies": { - "prop-types": "^15.6.0", - "react": "^15.6.2 || ^16.0 || ^17" - } + "node_modules/javascript-algorithms": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/javascript-algorithms/-/javascript-algorithms-0.0.5.tgz", + "integrity": "sha512-yFTlW6eXVSWEItyygVhWyUt6jN93gsYMyTThzzdytHkChxLVVBmoJqzNcxJOZJ026EOZCe/hrJPRlk92rdIHfw==" }, - "node_modules/react-icons": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", - "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", - "peerDependencies": { - "react": "*" - } + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" }, - "node_modules/react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", + "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, "dependencies": { - "prop-types": "^15.5.8" + "@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": { - "react": "^16.3.0 || ^17.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-konva": { - "version": "17.0.2-6", - "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-17.0.2-6.tgz", - "integrity": "sha512-cfRsBKxqAQ6gTBmyrKptKRWhHD+C068dvyqcZ4h8qzKbAacTXQtfLMSpOI+d+ptxSMvayIbbCdbsBmk3bWiClQ==", - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/lavrton" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/konva" - }, - { - "type": "github", - "url": "https://github.com/sponsors/lavrton" - } - ], + "node_modules/jest-canvas-mock": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.5.2.tgz", + "integrity": "sha512-vgnpPupjOL6+L5oJXzxTxFrlGEIbHdZqFU+LFNdtLxZ3lRDCl17FlTMM7IatoRQkrcyOTMlDinjUguqmQ6bR2A==", + "dev": true, "dependencies": { - "@types/react-reconciler": "~0.26.2", - "react-reconciler": "~0.26.2", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "konva": "^8.0.1 || ^7.2.5", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "cssfontparser": "^1.2.1", + "moo-color": "^1.0.2" } }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-overlays": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.1.1.tgz", - "integrity": "sha512-eCN2s2/+GVZzpnId4XVWtvDPYYBD2EtOGP74hE+8yDskPzFy9+pV1H3ZZihxuRdEbQzzacySaaDkR7xE0ydl4Q==", + "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, "dependencies": { - "@babel/runtime": "^7.13.8", - "@popperjs/core": "^2.8.6", - "@restart/hooks": "^0.3.26", - "@types/warning": "^3.0.0", - "dom-helpers": "^5.2.0", - "prop-types": "^15.7.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, - "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/react-reconciler": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", + "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, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "@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": ">=0.10.0" - }, - "peerDependencies": { - "react": "^17.0.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "node_modules/jest-circus/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/react-redux/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", + "node_modules/jest-circus/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/react-sortable-hoc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz", - "integrity": "sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==", - "dependencies": { - "@babel/runtime": "^7.2.0", - "invariant": "^2.2.4", - "prop-types": "^15.5.7" - }, - "peerDependencies": { - "prop-types": "^15.5.7", - "react": "^16.3.0 || ^17.0.0", - "react-dom": "^16.3.0 || ^17.0.0" + "node_modules/jest-circus/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==", + "dev": true + }, + "node_modules/jest-circus/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==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/react-switch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/react-switch/-/react-switch-6.0.0.tgz", - "integrity": "sha512-QV3/6eRK5/5epdQzIqvDAHRoGLbCv/wDpHUi6yBMXY1Xco5XGuIZxvB49PHoV1v/SpEgOCJLD/Zo43iic+aEIw==", + "node_modules/jest-circus/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==", + "dev": true, "dependencies": { - "prop-types": "^15.7.2" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^15.3.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "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, "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "@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": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/jest-cli/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==", + "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/jest-cli/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==", + "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } + "node_modules/jest-cli/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==", + "dev": true }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/jest-cli/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==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/jest-cli/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==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "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, "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "@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": ">=8" - } - }, - "node_modules/reduce-reducers": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-1.0.4.tgz", - "integrity": "sha512-Mb2WZ2bJF597exiqX7owBzrqJ74DHLK3yOQjCyPAaNifRncE8OD0wFIuoMhXxTnHK07+8zZ2SJEKy/qtiyR7vw==" - }, - "node_modules/redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, "peerDependencies": { - "redux": "^4" + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "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 - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "node_modules/jest-config/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==", "dev": true, "dependencies": { - "regenerate": "^1.4.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.8.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "node_modules/jest-config/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==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/jest-config/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==", + "dev": true + }, + "node_modules/jest-config/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==", "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "node_modules/jest-config/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==", "dev": true, "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "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, "dependencies": { - "jsesc": "~0.5.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.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": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.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/reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/jest-diff/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==", + "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "color-convert": "^2.0.1" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/resolve-cwd/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==", + "node_modules/jest-diff/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==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/resolve-from": { + "node_modules/jest-diff/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==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "node_modules/jest-diff/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==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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, + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">= 4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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, + "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": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/jest-each/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==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "color-convert": "^2.0.1" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/rollup-plugin-inject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", - "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "node_modules/jest-each/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==", "dev": true, "dependencies": { - "estree-walker": "^0.6.1", - "magic-string": "^0.25.3", - "rollup-pluginutils": "^2.8.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/rollup-plugin-inject/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "node_modules/jest-each/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==", "dev": true }, - "node_modules/rollup-plugin-node-polyfills": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", - "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "node_modules/jest-each/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==", "dev": true, - "dependencies": { - "rollup-plugin-inject": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "node_modules/jest-each/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==", "dev": true, "dependencies": { - "estree-walker": "^0.6.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, - "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": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "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" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true } - ] - }, - "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/sass": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", - "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", + "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, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" + "@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": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "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, + "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, "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "bin": { - "sassgraph": "bin/sassgraph" + "@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": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/sass-graph/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==", + "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, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/sass-graph/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "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, "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.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/sass-graph/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==", + "node_modules/jest-matcher-utils/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "xmlchars": "^2.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "node_modules/jest-matcher-utils/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==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "dependencies": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - } + "node_modules/jest-matcher-utils/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==", + "dev": true }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/jest-matcher-utils/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==", + "dev": true, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/jest-matcher-utils/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==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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==", + "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, "dependencies": { - "shebang-regex": "^3.0.0" + "@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": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-message-util/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "node_modules/jest-message-util/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==", + "dev": true, "dependencies": { - "is-arrayish": "^0.3.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/jest-message-util/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==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/jest-message-util/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==", "dev": true, "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/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "node_modules/jest-message-util/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==", + "dev": true, "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "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, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "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, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "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, "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, + "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": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "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, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "node_modules/jest-resolve/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==", + "dev": true, "dependencies": { - "minipass": "^3.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "escape-string-regexp": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/jest-resolve/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==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/stdout-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "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" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/stdout-stream/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==" + "node_modules/jest-resolve/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==", + "dev": true }, - "node_modules/stdout-stream/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==", - "dependencies": { - "safe-buffer": "~5.1.0" + "node_modules/jest-resolve/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==", + "dev": true, + "engines": { + "node": ">=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==", + "node_modules/jest-resolve/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==", + "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "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==", + "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, "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "@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": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-runner/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==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "node_modules/jest-runner/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==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/strip-bom": { + "node_modules/jest-runner/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==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "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==", + "node_modules/jest-runner/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==", "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dependencies": { - "min-indent": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "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" + "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, + "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" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "node_modules/jest-runtime/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==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/strip-outer/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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" - }, - "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==", "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/jest-runtime/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==", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { + "node_modules/jest-runtime/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==", + "dev": true + }, + "node_modules/jest-runtime/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==", @@ -10640,7 +10036,7 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { + "node_modules/jest-runtime/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==", @@ -10652,232 +10048,257 @@ "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==", - "engines": { - "node": ">= 0.4" + "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, + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/jest-snapshot/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==", + "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/jest-snapshot/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==", "dev": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "node_modules/tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "node_modules/jest-snapshot/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==", "dev": true }, - "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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "node_modules/jest-snapshot/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==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "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==", + "node_modules/jest-snapshot/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==", + "dev": true, "dependencies": { - "is-number": "^7.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=10" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/jest-snapshot/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==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=8" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "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, "dependencies": { - "punycode": "^2.1.1" + "@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": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "node_modules/jest-util/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/trim-repeated/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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/jest-util/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==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.8.0" + "node": ">=7.0.0" } }, - "node_modules/true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "node_modules/jest-util/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==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/jest-util/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/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==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=8" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "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, "dependencies": { - "prelude-ls": "^1.2.1" + "@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": ">= 0.8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-validate/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==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/jest-validate/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" @@ -10886,8801 +10307,4166 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", - "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/jest-validate/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==", "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "node_modules/jest-validate/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==", + "dev": true + }, + "node_modules/jest-validate/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==", "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, "engines": { - "node": ">=4.2.0" + "node": ">=8" } }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "node_modules/jest-validate/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==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "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, "dependencies": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "@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" }, - "peerDependencies": { - "react": ">=15.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-watcher/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==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "node_modules/jest-watcher/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==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "node_modules/jest-watcher/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==", + "dev": true + }, + "node_modules/jest-watcher/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==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/jest-watcher/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==", + "dev": true, "dependencies": { - "unique-slug": "^2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "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, "dependencies": { - "imurmurhash": "^0.1.4" + "@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/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/jest-worker/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==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">=8" } }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "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": { - "punycode": "^2.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "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==" + }, + "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, "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=10.12.0" + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, - "node_modules/victor": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/victor/-/victor-1.1.0.tgz", - "integrity": "sha1-3jzHexVYmxsMeyLD2tKXA0qwAro=" + "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==" }, - "node_modules/vite": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", - "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", + "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "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, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, "bin": { - "vite": "bin/vite.js" + "json5": "lib/cli.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "node": ">=6" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "browser-process-hrtime": "^1.0.0" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "xml-name-validator": "^3.0.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "makeerror": "1.0.12" + "json-buffer": "3.0.1" } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.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, + "engines": { + "node": ">=6" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/konva": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/konva/-/konva-9.2.2.tgz", + "integrity": "sha512-Gyn5hQa/5+8pJvTn/IVyZWgum2otWXszuVCG/cevkAyKUFcmFv4tGbQhHFGtJPLQkGO+W6xfgRzyYIkNgKnPxA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/lavrton" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/konva" + }, + { + "type": "github", + "url": "https://github.com/sponsors/lavrton" + } + ] + }, + "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, "engines": { - "node": ">=10.4" + "node": ">=6" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "iconv-lite": "0.4.24" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "node_modules/liang-barsky": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/liang-barsky/-/liang-barsky-1.0.5.tgz", + "integrity": "sha512-3ReVl+2LKVUYDlASKMJJmi5X17LNOIBYZzDJYG7vqVC/zshlHYWBLs35b1VFRWY4MvwrPhvM1SvRAHYH3OfBHg==" }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "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==" + }, + "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": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "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 + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "isexe": "^2.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "node-which": "bin/node-which" - }, + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "engines": { - "node": ">= 8" + "node": "14 || >=16.14" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dev": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "@jridgewell/sourcemap-codec": "^1.4.13" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "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==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi/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==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "tmpl": "1.0.5" } }, - "node_modules/wrap-ansi/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==", + "node_modules/mathjs": { + "version": "11.11.2", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.11.2.tgz", + "integrity": "sha512-SL4/0Fxm9X4sgovUpJTeyVeZ2Ifnk4tzLPTYWDyR3AIx9SabnXYqtCkyJtmoF3vZrDPKGkLvrhbIL4YN2YbXLQ==", "dependencies": { - "color-name": "~1.1.4" + "@babel/runtime": "^7.23.1", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "4.3.4", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.1.1" + }, + "bin": { + "mathjs": "bin/cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">= 14" } }, - "node_modules/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "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/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "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/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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": { - "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" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=10" - } - }, - "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==", - "engines": { - "node": ">=10" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "node": ">=8.6" } }, - "@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, "dependencies": { - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" } }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "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==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "engines": { + "node": ">= 0.6" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "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==", "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "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==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "engines": { + "node": ">=6" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "engines": { + "node": ">=8" }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "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 }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" } }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" + "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" } }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, + "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": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "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.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "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" } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "node_modules/moo-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz", + "integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "dependencies": { + "color-name": "^1.1.4" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "node_modules/moo-color/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==", + "dev": true + }, + "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/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "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 + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "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 + } } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/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/node-fetch/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" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "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 + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dev": true, + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "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" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "node_modules/node-stdlib-browser/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, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "node_modules/node-stdlib-browser/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, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "node_modules/node-stdlib-browser/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, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "node_modules/node-stdlib-browser/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "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==", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@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==", + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@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==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": ">= 0.4" } }, - "@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==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@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==", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" } }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@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==", + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@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==", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@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==", + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "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==", + "dependencies": { + "wrappy": "1" } }, - "@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==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@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==", + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/opentype.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", + "integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==", + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" } }, - "@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==", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true }, - "@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==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@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==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "@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==", + "node_modules/p-locate/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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "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==", + "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" } }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true }, - "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "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==", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "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==", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "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==" }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "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, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">= 6" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "node_modules/point-in-polygon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">= 0.8.0" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "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, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "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" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "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, - "requires": { - "regenerator-transform": "^0.15.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "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==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">= 0.6.0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", - "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", + "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, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "engines": { + "node": ">=0.4.x" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@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-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-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "safe-buffer": "^5.1.0" } }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" - } - }, - "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/rc-slider": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.3.0.tgz", + "integrity": "sha512-kt8ehfvPLoZFYJS3Caaf3l+9OF8JUyexC84qy878vf9rOy9IulO/PEdha8E90i8mnj4mtJMSxojk1fJGkYWjpQ==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.27.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "node_modules/rc-util": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.38.0.tgz", + "integrity": "sha512-yV/YBNdFn+edyBpBdCqkPE29Su0jWcHNgwx2dJbRqMrMfrUcMJUjCRV+ZPhcvWyKFJ63GzEerPrz9JIVo0zXmA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "@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 + "node_modules/re-reselect": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/re-reselect/-/re-reselect-4.0.1.tgz", + "integrity": "sha512-xVTNGQy/dAxOolunBLmVMGZ49VUUR1s8jZUiJQb+g1sI63GAv9+a5Jas9yHvdxeUgiZkU9r3gDExDorxHzOgRA==", + "peerDependencies": { + "reselect": ">1.0.0" + } }, - "@emotion/babel-plugin": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", - "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.0.13" + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", - "requires": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "node_modules/react-bootstrap": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.9.0.tgz", + "integrity": "sha512-dGh6fGjqR9MBzPOp2KbXJznt1Zy6SWepXYUdxMT18Zu/wJ73HCU8JNZe9dfzjmVssZYsJH9N3HHE4wAtQvNz7g==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.6", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "@emotion/memoize": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" - }, - "@emotion/react": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", - "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.3", - "@emotion/utils": "^1.1.0", - "@emotion/weak-memoize": "^0.2.5", - "hoist-non-react-statics": "^3.3.1" + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "@emotion/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", - "requires": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", - "csstype": "^3.0.2" + "node_modules/react-error-boundary": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.0.11.tgz", + "integrity": "sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "peerDependencies": { + "react": ">=16.13.1" } }, - "@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@emotion/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==" - }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "@esbuild-plugins/node-globals-polyfill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", - "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", - "dev": true, - "requires": {} + "node_modules/react-ga": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.1.tgz", + "integrity": "sha512-4Vc0W5EvXAXUN/wWyxvsAKDLLgtJ3oLmhYYssx+YzphJpejtOst6cbIHCIyF50Fdxuf5DDKqRYny24yJ2y7GFQ==", + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.6.2 || ^16.0 || ^17 || ^18" + } }, - "@esbuild/android-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", - "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", - "dev": true, - "optional": true + "node_modules/react-icons": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", + "integrity": "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==", + "peerDependencies": { + "react": "*" + } }, - "@esbuild/linux-loong64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", - "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", - "dev": true, - "optional": true + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, - "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "node_modules/react-konva": { + "version": "18.2.10", + "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-18.2.10.tgz", + "integrity": "sha512-ohcX1BJINL43m4ynjZ24MxFI1syjBdrXhqVxYVDw2rKgr3yuS0x/6m1Y2Z4sl4T/gKhfreBx8KHisd0XC6OT1g==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/lavrton" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/konva" + }, + { + "type": "github", + "url": "https://github.com/sponsors/lavrton" } + ], + "dependencies": { + "@types/react-reconciler": "^0.28.2", + "its-fine": "^1.1.1", + "react-reconciler": "~0.29.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "konva": "^8.0.1 || ^7.2.5 || ^9.0.0", + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "node_modules/react-reconciler": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@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, - "requires": { - "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" - }, + "node_modules/react-redux": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true }, - "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, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true }, - "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 + "react-native": { + "optional": true + }, + "redux": { + "optional": true } } }, - "@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 - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "engines": { + "node": ">=0.10.0" } }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "node_modules/react-select": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", + "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "node_modules/react-switch": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/react-switch/-/react-switch-7.0.0.tgz", + "integrity": "sha512-KkDeW+cozZXI6knDPyUt3KBN1rmhoVYgAdCJqAh7st7tk8YE6N0iR89zjCWO8T8dUTeJGTR0KU+5CHCRMRffiA==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "node_modules/react-toastify": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" } }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "node_modules/react-tooltip": { + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.21.5.tgz", + "integrity": "sha512-ey70qf6pBGi4U6xpyNlZAHobAhlo2dfxmImR2Bzd/DbLTsAYWz3TEaK+RMFuUZMq6hSPRbUHQSkP2rHBq4uFVg==", + "dependencies": { + "@floating-ui/dom": "^1.0.0", + "classnames": "^2.3.0" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" } }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "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": { - "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 - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reduce-reducers": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-1.0.4.tgz", + "integrity": "sha512-Mb2WZ2bJF597exiqX7owBzrqJ74DHLK3yOQjCyPAaNifRncE8OD0wFIuoMhXxTnHK07+8zZ2SJEKy/qtiyR7vw==" + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dependencies": { - "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 - } + "@babel/runtime": "^7.9.2" } }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "node_modules/redux-mock-store": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.5.4.tgz", + "integrity": "sha512-xmcA0O/tjCLXhh9Fuiq6pMrJCwFRaouA8436zcikdIpYWWCjU76CRk+i2bHx8EeiSiMGnB85/lZdU3wIJVXHTA==", + "dependencies": { + "lodash.isplainobject": "^4.0.6" } }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "peerDependencies": { + "redux": "^4" } }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, "dependencies": { - "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 - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mapbox/node-pre-gyp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", - "requires": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "dependencies": { - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "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 }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "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, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@popperjs/core": { - "version": "2.11.5", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", - "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" - }, - "@reduxjs/toolkit": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.1.tgz", - "integrity": "sha512-Q6mzbTpO9nOYRnkwpDlFOAbQnd3g7zj7CtHAZWz5SzE5lcV97Tf8f3SzOO8BoPOMYBFgfZaqTUZqgGu+a0+Fng==", - "requires": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" - }, "dependencies": { - "reselect": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", - "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" - } + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "@restart/context": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", - "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", - "requires": {} - }, - "@restart/hooks": { - "version": "0.3.27", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", - "integrity": "sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw==", - "requires": { - "dequal": "^2.0.2" - } + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, - "@rollup/pluginutils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", - "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "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, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "dependencies": { + "@babel/runtime": "^7.8.4" } }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "requires": { - "type-detect": "4.0.8" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "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, - "requires": { - "@sinonjs/commons": "^1.7.0" + "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" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "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, - "requires": { - "@babel/types": "^7.0.0" + "bin": { + "jsesc": "bin/jsesc" } }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "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, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "engines": { + "node": ">=0.10.0" } }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.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 }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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" } }, - "@types/invariant": { - "version": "2.2.35", - "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", - "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "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, - "requires": { - "@types/istanbul-lib-report": "*" + "engines": { + "node": ">=8" } }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/react": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.1.tgz", - "integrity": "sha512-VnWlrVgG0dYt+NqlfMI0yUYb8Rdl4XUROyH+c6gq/iFCiZ805Vi//26UW38DHnxQkbDhnrIWTBiy6oKZqL11cw==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "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, + "engines": { + "node": ">=10" } }, - "@types/react-reconciler": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.4.tgz", - "integrity": "sha512-bdx4aIBkQRDAnzc23JBFeZmVpmfLJHfHikmQukEt9qs4bQtq9f+PDbNwhR9u74FkIUyIDz1I1qJ8OF6RwadKpw==", - "requires": { - "@types/react": "*" + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "@types/react-redux": { - "version": "7.1.23", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.23.tgz", - "integrity": "sha512-D02o3FPfqQlfu2WeEYwh3x2otYd2Dk1o8wAfsA0B1C2AJEFxE663Ozu7JzuWbznGgW248NaOF6wsqCGNq9d3qw==", - "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", - "requires": { - "@types/react": "*" + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, - "requires": { - "@types/yargs-parser": "*" + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@typescript-eslint/parser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", - "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "debug": "^4.3.2" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", - "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0" - } - }, - "@typescript-eslint/types": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", - "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "@typescript-eslint/typescript-estree": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", - "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "@typescript-eslint/visitor-keys": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", - "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "eslint-visitor-keys": "^3.0.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, - "@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, - "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } + "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" }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "requires": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "@vitejs/plugin-react": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.0.tgz", - "integrity": "sha512-H+yIupjUE4a+E4oeWUv4xUJIMR0DWBIMUG/DYgvj0J9Vu1rdHAlJ5JdbI+N1KDUD7Ee2fZ1DMPZ/NBg6mXtoCw==", - "dev": true, - "requires": { - "@babel/core": "^7.17.8", - "@babel/plugin-transform-react-jsx": "^7.17.3", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-jsx-self": "^7.16.7", - "@babel/plugin-transform-react-jsx-source": "^7.16.7", - "@rollup/pluginutils": "^4.2.0", - "react-refresh": "^0.11.0", - "resolve": "^1.22.0" - }, - "dependencies": { - "@babel/plugin-transform-react-jsx-self": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", - "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", - "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - } + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true + "node_modules/sass": { + "version": "1.69.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.3.tgz", + "integrity": "sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } }, - "acorn-globals": { + "node_modules/saxes": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" } }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, - "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==", + "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==", "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, "dependencies": { - "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==", - "dev": true - } + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==", - "requires": { - "color-convert": "^1.9.0" + "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==", + "dev": true, + "engines": { + "node": ">=8" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } + "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==" }, - "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/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "array-move": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-move/-/array-move-3.0.1.tgz", - "integrity": "sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==" + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "engines": { + "node": ">=8" } }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "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, - "requires": { - "lodash": "^4.17.14" + "engines": { + "node": ">=0.10.0" } }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "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, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "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 }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "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, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "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, - "requires": { - "object.assign": "^4.1.0" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, - "requires": { - "@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" + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" } }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" } }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - } + "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" } }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "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, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" + "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": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "requires": { - "@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" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "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" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" + "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, + "engines": { + "node": ">=8" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "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" } }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "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, - "requires": { - "node-int64": "^0.4.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "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/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "caniuse-lite": { - "version": "1.0.30001430", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", - "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==" - }, - "canvas": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", - "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.15.0", - "simple-get": "^3.0.3" + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "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" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "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, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "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==", - "requires": { - "has-flag": "^4.0.0" - } - } + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" } }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "node_modules/tinyqueue": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz", + "integrity": "sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==" }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "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 }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "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==", + "engines": { + "node": ">=4" } }, - "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==", - "requires": { - "color-name": "1.1.3" + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", - "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "requires": { - "delayed-stream": "~1.0.0" + "engines": { + "node": ">= 4.0.0" } }, - "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 - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "complex.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.0.tgz", - "integrity": "sha512-RdcrDz7YynXp/YXGwXIZ4MtmxXXniT5WmLFRX93cuXUX+0geWAqB8l1BoLXF+3BkzviVzHlpw27P9ow7MvlcmA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, "dependencies": { - "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==" - } + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" } }, - "core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==" - }, - "core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, - "requires": { - "browserslist": "^4.19.1", - "semver": "7.0.0" - }, "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "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/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "cssfontparser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", - "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "requires": { - "cssom": "~0.3.6" - }, "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + "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" + } }, - "curve-matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/curve-matcher/-/curve-matcher-1.1.1.tgz", - "integrity": "sha512-dVjbB4izZ+nkxU5oq15ElZk2IFpR1oTb1wEfMolOADse8veTn+iwF6wXejS4ll9DZRtO0/s95BDiIz6QXuE5bA==" + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "d3": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", - "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" - }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", - "requires": { - "d3-array": "^3.2.0" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "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==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-fisheye": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/d3-fisheye/-/d3-fisheye-2.1.2.tgz", - "integrity": "sha512-qioAftIns1yjPYEPetZnntMKUAWSt9TAx1MtCfT4n5KbJb/BH1vgnJV7927uKoQHWOAelXacOP0nwD1PuYlo4w==" - }, - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" - }, - "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - } - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" - }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, - "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 - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-align": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.2.tgz", - "integrity": "sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg==" - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==" - }, - "email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "dev": true - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "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==" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "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, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - }, - "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==" - }, - "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==", - "requires": { - "is-arrayish": "^0.2.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - } - } - }, - "es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "esbuild": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", - "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.13", - "@esbuild/linux-loong64": "0.15.13", - "esbuild-android-64": "0.15.13", - "esbuild-android-arm64": "0.15.13", - "esbuild-darwin-64": "0.15.13", - "esbuild-darwin-arm64": "0.15.13", - "esbuild-freebsd-64": "0.15.13", - "esbuild-freebsd-arm64": "0.15.13", - "esbuild-linux-32": "0.15.13", - "esbuild-linux-64": "0.15.13", - "esbuild-linux-arm": "0.15.13", - "esbuild-linux-arm64": "0.15.13", - "esbuild-linux-mips64le": "0.15.13", - "esbuild-linux-ppc64le": "0.15.13", - "esbuild-linux-riscv64": "0.15.13", - "esbuild-linux-s390x": "0.15.13", - "esbuild-netbsd-64": "0.15.13", - "esbuild-openbsd-64": "0.15.13", - "esbuild-sunos-64": "0.15.13", - "esbuild-windows-32": "0.15.13", - "esbuild-windows-64": "0.15.13", - "esbuild-windows-arm64": "0.15.13" - } - }, - "esbuild-android-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", - "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", - "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", - "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", - "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", - "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", - "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", - "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", - "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", - "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", - "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", - "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", - "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", - "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", - "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", - "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", - "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", - "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", - "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", - "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", - "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" - }, - "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==" - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "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, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", - "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "eslint-plugin-jest": { - "version": "26.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.4.tgz", - "integrity": "sha512-wgqxujmqc2qpvZqMFWCh6Cniqc8lWpapvXt9j/19DmBDqeDaYhJrSRezYR1SKyemvjx+9e9kny/dgRahraHImA==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "^5.10.0" - } - }, - "eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-plugin-react-redux": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-redux/-/eslint-plugin-react-redux-4.0.0.tgz", - "integrity": "sha512-oT43AoOgqsXjYKm7JiQCD1Mxp2tjO/ywv/WJn0cVNVirpd91xfvxWnYU93tqKSZwdryxdZ/S+ea2iIYeRdeaZg==", - "dev": true, - "requires": { - "eslint-plugin-react": "^7.28.0", - "eslint-rule-composer": "^0.3.0" - } - }, - "eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "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, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "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" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "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 - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true - }, - "filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "requires": { - "globule": "^1.0.0" - } - }, - "gcode-interpreter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gcode-interpreter/-/gcode-interpreter-2.1.0.tgz", - "integrity": "sha512-2NFUuTenhhEkucGj+uYDdXepJpJRtzDkjelcdv/jjNHdqA21c4OQRJaHHja6LN0GlSxytDg1gm0h3j3CNDlQ3g==", - "requires": { - "gcode-parser": "^1.3.6" - } - }, - "gcode-parser": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/gcode-parser/-/gcode-parser-1.3.7.tgz", - "integrity": "sha512-NvRSvhHT1P7GqcuDruG+DoOe3MklCmR4fxCKMlUlIdkZEJTZ8C6RdnNNffWwJWy1L0oClJBejCU6TY38evNABQ==" - }, - "gcode-toolpath": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gcode-toolpath/-/gcode-toolpath-2.2.0.tgz", - "integrity": "sha512-iiqaEo8/r3UzmJ4GBAuf0ERBWgDC0sjqArD8aRnNNo+9k9RiqHc1nzC0EaaDoLc7h/+1DypyCc2c9tWuuRm2RA==", - "requires": { - "gcode-interpreter": "^2.0.2" - } - }, - "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==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "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 - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "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 - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "gh-pages": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", - "dev": true, - "requires": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "globby": "^6.1.0" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "globule": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", - "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - }, - "harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "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 - }, - "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==" - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "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 - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "dev": true, - "requires": { - "harmony-reflect": "^1.4.6" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immer": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", - "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==" - }, - "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "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==" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "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==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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==" - }, - "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 - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "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 - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "javascript-algorithms": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/javascript-algorithms/-/javascript-algorithms-0.0.5.tgz", - "integrity": "sha1-l/iSEOPfFoYjL/+y/c0HueMmO9g=" - }, - "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" - }, - "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - } - }, - "jest-canvas-mock": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.3.1.tgz", - "integrity": "sha512-5FnSZPrX3Q2ZfsbYNE3wqKR3+XorN8qFzDzB5o0golWgt6EOX1+emBnpOc9IAQ+NXFj8Nzm3h7ZdE/9H0ylBcg==", - "dev": true, - "requires": { - "cssfontparser": "^1.2.1", - "moo-color": "^1.0.2" - } - }, - "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - } - }, - "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, - "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - } - }, - "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - } - }, - "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, - "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - } - }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - } - }, - "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, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "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==" - }, - "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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" - } - }, - "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==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "konva": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/konva/-/konva-7.2.5.tgz", - "integrity": "sha512-yk/li8rUF+09QNlOdkwbEId+QvfATMe/aMGVouWW1oFoUVTYWHsQuIAE6lWy11DK8mLJEJijkNAXC5K+NVlMew==" - }, - "konva-node": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/konva-node/-/konva-node-0.11.2.tgz", - "integrity": "sha512-puuzsIT+ykOBRWK6+M6TNyZnhqQKTiIK82GQdeTummog16WB+Fi/98vqMQGP9SIu2wp816lc04uK6TJ82HOuLQ==", - "requires": { - "canvas": "^2.5.0", - "konva": "^7" - } - }, - "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 - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "liang-barsky": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/liang-barsky/-/liang-barsky-1.0.5.tgz", - "integrity": "sha512-3ReVl+2LKVUYDlASKMJJmi5X17LNOIBYZzDJYG7vqVC/zshlHYWBLs35b1VFRWY4MvwrPhvM1SvRAHYH3OfBHg==" - }, - "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==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - }, - "mathjs": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-9.5.2.tgz", - "integrity": "sha512-c0erTq0GP503/Ch2OtDOAn50GIOsuxTMjmE00NI/vKJFSWrDaQHRjx6ai+16xYv70yBSnnpUgHZGNf9FR9IwmA==", - "requires": { - "@babel/runtime": "^7.15.4", - "complex.js": "^2.0.15", - "decimal.js": "^10.3.1", - "escape-latex": "^1.2.0", - "fraction.js": "^4.1.1", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^2.0.0" - } - }, - "memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - } - } - }, - "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 - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "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==", - "requires": { - "minipass": "^3.0.0" - } - }, - "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==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "moo-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz", - "integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==", - "dev": true, - "requires": { - "color-name": "^1.1.4" - }, - "dependencies": { - "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==", - "dev": true - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" - }, - "node-sass": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz", - "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==", - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "make-fetch-happen": "^10.0.4", - "meow": "^9.0.0", - "nan": "^2.17.0", - "node-gyp": "^8.4.1", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^2.2.1" - }, - "dependencies": { - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - } - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "requires": { - "minipass": "^3.1.1" - } - }, - "unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "requires": { - "unique-slug": "^3.0.0" - } - }, - "unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "opentype.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", - "integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==", - "requires": { - "string.prototype.codepointat": "^0.2.1", - "tiny-inflate": "^1.0.3" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "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==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "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==", - "requires": { - "@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" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" - }, - "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==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "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==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "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, - "requires": { - "find-up": "^4.0.0" - } - }, - "point-in-polygon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" - }, - "points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" - }, - "points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "requires": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" - } - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "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 - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } - } - }, - "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==" - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - }, - "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==", - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "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, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "requires": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - }, - "rc-align": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.11.tgz", - "integrity": "sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "lodash": "^4.17.21", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-motion": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.9.tgz", - "integrity": "sha512-lrIpBQQ5gIDVedaubnhXuTjC3zpW7HvC/34KyvcHlf6fBjuBlwv45PbonFhmk4Rgu7gLQYrKoMGgFVXqxxyLCw==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.19.2" - } - }, - "rc-slider": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz", - "integrity": "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-tooltip": "^5.0.1", - "rc-util": "^5.16.1", - "shallowequal": "^1.1.0" - } - }, - "rc-tooltip": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz", - "integrity": "sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA==", - "requires": { - "@babel/runtime": "^7.11.2", - "rc-trigger": "^5.0.0" - } - }, - "rc-trigger": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.12.tgz", - "integrity": "sha512-+rymZRe23f2imQwuelWqWSKj3tAnlDbjEU8yjKzW5zh8AlChJ/brda7Qg3FQ4f2jcAquL7phVOwq5BZp2PdhAg==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.19.2" - } - }, - "rc-util": { - "version": "5.19.6", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.19.6.tgz", - "integrity": "sha512-/xJ8UtpbuJj7+2ftxVQM6gUzLY+Towq4iB6sP6/2hhn6mwWNLij2I+1qOkLv75I1jqWKpS+gU8A2EmbfLtGxNg==", - "requires": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-bootstrap": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.4.tgz", - "integrity": "sha512-z3BhBD4bEZuLP8VrYqAD7OT7axdcSkkyvWBWnS2U/4MhyabUihrUyucPWkan7aMI1XIHbmH4LCpEtzWGfx/yfA==", - "requires": { - "@babel/runtime": "^7.14.0", - "@restart/context": "^2.1.4", - "@restart/hooks": "^0.3.26", - "@types/invariant": "^2.2.33", - "@types/prop-types": "^15.7.3", - "@types/react": ">=16.14.8", - "@types/react-transition-group": "^4.4.1", - "@types/warning": "^3.0.0", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "prop-types-extra": "^1.1.0", - "react-overlays": "^5.1.1", - "react-transition-group": "^4.4.1", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-ga": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.0.tgz", - "integrity": "sha512-o8RScHj6Lb8cwy3GMrVH6NJvL+y0zpJvKtc0+wmH7Bt23rszJmnqEQxRbyrqUzk9DTJIHoP42bfO5rswC9SWBQ==", - "requires": {} - }, - "react-icons": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.3.1.tgz", - "integrity": "sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==", - "requires": {} - }, - "react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-konva": { - "version": "17.0.2-6", - "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-17.0.2-6.tgz", - "integrity": "sha512-cfRsBKxqAQ6gTBmyrKptKRWhHD+C068dvyqcZ4h8qzKbAacTXQtfLMSpOI+d+ptxSMvayIbbCdbsBmk3bWiClQ==", - "requires": { - "@types/react-reconciler": "~0.26.2", - "react-reconciler": "~0.26.2", - "scheduler": "^0.20.2" - } - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-overlays": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.1.1.tgz", - "integrity": "sha512-eCN2s2/+GVZzpnId4XVWtvDPYYBD2EtOGP74hE+8yDskPzFy9+pV1H3ZZihxuRdEbQzzacySaaDkR7xE0ydl4Q==", - "requires": { - "@babel/runtime": "^7.13.8", - "@popperjs/core": "^2.8.6", - "@restart/hooks": "^0.3.26", - "@types/warning": "^3.0.0", - "dom-helpers": "^5.2.0", - "prop-types": "^15.7.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, - "react-reconciler": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", - "requires": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - }, - "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - } - } - }, - "react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "dev": true - }, - "react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", - "requires": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" - } - }, - "react-sortable-hoc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz", - "integrity": "sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==", - "requires": { - "@babel/runtime": "^7.2.0", - "invariant": "^2.2.4", - "prop-types": "^15.5.7" - } - }, - "react-switch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/react-switch/-/react-switch-6.0.0.tgz", - "integrity": "sha512-QV3/6eRK5/5epdQzIqvDAHRoGLbCv/wDpHUi6yBMXY1Xco5XGuIZxvB49PHoV1v/SpEgOCJLD/Zo43iic+aEIw==", - "requires": { - "prop-types": "^15.7.2" - } - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "reduce-reducers": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-1.0.4.tgz", - "integrity": "sha512-Mb2WZ2bJF597exiqX7owBzrqJ74DHLK3yOQjCyPAaNifRncE8OD0wFIuoMhXxTnHK07+8zZ2SJEKy/qtiyR7vw==" - }, - "redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "requires": { - "@babel/runtime": "^7.9.2" - } - }, - "redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", - "requires": {} - }, - "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 - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "requires-port": { + "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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==", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, "dependencies": { - "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 - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-inject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", - "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "magic-string": "^0.25.3", - "rollup-pluginutils": "^2.8.1" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, - "rollup-plugin-node-polyfills": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", - "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", - "dev": true, - "requires": { - "rollup-plugin-inject": "^3.0.0" - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" + "engines": { + "node": ">= 0.4" }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "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==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", - "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "requires": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "dependencies": { - "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==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "requires": { - "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.0.0" - } - }, - "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==" - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "requires": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - }, "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - } - } - }, - "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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==", - "requires": { - "shebang-regex": "^3.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "side-channel": { + "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "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==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "node_modules/typed-function": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.1.tgz", + "integrity": "sha512-Pq1DVubcvibmm8bYcMowjVnnMwPVMeh0DIdA8ad8NZY2sJgapANJmiigSUwlt+EgXxpfIv8MWrQXTIzkfYZLYQ==", + "engines": { + "node": ">= 14" } }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-js": { + "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "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==", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, "dependencies": { - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" } }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", "dev": true }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "requires": { - "minipass": "^3.1.1" + "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, + "engines": { + "node": ">=4" } }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "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, - "requires": { - "escape-string-regexp": "^2.0.0" - }, "dependencies": { - "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 - } + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "requires": { - "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "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" - } - }, - "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==" - }, - "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==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "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, + "engines": { + "node": ">=4" } }, - "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==", - "requires": { - "safe-buffer": "~5.2.0" + "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, + "engines": { + "node": ">=4" } }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "engines": { + "node": ">= 10.0.0" } }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "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" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "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, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "dependencies": { + "punycode": "^2.1.0" } }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, - "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 - }, - "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==", + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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 + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" } }, - "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "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==" }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "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==" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "node_modules/victor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/victor/-/victor-1.1.0.tgz", + "integrity": "sha512-s+EQHqIs5TNgLa3HHPr8oCpWFulQZzDX/PLaskVDeWXqEW12l54H5XD+cZ3gXrgvdOscqEcdAMXgEUZlJckQ4w==" }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "node_modules/vite": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", + "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/vite-plugin-node-polyfills": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.12.0.tgz", + "integrity": "sha512-xZfpD81aNhwEbIjccEiy8Q/hDdnlYqBSeEaUMIukOpGHuMaz65jqrC2lmnF/FXnliovISy2L1n92da0JOvk36A==", "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "dependencies": { + "@rollup/plugin-inject": "^5.0.3", + "buffer-polyfill": "npm:buffer@^6.0.3", + "node-stdlib-browser": "^1.2.0", + "process": "^0.11.10" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, - "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==", + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "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==", - "requires": { - "is-number": "^7.0.0" + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "punycode": "^2.1.1" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "tslib": "^1.8.1" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "prelude-ls": "^1.2.1" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "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 - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", - "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "is-typedarray": "^1.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], "dev": true, - "peer": true + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", - "requires": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "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 - }, - "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==", + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], "dev": true, - "requires": { - "punycode": "^2.1.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } }, - "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "victor": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/victor/-/victor-1.1.0.tgz", - "integrity": "sha1-3jzHexVYmxsMeyLD2tKXA0qwAro=" - }, - "vite": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", - "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/vite/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" } }, - "walker": { + "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, - "requires": { + "dependencies": { "makeerror": "1.0.12" } }, - "warning": { + "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { + "dependencies": { "loose-envify": "^1.0.0" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, - "requires": { - "iconv-lite": "0.4.24" + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" } }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { + "dev": true, + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "requires": { + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wide-align": { + "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { + "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true - }, - "wrap-ansi": { + "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==", - "requires": { + "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/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==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "wrappy": { + "node_modules/wrap-ansi/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==", + "dev": true + }, + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "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, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, - "requires": {} + "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 + } + } }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "xmlchars": { + "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "y18n": { + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "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==" + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "yaml": { + "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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, - "requires": { - "cliui": "^7.0.2", + "dependencies": { + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "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" } }, - "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==" + "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" + } } } } diff --git a/package.json b/package.json index 4d5dd484..d6445dda 100644 --- a/package.json +++ b/package.json @@ -1,45 +1,56 @@ { "name": "sandify", "homepage": "https://sandify.org", - "version": "0.2.8", + "version": "1.0.0", "private": true, "dependencies": { - "@reduxjs/toolkit": "^1.5.1", - "array-move": "^3.0.1", + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", + "@reduxjs/toolkit": "^1.9.5", + "array-move": "^4.0.0", + "bootstrap": "^5.3.1", "buffer": "^6.0.3", - "color": "^3.1.3", + "canvas": "^2.11.2", + "color": "^4.2.3", + "convexhull-js": "^1.0.0", "core-js": "^3.11.0", "curve-matcher": "^1.1.1", "d3": "^7.6.1", "d3-fisheye": "^2.0.1", "gcode-toolpath": "^2.2.0", + "geokdbush": "^1.1.0", "javascript-algorithms": "0.0.5", - "konva": "^7.2.5", - "konva-node": "^0.11.2", + "kdbush": "^4.0.2", + "konva": "^9.2.0", "liang-barsky": "^1.0.4", "lodash": "^4.17.21", - "lru-cache": "^6.0.0", - "mathjs": "^9.3.2", - "node-sass": "^9.0.0", + "lru-cache": "^10.0.1", + "mathjs": "^11.11.0", "opentype.js": "^1.3.4", "point-in-polygon": "^1.1.0", "points-on-path": "^0.2.1", - "rc-slider": "^9.7.5", - "react": "17.0.2", - "react-bootstrap": "^1.5.2", - "react-dom": "^17.0.2", - "react-ga": "^3.3.0", + "rc-slider": "^10.2.1", + "re-reselect": "^4.0.1", + "react": "18.2", + "react-bootstrap": "^2.8.0", + "react-dom": "^18.2", + "react-error-boundary": "^4.0.11", + "react-ga": "^3.3.1", "react-icons": "^4.2.0", - "react-konva": "^17.0.2-0", - "react-redux": "^7.2.3", - "react-select": "^4.3.0", - "react-sortable-hoc": "^2.0", - "react-switch": "^6.0.0", + "react-konva": "^18.2.10", + "react-redux": "^8.1.2", + "react-select": "^5.7.4", + "react-switch": "^7.0.0", + "react-toastify": "^9.1.3", + "react-tooltip": "^5.20.0", "reduce-reducers": "^1.0.4", - "redux": "^4.1.0", - "reselect": "^4.0.0", + "redux": "^4.2.1", + "redux-mock-store": "^1.5.4", + "reselect": "^4.1.8", "sass": "^1.49.11", "seedrandom": "^3.0.5", + "uuid": "^9.0.0", "victor": "^1.1.0" }, "devDependencies": { @@ -47,21 +58,25 @@ "@babel/plugin-transform-runtime": "^7.17.10", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", - "@esbuild-plugins/node-globals-polyfill": "^0.1.1", - "@typescript-eslint/eslint-plugin": "^5.18.0", - "@typescript-eslint/parser": "^5.22.0", - "@vitejs/plugin-react": "^1.0.7", - "babel-jest": "^27.5.1", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.43.0", + "@vitejs/plugin-react": "^4.0.4", + "babel-jest": "^29.6.4", "eslint": "^8.13.0", - "eslint-plugin-jest": "^26.1.4", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-redux": "^4.0.0", - "gh-pages": "^3.2.3", + "gh-pages": "^6.0.0", "identity-obj-proxy": "^3.0.0", - "jest": "^27.5.1", + "jest": "^29.6.4", "jest-canvas-mock": "^2.3.1", - "rollup-plugin-node-polyfills": "^0.2.1", - "vite": "^3.2.7" + "jest-environment-jsdom": "^29.6.4", + "prettier": "3.0.3", + "vite": "^4.4.9", + "vite-plugin-node-polyfills": "^0.12.0" }, "scripts": { "start": "vite", @@ -69,7 +84,7 @@ "preview": "vite preview", "deploy": "gh-pages -d build", "test": "jest", - "lint": "eslint --ext .js --ignore-path .gitignore --fix src", + "lint": "eslint --fix --ext .js --ignore-path .gitignore src", "lint-ci": "eslint --ext .js --ignore-path .gitignore src" }, "browserslist": [ diff --git a/src/common/Graph.js b/src/common/Graph.js index 8ba34d47..3c1f3edb 100644 --- a/src/common/Graph.js +++ b/src/common/Graph.js @@ -1,12 +1,12 @@ -import { PriorityQueue } from './PriorityQueue.js' -import Victor from 'victor' +import { PriorityQueue } from "./PriorityQueue.js" +import Victor from "victor" export const mix = (v1, v2, s) => { let u = [v1.x, v1.y] let v = [v2.x, v2.y] var result = [] - for (var i = 0; i < u.length; ++i ) { + for (var i = 0; i < u.length; ++i) { result.push((1.0 - s) * u[i] + s * v[i]) } @@ -39,14 +39,14 @@ export default class Graph { } } - addEdge(node1, node2, weight=1) { + addEdge(node1, node2, weight = 1) { let node1Key = node1.toString() let node2Key = node2.toString() let edgeKey = [node1Key, node2Key].sort().toString() if (!this.edgeKeys.has(edgeKey)) { - this.adjacencyList[node1Key].push({node: node2, weight: weight}) - this.adjacencyList[node2Key].push({node: node1, weight: weight}) + this.adjacencyList[node1Key].push({ node: node2, weight }) + this.adjacencyList[node2Key].push({ node: node1, weight }) this.edgeKeys.add(edgeKey) this.edgeMap[edgeKey] = [node1.toString(), node2.toString()] this.clearCachedPaths() @@ -59,7 +59,7 @@ export default class Graph { } neighbors(node) { - return this.adjacencyList[node.toString()].map(hash => hash.node) + return this.adjacencyList[node.toString()].map((hash) => hash.node) } dijkstraShortestPath(startNode, endNode) { @@ -73,7 +73,7 @@ export default class Graph { times[startNode] = 0 - nodes.forEach(node => { + nodes.forEach((node) => { if (node !== startNode) { times[node] = Infinity } @@ -84,7 +84,7 @@ export default class Graph { while (!pq.isEmpty()) { let shortestStep = pq.dequeue() let currentNode = shortestStep[0] - this.adjacencyList[currentNode.toString()].forEach(neighbor => { + this.adjacencyList[currentNode.toString()].forEach((neighbor) => { let time = times[currentNode] + neighbor.weight if (time < times[neighbor.node]) { @@ -98,12 +98,12 @@ export default class Graph { let path = [endNode.toString()] let lastStep = endNode - while(lastStep !== startNode) { + while (lastStep !== startNode) { path.unshift(backtrace[lastStep].toString()) lastStep = backtrace[lastStep] } - shortest = path.map(node => this.nodeMap[node]) + shortest = path.map((node) => this.nodeMap[node]) this.cacheShortestPath(startNode, endNode, shortest) } @@ -125,6 +125,6 @@ export default class Graph { } getPairedKey(node1, node2) { - return node1.toString() + '-' + node2.toString() + return node1.toString() + "-" + node2.toString() } } diff --git a/src/common/Model.js b/src/common/Model.js new file mode 100644 index 00000000..feeae70b --- /dev/null +++ b/src/common/Model.js @@ -0,0 +1,50 @@ +const options = [] + +export default class Model { + constructor(type, state) { + this.type = type + this.state = state + + Object.assign(this, { + usesMachine: false, + usesFonts: false, + dragging: false, + stretch: false, + }) + } + + // override as needed + canChangeSize(state) { + return true + } + + // override as needed + canChangeAspectRatio(state) { + return this.canChangeSize(state) + } + + // override as needed + canRotate(state) { + return true + } + + // override as needed + canMove(state) { + return true + } + + canTransform(state) { + return ( + this.canMove(state) || this.canRotate(state) || this.canChangeSize(state) + ) + } + + // override as needed; redux state of a newly created instance + getInitialState() { + return {} + } + + getOptions() { + return options + } +} diff --git a/src/common/PriorityQueue.js b/src/common/PriorityQueue.js index 084afddb..89e96fa6 100644 --- a/src/common/PriorityQueue.js +++ b/src/common/PriorityQueue.js @@ -9,8 +9,8 @@ export class PriorityQueue { } else { let added = false for (let i = 1; i <= this.collection.length; i++) { - if (element[1] < this.collection[i-1][1]){ - this.collection.splice(i-1, 0, element) + if (element[1] < this.collection[i - 1][1]) { + this.collection.splice(i - 1, 0, element) added = true break } @@ -28,6 +28,6 @@ export class PriorityQueue { } isEmpty() { - return (this.collection.length === 0) + return this.collection.length === 0 } } diff --git a/src/common/colors.js b/src/common/colors.js new file mode 100644 index 00000000..a03ac89b --- /dev/null +++ b/src/common/colors.js @@ -0,0 +1,13 @@ +const colors = { + selectedShapeColor: "rgba(255, 255, 0, 0.7)", // yellow + slidingColor: "#2983BA", // blue + activeEffectColor: "rgba(15, 128, 0, 0.8)", // green + unselectedShapeColor: "rgba(195, 214, 230, 0.4)", // gray + noSelectionColor: "rgba(255, 255, 0, 0.7)", // slightly muted yellow + activeConnectorColor: "#2983BA", // blue + endPointColor: "red", + startPointColor: "rgb(15, 128, 0)", // green + transformerBorderColor: "#fefefe", // almost white +} + +export default colors diff --git a/src/common/debugging.js b/src/common/debugging.js new file mode 100644 index 00000000..6eff448c --- /dev/null +++ b/src/common/debugging.js @@ -0,0 +1,38 @@ +import { compact } from "lodash" + +// set to true to enable console logging +const debug = false + +// set to true to clear console before logging each state change +const debugConsoleClear = false + +// limit which keys are shown, e.g., const keys = ['selectLayerById'] +const keys = null + +// keep count of log occurrences by key +const logCounts = {} + +export const log = (key, id) => { + if (debug) { + if (!keys || keys.includes(key)) { + const keyId = compact([id, key]).join("/") + logCounts[keyId] ||= 0 + logCounts[keyId]++ + + const message = [logCounts[keyId], keyId].join(" - ") + console.log(message) + } + } +} + +export const resetLogCounts = () => { + if (debug) { + for (const key of Object.getOwnPropertyNames(logCounts)) { + delete logCounts[key] + } + + if (debugConsoleClear) { + console.clear() + } + } +} diff --git a/src/common/eulerianTrail.js b/src/common/eulerianTrail.js index 418a61b3..463a4626 100644 --- a/src/common/eulerianTrail.js +++ b/src/common/eulerianTrail.js @@ -41,7 +41,8 @@ export const eulerianTrail = (options) => { } var deg = [] - var inDeg = [], outDeg = [] + var inDeg = [], + outDeg = [] for (i = 0; i < options.edges.length; i += 1) { var edge = options.edges[i] @@ -80,7 +81,7 @@ export const eulerianTrail = (options) => { oddVertex += 1 } } - return {odd: oddVertex, start: start} + return { odd: oddVertex, start } } function checkUndirected() { @@ -93,17 +94,17 @@ export const eulerianTrail = (options) => { oddVertex += 1 } } - return {odd: oddVertex, start: start} + return { odd: oddVertex, start } } var check = options.directed ? checkDirected() : checkUndirected() if (check.odd % 2 !== 0 || check.odd > 2) { -// throw Error('the graph does not have an eulerian trail') + // throw Error('the graph does not have an eulerian trail') } dfs(check.start) if (trail.length !== options.edges.length + 1) { -// throw Error('the graph does not have an eulerian trail') + // throw Error('the graph does not have an eulerian trail') } trail.reverse() diff --git a/src/common/geometry.js b/src/common/geometry.js index 79fc432c..e0902867 100644 --- a/src/common/geometry.js +++ b/src/common/geometry.js @@ -1,20 +1,71 @@ -import Victor from 'victor' -import { roundP } from './util' +import Victor from "victor" +import { roundP } from "./util" // convert degrees to radians export const degToRad = (deg) => { - return deg / 180.0 * Math.PI + return (deg / 180.0) * Math.PI } // convert radians to degrees export const radToDeg = (rad) => { - return rad * 180.0 / Math.PI + return (rad * 180.0) / Math.PI } export const distance = (v1, v2) => { return Math.sqrt(Math.pow(v1.x - v2.x, 2.0) + Math.pow(v1.y - v2.y, 2.0)) } +export const totalDistance = (vertices) => { + let d = 0.0 + let previous = null + + vertices.forEach((vertex) => { + if (previous && vertex) { + d += distance(previous, vertex) + } + previous = vertex + }) + + return d +} + +// returns the total distance calculated for every vertex by index; also returns +// total distance +export const totalDistances = (vertices) => { + let total = 0.0 + let previous = null + const distances = { 0: 0.0 } + + vertices.forEach((vertex, index) => { + if (previous && vertex) { + total += distance(previous, vertex) + distances[index] = total + } + previous = vertex + }) + + return { total, distances } +} + +// returns the points whose cumulative length most closely match the target length +export const boundingVerticesAtLength = (vertices, targetLength) => { + let cumulativeLength = 0 + + for (let i = 0; i < vertices.length - 1; i++) { + let dx = vertices[i + 1].x - vertices[i].x + let dy = vertices[i + 1].y - vertices[i].y + let segmentLength = Math.sqrt(dx * dx + dy * dy) + + if (cumulativeLength + segmentLength >= targetLength) { + return [vertices[i], vertices[i + 1]] + } + cumulativeLength += segmentLength + } + + // If target length is beyond the vertices, return the last two vertices + return [vertices[vertices.length - 2], vertices[vertices.length - 1]] +} + // calculate the coterminal angle (0..2*PI) of a given angle export const coterminal = (angle) => { return angle - Math.floor(angle / (Math.PI * 2)) * Math.PI * 2 @@ -26,7 +77,9 @@ export const angle = (point) => { // returns whether a point is on the segment defined by start and end export const onSegment = (start, end, point) => { - return start.distance(point) + end.distance(point) - start.distance(end) < 0.001 + return ( + start.distance(point) + end.distance(point) - start.distance(end) < 0.001 + ) } export const slope = (v1, v2) => { @@ -48,7 +101,7 @@ export const findBounds = (vertices) => { let loY = vertices[0].y let hiY = vertices[0].y - for(let i=1; i { return [new Victor(loX, loY), new Victor(hiX, hiY)] } -// resizes each vertex in a list to the specified dimensions. Will not stretch the shape. -export const resizeVertices = (vertices, sizeX, sizeY) => { - let size = Math.max(sizeX, sizeY) - let bounds = findBounds(vertices) - let curveSize = Math.max(bounds[1].y - bounds[0].y, bounds[1].x - bounds[0].x) - let scale = size/curveSize +export const dimensions = (vertices, precision = 0) => { + const bounds = findBounds(vertices) - let scaledBounds = [bounds[0].multiply({x: scale, y: scale}), bounds[1].multiply({x: scale, y: scale})] - let deltaX = scaledBounds[1].x - (scaledBounds[1].x - scaledBounds[0].x)/2 - let deltaY = scaledBounds[1].y - (scaledBounds[1].y - scaledBounds[0].y)/2 + if (bounds.length === 0) { + return { + width: 0, + height: 0, + } + } else if (precision !== false) { + return { + width: Math.round(bounds[1].x - bounds[0].x, precision), + height: Math.round(bounds[1].y - bounds[0].y, precision), + } + } else { + return { + width: bounds[1].x - bounds[0].x, + height: bounds[1].y - bounds[0].y, + } + } +} + +// resizes each vertex in a list to the specified dimensions; the stretch parameter determines +// whether to stretch the shape to fit the dimensions. +export const resizeVertices = ( + vertices, + sizeX, + sizeY, + stretch = false, + aspectRatio = 1.0, +) => { + if (vertices.length < 2) return vertices + + let scaleX, scaleY, deltaX, deltaY + const bounds = findBounds(vertices) + const oldSizeX = bounds[1].x - bounds[0].x + const oldSizeY = bounds[1].y - bounds[0].y + + if (stretch) { + scaleX = sizeX / oldSizeX + scaleY = sizeY / oldSizeY + deltaX = 0 + deltaY = 0 + } else { + const size = Math.max(sizeX, sizeY) + const oldSize = Math.max(oldSizeX, oldSizeY) + + if (aspectRatio > 1) { + scaleX = size / oldSize + scaleY = size / aspectRatio / oldSize + } else { + scaleX = (size * aspectRatio) / oldSize + scaleY = size / oldSize + } + bounds[0].multiply({ x: scaleX, y: scaleY }) + bounds[1].multiply({ x: scaleX, y: scaleY }) + deltaX = bounds[0].x / 2 + deltaY = bounds[0].y / 2 + } + + vertices.forEach((vertex) => { + vertex.multiply({ x: scaleX, y: scaleY }).add({ x: -deltaX, y: -deltaY }) + }) - return vertices.map(vertex => vertex.clone().multiply({x: scale, y: scale}).add({x: -deltaX, y: -deltaY})) + return vertices } -// returns a vertex with x and y rounded to p number of digits -export const vertexRoundP = (v, p) => { - return new Victor(roundP(v.x, p), roundP(v.y, p)) +// modifies a vertex's x and y rounded to p number of digits +export const vertexRoundP = (vertex, p) => { + vertex.x = roundP(vertex.x, p) + vertex.y = roundP(vertex.y, p) + + return vertex } // Transform functions export const rotate = (vertex, angleDeg) => { - const angle = Math.PI / 180.0 * angleDeg - return new Victor( - vertex.x * Math.cos(angle) - vertex.y * Math.sin(angle), - vertex.x * Math.sin(angle) + vertex.y * Math.cos(angle) - ) + vertex.rotateDeg(angleDeg) + + return vertex } -export const scale = (vertex, pctX, pctY) => { - const scaleX = pctX / 100.0 - if (pctY === undefined) pctY = pctX - const scaleY = pctY / 100.0 +export const scale = (vertex, scaleX, scaleY) => { + vertex.multiply({ x: scaleX, y: scaleY === undefined ? scaleX : scaleY }) - return new Victor( - vertex.x * scaleX, - vertex.y * scaleY - ) + return vertex } -export const offset = (vertex, offsetX, offsetY) => { - return new Victor( - vertex.x + offsetX, - vertex.y + offsetY - ) +export const offset = (vertex, x, y) => { + vertex.add({ x, y }) + + return vertex } // modifies the given array in place, centering the points on (0, 0) export const centerOnOrigin = (vertices, bounds) => { + if (vertices.length === 0) return vertices + bounds ||= findBounds(vertices) const offsetX = (bounds[1].x + bounds[0].x) / 2 const offsetY = (bounds[1].y + bounds[0].y) / 2 - vertices.forEach(v => v.add(new Victor(-offsetX, -offsetY))) + vertices.forEach((v) => v.add(new Victor(-offsetX, -offsetY))) return vertices } const hAlignRight = (bounds) => -bounds[1].x const hAlignLeft = (bounds) => 0 - bounds[0].x -const hAlignCenter = (bounds) => -(bounds[1].x - bounds[0].x)/2 +const hAlignCenter = (bounds) => -(bounds[1].x - bounds[0].x) / 2 // aligns a group of selections, modifying vertices in place -export const horizontalAlign = (selections, align = 'left') => { - const dFn = align === 'center' ? - hAlignCenter : - align ==='left' ? hAlignLeft : hAlignRight +export const horizontalAlign = (selections, align = "left") => { + const dFn = + align === "center" + ? hAlignCenter + : align === "left" + ? hAlignLeft + : hAlignRight const allBounds = findBounds(selections.flat()) const dAll = dFn(allBounds) - selections.forEach(selection => { + selections.forEach((selection) => { const bounds = findBounds(selection) const d = dFn(bounds) - selection.forEach(vertex => { - vertex.add(new Victor(- dAll + d, 0)) + selection.forEach((vertex) => { + vertex.add(new Victor(-dAll + d, 0)) }) }) return selections } // returns an array of points drawing a circle of a given radius -export const circle = (radius, start=0, x=0, y=0) => { +export const circle = (radius, start = 0, x = 0, y = 0, resolution = 128.0) => { let points = [] - for (let i=0; i<=128; i++) { - let angle = Math.PI * 2.0 / 128.0 * i + start - points.push(new Victor(x + Math.cos(angle)*radius, y + Math.sin(angle)*radius)) + for (let i = 0; i <= resolution; i++) { + let angle = ((Math.PI * 2.0) / resolution) * i + start + points.push( + new Victor(x + Math.cos(angle) * radius, y + Math.sin(angle) * radius), + ) } return points } -export const arc = (radius, startAngle, endAngle, x=0, y=0) => { - let resolution = (Math.PI*2.0) / 128.0 // 128 segments per circle. Enough? - let deltaAngle = ((endAngle - startAngle) + 2.0 * Math.PI) % (2.0 * Math.PI) +export const arc = ( + radius, + startAngle, + endAngle, + x = 0, + y = 0, + shortestDistance = true, +) => { + let resolution = (Math.PI * 2.0) / 128.0 // 128 segments per circle. Enough? + let deltaAngle = (endAngle - startAngle + 2.0 * Math.PI) % (2.0 * Math.PI) + + if (shortestDistance) { + if (deltaAngle > Math.PI) { + deltaAngle -= 2.0 * Math.PI + } - if (deltaAngle > Math.PI) { - deltaAngle -= 2.0 * Math.PI - } - if (deltaAngle < 0.0) { - resolution *= -1.0 + if (deltaAngle < 0.0) { + resolution *= -1.0 + } } let tracePoints = [] - for (let step = 0; step < (deltaAngle/resolution) ; step++) { - tracePoints.push(Victor(x + radius * Math.cos(resolution * step + startAngle), - y + radius * Math.sin(resolution * step + startAngle))) + for (let step = 0; step < deltaAngle / resolution; step++) { + tracePoints.push( + Victor( + x + radius * Math.cos(resolution * step + startAngle), + y + radius * Math.sin(resolution * step + startAngle), + ), + ) } return tracePoints } @@ -177,19 +298,25 @@ export const subsample = (vertices, maxLength) => { for (next = 0; next < vertices.length; next++) { if (previous !== undefined) { - const start = Victor.fromObject(vertices[previous]) - const end = Victor.fromObject(vertices[next]) + const start = cloneVertex(vertices[previous]) + const end = cloneVertex(vertices[next]) const delta = end.clone().subtract(start) - const deltaSegment = end.clone().subtract(start).normalize().multiply(Victor(maxLength, maxLength)) + const deltaSegment = end + .clone() + .subtract(start) + .normalize() + .multiply(Victor(maxLength, maxLength)) // This loads up (start, end]. - for (let step = 0; step < (delta.magnitude() / maxLength) ; step++) { + for (let step = 0; step < delta.magnitude() / maxLength; step++) { subsampledVertices.push( - new Victor(start.x + step * deltaSegment.x, - start.y + step * deltaSegment.y)) + new Victor( + start.x + step * deltaSegment.x, + start.y + step * deltaSegment.y, + ), + ) } - } previous = next } @@ -202,6 +329,35 @@ export const subsample = (vertices, maxLength) => { return subsampledVertices } +export const downsample = (vertices, tolerance = 0.0001) => { + if (vertices.length < 3) { + return vertices + } + + let result = [vertices[0]] + + for (let i = 1; i < vertices.length - 1; i++) { + const v = vertices[i] + const vn = vertices[i + 1] + const vp = vertices[i - 1] + const slope1 = (v.y - vp.y) / (v.x - vp.x) + const slope2 = (vn.y - v.y) / (vn.x - v.x) + + const dy1 = Math.sign(v.y - vp.y) + const dy2 = Math.sign(vn.y - v.y) + const dx1 = Math.sign(v.x - vp.x) + const dx2 = Math.sign(vn.x - v.x) + + if (dy1 != dy2 || dx1 != dx2 || Math.abs(slope1 - slope2) > tolerance) { + result.push(vertices[i]) + } + } + + result.push(vertices[vertices.length - 1]) + + return result +} + // Convert x,y vertices to theta, rho vertices export const toThetaRho = (subsampledVertices, maxRadius, rhoMax) => { let vertices = [] @@ -209,17 +365,23 @@ export const toThetaRho = (subsampledVertices, maxRadius, rhoMax) => { let previousRawTheta = 0 // Normalize the radius - if (rhoMax < 0) { rhoMax = 0.1 } - if ( rhoMax > 1) { rhoMax = 1.0 } + if (rhoMax < 0) { + rhoMax = 0.1 + } + if (rhoMax > 1) { + rhoMax = 1.0 + } for (let next = 0; next < subsampledVertices.length; ++next) { - - let rho = (Victor.fromObject(subsampledVertices[next]).magnitude() / maxRadius) * rhoMax + let rho = + (cloneVertex(subsampledVertices[next]).magnitude() / maxRadius) * rhoMax rho = Math.min(rho, rhoMax) // What is the basic theta for this point? - let rawTheta = Math.atan2(subsampledVertices[next].x, - subsampledVertices[next].y) + let rawTheta = Math.atan2( + subsampledVertices[next].x, + subsampledVertices[next].y, + ) // Convert to [0, 2pi] rawTheta = (rawTheta + 2.0 * Math.PI) % (2.0 * Math.PI) @@ -245,11 +407,11 @@ export const toThetaRho = (subsampledVertices, maxRadius, rhoMax) => { } export const maxY = (vertices) => { - return Math.max(...vertices.map(v => v.y)) + return Math.max(...vertices.map((v) => v.y)) } export const minY = (vertices) => { - return Math.min(...vertices.map(v => v.y)) + return Math.min(...vertices.map((v) => v.y)) } // returns the index of the vertex in arr that is closest to the given vertex @@ -274,15 +436,89 @@ export const findMinimumVertex = (value, arr, fn) => { return found } +export const isLoop = (vertices, precision = 3) => { + return ( + vertices.length > 1 && + vertexRoundP(vertices[0], precision).isEqualTo( + vertexRoundP(vertices[vertices.length - 1], precision), + ) + ) +} + // Convert theta, rho vertices to goofy x, y, which really represent scara angles. export const toScaraGcode = (vertices, unitsPerCircle) => { - return vertices.map( thetaRho => { + return vertices.map((thetaRho) => { const theta = thetaRho.x const rho = thetaRho.y const m1 = theta + Math.acos(rho) const m2 = theta - Math.acos(rho) - const x = unitsPerCircle * m1 / (2*Math.PI) - const y = unitsPerCircle * m2 / (2*Math.PI) - return new Victor(x,y) + const x = (unitsPerCircle * m1) / (2 * Math.PI) + const y = (unitsPerCircle * m2) / (2 * Math.PI) + + return new Victor(x, y) }) } + +export const cloneVertex = (vertex) => { + const newVertex = new Victor(vertex.x, vertex.y) + const attrs = ["origX", "origY", "connect", "connector", "hidden"] + + attrs.forEach((attr) => { + if (vertex[attr] !== undefined) { + newVertex[attr] = vertex[attr] + } + }) + + return newVertex +} + +export const cloneVertices = (vertices) => { + return vertices.map((vertex) => cloneVertex(vertex)) +} + +// add attributes to a given vertex +export const annotateVertex = (vertex, attrs) => { + const filteredAttrs = Object.keys(attrs).reduce((memo, key) => { + if (attrs[key] !== undefined) { + memo[key] = attrs[key] + } + return memo + }, {}) + + Object.assign(vertex, filteredAttrs) + + return vertex +} + +// add attributes to a given array of vertices +export const annotateVertices = (vertices, attrs) => { + vertices.forEach((vertex) => { + annotateVertex(vertex, attrs) + }) + + return vertices +} + +// returns the intersection point of two line segments +export const calculateIntersection = (p1, p2, p3, p4) => { + var denominator = + (p2.x - p1.x) * (p4.y - p3.y) - (p2.y - p1.y) * (p4.x - p3.x) + if (denominator === 0) { + return null // lines are parallel + } + var a = p1.y - p3.y + var b = p1.x - p3.x + var numerator1 = (p4.x - p3.x) * a - (p4.y - p3.y) * b + var numerator2 = (p2.x - p1.x) * a - (p2.y - p1.y) * b + a = numerator1 / denominator + b = numerator2 / denominator + + // return the intersection point if it's within the bounds of both line segments + if (a > 0 && a < 1 && b > 0 && b < 1) { + return { + x: p1.x + a * (p2.x - p1.x), + y: p1.y + a * (p2.y - p1.y), + } + } + return null // intersection point is out of bounds +} diff --git a/src/common/hooks/useKeyPress.js b/src/common/hooks/useKeyPress.js new file mode 100644 index 00000000..f1ddbc2e --- /dev/null +++ b/src/common/hooks/useKeyPress.js @@ -0,0 +1,34 @@ +import { useState, useEffect } from "react" + +const useKeyPress = (targetKey, inputRef) => { + const [keyPressed, setKeyPressed] = useState(false) + + const handleKeyDown = ({ key }) => { + if (key === targetKey) { + setKeyPressed(true) + } + } + + const handleKeyUp = ({ key }) => { + if (key === targetKey) { + setKeyPressed(false) + } + } + + useEffect(() => { + if (inputRef.current) { + window.addEventListener("keydown", handleKeyDown) + window.addEventListener("keyup", handleKeyUp) + + // remove event listeners on cleanup + return () => { + window.removeEventListener("keydown", handleKeyDown) + window.removeEventListener("keyup", handleKeyUp) + } + } + }, [inputRef]) + + return keyPressed +} + +export default useKeyPress diff --git a/src/common/lindenmayer.js b/src/common/lindenmayer.js index 216a50f4..0d10ba14 100644 --- a/src/common/lindenmayer.js +++ b/src/common/lindenmayer.js @@ -1,5 +1,5 @@ -import Victor from 'victor' -import { vertexRoundP } from './geometry' +import Victor from "victor" +import { vertexRoundP, cloneVertex } from "./geometry" export const onSubtypeChange = (subtype, changes, attrs) => { // if we switch back with too many iterations, the code @@ -37,10 +37,10 @@ export const lsystem = (config) => { let input = config.axiom let output - for (let i=0; i { } const lsystemDraw = (vertex, angle, config) => { - return vertexRoundP(vertex.clone().add({x: -config.side * Math.cos(angle), y: -config.side * Math.sin(angle)}), 2) + return vertexRoundP( + cloneVertex(vertex).add({ + x: -config.side * Math.cos(angle), + y: -config.side * Math.sin(angle), + }), + 2, + ) } export const lsystemPath = (instructions, config) => { let vertex = new Victor(0, 0) let currVertices = [vertex] - let angle = -Math.PI/2 + let angle = -Math.PI / 2 if (config.startingAngle) { - angle = typeof config.startingAngle === 'function' ? - config.startingAngle(config.iterations) : - config.startingAngle + angle = + typeof config.startingAngle === "function" + ? config.startingAngle(config.iterations) + : config.startingAngle } // This will store the previous return paths we are not working on. let returnPaths = [] - for (let i=0; i { +// if you want to save a multiple temporary states, use these keys. The first time +// you save a new state, change persistSaveKey. Make a change, then change +// persistLoadKey to the same value. These keys are obsolete now +// given that a user can save their pattern to a file. +const persistLoadKey = "state" +const persistSaveKey = "state" + +export const loadState = (key = persistLoadKey) => { try { const serializedState = localStorage.getItem(key) if (serializedState === null) { @@ -10,11 +17,11 @@ export const loadState = (key='state') => { } } -export const saveState = (state, key='state') => { +export const saveState = (state, key = persistSaveKey) => { try { const serializedState = JSON.stringify(state) localStorage.setItem(key, serializedState) - } catch(err) { + } catch (err) { // ignore write errors } } diff --git a/src/common/mocks.js b/src/common/mocks.js new file mode 100644 index 00000000..5c9edf37 --- /dev/null +++ b/src/common/mocks.js @@ -0,0 +1,12 @@ +let counter = 0 + +const uniqueId = () => { + counter++ + return counter.toString() +} + +export const resetUniqueId = (start = 0) => { + counter = start +} + +jest.mock("uuid", () => ({ v4: () => uniqueId() })) diff --git a/src/common/noise.js b/src/common/noise.js index 5da402c5..6c7f03be 100644 --- a/src/common/noise.js +++ b/src/common/noise.js @@ -7,10 +7,9 @@ * @return {Number} */ function fade(t) { - return t*t*t*(t*(t*6-15)+10) + return t * t * t * (t * (t * 6 - 15) + 10) } - /** * Perlin lerp function. * @@ -20,457 +19,443 @@ function fade(t) { * @return {Number} */ function lerp(a, b, t) { - return (1-t)*a + t*b + return (1 - t) * a + t * b } - /** * Grad class. * * @package noisejs */ class Grad { - + /** + * Constructor. + * + * @param {Number} x + * @param {Number} y + * @param {Number} z + * @return {self} + */ + constructor(x, y, z) { /** - * Constructor. + * x * - * @param {Number} x - * @param {Number} y - * @param {Number} z - * @return {self} + * @type {Number} */ - constructor(x, y, z) { - - /** - * x - * - * @type {Number} - */ - this.x = x - - /** - * y - * - * @type {Number} - */ - this.y = y - - /** - * z - * - * @type {Number} - */ - this.z = z - } - + this.x = x /** - * 2D dot product. + * y * - * @param {Number} x - * @param {Number} y - * @return {Number} + * @type {Number} */ - dot2(x, y) { - return this.x * x + this.y * y - } - + this.y = y /** - * 3D dot product. + * z * - * @param {Number} x - * @param {Number} y - * @param {Number} z - * @return {Number} + * @type {Number} */ - dot3(x, y, z) { - return this.x * x + this.y * y + this.z * z - } - + this.z = z + } + + /** + * 2D dot product. + * + * @param {Number} x + * @param {Number} y + * @return {Number} + */ + dot2(x, y) { + return this.x * x + this.y * y + } + + /** + * 3D dot product. + * + * @param {Number} x + * @param {Number} y + * @param {Number} z + * @return {Number} + */ + dot3(x, y, z) { + return this.x * x + this.y * y + this.z * z + } } - /** * noisejs * * @package noisejs */ class noise { - - /** - * Constructor. - * - * @return {self} - */ - constructor() { - - // Seed - this.seed(0) - + /** + * Constructor. + * + * @return {self} + */ + constructor() { + // Seed + this.seed(0) + } + + /** + * Seed the noise generation. + * + * Supports 2^16 different seeding values. + * + * @param {Number} seed + * @return {void} + */ + seed(seed) { + // Scale the seed + if (seed > 0 && seed < 1) { + seed *= 65536 } - - /** - * Seed the noise generation. - * - * Supports 2^16 different seeding values. - * - * @param {Number} seed - * @return {void} - */ - seed(seed) { - - // Scale the seed - if (seed > 0 && seed < 1) { - seed *= 65536 - } - - // Floor the seed - seed = Math.floor(seed) - if (seed < 256) { - seed |= seed << 8 - } - - // Iterate the seed - for (var i = 0; i < 256; i++) { - var v - if (i & 1) v = p[i] ^ (seed & 255) - else v = p[i] ^ ((seed>>8) & 255) - - // Use permutation table - perm[i] = perm[i + 256] = v - gradP[i] = gradP[i + 256] = grad3[v % 12] - } - + // Floor the seed + seed = Math.floor(seed) + if (seed < 256) { + seed |= seed << 8 } + // Iterate the seed + for (var i = 0; i < 256; i++) { + var v + if (i & 1) v = p[i] ^ (seed & 255) + else v = p[i] ^ ((seed >> 8) & 255) - /** - * Generate 2D Simplex noise. - * - * @param {Number} xin - * @param {Number} yin - * @return {Number} - */ - simplex2(xin, yin) { - // Noise contributions from the three corners - var n0, n1, n2 - - // Skew the input space to determine which simplex cell we're in - var s = (xin+yin)*F2 - var i = Math.floor(xin+s) - var j = Math.floor(yin+s) - var t = (i+j)*G2 - - // The x,y distances from the cell origin, unskewed. - var x0 = xin-i+t - var y0 = yin-j+t - - // For the 2D case, the simplex shape is an equilateral triangle. - // Determine which simplex we are in. - // Offsets for second (middle) corner of simplex in (i,j) coords - var i1, j1 - - // lower triangle, XY order: (0,0)->(1,0)->(1,1) - if (x0 > y0) { - i1=1 - j1=0 - } - // upper triangle, YX order: (0,0)->(0,1)->(1,1) - else { - i1=0 - j1=1 - } - - // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and - // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where - // c = (3-sqrt(3))/6 - var x1 = x0 - i1 + G2 // Offsets for middle corner in (x,y) unskewed coords - var y1 = y0 - j1 + G2 - var x2 = x0 - 1 + 2 * G2 // Offsets for last corner in (x,y) unskewed coords - var y2 = y0 - 1 + 2 * G2 - - // Work out the hashed gradient indices of the three simplex corners - i &= 255 - j &= 255 - - // Get indices from permutation table - var gi0 = gradP[i+perm[j]] - var gi1 = gradP[i+i1+perm[j+j1]] - var gi2 = gradP[i+1+perm[j+1]] - - // Calculate the contribution from the three corners - var t0 = 0.5 - x0*x0-y0*y0 - if (t0 < 0) { - n0 = 0 - } - // (x,y) of grad3 used for 2D gradient - else { - t0 *= t0 - n0 = t0 * t0 * gi0.dot2(x0, y0) - } - - // Second corner - var t1 = 0.5 - x1*x1-y1*y1 - if (t1 < 0) { - n1 = 0 - } - else { - t1 *= t1 - n1 = t1 * t1 * gi1.dot2(x1, y1) - } - - // Third corner - var t2 = 0.5 - x2*x2-y2*y2 - if (t2 < 0) { - n2 = 0 - } - else { - t2 *= t2 - n2 = t2 * t2 * gi2.dot2(x2, y2) - } - - // Add contributions from each corner to get the final noise value. - // The result is scaled to return values in the interval [-1,1]. - return 70 * (n0 + n1 + n2) - + // Use permutation table + perm[i] = perm[i + 256] = v + gradP[i] = gradP[i + 256] = grad3[v % 12] } - - - /** - * Generate 3D Simplex noise. - * - * @param {Number} xin - * @param {Number} yin - * @param {Number} zin - * @return {Number} - */ - simplex3(xin, yin, zin) { - - // Noise contributions from the four corners - var n0, n1, n2, n3 - - // Skew the input space to determine which simplex cell we're in - var s = (xin+yin+zin)*F3 - var i = Math.floor(xin+s) - var j = Math.floor(yin+s) - var k = Math.floor(zin+s) - - // The x,y distances from the cell origin, unskewed. - var t = (i+j+k)*G3 - var x0 = xin-i+t - var y0 = yin-j+t - var z0 = zin-k+t - - // For the 3D case, the simplex shape is a slightly irregular tetrahedron. - // Determine which simplex we are in. - // Offsets for second corner of simplex in (i,j,k) coords - // Offsets for third corner of simplex in (i,j,k) coords - var i1, j1, k1 - var i2, j2, k2 - if (x0 >= y0) { - if (y0 >= z0) { - i1=1; i2=1 - j1=0; j2=1 - k1=0; k2=0 - } - else if (x0 >= z0) { - i1=1; i2=1 - j1=0; j2=0 - k1=0; k2=1 - } - else { - i1=0; i2=1 - j1=0; j2=0 - k1=1; k2=1 - } - } - else { - if (y0 < z0) { - i1=0; i2=0 - j1=0; j2=1 - k1=1; k2=1 - } - else if (x0 < z0) { - i1=0; i2=0 - j1=1; j2=1 - k1=0; k2=1 - } - else { - i1=0; i2=1 - j1=1; j2=1 - k1=0; k2=0 - } - } - - // A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z), - // a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and - // a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where - // c = 1/6. - - // Offsets for second corner - var x1 = x0 - i1 + G3 - var y1 = y0 - j1 + G3 - var z1 = z0 - k1 + G3 - - // Offsets for third corner - var x2 = x0 - i2 + 2 * G3 - var y2 = y0 - j2 + 2 * G3 - var z2 = z0 - k2 + 2 * G3 - - // Offsets for fourth corner - var x3 = x0 - 1 + 3 * G3 - var y3 = y0 - 1 + 3 * G3 - var z3 = z0 - 1 + 3 * G3 - - // Work out the hashed gradient indices of the four simplex corners - i &= 255 - j &= 255 - k &= 255 - - //Get indices from permutation table - var gi0 = gradP[i+ perm[j+ perm[k ]]] - var gi1 = gradP[i+i1+perm[j+j1+perm[k+k1]]] - var gi2 = gradP[i+i2+perm[j+j2+perm[k+k2]]] - var gi3 = gradP[i+ 1+perm[j+ 1+perm[k+ 1]]] - - // Calculate the contribution from the four corners - // First corner - var t0 = 0.6 - x0*x0 - y0*y0 - z0*z0 - if (t0 < 0) { - n0 = 0 - } - // (x,y) of grad3 used for 2D gradient - else { - t0 *= t0 - n0 = t0 * t0 * gi0.dot3(x0, y0, z0) - } - - // Second corner - var t1 = 0.6 - x1*x1 - y1*y1 - z1*z1 - if (t1 < 0) { - n1 = 0 - } - else { - t1 *= t1 - n1 = t1 * t1 * gi1.dot3(x1, y1, z1) - } - - // Third corner - var t2 = 0.6 - x2*x2 - y2*y2 - z2*z2 - if (t2 < 0) { - n2 = 0 - } - else { - t2 *= t2 - n2 = t2 * t2 * gi2.dot3(x2, y2, z2) - } - - // Fourth corner - var t3 = 0.6 - x3*x3 - y3*y3 - z3*z3 - if (t3 < 0) { - n3 = 0 - } - else { - t3 *= t3 - n3 = t3 * t3 * gi3.dot3(x3, y3, z3) - } - - // Add contributions from each corner to get the final noise value. - // The result is scaled to return values in the interval [-1,1]. - return 32 * (n0 + n1 + n2 + n3) - + } + + /** + * Generate 2D Simplex noise. + * + * @param {Number} xin + * @param {Number} yin + * @return {Number} + */ + simplex2(xin, yin) { + // Noise contributions from the three corners + var n0, n1, n2 + + // Skew the input space to determine which simplex cell we're in + var s = (xin + yin) * F2 + var i = Math.floor(xin + s) + var j = Math.floor(yin + s) + var t = (i + j) * G2 + + // The x,y distances from the cell origin, unskewed. + var x0 = xin - i + t + var y0 = yin - j + t + + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + // Offsets for second (middle) corner of simplex in (i,j) coords + var i1, j1 + + // lower triangle, XY order: (0,0)->(1,0)->(1,1) + if (x0 > y0) { + i1 = 1 + j1 = 0 + } + // upper triangle, YX order: (0,0)->(0,1)->(1,1) + else { + i1 = 0 + j1 = 1 } + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + var x1 = x0 - i1 + G2 // Offsets for middle corner in (x,y) unskewed coords + var y1 = y0 - j1 + G2 + var x2 = x0 - 1 + 2 * G2 // Offsets for last corner in (x,y) unskewed coords + var y2 = y0 - 1 + 2 * G2 + + // Work out the hashed gradient indices of the three simplex corners + i &= 255 + j &= 255 + + // Get indices from permutation table + var gi0 = gradP[i + perm[j]] + var gi1 = gradP[i + i1 + perm[j + j1]] + var gi2 = gradP[i + 1 + perm[j + 1]] + + // Calculate the contribution from the three corners + var t0 = 0.5 - x0 * x0 - y0 * y0 + if (t0 < 0) { + n0 = 0 + } + // (x,y) of grad3 used for 2D gradient + else { + t0 *= t0 + n0 = t0 * t0 * gi0.dot2(x0, y0) + } - /** - * Generate 2D Perlin noise. - * - * @param {Number} x - * @param {Number} y - * @return {Number} - */ - perlin2(x, y) { - - // Find unit grid cell containing point - var X = Math.floor(x), Y = Math.floor(y) - - // Get relative xy coordinates of point within that cell - x = x - X; y = y - Y - - // Wrap the integer cells at 255 (smaller integer period can be introduced here) - X = X & 255; Y = Y & 255 - - // Calculate noise contributions from each of the four corners - var n00 = gradP[X+perm[Y]].dot2(x, y) - var n01 = gradP[X+perm[Y+1]].dot2(x, y-1) - var n10 = gradP[X+1+perm[Y]].dot2(x-1, y) - var n11 = gradP[X+1+perm[Y+1]].dot2(x-1, y-1) + // Second corner + var t1 = 0.5 - x1 * x1 - y1 * y1 + if (t1 < 0) { + n1 = 0 + } else { + t1 *= t1 + n1 = t1 * t1 * gi1.dot2(x1, y1) + } - // Compute the fade curve value for x - var u = fade(x) + // Third corner + var t2 = 0.5 - x2 * x2 - y2 * y2 + if (t2 < 0) { + n2 = 0 + } else { + t2 *= t2 + n2 = t2 * t2 * gi2.dot2(x2, y2) + } - // Interpolate the four results - return lerp( - lerp(n00, n10, u), - lerp(n01, n11, u), - fade(y) - ) + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 70 * (n0 + n1 + n2) + } + + /** + * Generate 3D Simplex noise. + * + * @param {Number} xin + * @param {Number} yin + * @param {Number} zin + * @return {Number} + */ + simplex3(xin, yin, zin) { + // Noise contributions from the four corners + var n0, n1, n2, n3 + + // Skew the input space to determine which simplex cell we're in + var s = (xin + yin + zin) * F3 + var i = Math.floor(xin + s) + var j = Math.floor(yin + s) + var k = Math.floor(zin + s) + + // The x,y distances from the cell origin, unskewed. + var t = (i + j + k) * G3 + var x0 = xin - i + t + var y0 = yin - j + t + var z0 = zin - k + t + + // For the 3D case, the simplex shape is a slightly irregular tetrahedron. + // Determine which simplex we are in. + // Offsets for second corner of simplex in (i,j,k) coords + // Offsets for third corner of simplex in (i,j,k) coords + var i1, j1, k1 + var i2, j2, k2 + if (x0 >= y0) { + if (y0 >= z0) { + i1 = 1 + i2 = 1 + j1 = 0 + j2 = 1 + k1 = 0 + k2 = 0 + } else if (x0 >= z0) { + i1 = 1 + i2 = 1 + j1 = 0 + j2 = 0 + k1 = 0 + k2 = 1 + } else { + i1 = 0 + i2 = 1 + j1 = 0 + j2 = 0 + k1 = 1 + k2 = 1 + } + } else { + if (y0 < z0) { + i1 = 0 + i2 = 0 + j1 = 0 + j2 = 1 + k1 = 1 + k2 = 1 + } else if (x0 < z0) { + i1 = 0 + i2 = 0 + j1 = 1 + j2 = 1 + k1 = 0 + k2 = 1 + } else { + i1 = 0 + i2 = 1 + j1 = 1 + j2 = 1 + k1 = 0 + k2 = 0 + } + } + // A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z), + // a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and + // a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where + // c = 1/6. + + // Offsets for second corner + var x1 = x0 - i1 + G3 + var y1 = y0 - j1 + G3 + var z1 = z0 - k1 + G3 + + // Offsets for third corner + var x2 = x0 - i2 + 2 * G3 + var y2 = y0 - j2 + 2 * G3 + var z2 = z0 - k2 + 2 * G3 + + // Offsets for fourth corner + var x3 = x0 - 1 + 3 * G3 + var y3 = y0 - 1 + 3 * G3 + var z3 = z0 - 1 + 3 * G3 + + // Work out the hashed gradient indices of the four simplex corners + i &= 255 + j &= 255 + k &= 255 + + //Get indices from permutation table + var gi0 = gradP[i + perm[j + perm[k]]] + var gi1 = gradP[i + i1 + perm[j + j1 + perm[k + k1]]] + var gi2 = gradP[i + i2 + perm[j + j2 + perm[k + k2]]] + var gi3 = gradP[i + 1 + perm[j + 1 + perm[k + 1]]] + + // Calculate the contribution from the four corners + // First corner + var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 + if (t0 < 0) { + n0 = 0 + } + // (x,y) of grad3 used for 2D gradient + else { + t0 *= t0 + n0 = t0 * t0 * gi0.dot3(x0, y0, z0) } + // Second corner + var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 + if (t1 < 0) { + n1 = 0 + } else { + t1 *= t1 + n1 = t1 * t1 * gi1.dot3(x1, y1, z1) + } - /** - * Generate 3D Perlin noise. - * - * @param {Number} x - * @param {Number} y - * @param {Number} z - * @return {Number} - */ - perlin3(x, y, z) { - - // Find unit grid cell containing point - var X = Math.floor(x), Y = Math.floor(y), Z = Math.floor(z) - - // Get relative xyz coordinates of point within that cell - x = x - X; y = y - Y; z = z - Z - - // Wrap the integer cells at 255 (smaller integer period can be introduced here) - X = X & 255; Y = Y & 255; Z = Z & 255 - - // Calculate noise contributions from each of the eight corners - var n000 = gradP[X+ perm[Y+ perm[Z ]]].dot3(x, y, z) - var n001 = gradP[X+ perm[Y+ perm[Z+1]]].dot3(x, y, z-1) - var n010 = gradP[X+ perm[Y+1+perm[Z ]]].dot3(x, y-1, z) - var n011 = gradP[X+ perm[Y+1+perm[Z+1]]].dot3(x, y-1, z-1) - var n100 = gradP[X+1+perm[Y+ perm[Z ]]].dot3(x-1, y, z) - var n101 = gradP[X+1+perm[Y+ perm[Z+1]]].dot3(x-1, y, z-1) - var n110 = gradP[X+1+perm[Y+1+perm[Z ]]].dot3(x-1, y-1, z) - var n111 = gradP[X+1+perm[Y+1+perm[Z+1]]].dot3(x-1, y-1, z-1) - - // Compute the fade curve value for x, y, z - var u = fade(x) - var v = fade(y) - var w = fade(z) - - // Interpolate - return lerp( - lerp( - lerp(n000, n100, u), - lerp(n001, n101, u), w - ), - lerp( - lerp(n010, n110, u), - lerp(n011, n111, u), w - ), - v - ) + // Third corner + var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 + if (t2 < 0) { + n2 = 0 + } else { + t2 *= t2 + n2 = t2 * t2 * gi2.dot3(x2, y2, z2) + } + // Fourth corner + var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 + if (t3 < 0) { + n3 = 0 + } else { + t3 *= t3 + n3 = t3 * t3 * gi3.dot3(x3, y3, z3) } -} + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 32 * (n0 + n1 + n2 + n3) + } + + /** + * Generate 2D Perlin noise. + * + * @param {Number} x + * @param {Number} y + * @return {Number} + */ + perlin2(x, y) { + // Find unit grid cell containing point + var X = Math.floor(x), + Y = Math.floor(y) + + // Get relative xy coordinates of point within that cell + x = x - X + y = y - Y + + // Wrap the integer cells at 255 (smaller integer period can be introduced here) + X = X & 255 + Y = Y & 255 + + // Calculate noise contributions from each of the four corners + var n00 = gradP[X + perm[Y]].dot2(x, y) + var n01 = gradP[X + perm[Y + 1]].dot2(x, y - 1) + var n10 = gradP[X + 1 + perm[Y]].dot2(x - 1, y) + var n11 = gradP[X + 1 + perm[Y + 1]].dot2(x - 1, y - 1) + + // Compute the fade curve value for x + var u = fade(x) + + // Interpolate the four results + return lerp(lerp(n00, n10, u), lerp(n01, n11, u), fade(y)) + } + + /** + * Generate 3D Perlin noise. + * + * @param {Number} x + * @param {Number} y + * @param {Number} z + * @return {Number} + */ + perlin3(x, y, z) { + // Find unit grid cell containing point + var X = Math.floor(x), + Y = Math.floor(y), + Z = Math.floor(z) + + // Get relative xyz coordinates of point within that cell + x = x - X + y = y - Y + z = z - Z + + // Wrap the integer cells at 255 (smaller integer period can be introduced here) + X = X & 255 + Y = Y & 255 + Z = Z & 255 + + // Calculate noise contributions from each of the eight corners + var n000 = gradP[X + perm[Y + perm[Z]]].dot3(x, y, z) + var n001 = gradP[X + perm[Y + perm[Z + 1]]].dot3(x, y, z - 1) + var n010 = gradP[X + perm[Y + 1 + perm[Z]]].dot3(x, y - 1, z) + var n011 = gradP[X + perm[Y + 1 + perm[Z + 1]]].dot3(x, y - 1, z - 1) + var n100 = gradP[X + 1 + perm[Y + perm[Z]]].dot3(x - 1, y, z) + var n101 = gradP[X + 1 + perm[Y + perm[Z + 1]]].dot3(x - 1, y, z - 1) + var n110 = gradP[X + 1 + perm[Y + 1 + perm[Z]]].dot3(x - 1, y - 1, z) + var n111 = gradP[X + 1 + perm[Y + 1 + perm[Z + 1]]].dot3( + x - 1, + y - 1, + z - 1, + ) + + // Compute the fade curve value for x, y, z + var u = fade(x) + var v = fade(y) + var w = fade(z) + + // Interpolate + return lerp( + lerp(lerp(n000, n100, u), lerp(n001, n101, u), w), + lerp(lerp(n010, n110, u), lerp(n011, n111, u), w), + v, + ) + } +} /** * 3D gradients @@ -478,60 +463,53 @@ class noise { * @type {Array} */ var grad3 = [ - new Grad(1,1,0), new Grad(-1,1,0), new Grad(1,-1,0), new Grad(-1,-1,0), - new Grad(1,0,1), new Grad(-1,0,1), new Grad(1,0,-1), new Grad(-1,0,-1), - new Grad(0,1,1), new Grad(0,-1,1), new Grad(0,1,-1), new Grad(0,-1,-1) + new Grad(1, 1, 0), + new Grad(-1, 1, 0), + new Grad(1, -1, 0), + new Grad(-1, -1, 0), + new Grad(1, 0, 1), + new Grad(-1, 0, 1), + new Grad(1, 0, -1), + new Grad(-1, 0, -1), + new Grad(0, 1, 1), + new Grad(0, -1, 1), + new Grad(0, 1, -1), + new Grad(0, -1, -1), ] - /** * Permutation table * * @type {Array} */ var p = [ - 151,160,137,91,90,15, - 131,13,201,95,96,53,194,233,7, - 225,140,36,103,30,69,142,8,99, - 37,240,21,10,23,190,6,148,247, - 20,234,75,0,26,197,62,94,252, - 219,203,117,35,11,32,57,177,33, - 88,237,149,56,87,174,20,125,136, - 171,168,68,175,74,165,71,134, - 139,48,27,166,77,146,158,231, - 83,111,229,122,60,211,133,230, - 220,105,92,41,55,46,245,40,244, - 102,143,54,65,25,63,161,1,216,80, - 73,209,76,132,187,208,89,18,169, - 200,196,135,130,116,188,159,86, - 164,100,109,198,173,186,3,64,52, - 217,226,250,124,123,5,202,38,147, - 118,126,255,82,85,212,207,206,59, - 227,47,16,58,17,182,189,28,42,223, - 183,170,213,119,248,152,2,44,154, - 163, 70,221,153,101,155,167,43,172, - 9,129,22,39,253,19,98,108,110,79, - 113,224,232,178,185,112,104,218, - 246,97,228,251,34,242,193,238,210, - 144,12,191,179,162,241,81,51,145,235, - 249,14,239,107,49,192,214,31,181,199, - 106,157,184,84,204,176,115,121,50,45, - 127,4,150,254,138,236,205,93,222,114, - 67,29,24,72,243,141,128,195,78,66, - 215,61,156,180 + 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, + 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 20, 234, + 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, + 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, + 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, + 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, + 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, + 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, + 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, + 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, + 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, + 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, + 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, + 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, + 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, + 61, 156, 180, ] - // Double the permutation table length (avoid array wrapping) var perm = new Array(512) var gradP = new Array(512) - // Skewing and unskewing factors for generating 2D, 3D and 4D noise -var F3 = 1/3 -var G3 = 1/6 -var F2 = 0.5*(Math.sqrt(3)-1) -var G2 = (3-Math.sqrt(3))/6 +var F3 = 1 / 3 +var G3 = 1 / 6 +var F2 = 0.5 * (Math.sqrt(3) - 1) +var G2 = (3 - Math.sqrt(3)) / 6 const noisejs = new noise() export default noisejs diff --git a/src/common/proximity.js b/src/common/proximity.js new file mode 100644 index 00000000..513827a9 --- /dev/null +++ b/src/common/proximity.js @@ -0,0 +1,48 @@ +import KDBush from "kdbush" + +// O(n); returns the point in arr that is farthest from a given point +export const farthest = (arr, point) => { + return arr.reduce( + (max, x, i, arr) => (x.distance(point) > max.distance(point) ? x : max), + arr[0], + ) +} + +// O(n); returns the point in arr that is closest to a given point +export const closest = (arr, point) => { + return arr.reduce( + (max, x, i, arr) => (x.distance(point) < max.distance(point) ? x : max), + arr[0], + ) +} + +// O(n log n); returns the point in arr1 that is closest to any point in arr2 +export const nearestNeighbor = (arr1, arr2, radius = 1) => { + const index = new KDBush(arr2.length) + + arr2.forEach((point) => index.add(point.x, point.y)) + index.finish() + + let minDistance = Infinity + let closestPoint + + arr1.forEach((point) => { + // find the nearest neighbor in arr2 to point + const neighborIds = index.within(point.x, point.y, radius) + const neighbor = arr2[neighborIds[0]] + + if (neighbor) { + // calculate the Euclidean distance between the point and the nearest neighbor + const distance = Math.sqrt( + (point.x - neighbor.x) ** 2 + (point.y - neighbor.y) ** 2, + ) + + if (distance < minDistance) { + minDistance = distance + closestPoint = point + } + } + }) + + return closestPoint +} diff --git a/src/common/selectors.js b/src/common/selectors.js deleted file mode 100644 index 9d874cc2..00000000 --- a/src/common/selectors.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defaultMemoize } from 'reselect' - -// from https://github.com/reduxjs/reselect/issues/441 -export const memoizeArrayProducingFn = (fn) => { - const memArray = defaultMemoize((...array) => array) - return (...args) => memArray(...fn(...args)) -} diff --git a/src/common/slice.js b/src/common/slice.js new file mode 100644 index 00000000..11780814 --- /dev/null +++ b/src/common/slice.js @@ -0,0 +1,39 @@ +// +// Wrapper methods around slice and adapter actions consistent with how our our application +// uses the Redux store. +// +import { v4 as uuidv4 } from "uuid" + +const selectedIndex = (state) => { + const curr = state.entities[state.selected] + return curr ? state.ids.findIndex((id) => id === curr.id) : -1 +} + +// Insert an entity at a specific index, which is not supported by addOne. +export const insertOne = (state, action) => { + const index = state.selected ? selectedIndex(state) + 1 : 0 + const entity = { ...action.payload } + + state.ids.splice(index, 0, entity.id) + state.entities[entity.id] = entity + state.current = entity.id + + return entity +} + +export const prepareAfterAdd = (entity) => { + const id = uuidv4() + + // return newly generated id so downstream actions can use it + return { payload: { ...entity, id }, meta: { id } } +} + +export const deleteOne = (adapter, state, action) => { + adapter.removeOne(state, action.payload) +} + +export const updateOne = (adapter, state, action) => { + const entity = action.payload + + adapter.updateOne(state, { id: entity.id, changes: entity }) +} diff --git a/src/common/util.js b/src/common/util.js index 8e2bf36f..731cc571 100644 --- a/src/common/util.js +++ b/src/common/util.js @@ -1,11 +1,11 @@ +import { keyBy, compact } from "lodash" + export const difference = (a, b) => { // eslint-disable-next-line no-undef - return new Set( - [ - ...[...a].filter(x => !b.has(x)), - ...[...b].filter(x => !a.has(x)) - ] - ) + return new Set([ + ...[...a].filter((x) => !b.has(x)), + ...[...b].filter((x) => !a.has(x)), + ]) } // round a given number n to p number of digits @@ -15,12 +15,12 @@ export const roundP = (n, p) => { // https://stackoverflow.com/a/4652513 export const reduce = (numerator, denominator) => { - let gcd = (a,b) => { - return b ? gcd(b, a%b) : a + let gcd = (a, b) => { + return b ? gcd(b, a % b) : a } gcd = gcd(numerator, denominator) - return [numerator/gcd, denominator/gcd] + return [numerator / gcd, denominator / gcd] } // rotates an array count times @@ -31,16 +31,59 @@ export const arrayRotate = (arr, count) => { return arr } -const debug = false // set to true to turn on console logging +// Helper function to take a string and make the user download a text file with that text as the +// content. I don't really understand this, but I took it from here, and it seems to work: +// https://stackoverflow.com/a/18197511 +export const downloadFile = ( + fileName, + text, + fileType = "text/plain;charset=utf-8", +) => { + let link = document.createElement("a") + link.download = fileName + + let blob = new Blob([text], { type: fileType }) + + // Windows Edge fix + if (window.navigator && window.navigator.msSaveOrOpenBlob) { + window.navigator.msSaveOrOpenBlob(blob, fileName) + } else { + link.href = URL.createObjectURL(blob) + if (document.createEvent) { + var event = document.createEvent("MouseEvents") + event.initEvent("click", true, true) + link.dispatchEvent(event) + } else { + link.click() + } + URL.revokeObjectURL(link.href) + } +} + +// returns an ordered list of objects based on a given key +export const orderByKey = (keys, objects, keyName = "id") => { + const objectMap = keyBy(objects, keyName) + return compact(keys.map((key) => objectMap[key])) +} -// set to an array to limit which keys are shown -// const keys = ['makeGetLayer'] -const keys = null +// given a delta values from a mouse wheel, returns the equivalent layer delta. +// when shift key is pressed, this is apparently "horizontal" scrolling by the browser; +// for us, it means we'll grow in increments of 1 +export const scaleByWheel = (size, deltaX, deltaY) => { + const signX = Math.sign(deltaX) + const signY = Math.sign(deltaY) -export const log = (key, message) => { - if (debug) { - if (!keys || keys.includes(key)) { - console.log([key, message].filter(v => v).join(': ')) + if (deltaX) { + return size + 1 * signX + } else { + const scale = 1 + (Math.log(Math.abs(deltaY)) / 30) * signY + let newSize = Math.max(roundP(size * scale, 0), 1) + + if (newSize === size) { + // if the log scaled value isn't big enough to move the scale + newSize = Math.max(signY + size, 1) } + + return newSize } } diff --git a/src/components/CheckboxOption.js b/src/components/CheckboxOption.js index 486debe1..409a5e54 100644 --- a/src/components/CheckboxOption.js +++ b/src/components/CheckboxOption.js @@ -1,43 +1,56 @@ -import React, { Component } from 'react' -import { - Col, - Row, - Form, -} from 'react-bootstrap' +import React from "react" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" import S from "react-switch" -const Switch = S.default ? S.default: S // Fix: https://github.com/vitejs/vite/issues/2139 +const Switch = S.default ? S.default : S // Fix: https://github.com/vitejs/vite/issues/2139 -class CheckboxOption extends Component { - render() { - const option = this.props.options[this.props.optionKey] - const model = this.props.model - const visible = option.isVisible === undefined ? true : option.isVisible(model) +const CheckboxOption = ({ + options, + optionKey, + data, + model, + onChange, + label = true, +}) => { + const option = options[optionKey] + const visible = + option.isVisible === undefined ? true : option.isVisible(model, data) - return ( - - - - {option.title} - - + const handleChange = (checked) => { + let attrs = {} + attrs[optionKey] = checked - - { - let attrs = {} - attrs[this.props.optionKey] = checked + if (option.onChange !== undefined) { + attrs = option.onChange(model, attrs, data) + } - if (option.onChange !== undefined) { - attrs = option.onChange(attrs, model) - } - - this.props.onChange(attrs) - }} /> - - - ) + onChange(attrs) } -} + return ( + + + {label && ( + + {option.title} + + )} + + + + + + + ) +} export default CheckboxOption diff --git a/src/components/CommentsBox.js b/src/components/CommentsBox.js deleted file mode 100644 index eb91f82b..00000000 --- a/src/components/CommentsBox.js +++ /dev/null @@ -1,20 +0,0 @@ -import React, { Component } from 'react' - -class CommentsBox extends Component { - - render() { - const option = this.props.options[this.props.optionKey] - const commentsRender = this.props.comments.map((comment, index) => { - return {comment}
- }) - - return
- {option.title}: -
- { commentsRender } -
-
- } -} - -export default CommentsBox diff --git a/src/components/DropdownOption.js b/src/components/DropdownOption.js index 1409a5c6..30f3b0e8 100644 --- a/src/components/DropdownOption.js +++ b/src/components/DropdownOption.js @@ -1,62 +1,76 @@ -import React, { Component } from 'react' -import { - Col, - Form, - Row -} from 'react-bootstrap' -import Select from 'react-select' - -class DropdownOption extends Component { - render() { - const option = this.props.options[this.props.optionKey] - const model = this.props.model - const currentChoice = model[this.props.optionKey] - - let choices = option.choices - if (typeof choices === 'function') { - choices = choices() - } +import React from "react" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import Select from "react-select" + +const DropdownOption = ({ + options, + optionKey, + data, + model, + onChange, + index, +}) => { + const option = options[optionKey] + const currentChoice = data[optionKey] - choices = Array.isArray(choices) ? - choices.map((choice) => { + let choices = option.choices + if (typeof choices === "function") { + choices = choices() + } + + choices = Array.isArray(choices) + ? choices.map((choice) => { return { value: choice, label: choice } - }) : - Object.keys(choices).map((key) => { - return { value: key, label: option.choices[key] } }) + : Object.keys(choices).map((key) => { + return { value: key, label: choices[key] } + }) + const currentLabel = ( + choices.find((choice) => choice.value == currentChoice) || choices[0] + ).label + const visible = + option.isVisible === undefined ? true : option.isVisible(model, data) - const currentLabel = Array.isArray(choices) ? - currentChoice : - choices[currentChoice] - - return ( - - - - {option.title} - - - - - ({ ...base, zIndex: 9999 }) }} + /> + + + ) } export default DropdownOption diff --git a/src/components/InputOption.js b/src/components/InputOption.js index a784d64b..32819bdb 100644 --- a/src/components/InputOption.js +++ b/src/components/InputOption.js @@ -1,68 +1,141 @@ -import React, { Component } from 'react' -import { - Col, - Form, - Row -} from 'react-bootstrap' -import debounce from 'lodash/debounce' +import React, { useState, useEffect, useRef } from "react" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import debounce from "lodash/debounce" +import useKeyPress from "@/common/hooks/useKeyPress" -class InputOption extends Component { - constructor(props) { - super(props) - this.delayedSet = debounce( (value, key, onChange) => { - let attrs = {} - attrs[key] = value - onChange(attrs) - }, 1500) +const InputOption = ({ + data, + options, + optionKey, + onChange, + model, + inputRef, + focusOnSelect = false, + label = true, +}) => { + inputRef ||= useRef() + const [value, setValue] = useState(data[optionKey]) + const shiftKeyPressed = useKeyPress("Shift", inputRef) + + useEffect(() => { + setValue(data[optionKey]) + }, [data, optionKey]) + + const option = options[optionKey] + const stepScale = shiftKeyPressed ? 0.1 : 1 + const step = option.step ? option.step : 1 + const { delayKey } = option + const optionType = option.type || "number" + const minimum = + typeof option.min === "function" ? option.min(data) : parseFloat(option.min) + const maximum = + typeof option.max === "function" ? option.max(data) : parseFloat(option.max) + const visible = + option.isVisible === undefined ? true : option.isVisible(model, data) + const enabled = + option.isEnabled === undefined ? true : option.isEnabled(model, data) + const title = + typeof option.title === "function" + ? option.title(model, data) + : option.title + const inputWidth = optionType === "number" ? "132px" : "auto" + + if (!visible) { + return null } - render() { - const option = this.props.options[this.props.optionKey] - const model = this.props.model - const optionType = option.type || 'number' - const minimum = (typeof option.min === 'function') ? option.min(model) : parseFloat(option.min) - const maximum = (typeof option.max === 'function') ? option.max(model) : parseFloat(option.max) - const visible = option.isVisible === undefined ? true : option.isVisible(model) + const delayedSet = debounce((value, key, onChange) => { + let attrs = {} + attrs[key] = value + onChange(attrs) + }, 1500) - return ( - - - - {option.title} - - + const handleChange = (event) => { + let newValue = event.target.value + + if (optionType === "number") { + newValue = newValue === "" ? "" : parseFloat(newValue) + } + + setValue(newValue) + + let attrs = {} + attrs[optionKey] = newValue - - { - let attrs = {} - let value = event.target.value + if (option.onChange !== undefined) { + attrs = option.onChange(model, attrs, data) + } + onChange(attrs) - if (optionType === 'number') { - value = value === '' ? '' : parseFloat(value) - } + if (delayKey) { + delayedSet(newValue, delayKey, onChange) + } + } + + const handleFocus = (event) => { + if (focusOnSelect) { + event.target.select() + } + } - attrs[this.props.optionKey] = value - if (option.onChange !== undefined) { - attrs = option.onChange(attrs, model) - } - this.props.onChange(attrs) - if (this.props.delayKey !== undefined) { - this.delayedSet(value, this.props.delayKey, this.props.onChange) - } - }} - /> + const renderedInput = ( + + ) + if (!option.inline) { + return ( + + + {label && ( + + {title} + + )} + + +
{renderedInput}
) + } else { + return ( +
+ {label && ( + + {title} + + )} + {renderedInput} +
+ ) } } - export default InputOption diff --git a/src/components/ModelOption.js b/src/components/ModelOption.js new file mode 100644 index 00000000..f0f74315 --- /dev/null +++ b/src/components/ModelOption.js @@ -0,0 +1,64 @@ +import React from "react" +import InputOption from "@/components/InputOption" +import DropdownOption from "@/components/DropdownOption" +import CheckboxOption from "@/components/CheckboxOption" +import ToggleButtonOption from "@/components/ToggleButtonOption" +import QuadrantButtonsOption from "@/components/QuadrantButtonsOption" + +const ModelOption = ({ + model, + data, + options, + optionKey, + onChange, + label = true, +}) => { + const props = { + model, + data, + options, + optionKey, + onChange, + label, + } + + switch (options[optionKey].type) { + case "dropdown": + return ( + + ) + case "checkbox": + return ( + + ) + case "togglebutton": + return ( + + ) + case "quadrantbuttons": + return ( + + ) + default: + return ( + + ) + } +} + +export default React.memo(ModelOption) diff --git a/src/components/QuadrantButtonsOption.js b/src/components/QuadrantButtonsOption.js new file mode 100644 index 00000000..9cf3b4ba --- /dev/null +++ b/src/components/QuadrantButtonsOption.js @@ -0,0 +1,84 @@ +import React from "react" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import ToggleButton from "react-bootstrap/ToggleButton" +import ToggleButtonGroup from "react-bootstrap/ToggleButtonGroup" + +const QuadrantButtonsOption = (props) => { + const option = props.options[props.optionKey] + const { data } = props + const value = data[props.optionKey] + + const handleChange = (choices) => { + let attrs = {} + attrs[props.optionKey] = choices[choices.length - 1] + props.onChange(attrs) + } + + return ( + + + {option.title} + + + +
+ + + upper left + + + upper right + + + lower left + + + lower right + + +
+ +
+ ) +} + +export default QuadrantButtonsOption diff --git a/src/components/ToggleButtonOption.js b/src/components/ToggleButtonOption.js index ec0db932..6f45cf1c 100644 --- a/src/components/ToggleButtonOption.js +++ b/src/components/ToggleButtonOption.js @@ -1,49 +1,61 @@ -import React, { Component } from 'react' -import { - Col, - Form, - Row, - ToggleButton, - ToggleButtonGroup -} from 'react-bootstrap' +import React from "react" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import ToggleButton from "react-bootstrap/ToggleButton" +import ToggleButtonGroup from "react-bootstrap/ToggleButtonGroup" -class ToggleButtonOption extends Component { - render() { - const option = this.props.options[this.props.optionKey] - const model = this.props.model - const currentChoice = model[this.props.optionKey] - const visible = option.isVisible === undefined ? true : option.isVisible(model) +const ToggleButtonOption = (props) => { + const option = props.options[props.optionKey] + const { data } = props + const model = props.model || data + const currentChoice = data[props.optionKey] + const visible = + option.isVisible === undefined ? true : option.isVisible(model, data) - return ( - - - - {option.title} - - + const handleChange = (choice) => { + let attrs = {} + attrs[props.optionKey] = choice - - { - let attrs = {} - attrs[this.props.optionKey] = choice - this.props.onChange(attrs) - }}> - {option.choices.map((choice) => { - return + + {option.title} + + + + + {option.choices.map((choice) => { + return ( + {choice} - })} - - - - ) - } + value={choice} + > + {choice} + + ) + })} + + +
+ ) } export default ToggleButtonOption diff --git a/src/features/app/About.js b/src/features/app/About.js new file mode 100644 index 00000000..c9581540 --- /dev/null +++ b/src/features/app/About.js @@ -0,0 +1,183 @@ +import React from "react" +import Container from "react-bootstrap/Container" +import Row from "react-bootstrap/Row" +import Col from "react-bootstrap/Col" +import HappyHolidays from "./happy-holidays.svg" +import PerlinRings from "./perlin-rings.svg" +import KochCubeFlowers from "./koch-cube-flowers.svg" +import { SANDIFY_VERSION } from "@/features/app/appSlice" +import "./About.scss" + +const About = () => { + return ( +
+ ) +} + +export default About diff --git a/src/features/app/About.scss b/src/features/app/About.scss new file mode 100644 index 00000000..e654003d --- /dev/null +++ b/src/features/app/About.scss @@ -0,0 +1,13 @@ +.tagline { + font-size: 1.3em; + font-weight: bold; +} + +.pattern-preview { + width: 300px; + padding: 20px; + + @media (max-width: 991px) { + width: 100%; + } +} diff --git a/src/features/app/App.js b/src/features/app/App.js index 07e65bbf..5b3c9efc 100644 --- a/src/features/app/App.js +++ b/src/features/app/App.js @@ -1,34 +1,66 @@ -import React, { Component } from 'react' -import { Col, Row } from 'react-bootstrap' -import { Provider } from 'react-redux' -import Header from './Header' -import InputTabs from './InputTabs' -import MachinePreview from '../preview/MachinePreview' -import store from './store' -import './App.scss' +import React, { useState } from "react" +import Tab from "react-bootstrap/Tab" +import { Provider } from "react-redux" +import { ToastContainer } from "react-toastify" +import { ErrorBoundary } from "react-error-boundary" +import PreviewManager from "@/features/preview/PreviewManager" +import Header from "./Header" +import About from "./About" +import Sidebar from "./Sidebar" +import store from "./store" +import ErrorFallback from "./ErrorFallback" +import "./App.scss" -class App extends Component { - render() { - return ( - -
-
+const App = () => { + const [eventKey, setEventKey] = useState("patterns") + return ( + + +
+ +
- - - - + + + +
+
+ +
+ +
+
- -
+ + + + +
-
- ) - } + + + ) } export default App diff --git a/src/features/app/App.scss b/src/features/app/App.scss index 1677343b..93036ba1 100644 --- a/src/features/app/App.scss +++ b/src/features/app/App.scss @@ -1,16 +1,31 @@ +@import 'bootstrap/dist/css/bootstrap.min.css'; +@import 'react-toastify/dist/ReactToastify.css'; +@import './bootstrap.scss'; + +.react-tooltip { + z-index: 9999; +} + .App { background-color: #eee; } @media (min-width: 992px) { .full-page { - height: calc(100vh - 90px); + height: calc(100vh - 64px); overflow: auto; - border-right: 1px solid #aaa; + + .tab-content { + height: 100%; + } + + .tab-pane { + height: 100%; + } } .full-page-tab { - height: calc(100vh - 140px); + height: calc(100vh - 114px); overflow: auto; } } @@ -28,82 +43,3 @@ width: 100%; } } - -@media (max-width: 991px) { - .no-gutters-md { - padding-left: 0; - padding-right: 0; - } -} - -h2.panel { - font-size: 1rem; - font-weight: bold; -} - -/** - Bootstrap 4 overrides - **/ -.card-header { - background-color: rgba(0,0,0,.05); -} - -.card { - h3 { - margin: 0; - font-size: 1.25rem; - } -} - -.accordion > .card > .card-header { - margin-bottom: 0; -} - -.card-body .form-label { - margin-bottom: 0; -} - -h2 { - font-size: 1.6rem; -} - -.bg-white { - background-color: white; -} - -.card h3 { - margin-top: 0.5rem; -} - -.tab-content { - background-color: white; -} - -.card.active > .card-header { - background-color: #A0D4EB; -} - -.list-group-item .active { - background-color: #2d6da4; -} - -.btn-group { - .btn-light:focus, .btn-light.focus { - background-color: #f8f9fa; - } - - .btn { - box-shadow: none !important; - } -} - -.btn-group>.btn.active, .btn-group>.btn:active, .btn-group>.btn:focus { - z-index: inherit; -} - -.no-select { - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+/Edge */ - user-select: none; /* Standard */ -} diff --git a/src/features/app/App.test.js b/src/features/app/App.test.js index d0b36a0c..96656af5 100644 --- a/src/features/app/App.test.js +++ b/src/features/app/App.test.js @@ -1,12 +1,13 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import App from './App' -import 'core-js' -import Konva from 'konva-node' +import React from "react" +import { createRoot } from "react-dom/client" +import App from "./App" +import "core-js" +import Konva from "konva" Konva.isBrowser = false -it('renders without crashing', () => { - const div = document.createElement('div') - ReactDOM.render(, div) +it("renders without crashing", () => { + const div = document.createElement("div") + const root = createRoot(div) + root.render() }) diff --git a/src/features/app/ErrorFallback.js b/src/features/app/ErrorFallback.js new file mode 100644 index 00000000..2c69ebf8 --- /dev/null +++ b/src/features/app/ErrorFallback.js @@ -0,0 +1,100 @@ +import React from "react" +import Container from "react-bootstrap/Container" +import Row from "react-bootstrap/Row" +import Col from "react-bootstrap/Col" +import Button from "react-bootstrap/Button" +import Alert from "react-bootstrap/Alert" +import { RiEmotionUnhappyLine } from "react-icons/ri" +import { useDispatch } from "react-redux" + +const ErrorFallback = ({ error }) => { + const dispatch = useDispatch() + + const handleResetPattern = () => { + dispatch({ type: "RESET_PATTERN" }) + window.location.reload() + } + + const handleResetAll = () => { + dispatch({ type: "RESET_ALL" }) + window.location.reload() + } + + return ( + + + + +

Sorry! Something went wrong.

+ +
{error.message}
+
+ + + + + + +

+ First try resetting your pattern. If you are getting this + error while trying to open a saved pattern, there is likely + something wrong with the file. +

+ + + + + +

+ As a last resort, you can reset all settings. If you think + you've found an issue with Sandify, please let us know on{" "} + GitHub + . +

+ +
+
+ +
+
+ ) +} + +export default ErrorFallback diff --git a/src/features/app/Footer.js b/src/features/app/Footer.js deleted file mode 100644 index d80c8c70..00000000 --- a/src/features/app/Footer.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { Component } from 'react' - -class Footer extends Component { - render () { - return ( -
-
-

About

-

Sandify turns your cold, empty-hearted, emotionless sand tables into cold, empty-hearted, emotionless sand table robots with enchanting patterns.

-

- Sandify is a labor of love, but if you'd like to support me financially, - I do have a Donation system set up with github. Or just PayPal. -

-
- -
-

Instructions

-

- Part of the fun of Sandify is playing it like you would a xylophone. -
- Try it out first. The goal is to make it easy to make your first pattern by just clicking and scrolling, finding something you like. -
- Check out the wiki for some features that you might miss the first time through. -

-
- -
-

Sand Machine

-

Anything that uses gcode can be used with Sandify. But the machine this was designed for is the ZenXY from V1Engineering.com.

-

- ZenXY on V1Engineering.com -

-

- ZenXY was inspired by the awesome Sisyphus kinetic art table by Sisyphus Industries, which is also now supported. -

-

- Sandify was created by users in the - V1Engineering.com forum. -

-
- -
-

Github

-

Sandify is hosted on Github here. Please post any problems, feature requests or comments in our issue tracker.

-

Sandify is a community project. We want and need collaborators. Help Sandify.

-
- -
-

License

-

- Sandify is licensed under the MIT license. -

-

- Patterns that you create and gcode generated with Sandify are not covered - under the Sandify license. They are your work and your copyright. Read our license. -

-
-
- ) - } -} - -export default Footer diff --git a/src/features/app/Header.js b/src/features/app/Header.js index 01ca26f8..70a5e3d3 100644 --- a/src/features/app/Header.js +++ b/src/features/app/Header.js @@ -1,19 +1,95 @@ -import React, { Component } from 'react' -import logo from './logo.svg' -import './Header.scss' +import React, { useState } from "react" +import { useDispatch } from "react-redux" +import Nav from "react-bootstrap/Nav" +import Navbar from "react-bootstrap/Navbar" +import NavDropdown from "react-bootstrap/NavDropdown" +import ExportDownloader from "@/features/export/ExportDownloader" +import ImportUploader from "@/features/import/ImportUploader" +import SandifyDownloader from "@/features/file/SandifyDownloader" +import SandifyUploader from "@/features/file/SandifyUploader" +import logo from "./logo.svg" +import "./Header.scss" -class Header extends Component { - render() { - return ( -
-
- logo -

sandify

-

create patterns for robots that draw in sand with ball bearings

-
-
- ) +const Header = ({ eventKey, setEventKey }) => { + const [showExport, setShowExport] = useState(false) + const [showImport, setShowImport] = useState(0) + const [showSave, setShowSave] = useState(false) + const [showOpen, setShowOpen] = useState(0) + const toggleExport = () => setShowExport(!showExport) + const toggleImport = () => setShowImport(showImport + 1) + const toggleSave = () => setShowSave(!showSave) + const toggleOpen = () => setShowOpen(showOpen + 1) + const dispatch = useDispatch() + + const handleNew = () => { + dispatch({ type: "RESET_PATTERN" }) } + + return ( + + +
+ logo +

sandify

+
+
+ + + + + + + + +
+ ) } export default Header diff --git a/src/features/app/Header.scss b/src/features/app/Header.scss index 5c6e1ac1..e99c5e15 100644 --- a/src/features/app/Header.scss +++ b/src/features/app/Header.scss @@ -1,20 +1,31 @@ -header { - background-color: #2d6da4; - padding: 1rem; +.header { + background-color: #2983BA !important; color: white; - text-align: center; - h2 { - font-size: 3rem; + .navbar-nav > a { + color: #e1e1e1; } - p { - font-size: 1.4rem; - margin: 0.4rem 0 0 0; + .nav-item.dropdown > a { + color: white; + } + + .navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: white; + font-weight: bold; + } + + #file-dropdown { + font-weight: normal !important; + } + + h1 { + font-size: 2rem; + color: white; } } .app-logo { animation: App-logo-spin infinite 20s linear; - height: 3.6rem; + height: 2.2rem; } diff --git a/src/features/app/InputTabs.js b/src/features/app/InputTabs.js deleted file mode 100644 index 18dc5722..00000000 --- a/src/features/app/InputTabs.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { Component } from 'react' -import ReactGA from 'react-ga' -import { Tab, Tabs } from 'react-bootstrap' -import { connect } from 'react-redux' -import MachineSettings from '../machine/MachineSettings' -import Footer from './Footer' -import Layer from '../layers/Layer' -import Playlist from '../layers/Playlist' -import { chooseInput } from '../app/appSlice' -import { getCurrentLayer } from '../layers/selectors' -import { loadFont, supportedFonts } from '../fonts/fontsSlice' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - - return { - layer: layer - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - return { - onLoadFont: (url) => { - dispatch(loadFont(url)) - }, - onTabSelected: (key) => { - ReactGA.event({ - category: 'InputTabs', - action: 'handleSelect: ' + key, - }) - dispatch(chooseInput(key)) - } - } -} - -class InputTabs extends Component { - render() { - return ( - - -
- - -
-
- - - - - - -
- - - ) - } - - componentDidMount() { - Object.keys(supportedFonts).forEach(url => this.props.onLoadFont(url)) - } -} - -export default connect(mapStateToProps, mapDispatchToProps)(InputTabs) diff --git a/src/features/app/Notice.js b/src/features/app/Notice.js index 4a917aea..1275e17f 100644 --- a/src/features/app/Notice.js +++ b/src/features/app/Notice.js @@ -1,16 +1,17 @@ -import React, { Component } from 'react' -import './Notice.scss' +import React from "react" +import "./Notice.scss" -class Notice extends Component { - render() { - return ( - - ) - } +const Notice = () => { + return ( + + ) } export default Notice diff --git a/src/features/app/Sidebar.js b/src/features/app/Sidebar.js new file mode 100644 index 00000000..f1b45652 --- /dev/null +++ b/src/features/app/Sidebar.js @@ -0,0 +1,52 @@ +import React, { useEffect } from "react" +import Tab from "react-bootstrap/Tab" +import Tabs from "react-bootstrap/Tabs" +import { useDispatch, useSelector } from "react-redux" +import MachineManager from "@/features/machines/MachineManager" +import LayerManager from "@/features/layers/LayerManager" +import PreviewStats from "@/features/preview/PreviewStats" +import { selectSelectedLayer } from "@/features/layers/layersSlice" +import { loadFont, supportedFonts } from "@/features/fonts/fontsSlice" + +const Sidebar = () => { + const dispatch = useDispatch() + const layer = useSelector(selectSelectedLayer) + + useEffect(() => { + Object.keys(supportedFonts).forEach((url) => dispatch(loadFont(url))) + }, [dispatch]) + + if (layer) { + return ( + + + + + + + + + + + + + + ) + } else { + return
+ } +} + +export default React.memo(Sidebar) diff --git a/src/features/app/appSlice.js b/src/features/app/appSlice.js index 727dd1a4..2fd6ae02 100644 --- a/src/features/app/appSlice.js +++ b/src/features/app/appSlice.js @@ -1,20 +1,3 @@ -import { createSlice } from '@reduxjs/toolkit' - -const appSlice = createSlice({ - name: 'app', - initialState: { - sandifyVersion: '0.2.8', // Also change the version in package.json. - input: 'shape', - }, - reducers: { - chooseInput(state, action) { - state.input = action.payload - }, - } -}) - -export const { - chooseInput -} = appSlice.actions - -export default appSlice.reducer +export const SANDIFY_VERSION = "1.0.0" // Also change the version in package.json. +export const selectState = (state) => state +export const selectAppState = (state) => state.app diff --git a/src/features/app/appSlice.spec.js b/src/features/app/appSlice.spec.js deleted file mode 100644 index 1bf0a15c..00000000 --- a/src/features/app/appSlice.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import app, { chooseInput } from './appSlice' - -describe('app reducer', () => { - it('should handle initial state', () => { - expect(app(undefined, {})).toEqual({ - sandifyVersion: "0.2.8", // Also change the version in package.json. - input: 'shape', - }) - }) - - it('should handle chooseInput', () => { - expect( - app( - {input: 'shape'}, - chooseInput('code') - ) - ).toEqual({ - input: 'code' - }) - }) -}) diff --git a/src/features/app/bootstrap.scss b/src/features/app/bootstrap.scss new file mode 100644 index 00000000..c68d7d62 --- /dev/null +++ b/src/features/app/bootstrap.scss @@ -0,0 +1,93 @@ +/** + Bootstrap 5 overrides + **/ +h2 { + font-size: 1.6rem; +} + +h3 { + font-size: 1.2rem; +} + +.navbar { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,") !important; +} + +.navbar-toggler { + border-color: lightgray; +} + +.accordion-header { + h3 { + margin: 0; + font-size: 1.25rem; + } +} + +.accordion-button { + background-color: #eee !important; +} + +.tab-content { + background-color: white; +} + +.list-group-item.active { + z-index: auto; + background-color: lighten(#2983BA, 5%); +} + +.list-group-item.selected { + background-color: #d2d2d2; +} + +.btn-group { + .btn-light:focus, .btn-light.focus { + background-color: #f8f9fa; + } + + .btn { + box-shadow: none !important; + } +} + +.btn-light { + background-color: white; + border-color: transparent !important; + box-shadow: none !important; + + &:focus-visible { + box-shadow: 0 0 0 0.2rem rgb(216 217 219 / 50%) !important; + border-color: #dae0e5 !important; + } +} + +.btn-secondary { + background-color: #e9ecef; + color: #495057 !important; + border: none; + + &:hover { + background-color: darken(#e9ecef, 5%); + } + + &.focus, &:focus { + background-color: darken(#e9ecef, 5%); + } + + &:not(:disabled):not(.disabled).active, + &:not(:disabled):not(.disabled):active { + background-color: darken(#e9ecef, 5%); + } +} + +.border-secondary { + border-color: #adb5bd !important; +} + +.no-select { + -webkit-user-select: none; /* Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+/Edge */ + user-select: none; /* Standard */ +} diff --git a/src/features/app/happy-holidays.svg b/src/features/app/happy-holidays.svg new file mode 100644 index 00000000..ebae492d --- /dev/null +++ b/src/features/app/happy-holidays.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + pwidth:500;pheight:500; + + + + diff --git a/src/features/app/koch-cube-flowers.svg b/src/features/app/koch-cube-flowers.svg new file mode 100644 index 00000000..c5d6a048 --- /dev/null +++ b/src/features/app/koch-cube-flowers.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + pwidth:500;pheight:500; + + + + diff --git a/src/features/app/perlin-rings.svg b/src/features/app/perlin-rings.svg new file mode 100644 index 00000000..a3efc874 --- /dev/null +++ b/src/features/app/perlin-rings.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pwidth:500;pheight:500; + + + + diff --git a/src/features/app/reactGA.js b/src/features/app/reactGA.js index ff38990a..983b08e9 100644 --- a/src/features/app/reactGA.js +++ b/src/features/app/reactGA.js @@ -1,6 +1,6 @@ -import ReactGA from 'react-ga' +import ReactGA from "react-ga" -ReactGA.initialize('UA-126702426-1', { - debug: false // Set to true to see debug info in the console +ReactGA.initialize("UA-126702426-1", { + debug: false, // Set to true to see debug info in the console }) ReactGA.pageview(window.location.pathname + window.location.search) diff --git a/src/features/app/rootSlice.js b/src/features/app/rootSlice.js new file mode 100644 index 00000000..32a63636 --- /dev/null +++ b/src/features/app/rootSlice.js @@ -0,0 +1,66 @@ +import { combineReducers } from "redux" +import machinesReducer from "@/features/machines/machinesSlice" +import exporterReducer from "@/features/export/exporterSlice" +import previewReducer from "@/features/preview/previewSlice" +import fontsReducer from "@/features/fonts/fontsSlice" +import layersReducer from "@/features/layers/layersSlice" +import effectsReducer from "@/features/effects/effectsSlice" +import fileReducer from "@/features/file/fileSlice" +import { saveState } from "@/common/localStorage" + +const combinedReducer = combineReducers({ + effects: effectsReducer, + exporter: exporterReducer, + file: fileReducer, + fonts: fontsReducer, + layers: layersReducer, + machines: machinesReducer, + preview: previewReducer, +}) + +const resetPattern = (state, action) => { + const newState = JSON.parse(JSON.stringify(state)) // deep copy + + newState.layers = undefined + newState.effects = undefined + newState.preview.zoom = 1.0 + newState.preview.sliderValue = 0.0 + + return combinedReducer(newState, action) +} + +const resetAll = (state, action) => { + saveState({}) // explicitly clear state in local storage + return combinedReducer(undefined, action) +} + +const loadPattern = (state, action) => { + const { effects, layers } = action.payload + const newState = JSON.parse(JSON.stringify(state)) // deep copy + + newState.layers = layers + newState.effects = effects + + const id = newState.layers.ids[0] + newState.layers.current = id + newState.layers.selected = id + newState.effects.selected = newState.layers.entities[id].effectIds[0] + newState.preview.sliderValue = 0.0 + newState.preview.zoom = 1.0 + + return combinedReducer(newState, action) +} + +const rootReducer = (state, action) => { + if (action.type === "RESET_ALL") { + return resetAll(state, action) + } else if (action.type === "RESET_PATTERN") { + return resetPattern(state, action) + } else if (action.type === "LOAD_PATTERN") { + return loadPattern(state, action) + } + + return combinedReducer(state, action) +} + +export default rootReducer diff --git a/src/features/app/store.js b/src/features/app/store.js index baf1bb61..567c5009 100644 --- a/src/features/app/store.js +++ b/src/features/app/store.js @@ -1,92 +1,54 @@ import { configureStore } from "@reduxjs/toolkit" -import { combineReducers } from 'redux' -import appReducer from './appSlice' -import machineReducer from '../machine/machineSlice' -import exporterReducer from '../exporter/exporterSlice' -import previewReducer from '../preview/previewSlice' -import fontsReducer from '../fonts/fontsSlice' -import { registeredShapes } from '../../models/shapes' -import { loadState, saveState } from '../../common/localStorage' -import layersReducer, { setCurrentLayer, addLayer } from '../layers/layersSlice' - -//const customizedMiddleware = getDefaultMiddleware({ -// immutableCheck: { -// ignoredPaths: ['importer.vertices'] -// }, -// serializableCheck: { -// ignoredPaths: ['importer.vertices'] -// } -//}) - -const store = configureStore({ - reducer: combineReducers({ - main: combineReducers({ - app: appReducer, - layers: layersReducer, - exporter: exporterReducer, - machine: machineReducer, - preview: previewReducer - }), - fonts: fontsReducer - }) -}) - -const loadPersistedLayers = (layers) => { - layers.allIds.forEach((id) => { - let layer = layers.byId[id] - - if (layer.startingWidth === undefined) layer.startingWidth = layer.startingSize - if (layer.startingHeight === undefined) layer.startingHeight = layer.startingWidth - if (layer.autosize === undefined) layer.autosize = true - - store.dispatch(addLayer(layer)) - }) -} - -const loadDefaultLayer = () => { - const storedShape = localStorage.getItem('currentShape') - const currentShape = storedShape && registeredShapes[storedShape] ? storedShape : 'polygon' - const layer = registeredShapes[currentShape].getInitialState() - - store.dispatch(addLayer(layer)) - - const state = store.getState() - store.dispatch(setCurrentLayer(state.main.layers.byId[state.main.layers.allIds[0]].id)) -} - -// set to true when running locally if you want to preserve your shape -// settings across page loads; don't forget to toggle false when done testing! -const persistState = false - -// if you want to save a multiple temporary states, use these keys. The first time -// you save a new state, change persistSaveKey. Make a change, then change -// persistInitKey to the same value. It's like doing a "save as" -const persistInitKey = 'state' -const persistSaveKey = 'state' - -if (typeof jest === 'undefined' && persistState) { - // override default values with saved ones - const persistedState = loadState(persistInitKey) - +import { loadState, saveState } from "@/common/localStorage" +import { resetLogCounts } from "@/common/debugging" +import SandifyImporter from "@/features/file/SandifyImporter" +import rootReducer from "./rootSlice" + +// by default, state is always persisted in local storage +const usePersistedState = true +const persistState = true + +let persistedState = + typeof jest === "undefined" && usePersistedState + ? loadState() || undefined + : undefined + +// support a URL-based reset as a last resort +const params = new URLSearchParams(window.location.search) +const reset = params.get("reset") + +// reset some values +if (reset === "all") { + persistedState = undefined +} else { if (persistedState) { - if (persistedState.main && persistedState.main.layers) { - loadPersistedLayers(persistedState.main.layers) - store.dispatch(setCurrentLayer(persistedState.main.layers.current)) - } else if (persistedState.layers) { - loadPersistedLayers(persistedState.layers) // older store format - store.dispatch(setCurrentLayer(persistedState.layers.current)) + const importer = new SandifyImporter() + try { + // double JSON parsing ensures it's valid JSON before we try to import it + persistedState = importer.import(JSON.stringify(persistedState)) + persistedState.fonts.loaded = false + } catch (err) { + persistedState = undefined } - } else { - loadDefaultLayer() } -} else { - loadDefaultLayer() } +const store = configureStore({ + reducer: rootReducer, + preloadedState: persistedState, +}) + if (persistState) { store.subscribe(() => { const state = store.getState() - saveState({ main: { layers: state.main.layers } }, persistSaveKey) + if (state.fonts.loaded) { + saveState(state) + resetLogCounts() + + if (reset) { + window.location.href = window.location.pathname + } + } }) } diff --git a/src/features/effects/CopyEffect.js b/src/features/effects/CopyEffect.js new file mode 100644 index 00000000..177a2967 --- /dev/null +++ b/src/features/effects/CopyEffect.js @@ -0,0 +1,95 @@ +import React, { useRef, useState, useEffect } from "react" +import Button from "react-bootstrap/Button" +import Modal from "react-bootstrap/Modal" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import { useDispatch, useSelector } from "react-redux" +import { selectSelectedEffect } from "./effectsSlice" +import { addEffect } from "@/features/layers/layersSlice" + +const CopyEffect = ({ toggleModal, showModal }) => { + const dispatch = useDispatch() + const selectedEffect = useSelector(selectSelectedEffect) + const namedInputRef = useRef(null) + const [copyEffectName, setCopyEffectName] = useState( + selectedEffect?.name || "", + ) + + useEffect(() => { + setCopyEffectName(selectedEffect?.name || "") + }, [selectedEffect]) + + const handleChangeCopyEffectName = (event) => { + setCopyEffectName(event.target.value) + } + + const handleNameFocus = (event) => { + event.target.select() + } + + const handleCopyEffect = (event) => { + event.preventDefault() + dispatch( + addEffect({ + id: selectedEffect.layerId, + effect: { + ...selectedEffect, + name: copyEffectName, + }, + }), + ) + toggleModal() + } + + const handleInitialFocus = () => { + namedInputRef.current.focus() + } + + return ( + + + Copy {selectedEffect?.name || ""} + + + + + + Name + + + + + + + + + + + + + ) +} + +export default CopyEffect diff --git a/src/features/effects/Effect.js b/src/features/effects/Effect.js new file mode 100644 index 00000000..21b1ad2e --- /dev/null +++ b/src/features/effects/Effect.js @@ -0,0 +1,41 @@ +import Model from "@/common/Model" + +const effectOptions = [] + +export default class Effect extends Model { + constructor(type, state) { + super(type, state) + this.dragPreview = false + } + + // override as needed + canChangeSize(state) { + return false + } + + // override as needed + canRotate(state) { + return false + } + + // override as needed + canMove(state) { + return false + } + + // override as needed; returns an array of Victor vertices that are used to + // render a Konva transformer when the effect is selected + getSelectionVertices(effect) { + return [] + } + + // override as needed; returns an array of Victor vertices that are the result + // of applying the effect to the layer + getVertices(effect, layer, vertices) { + return [] + } + + getOptions() { + return effectOptions + } +} diff --git a/src/features/effects/EffectEditor.js b/src/features/effects/EffectEditor.js new file mode 100644 index 00000000..444d5389 --- /dev/null +++ b/src/features/effects/EffectEditor.js @@ -0,0 +1,156 @@ +import React from "react" +import { useDispatch, useSelector } from "react-redux" +import { IconContext } from "react-icons" +import { + AiOutlineRotateRight, + AiTwotoneLock, + AiTwotoneUnlock, +} from "react-icons/ai" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Button from "react-bootstrap/Button" +import { Tooltip } from "react-tooltip" +import ModelOption from "@/components/ModelOption" +import { updateEffect } from "./effectsSlice" +import EffectLayer from "./EffectLayer" +import { selectSelectedEffect } from "./effectsSlice" + +const EffectEditor = ({ id }) => { + const dispatch = useDispatch() + const effect = useSelector(selectSelectedEffect) + const type = effect?.type || "mask" // guard zombie child + const instance = new EffectLayer(type) + const model = new EffectLayer(type).model + const layerOptions = instance.getOptions() + const modelOptions = model.getOptions() + + const handleChange = (attrs) => { + attrs.id = effect.id + dispatch(updateEffect(attrs)) + } + + const handleChangeMaintainAspectRatio = (value) => { + dispatch( + updateEffect({ + id: effect.id, + maintainAspectRatio: !effect.maintainAspectRatio, + }), + ) + } + + // this should really be a component, but I could not figure out how to get it + // to not re-render as the value changed; the fallout is that the editor re-renders + // more than it should, but it's not noticeable + const renderOption = ({ + optionKey, + options = layerOptions, + label = true, + }) => { + return ( + + ) + } + + const renderedModelOptions = Object.keys(modelOptions).map((optionKey) => + renderOption({ options: modelOptions, optionKey }), + ) + + return ( +
+ {renderOption({ optionKey: "name" })} + {renderedModelOptions} + {model.canTransform(effect) && ( + + Transform + +
+
+ + {model.canMove(effect) && ( + {renderOption({ optionKey: "x" })} + )} + {model.canChangeSize(effect) && ( + {renderOption({ optionKey: "width" })} + )} + + + {model.canMove(effect) && ( + {renderOption({ optionKey: "y" })} + )} + {model.canChangeSize(effect) && ( + {renderOption({ optionKey: "height" })} + )} + +
+ {model.canChangeAspectRatio(effect) && ( +
+ + +
+ )} +
+ {model.canRotate(effect) && ( +
+ + +
+
+ + + +
+ {renderOption({ + optionKey: "rotation", + label: false, + })} +
+ +
+ {/* hack to get spacing to work */} + {model.canChangeAspectRatio(effect) && ( +
+ +
+ )} +
+ )} + +
+ )} +
+ ) +} + +export default React.memo(EffectEditor) diff --git a/src/features/effects/EffectLayer.js b/src/features/effects/EffectLayer.js new file mode 100644 index 00000000..b94e5df4 --- /dev/null +++ b/src/features/effects/EffectLayer.js @@ -0,0 +1,111 @@ +import { getEffect } from "@/features/effects/effectFactory" + +export const effectOptions = { + name: { + title: "Name", + type: "text", + }, + x: { + title: "X", + inline: true, + isVisible: (model, state) => { + return model.canMove(state) + }, + }, + y: { + title: "Y", + inline: true, + isVisible: (model, state) => { + return model.canMove(state) + }, + }, + width: { + title: "W", + min: 1, + inline: true, + isVisible: (model, state) => { + return model.canChangeSize(state) + }, + onChange: (model, changes, state) => { + if (state.maintainAspectRatio) { + changes.height = changes.width + } else { + changes.aspectRatio = changes.width / state.height + } + return changes + }, + }, + height: { + title: "H", + min: 1, + inline: true, + onChange: (model, changes, state) => { + if (state.maintainAspectRatio) { + changes.width = changes.height + } else { + changes.aspectRatio = state.width / changes.height + } + return changes + }, + }, + maintainAspectRatio: { + title: "Lock aspect ratio", + type: "checkbox", + }, + rotation: { + title: "Rotate (degrees)", + inline: true, + isVisible: (model, state) => { + return model.canRotate(state) + }, + }, +} + +export default class EffectLayer { + constructor(type) { + this.model = getEffect(type) + } + + getInitialState(layer, layerVertices) { + const state = { + ...this.model.getInitialState(layer, layerVertices), + ...{ + type: this.model.type, + visible: true, + name: this.model.label, + }, + } + + if (this.model.canChangeSize(state)) { + state.aspectRatio = 1.0 + } + + if (this.model.canMove(state) && state.x === undefined) { + state.x = 0 + state.y = 0 + } + + if (this.model.canRotate(state) && state.rotation === undefined) { + state.rotation = 0 + } + + return state + } + + getOptions() { + return effectOptions + } + + getVertices(effect, layer, vertices) { + return this.model.getVertices(effect, layer, vertices) + } + + getSelectionVertices(effect) { + return this.model.getSelectionVertices(effect) + } + + // used to preserve hidden attributes when loading from a file + getHiddenAttrs() { + return ["layerId"] + } +} diff --git a/src/features/effects/EffectList.js b/src/features/effects/EffectList.js new file mode 100644 index 00000000..647c851c --- /dev/null +++ b/src/features/effects/EffectList.js @@ -0,0 +1,157 @@ +import React from "react" +import { useDispatch, useSelector } from "react-redux" +import Button from "react-bootstrap/Button" +import ListGroup from "react-bootstrap/ListGroup" +import { Tooltip } from "react-tooltip" +import { FaEye, FaEyeSlash } from "react-icons/fa" +import { DndContext, useSensor, useSensors, PointerSensor } from "@dnd-kit/core" +import { restrictToVerticalAxis } from "@dnd-kit/modifiers" +import { + SortableContext, + useSortable, + verticalListSortingStrategy, +} from "@dnd-kit/sortable" +import { moveEffect, setCurrentEffect } from "@/features/layers/layersSlice" +import { + updateEffect, + selectCurrentEffectId, + selectSelectedEffectId, +} from "./effectsSlice" +import { getEffect } from "@/features/effects/effectFactory" + +const EffectRow = ({ + current, + selected, + effect, + handleEffectSelected, + handleToggleEffectVisible, +}) => { + const { name, id, visible } = effect + const instance = getEffect(effect.type) + const { attributes, listeners, setNodeRef, transform, isDragging } = + useSortable({ + id, + }) + const style = { + transform: `translate3d(${transform?.x || 0}px, ${transform?.y || 0}px, 0)`, + cursor: isDragging ? "grabbing" : "grab", + } + const itemClass = current ? "active" : selected ? "selected" : "" + + return ( + + +
+
+ +
+ +
+
{name}
+ + {instance.label} + +
+
+
+ ) +} + +const EffectList = ({ effects, selectedLayer }) => { + const dispatch = useDispatch() + const currentEffectId = useSelector(selectCurrentEffectId) + const selectedEffectId = useSelector(selectSelectedEffectId) + + // row has to be dragged 3 pixels before dragging starts; this allows the buttons + // on the row to work properly. + const sensors = useSensors( + useSensor(PointerSensor, { + activationConstraint: { + distance: 3, + }, + }), + ) + + const handleDragStart = ({ active }) => dispatch(setCurrentEffect(active.id)) + + const handleDragEnd = ({ active, over }) => { + if (!over) { + return + } + if (active.id !== over.id) { + const oldIndex = effects.findIndex((effect) => effect.id === active.id) + const newIndex = effects.findIndex((effect) => effect.id === over.id) + dispatch(moveEffect({ id: selectedLayer.id, oldIndex, newIndex })) + } + } + + const handleToggleEffectVisible = (id, visible) => { + dispatch(setCurrentEffect(id)) + dispatch(updateEffect({ id, visible: !visible })) + } + + const handleEffectSelected = (event) => { + const id = event.target.closest(".list-group-item").id + dispatch(setCurrentEffect(id)) + } + + return ( + + effect.id)} + strategy={verticalListSortingStrategy} + > +
+ + {effects.map((effect, index) => ( + + ))} + +
+
+
+ ) +} + +export default EffectList diff --git a/src/features/effects/EffectManager.js b/src/features/effects/EffectManager.js new file mode 100644 index 00000000..31cc8087 --- /dev/null +++ b/src/features/effects/EffectManager.js @@ -0,0 +1,132 @@ +import React, { useState } from "react" +import Button from "react-bootstrap/Button" +import Accordion from "react-bootstrap/Accordion" +import { Tooltip } from "react-tooltip" +import { useSelector, useDispatch } from "react-redux" +import { FaTrash, FaCopy, FaPlusSquare } from "react-icons/fa" +import { MdOutlineSettingsBackupRestore } from "react-icons/md" +import { + selectSelectedLayer, + deleteEffect, + selectLayerEffects, +} from "@/features/layers/layersSlice" +import { selectSelectedEffect, restoreDefaults } from "./effectsSlice" +import EffectEditor from "./EffectEditor" +import EffectList from "./EffectList" +import NewEffect from "./NewEffect" +import CopyEffect from "./CopyEffect" + +const EffectManager = () => { + const dispatch = useDispatch() + const selectedLayer = useSelector(selectSelectedLayer) + const selectedEffect = useSelector(selectSelectedEffect) + const effects = useSelector((state) => + selectLayerEffects(state, selectedLayer.id), + ) + const numEffects = effects.length + const [showNewEffect, setShowNewEffect] = useState(false) + const [showCopyEffect, setShowCopyEffect] = useState(false) + + const toggleNewEffectModal = () => setShowNewEffect(!showNewEffect) + const toggleCopyModal = () => setShowCopyEffect(!showCopyEffect) + + const handleEffectDeleted = (id) => { + dispatch( + deleteEffect({ + id: selectedLayer.id, + effectId: selectedEffect.id, + }), + ) + } + + const handleRestoreDefaults = () => { + dispatch(restoreDefaults(selectedEffect.id)) + } + + return ( +
+ + + {numEffects == 0 && ( + + )} + {numEffects > 0 && ( + + + Effects + + +
+ + +
+ + + + + + +
+
+ +
+
+
+ )} +
+ ) +} + +export default React.memo(EffectManager) diff --git a/src/features/effects/FineTuning.js b/src/features/effects/FineTuning.js new file mode 100644 index 00000000..4c3d8ac7 --- /dev/null +++ b/src/features/effects/FineTuning.js @@ -0,0 +1,204 @@ +import Victor from "victor" +import convexHull from "convexhull-js" +import { arrayRotate } from "@/common/util" +import { + cloneVertex, + cloneVertices, + isLoop, + totalDistance, + distance, + boundingVerticesAtLength, +} from "@/common/geometry" +import { closest } from "@/common/proximity" +import Effect from "./Effect" + +const options = { + reverse: { + title: "1: Reverse path", + type: "checkbox", + isVisible: (model, state) => { + return !model.effect + }, + }, + rotateStartingPct: { + title: "2: Move start point (%)", + min: 0, + max: 100, + step: 2, + }, + drawPortionPct: { + title: "3: Draw path (%)", + min: 0, + max: 100, + step: 2, + }, + drawBorder: { + title: "4: Add perimeter border", + type: "checkbox", + }, + backtrackPct: { + title: "5: Backtrack at end (%)", + min: 0, + max: 100, + step: 2, + }, +} + +export default class FineTuning extends Effect { + constructor() { + super("fineTuning") + this.label = "Fine tuning" + this.selectGroup = "effects" + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false + } + + canMove(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + drawPortionPct: 100, + backtrackPct: 0, + rotateStartingPct: 0, + reverse: false, + drawBorder: false, + }, + } + } + + getVertices(effect, layer, vertices) { + if (vertices.length > 1) { + if (effect.reverse) { + vertices = vertices.reverse() + } + + if ( + effect.rotateStartingPct === undefined || + effect.rotateStartingPct !== 0 + ) { + vertices = this.moveStartingPoint(vertices, effect) + } + + if (effect.drawPortionPct !== undefined) { + vertices = this.drawPortion(vertices, effect) + } + + if (effect.drawBorder) { + vertices = this.drawBorder(vertices, effect) + } + + if (effect.backtrackPct !== 0) { + vertices = this.backtrack(vertices, effect) + } + } + + return vertices + } + + // moves the starting point of the shape based on a percentage of the overall length; + // adds a new vertex along the path to match the given percentage. + moveStartingPoint(vertices, effect) { + let rotation = effect.rotateStartingPct + if (rotation < 0) { + rotation = 100 + rotation + } + + const { vNew, index2 } = this.getBoundingSegment(vertices, rotation) + + if (isLoop(vertices)) { + // can do this efficiently by rotating where we start along the same vertices + vertices.splice(index2, 0, vNew) + vertices = arrayRotate(vertices, index2) + + // close the loop + vertices.push(cloneVertex(vertices[0])) + } else { + // can't rotate, so instead we'll reverse trace to get to our original starting + // point and then draw the shape normally from there. + const newVertices = vertices.splice(0, index2) + const reversedNewVertices = cloneVertices(newVertices).reverse() + vertices = [...reversedNewVertices, ...newVertices, ...vertices] + } + + return vertices + } + + // draws a percentage-based portion of the shape; adds a new vertex along the path + // to match the given percentage. + drawPortion(vertices, effect) { + const { vNew, index2 } = this.getBoundingSegment( + vertices, + effect.drawPortionPct, + ) + + vertices.splice(index2) + vertices.push(vNew) + + return vertices + } + + // backtracks a percentage-based distance along the the shape's path; adds a new vertex + // along the path to match the given percentage. + backtrack(vertices, effect) { + const reversedVertices = [...vertices].reverse() + const { vNew, index2 } = this.getBoundingSegment( + reversedVertices, + effect.backtrackPct, + ) + const backtrackVertices = cloneVertices(reversedVertices.slice(0, index2)) + backtrackVertices.push(vNew) + + return vertices.concat(backtrackVertices) + } + + drawBorder(vertices, effect) { + let hull = convexHull(cloneVertices(vertices)) + const last = vertices[vertices.length - 1] + const closestVertex = closest(hull, last) + const index = hull.indexOf(closestVertex) + hull = arrayRotate(hull, index) + + hull.forEach((vertex) => { + vertices.push(vertex) + }) + vertices.push(cloneVertex(hull[0])) + + return vertices + } + + // given an array of vertices and a percentage, returns a new vertex (vNew) positioned at + // the percentage-based distance along the path, along with the two vertices (v1, v2) that bound + // it on either side. + getBoundingSegment(vertices, pct) { + const d = Math.round((totalDistance(vertices) * pct) / 100.0) + const [v1, v2] = boundingVerticesAtLength(vertices, d) + const segmentLength = distance(v1, v2) + const d2 = d - totalDistance(vertices.slice(0, vertices.indexOf(v1) + 1)) + const vNew = new Victor( + v1.x + (d2 * (v2.x - v1.x)) / segmentLength, + v1.y + (d2 * (v2.y - v1.y)) / segmentLength, + ) + const index2 = vertices.indexOf(v2) + + return { + v1, + v2, + vNew, + index2, + } + } + + getOptions() { + return options + } +} diff --git a/src/features/effects/Fisheye.js b/src/features/effects/Fisheye.js new file mode 100644 index 00000000..a913a8cd --- /dev/null +++ b/src/features/effects/Fisheye.js @@ -0,0 +1,75 @@ +import Victor from "victor" +import * as d3Fisheye from "d3-fisheye" +import { circle, subsample } from "@/common/geometry" +import Effect from "./Effect" + +const options = { + fisheyeSubsample: { + title: "Subsample points", + type: "checkbox", + }, + fisheyeDistortion: { + title: "Distortion", + min: -2, + max: 40, + step: 1, + }, +} + +export default class Fisheye extends Effect { + constructor() { + super("fisheye") + this.label = "Fisheye" + } + + canMove(state) { + return true + } + + canChangeSize(state) { + return true + } + + canChangeAspectRatio(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + fisheyeDistortion: 3, + fisheyeSubsample: true, + width: 100, + height: 100, + maintainAspectRatio: true, + }, + } + } + + getSelectionVertices(effect) { + return circle(effect.width / 2) + } + + getVertices(effect, layer, vertices) { + if (effect.fisheyeSubsample) { + vertices = subsample(vertices, 2.0) + } + + const radius = effect.width / 2 + const fisheye = d3Fisheye + .radial() + .radius(radius) + .distortion(effect.fisheyeDistortion / 2) + fisheye.focus([effect.x, effect.y]) + + return vertices.map((vertex) => { + const warped = fisheye([vertex.x, vertex.y]) + return new Victor(warped[0], warped[1]) + }) + } + + getOptions() { + return options + } +} diff --git a/src/features/effects/Loop.js b/src/features/effects/Loop.js new file mode 100644 index 00000000..eb23b2f3 --- /dev/null +++ b/src/features/effects/Loop.js @@ -0,0 +1,203 @@ +import Effect from "./Effect" +import Victor from "victor" +import { scale, rotate, centerOnOrigin, cloneVertex } from "@/common/geometry" +import { evaluate } from "mathjs" + +const options = { + numLoops: { + title: "Number of loops", + min: 1, + }, + transformMethod: { + title: "When transforming shape", + type: "togglebutton", + choices: ["smear", "intact"], + }, + growEnabled: { + title: "Scale", + type: "checkbox", + }, + growValue: { + title: "Scale (+/-)", + isVisible: (layer, state) => { + return state.growEnabled + }, + }, + growMethod: { + title: "Scale by", + type: "togglebutton", + choices: ["constant", "function"], + isVisible: (layer, state) => { + return state.growEnabled + }, + }, + growMathInput: { + title: "Scale function (i)", + type: "text", + delayKey: "growMath", + isVisible: (layer, state) => { + return state.growMethod === "function" + }, + }, + growMath: { + isVisible: (layer, state) => { + return false + }, + }, + spinEnabled: { + title: "Spin", + type: "checkbox", + }, + spinValue: { + title: "Spin (+/-)", + step: 0.1, + isVisible: (layer, state) => { + return state.spinEnabled + }, + }, + spinMethod: { + title: "Spin by", + type: "togglebutton", + choices: ["constant", "function"], + isVisible: (layer, state) => { + return state.spinEnabled + }, + }, + spinMathInput: { + title: "Spin function (i)", + type: "text", + delayKey: "spinMath", + isVisible: (layer, state) => { + return state.spinMethod === "function" + }, + }, + spinMath: { + isVisible: (layer, state) => { + return false + }, + }, + spinSwitchbacks: { + title: "Switchbacks", + isVisible: (layer, state) => { + return state.spinEnabled && state.spinMethod === "constant" + }, + }, +} + +export default class Loop extends Effect { + constructor() { + super("loop") + this.label = "Loop" + } + + canRotate(state) { + return false + } + + canChangeSize(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + // loop Options + transformMethod: "smear", + numLoops: 10, + + // grow options + growEnabled: true, + growValue: 25, + growMethod: "constant", + growMathInput: "i+cos(i/2)", + growMath: "i+cos(i/2)", + + // spin options + spinEnabled: false, + spinValue: 2, + spinMethod: "constant", + spinMathInput: "10*sin(i/4)", + spinMath: "10*sin(i/4)", + spinSwitchbacks: 0, + }, + } + } + + getVertices(effect, layer, vertices) { + centerOnOrigin(vertices, [new Victor(0, 0), new Victor(0, 0)]) + + // weird case where user has turned off both grow and spin + if (!effect.growEnabled && !effect.spinEnabled) { + return vertices + } + + // remove first point if we are smearing + if (effect.transformMethod === "smear") { + vertices.pop() + } + + const outputVertices = [] + + for (var i = 0; i < effect.numLoops; i++) { + for (let j = 0; j < vertices.length; j++) { + let vertex = cloneVertex(vertices[j]) + let amount = + effect.transformMethod === "smear" ? i + j / vertices.length : i + + if (effect.growEnabled) { + let growAmount = 100 + + if (effect.growMethod === "function") { + try { + growAmount = + effect.growValue * evaluate(effect.growMath, { i: amount }) + } catch (err) { + console.log("Error parsing grow function: " + err) + growAmount = 200 + } + } else { + growAmount = 100.0 + effect.growValue * amount + } + + // Actually do the growing + vertex = scale(vertex, growAmount / 100.0) + } + + if (effect.spinEnabled) { + let spinAmount = 0 + + if (effect.spinMethod === "function") { + try { + spinAmount = + effect.spinValue * evaluate(effect.spinMath, { i: amount }) + } catch (err) { + console.log("Error parsing spin function: " + err) + spinAmount = 0 + } + } else { + const loopPeriod = + effect.numLoops / (parseInt(effect.spinSwitchbacks) + 1) + const stage = amount / loopPeriod + const direction = stage % 2 < 1 ? 1.0 : -1.0 + + spinAmount = direction * (amount % loopPeriod) * effect.spinValue + // Add in the amount it goes positive to the negatives, so they start at the same place. + if (direction < 0.0) { + spinAmount += loopPeriod * effect.spinValue + } + } + vertex = rotate(vertex, spinAmount) + } + + outputVertices.push(vertex) + } + } + + return outputVertices + } + + getOptions() { + return options + } +} diff --git a/src/features/effects/Mask.js b/src/features/effects/Mask.js new file mode 100644 index 00000000..c9c670cf --- /dev/null +++ b/src/features/effects/Mask.js @@ -0,0 +1,132 @@ +import Effect from "./Effect" +import Victor from "victor" +import { rotate, offset, circle } from "@/common/geometry" +import PolarMachine from "@/features/machines/PolarMachine" +import RectMachine from "@/features/machines/RectMachine" +import PolarInvertedMachine from "@/features/machines/PolarInvertedMachine" +import RectInvertedMachine from "@/features/machines/RectInvertedMachine" + +const options = { + maskMachine: { + title: "Mask shape", + type: "togglebutton", + choices: ["rectangle", "circle"], + onChange: (model, changes, state) => { + if (changes.maskMachine) { + if (changes.maskMachine === "circle") { + changes.rotation = 0 + + const size = Math.max(state.width, state.height) + changes.height = size + changes.width = size + changes.maintainAspectRatio = true + } else { + changes.maintainAspectRatio = false + } + } + + return changes + }, + }, + maskMinimizeMoves: { + title: "Minimize perimeter moves", + type: "checkbox", + }, + maskInvert: { + title: "Invert", + type: "checkbox", + }, + maskBorder: { + title: "Draw border", + type: "checkbox", + }, +} + +export default class Mask extends Effect { + constructor() { + super("mask") + this.label = "Mask" + } + + canMove(state) { + return true + } + + canRotate(state) { + return state.maskMachine != "circle" + } + + canChangeAspectRatio(state) { + return state.maskMachine != "circle" + } + + canChangeSize(state) { + return true + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + width: 100, + height: 100, + maskMinimizeMoves: false, + maskMachine: "rectangle", + maskInvert: false, + maskBorder: false, + }, + } + } + + getOptions() { + return options + } + + getSelectionVertices(effect) { + const { width, height } = effect + + if (effect.maskMachine === "circle") { + return circle(width / 2) + } else { + return [ + new Victor(-width / 2, height / 2), + new Victor(width / 2, height / 2), + new Victor(width / 2, -height / 2), + new Victor(-width / 2, -height / 2), + new Victor(-width / 2, height / 2), + ] + } + } + + getVertices(effect, layer, vertices) { + vertices = vertices.map((vertex) => { + return rotate(offset(vertex, -effect.x, -effect.y), effect.rotation) + }) + + if (!effect.dragging) { + const machineClass = + effect.maskMachine === "circle" + ? effect.maskInvert + ? PolarInvertedMachine + : PolarMachine + : effect.maskInvert + ? RectInvertedMachine + : RectMachine + + const machine = new machineClass({ + minX: 0, + maxX: effect.width, + minY: 0, + maxY: effect.height, + minimizeMoves: effect.maskMinimizeMoves, + maxRadius: effect.width / 2, + mask: true, + }) + vertices = machine.polish(vertices, { border: effect.maskBorder }) + } + + return vertices.map((vertex) => { + return offset(rotate(vertex, -effect.rotation), effect.x, effect.y) + }) + } +} diff --git a/src/features/effects/NewEffect.js b/src/features/effects/NewEffect.js new file mode 100644 index 00000000..1df6aba3 --- /dev/null +++ b/src/features/effects/NewEffect.js @@ -0,0 +1,141 @@ +import React, { useState, useRef } from "react" +import { useDispatch, useSelector } from "react-redux" +import Select from "react-select" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import Button from "react-bootstrap/Button" +import Modal from "react-bootstrap/Modal" +import { + selectSelectedLayer, + addEffect, + selectLayerVertices, +} from "@/features/layers/layersSlice" +import { + getEffectSelectOptions, + getDefaultEffect, + getEffect, +} from "./effectFactory" +import EffectLayer from "./EffectLayer" +import { selectSelectedEffectId } from "./effectsSlice" + +const defaultEffect = getDefaultEffect() +const customStyles = { + control: (base) => ({ + ...base, + height: 55, + minHeight: 55, + }), +} + +const NewEffect = ({ toggleModal, showModal }) => { + const dispatch = useDispatch() + const selectRef = useRef() + const selectedLayer = useSelector(selectSelectedLayer) + const selectedEffectId = useSelector(selectSelectedEffectId) + const selectedLayerVertices = useSelector((state) => + selectLayerVertices(state, selectedLayer.id), + ) + const selectOptions = getEffectSelectOptions() + const [type, setType] = useState(defaultEffect.type) + const [name, setName] = useState(defaultEffect.label) + const selectedEffect = getEffect(type) + const selectedOption = { + value: selectedEffect.id, + label: selectedEffect.label, + } + + const handleNameFocus = (event) => { + event.target.select() + } + + const handleInitialFocus = () => { + selectRef.current.focus() + } + + const handleChangeNewType = (selected) => { + const effect = getEffect(selected.value) + + setType(selected.value) + setName(effect.label.toLowerCase()) + } + + const handleChangeNewName = (event) => { + setName(event.target.value) + } + + const onEffectAdded = (event) => { + const layer = new EffectLayer(type) + event.preventDefault() + dispatch( + addEffect({ + id: selectedLayer.id, + effect: { + ...layer.getInitialState(selectedLayer, selectedLayerVertices), + name, + }, + afterId: selectedEffectId, + }), + ) + toggleModal() + } + + return ( + + + Create new effect + + +
+ + + Type + + - - + if (this.model.autosize) { + this.resize() + centerOnOrigin(this.vertices) } - return ( - - - -

Properties

- - - - -
- - { shapeSelectRender } - - { linkRender } - -
- { optionsListRender } - -
-
+ this.applyEffects(effects) + this.transform() + this.vertices = this.model.finalizeVertices( + this.vertices, + layerState, + options, ) + + return this.vertices } - getOptionComponent(key, index) { - const option = this.props.options[key] - - if (option.type === 'dropdown') { - return - } else if (option.type === 'checkbox') { - return - } else if (option.type === 'comments') { - return - } else if (option.type === 'togglebutton') { - return + resize() { + const { width, height, aspectRatio } = this.state + + if (this.model.stretch) { + // special case for shapes that always stretch to fit their dimensions (e.g., font shapes) + this.vertices = resizeVertices(this.vertices, width, height, true, 1) } else { - return + this.vertices = resizeVertices( + this.vertices, + width, + height, + false, + aspectRatio, + ) } } -} -export default connect(mapStateToProps, mapDispatchToProps)(Layer) + transform() { + const { x, y, rotation } = this.state + + this.vertices.forEach((vertex) => { + vertex.rotateDeg(-rotation) + vertex.addX({ x: x || 0 }).addY({ y: y || 0 }) + }) + } + + applyEffects(effects) { + effects.forEach((effect) => { + const effectLayer = new EffectLayer(effect.type) + this.vertices = effectLayer.getVertices(effect, this.state, this.vertices) + }) + } + + // used to preserve hidden attributes when loading from a file + getHiddenAttrs() { + return [] + } +} diff --git a/src/features/layers/Layer.scss b/src/features/layers/Layer.scss deleted file mode 100644 index 4da5b6e9..00000000 --- a/src/features/layers/Layer.scss +++ /dev/null @@ -1,4 +0,0 @@ -#comments { - background-color: rgba(0, 0, 0, 0.05); - border: 1px solid rgba(0, 0, 0, 0.15); -} diff --git a/src/features/layers/LayerEditor.js b/src/features/layers/LayerEditor.js new file mode 100644 index 00000000..2f134875 --- /dev/null +++ b/src/features/layers/LayerEditor.js @@ -0,0 +1,218 @@ +import React from "react" +import { useDispatch, useSelector } from "react-redux" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Button from "react-bootstrap/Button" +import Select from "react-select" +import { Tooltip } from "react-tooltip" +import { IconContext } from "react-icons" +import { + AiOutlineRotateRight, + AiTwotoneLock, + AiTwotoneUnlock, +} from "react-icons/ai" +import ModelOption from "@/components/ModelOption" +import { getShapeSelectOptions } from "@/features/shapes/shapeFactory" +import { updateLayer, changeModelType } from "./layersSlice" +import Layer from "./Layer" +import EffectManager from "@/features/effects/EffectManager" +import { selectSelectedLayer } from "./layersSlice" + +const LayerEditor = () => { + const dispatch = useDispatch() + const layer = useSelector(selectSelectedLayer) + const instance = new Layer(layer.type) + const model = instance.model + const layerOptions = instance.getOptions() + const modelOptions = model.getOptions() + const selectOptions = getShapeSelectOptions() + const allowModelSelection = model.selectGroup !== "import" + const selectedOption = { + value: model.type, + label: model.label, + } + const link = model.link + const linkText = model.linkText || "here" + const renderedLink = link ? ( +
+ See{" "} + + {linkText} + {" "} + for ideas. +
+ ) : undefined + + const handleChangeType = (selected) => { + dispatch(changeModelType({ id: layer.id, type: selected.value })) + } + + const handleChange = (attrs) => { + attrs.id = layer.id + dispatch(updateLayer(attrs)) + } + + const handleChangeMaintainAspectRatio = (value) => { + dispatch( + updateLayer({ + id: layer.id, + maintainAspectRatio: !layer.maintainAspectRatio, + }), + ) + } + + const renderedModelSelection = allowModelSelection && ( + + + Type + + + + + + + + Name + + + + +
+ + + + + +
+
+ ) +} + +export default NewLayer diff --git a/src/features/layers/Playlist.js b/src/features/layers/Playlist.js deleted file mode 100644 index 552adb9c..00000000 --- a/src/features/layers/Playlist.js +++ /dev/null @@ -1,351 +0,0 @@ -import React, { Component } from 'react' -import { connect } from 'react-redux' -import { Accordion, Button, Card, ListGroup, Modal, Row, Col, Form } from 'react-bootstrap' -import Select from 'react-select' -import { SortableContainer, SortableElement } from 'react-sortable-hoc' -import { FaTrash, FaEye, FaEyeSlash, FaCopy } from 'react-icons/fa' -import { getLayers } from '../store/selectors' -import { getAllLayersInfo, getCurrentLayer, getNumLayers } from '../layers/selectors' -import { setCurrentLayer, addLayer, copyLayer, updateLayers, removeLayer, moveLayer, toggleVisible, setNewLayerType } from '../layers/layersSlice' -import { registeredShapes, getShapeSelectOptions, getShape } from '../../models/shapes' -import ReactGA from 'react-ga' -import ThetaRhoImporter from '../importer/ThetaRhoImporter' -import GCodeImporter from '../importer/GCodeImporter' -import './Playlist.scss' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - const layers = getLayers(state) - const shape = getShape(layer) - - return { - layers: getAllLayersInfo(state), - numLayers: getNumLayers(state), - currentLayer: layer, - shape: shape, - newLayerType: layers.newLayerType, - newLayerName: layers.newLayerName, - newLayerNameOverride: layers.newLayerNameOverride, - copyLayerName: layers.copyLayerName, - selectOptions: getShapeSelectOptions() - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - return { - onLayerSelected: (event) => { - const id = event.target.closest('.list-group-item').id - dispatch(setCurrentLayer(id)) - }, - onLayerAdded: (type) => { - const attrs = registeredShapes[type].getInitialState() - dispatch(addLayer(attrs)) - }, - onLayerImport: (importProps) => { - const attrs = { - ...registeredShapes["file_import"].getInitialState(importProps), - name: importProps.fileName - } - dispatch(addLayer(attrs)) - }, - onLayerCopied: (id) => { - dispatch(copyLayer(id)) - }, - onLayerRemoved: (event) => { - dispatch(removeLayer(event.target.closest('button').dataset.id)) - }, - onChangeNewType: (selected) => { - dispatch(setNewLayerType(selected.value)) - }, - onChangeNewName: (event) => { - dispatch(updateLayers({ newLayerName: event.target.value, newLayerNameOverride: true })) - }, - onChangeCopyName: (event) => { - dispatch(updateLayers({ copyLayerName: event.target.value })) - }, - onLayerMoved: ({oldIndex, newIndex}) => { - dispatch(moveLayer({oldIndex: oldIndex, newIndex: newIndex})) - }, - onToggleLayerVisible: (event) => { - const id = event.target.closest('.list-group-item').id - dispatch(toggleVisible({id: id})) - } - } -} - -const customStyles = { - control: base => ({ - ...base, - height: 55, - minHeight: 55 - }) -} - -const SortableItem = SortableElement(({id, name, active, effect, canRemove, visible, onCopyLayer, onLayerRemoved, onLayerSelected, onToggleLayerVisible}) => { - const activeClass = active ? 'active' : '' - const dragClass = canRemove ? 'cursor-move' : '' - const nameClass = effect ? 'no-select font-italic': 'no-select' - - return - -
{effect && '\u2937'} {name}
- - {canRemove && } -
-}) - -const SortableList = SortableContainer(({layers, currentLayer, numLayers, onCopyLayer, onLayerSelected, onLayerRemoved, onToggleLayerVisible}) => { - return ( - - {layers.map((layer, index) => { - return ( - 1} - onCopyLayer={onCopyLayer} - onLayerSelected={onLayerSelected} - onLayerRemoved={onLayerRemoved} - onToggleLayerVisible={onToggleLayerVisible} - /> - ) - })} - - ) -}) - -class Playlist extends Component { - constructor(props) { - super(props) - this.state = { - showNewLayer: false, - showImportLayer: false, - showCopyLayer: false - } - } - - scrollToBottom() { - // we're not supposed to directly access DOM with React, with instead use a ref. That said, I can't figure - // out how to get the nested ref in an elegant way. - const el = document.getElementById('playlist-group') - el.scrollTop = el.scrollHeight - } - - toggleNewModal() { - this.setState({showNewLayer: !this.state.showNewLayer}) - } - - toggleImportModal() { - this.setState({showImportLayer: !this.state.showImportLayer}) - } - - onFileSelected(event) { - let file = event.target.files[0] - let reader = new FileReader() - - reader.onload = (event) => { - this.startTime = performance.now() - var text = reader.result - - let importer - if (file.name.toLowerCase().endsWith('.thr')) { - importer = new ThetaRhoImporter(file.name, text) - } else if (file.name.toLowerCase().endsWith('.gcode') || file.name.toLowerCase().endsWith('.nc')) { - importer = new GCodeImporter(file.name, text) - } - - importer.import(this.onFileImported.bind(this)) - this.toggleImportModal.bind(this)() - } - - reader.readAsText(file) - } - - onFileImported(importer, importerProps) { - this.props.onLayerImport(importerProps) - - this.endTime = performance.now() - ReactGA.timing({ - category: 'PatternImport', - variable: 'read' + importer.label, - value: this.endTime - this.startTime // in milliseconds - }) - } - - toggleCopyModal() { - this.setState({showCopyLayer: !this.state.showCopyLayer}) - } - - handleNameFocus(event) { - event.target.select() - } - - componentDidUpdate(prevProps) { - if (this.props.numLayers > prevProps.numLayers) { - // new layer added; make sure we scroll down to it - this.scrollToBottom() - } - } - - render() { - const selectedShape = getShape({type: this.props.newLayerType}) - const selectedOption = { value: selectedShape.id, label: selectedShape.name } - const namedInputRef = React.createRef() - - return ( -
- - - Create new layer - - - - - - Type - - - ({ ...base, zIndex: 9999 }) }} + /> + + + ) + + // this should really be a component, but I could not figure out how to get it + // to not re-render as the value changed; the fallout is that the editor re-renders + // more than it should, but it's not noticeable + const renderOption = ({ optionKey }) => { + return ( + + ) + } + + const renderedModelOptions = Object.keys(machineOptions) + .filter( + (optionKey) => optionKey !== "name" && optionKey !== "minimizeMoves", + ) + .map((optionKey) => renderOption({ options: machineOptions, optionKey })) + + return ( +
+ {renderOption({ optionKey: "name" })} + {renderedMachineSelection} + {renderedModelOptions} + {renderOption({ optionKey: "minimizeMoves" })} +
+ ) +} + +export default React.memo(MachineEditor) diff --git a/src/features/machines/MachineList.js b/src/features/machines/MachineList.js new file mode 100644 index 00000000..aaa587b8 --- /dev/null +++ b/src/features/machines/MachineList.js @@ -0,0 +1,66 @@ +import React from "react" +import { useDispatch, useSelector } from "react-redux" +import ListGroup from "react-bootstrap/ListGroup" +import { + selectAllMachines, + selectCurrentMachineId, + setCurrentMachine, +} from "./machinesSlice" +import { getMachine } from "./machineFactory" + +const MachineRow = ({ current, numLayers, machine, handleMachineSelected }) => { + const { name, id } = machine + const activeClass = current ? "active" : "" + const machineModel = getMachine(machine) + + return ( + +
+
+
{name}
+ {machineModel.label} +
+
+
+ ) +} + +const MachineList = () => { + const dispatch = useDispatch() + const machines = useSelector(selectAllMachines) + const currentMachineId = useSelector(selectCurrentMachineId) + + const handleMachineSelected = (event) => { + const id = event.target.closest(".list-group-item").id + dispatch(setCurrentMachine(id)) + } + + return ( +
+ + {machines.map((machine, index) => ( + + ))} + +
+ ) +} + +export default React.memo(MachineList) diff --git a/src/features/machines/MachineManager.js b/src/features/machines/MachineManager.js new file mode 100644 index 00000000..2f5181b2 --- /dev/null +++ b/src/features/machines/MachineManager.js @@ -0,0 +1,82 @@ +import React, { useState } from "react" +import Button from "react-bootstrap/Button" +import { Tooltip } from "react-tooltip" +import { FaTrash, FaCopy, FaPlusSquare } from "react-icons/fa" +import { useSelector, useDispatch } from "react-redux" +import { + selectNumMachines, + selectCurrentMachineId, + deleteMachine, +} from "@/features/machines/machinesSlice" +import MachineList from "./MachineList" +import MachineEditor from "./MachineEditor" +import CopyMachine from "./CopyMachine" +import NewMachine from "./NewMachine" + +const MachineManager = () => { + const dispatch = useDispatch() + const numMachines = useSelector(selectNumMachines) + const currentMachineId = useSelector(selectCurrentMachineId) + + const canRemove = numMachines > 1 + const [showNewMachine, setShowNewMachine] = useState(false) + const [showCopyMachine, setShowCopyMachine] = useState(false) + + const toggleNewMachineModal = () => setShowNewMachine(!showNewMachine) + const toggleCopyMachineModal = () => setShowCopyMachine(!showCopyMachine) + const handleMachineRemoved = (id) => dispatch(deleteMachine(currentMachineId)) + + return ( +
+ + +
+ +
+ + + {canRemove && } + {canRemove && ( + + )} + + +
+
+ +
+ ) +} + +export default React.memo(MachineManager) diff --git a/src/features/machines/NewMachine.js b/src/features/machines/NewMachine.js new file mode 100644 index 00000000..3cc0b127 --- /dev/null +++ b/src/features/machines/NewMachine.js @@ -0,0 +1,128 @@ +import React, { useState, useRef } from "react" +import { useDispatch } from "react-redux" +import Select from "react-select" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import Form from "react-bootstrap/Form" +import Button from "react-bootstrap/Button" +import Modal from "react-bootstrap/Modal" +import { + getDefaultMachine, + getMachineSelectOptions, + getMachine, +} from "./machineFactory" +import { addMachine } from "./machinesSlice" + +const defaultMachine = getDefaultMachine() +const customStyles = { + control: (base) => ({ + ...base, + height: 55, + minHeight: 55, + }), +} + +const NewMachine = ({ toggleModal, showModal }) => { + const dispatch = useDispatch() + const selectRef = useRef() + const selectOptions = getMachineSelectOptions() + const [type, setType] = useState(defaultMachine.type) + const [name, setName] = useState(defaultMachine.label) + + const selectedMachine = getMachine({ type }) + const selectedOption = { + value: selectedMachine.id, + label: selectedMachine.label, + } + + const handleNameFocus = (event) => { + event.target.select() + } + + const handleInitialFocus = () => { + selectRef.current.focus() + } + + const handleChangeNewType = (selected) => { + const machine = getMachine(selected.value) + + setType(selected.value) + setName(machine.label.toLowerCase()) + } + + const handleChangeNewName = (event) => { + setName(event.target.value) + } + + const onMachineAdded = (event) => { + const machine = getMachine(type) + + event.preventDefault() + dispatch( + addMachine({ + ...machine.getInitialState(), + name, + }), + ) + toggleModal() + } + + return ( + + + Create new machine + + +
+ + + Type + + ({ ...base, zIndex: 9999 }) }} + menuPortalTarget={document.body} + menuPosition="fixed" + value={selectedZoomOption} + onChange={handleZoomChange} + > +
+
+ +
+
+ + + ) +} + +export default React.memo(PreviewManager) diff --git a/src/features/preview/MachinePreview.scss b/src/features/preview/PreviewManager.scss similarity index 60% rename from src/features/preview/MachinePreview.scss rename to src/features/preview/PreviewManager.scss index 633a4270..8b671318 100644 --- a/src/features/preview/MachinePreview.scss +++ b/src/features/preview/PreviewManager.scss @@ -1,8 +1,11 @@ -.preview-wrapper { +#preview-main { background-color: #333; +} + +.preview-wrapper { + overflow: auto; .konvajs-content { - background-color: black; margin: 0 auto; } @@ -11,11 +14,8 @@ } @media (min-width: 992px) { - width: 100%; - height: calc(100vh - 169px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + height: calc(100vh - 118px); } } - -.machine-preview { - outline: none; -} diff --git a/src/features/preview/PreviewStats.js b/src/features/preview/PreviewStats.js new file mode 100644 index 00000000..be3dad75 --- /dev/null +++ b/src/features/preview/PreviewStats.js @@ -0,0 +1,20 @@ +import React from "react" +import { useSelector } from "react-redux" +import Col from "react-bootstrap/Col" +import Row from "react-bootstrap/Row" +import { selectVerticesStats } from "@/features/layers/layersSlice" + +const PreviewStats = () => { + const verticesStats = useSelector(selectVerticesStats) + + return ( + + Points + {verticesStats.numPoints} + Distance + {verticesStats.distance} + + ) +} + +export default React.memo(PreviewStats) diff --git a/src/features/preview/PreviewWindow.js b/src/features/preview/PreviewWindow.js index 5b3342f3..29e03363 100644 --- a/src/features/preview/PreviewWindow.js +++ b/src/features/preview/PreviewWindow.js @@ -1,169 +1,160 @@ -import React, { Component } from 'react' -import { connect, ReactReduxContext, Provider } from 'react-redux' -import { Stage, Layer, Circle, Rect } from 'react-konva' -import throttle from 'lodash/throttle' -import { setPreviewSize, updatePreview } from './previewSlice' -import { updateLayer } from '../layers/layersSlice' -import { getMachine, getLayers, getPreview } from '../store/selectors' -import { getCurrentLayer, getKonvaLayerIds, getVisibleNonEffectIds, isDragging } from '../layers/selectors' -import { roundP } from '../../common/util' -import PreviewLayer from './PreviewLayer' -import PreviewConnector from './PreviewConnector' - -const mapStateToProps = (state, ownProps) => { - const layers = getLayers(state) - const preview = getPreview(state) - const machine = getMachine(state) - - return { - layers: layers, - currentLayer: getCurrentLayer(state), - konvaIds: getKonvaLayerIds(state), - layerIds: getVisibleNonEffectIds(state), - use_rect: machine.rectangular, - dragging: isDragging(state), - minX: machine.minX, - maxX: machine.maxX, - minY: machine.minY, - maxY: machine.maxY, - maxRadius: machine.maxRadius, - canvasWidth: preview.canvasWidth, - canvasHeight: preview.canvasHeight - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - return { - onResize: (size) => { - dispatch(setPreviewSize(size)) - }, - onChange: (attrs) => { - dispatch(updatePreview(attrs)) - }, - onLayerChange: (attrs) => { - dispatch(updateLayer(attrs)) - } - } -} - -// Contains the preview window, and any parameters for the machine. -class PreviewWindow extends Component { - componentDidMount() { - const wrapper = document.getElementById('preview-wrapper') - - this.throttledResize = throttle(this.resize, 200, {trailing: true}).bind(this) - window.addEventListener('resize', () => { this.throttledResize(wrapper) }, false) - setTimeout(() => { - this.visible = true - this.resize(wrapper) - }, 250) - } - - resize(wrapper) { - const width = parseInt(getComputedStyle(wrapper).getPropertyValue('width')) - const height = parseInt(getComputedStyle(wrapper).getPropertyValue('height')) - - if (this.props.canvasWidth !== width || this.props.canvasHeight !== height) { - this.props.onResize({width: width, height: height}) +import React, { useEffect, useRef } from "react" +import { useSelector, useDispatch } from "react-redux" +import { isEqual } from "lodash" +import { Stage, Layer, Circle, Rect } from "react-konva" +import throttle from "lodash/throttle" +import { selectPreviewState } from "@/features/preview/previewSlice" +import { selectCurrentMachine } from "@/features/machines/machinesSlice" +import { getMachine } from "@/features/machines/machineFactory" +import { + selectSelectedLayer, + selectVisibleLayerIds, + setCurrentLayer, +} from "@/features/layers/layersSlice" +import ShapePreview from "./ShapePreview" +import ConnectorPreview from "./ConnectorPreview" +import { setPreviewSize, selectPreviewZoom } from "./previewSlice" + +const PreviewWindow = () => { + const dispatch = useDispatch() + const machine = useSelector(selectCurrentMachine) + const machineInstance = getMachine(machine) + const { canvasWidth, canvasHeight } = useSelector(selectPreviewState) + const selectedLayer = useSelector(selectSelectedLayer, isEqual) + const layerIds = useSelector(selectVisibleLayerIds, isEqual) + const zoom = useSelector(selectPreviewZoom) + const stageZoom = zoom > 1 ? zoom : 1 + const offsetZoom = zoom > 1 ? 1 : zoom + const remainingLayerIds = layerIds.filter((id) => id !== selectedLayer?.id) + const layerRef = useRef() + const stagePadding = 22 + + useEffect(() => { + const wrapper = document.getElementById("preview-wrapper") + const resize = () => { + const width = + parseInt(getComputedStyle(wrapper).getPropertyValue("width")) - + 2 * stagePadding + const height = + parseInt(getComputedStyle(wrapper).getPropertyValue("height")) - + 2 * stagePadding + + if (canvasWidth !== width || canvasHeight !== height) { + dispatch(setPreviewSize({ width, height })) + } } - } + const throttledResize = throttle(resize, 200, { + trailing: true, + }) - render() { - const {minX, minY, maxX, maxY} = this.props - const radius = this.props.maxRadius - const scale = this.relativeScale(this.props) - const reduceScale = 0.9 - const width = this.props.use_rect ? maxX - minX : radius * 2 - const height = this.props.use_rect ? maxY - minY : radius * 2 - const visibilityClass = `preview-wrapper ${this.visible ? 'd-flex align-items-center' : 'd-none'}` + resize() + window.addEventListener("resize", throttledResize, false) - // define Konva clip functions that will let us clip vertices not bound by - // machine limits when dragging, and produce a visually seamless experience. - const clipCircle = ctx => { - ctx.arc(0, 0, radius, 0, Math.PI * 2, false) + return () => { + window.removeEventListener("resize", throttledResize, false) } - const clipRect = ctx => { - ctx.rect(-width/2, -height/2, width, height) + }, []) + + const { width, height } = machineInstance + const scaleWidth = canvasWidth / width + const scaleHeight = canvasHeight / height + const scale = Math.min(scaleWidth, scaleHeight) + + const selectedIdx = layerIds.findIndex( + (layerId) => layerId === selectedLayer?.id, + ) + const selectedNextId = + selectedIdx !== -1 && selectedIdx < layerIds.length - 1 + ? layerIds[selectedIdx + 1] + : null + + // add hidden debugging option to toggle the hit canvas on the layer when the user + // clicks on the layer while pressing the Alt key + const handleStageClick = (e) => { + dispatch(setCurrentLayer(null)) + if (e.evt.altKey && layerRef.current) { + layerRef.current.toggleHitCanvas() + e.cancelBubble = true } - const clipFunc = this.props.dragging ? (this.props.use_rect ? clipRect : clipCircle) : null - - return ( - // the consumer wrapper is needed to pass the store down to our shape - // which is not our usual React Component - - {({store}) => ( - { - e.evt.preventDefault() - if (Math.abs(e.evt.deltaY) > 0) { - this.props.onLayerChange({ - startingWidth: this.scaleByWheel(this.props.currentLayer.startingWidth, e.evt.deltaY), - startingHeight: this.scaleByWheel(this.props.currentLayer.startingHeight, e.evt.deltaY), - id: this.props.currentLayer.id - }) - } - }} - > - - - {!this.props.use_rect && } - {this.props.use_rect && } - {this.props.konvaIds.map((id, i) => { - const idx = this.props.layerIds.findIndex(layerId => layerId === id) - const nextId = idx !== -1 && idx < this.props.layerIds.length - 1 ? this.props.layerIds[idx + 1] : null - return ( - [ - nextId && , - - ].filter(e => e !== null) - ) - }).flat()} - - - - )} - - ) - } - - relativeScale(props) { - let width, height - - if (props.use_rect) { - width = props.maxX - props.minX - height = props.maxY - props.minY - } else { - width = height = props.maxRadius * 2.0 - } - - return Math.min(props.canvasWidth / width, props.canvasHeight / height) } - scaleByWheel(size, deltaY) { - const sign = Math.sign(deltaY) - const scale = 1 + Math.log(Math.abs(deltaY))/30 * sign - let newSize = Math.max(roundP(size * scale, 0), 1) - - if (newSize === size) { - // If the log scaled value isn't big enough to move the scale. - newSize = Math.max(sign+size, 1) - } - - return newSize - } + // some awkward rendering to put the current layer as the last child in the layer to ensure + // transformer rotation works; this is a Konva restriction. + return ( + + + {machine.type === "polar" && ( + + )} + {machine.type === "rectangular" && ( + + )} + {[ + remainingLayerIds.map((id, i) => { + const idx = layerIds.findIndex((layerId) => layerId === id) + const nextId = + idx !== -1 && idx < layerIds.length - 1 ? layerIds[idx + 1] : null + return [ + nextId && ( + + ), + , + ] + }), + selectedNextId && ( + + ), + selectedLayer && ( + + ), + ] + .flat() + .filter((e) => e !== null)} + + + ) } -export default connect(mapStateToProps, mapDispatchToProps)(PreviewWindow) + +export default React.memo(PreviewWindow) diff --git a/src/features/preview/ShapePreview.js b/src/features/preview/ShapePreview.js new file mode 100644 index 00000000..f355470e --- /dev/null +++ b/src/features/preview/ShapePreview.js @@ -0,0 +1,489 @@ +import React, { useEffect } from "react" +import { useSelector, useDispatch } from "react-redux" +import { Shape, Transformer, Group } from "react-konva" +import { isEqual } from "lodash" +import { + updateLayer, + selectCurrentLayerId, + selectLayerIndex, + selectLayerById, + selectNumVisibleLayers, + selectActiveEffect, + selectVisibleLayerEffects, + selectShapePreviewVertices, + selectShapeWhileEffectDraggingVertices, + selectPreviewVertices, + selectSliderColors, + selectVertexOffsets, + selectSliderBounds, + selectLayerPreviewBounds, + setCurrentLayer, + setCurrentEffect, +} from "@/features/layers/layersSlice" +import { selectCurrentEffectId } from "@/features/effects/effectsSlice" +import EffectLayer from "@/features/effects/EffectLayer" +import { selectPreviewSliderValue } from "@/features/preview/previewSlice" +import EffectPreview from "@/features/preview/EffectPreview" +import { getShape } from "@/features/shapes/shapeFactory" +import { roundP, scaleByWheel } from "@/common/util" +import PreviewHelper from "./PreviewHelper" +import { log } from "@/common/debugging" +import colors from "@/common/colors" + +const ShapePreview = (ownProps) => { + log(`ShapePreview render ${ownProps.id}`) + const dispatch = useDispatch() + const currentLayerId = useSelector(selectCurrentLayerId) + const currentEffectId = useSelector(selectCurrentEffectId) + const visibleEffects = useSelector( + (state) => selectVisibleLayerEffects(state, ownProps.id), + isEqual, + ) + const layer = useSelector( + (state) => selectLayerById(state, ownProps.id), + isEqual, + ) + const activeEffect = useSelector( + (state) => selectActiveEffect(state, ownProps.id), + isEqual, + ) + + const index = useSelector((state) => selectLayerIndex(state, ownProps.id)) + const numLayers = useSelector(selectNumVisibleLayers) + const selectableEffect = visibleEffects.findLast((effect) => + ["transformer", "mask"].includes(effect.type), + ) + const sliderValue = useSelector(selectPreviewSliderValue) + const layerVertices = useSelector((state) => + selectPreviewVertices(state, ownProps.id), + ) + const effectDraggingVertices = useSelector((state) => + selectShapeWhileEffectDraggingVertices( + state, + ownProps.id, + activeEffect?.id, + ), + ) + const shapePreviewVertices = useSelector((state) => + selectShapePreviewVertices(state, ownProps.id), + ) + const isCurrent = layer?.id === currentLayerId + const sliderColors = useSelector(selectSliderColors, isEqual) + const offsets = useSelector(selectVertexOffsets, isEqual) + const sliderBounds = useSelector(selectSliderBounds, isEqual) + const layerBounds = useSelector( + (state) => selectLayerPreviewBounds(state, ownProps.id, isCurrent), + isEqual, + ) + + const remainingEffectIds = layer + ? layer.effectIds.filter((id) => id !== activeEffect?.id) + : [] + const activeEffectInstance = activeEffect + ? new EffectLayer(activeEffect.type) + : null + const shapeRef = React.useRef() + const groupRef = React.useRef() + const trRef = React.useRef() + const model = getShape(layer?.type || "polygon") + + useEffect(() => { + if (layer?.visible && isCurrent && model.canChangeSize(layer)) { + trRef.current.nodes([groupRef.current]) + trRef.current.getLayer().batchDraw() + } + }, [ + isCurrent, + activeEffect, + layer, + layer && model.canMove(layer), + groupRef, + trRef, + ]) + + if (!layer) { + // "zombie child" situation; the hooks (above) are able to deal with a + // null layer. If we're a zombie, we do not need to render. + return null + } + + const { + selectedShapeColor, + activeEffectColor, + endPointColor, + startPointColor, + unselectedShapeColor, + noSelectionColor, + slidingColor, + transformerBorderColor, + activeConnectorColor, + } = colors + const isFirstLayer = index === 0 + const isLastLayer = index === numLayers - 1 + const { width, height } = layer + const isSliding = sliderValue !== 0 + const helper = new PreviewHelper({ + layer, + layerVertices, + offsets, + offsetId: layer.id, + start: index === 0, + end: index === numLayers - 1, + bounds: sliderBounds, + colors: sliderColors, + vertices: layerVertices, + }) + + const drawLayerVertices = (context, bounds) => { + const { end } = bounds + let oldColor = null + let currentColor + + if (isCurrent) { + currentColor = selectedShapeColor + } else if (activeEffect) { + currentColor = activeEffectColor + } else if (layer.dragging || currentLayerId || currentEffectId) { + currentColor = unselectedShapeColor + } else { + currentColor = noSelectionColor + } + + context.beginPath() + context.lineWidth = 1 + context.strokeStyle = currentColor + helper.moveTo(context, layerVertices[0]) + context.stroke() + context.beginPath() + + for (let i = 1; i < layerVertices.length; i++) { + const curr = layerVertices[i] + const prev = layerVertices[i - 1] + + if (isSliding) { + let absoluteI = i + offsets[layer.id].start + let pathColor = absoluteI <= end ? slidingColor : unselectedShapeColor + + currentColor = sliderColors[absoluteI] || pathColor + if (currentColor !== oldColor) { + context.stroke() + context.strokeStyle = currentColor + oldColor = currentColor + context.beginPath() + } + } else { + const vertexColor = + isCurrent && prev.connect ? activeConnectorColor : currentColor + if (vertexColor !== oldColor) { + context.stroke() + context.strokeStyle = vertexColor + oldColor = vertexColor + context.beginPath() + } + } + + helper.moveTo(context, prev) + if (!prev.hidden) { + helper.lineTo(context, curr) + } + } + context.stroke() + } + + const drawVertices = (context, vertices, color, lineWidth = 1) => { + context.beginPath() + context.lineWidth = lineWidth + context.strokeStyle = color + helper.moveTo(context, vertices[0]) + context.stroke() + + context.beginPath() + for (let i = 1; i < vertices.length; i++) { + helper.moveTo(context, vertices[i - 1]) + helper.lineTo(context, vertices[i]) + } + context.stroke() + } + + const drawLayerStartAndEndPoints = (context) => { + const startIdx = layerVertices.findIndex((vertex) => !vertex.connect) + const start = layerVertices[startIdx] + const endIdx = layerVertices.findLastIndex((vertex) => !vertex.connect) + const end = layerVertices[endIdx] + + if (startIdx > 0) { + context.beginPath() + context.strokeStyle = "transparent" + helper.dot(context, layerVertices[0], 5, activeConnectorColor) + } + + if (endIdx < layerVertices.length - 1) { + context.beginPath() + context.strokeStyle = "transparent" + helper.dot( + context, + layerVertices[layerVertices.length - 1], + 5, + activeConnectorColor, + ) + } + + context.beginPath() + context.strokeStyle = startPointColor + helper.dot(context, start, start ? 5 : 3) + + context.beginPath() + context.strokeStyle = endPointColor + helper.dot(context, end, end ? 5 : 3) + } + + const drawStartAndEndPoints = (context) => { + const start = layerVertices[0] + const end = layerVertices[layerVertices.length - 1] + + if (isFirstLayer) { + context.beginPath() + context.strokeStyle = startPointColor + helper.dot(context, start, start ? 5 : 3) + } + + if (isLastLayer) { + context.beginPath() + context.strokeStyle = endPointColor + helper.dot(context, end, end ? 5 : 3) + } + } + + const sceneFunc = (context, shape) => { + if (layerVertices && layerVertices.length > 0) { + if (!isSliding && isCurrent && visibleEffects.length > 0) { + drawVertices(context, shapePreviewVertices, activeEffectColor) + } + + if (activeEffect && activeEffect.dragging) { + if (!activeEffectInstance.model.dragPreview) { + drawVertices(context, effectDraggingVertices, activeEffectColor) + } + } else { + drawLayerVertices(context, sliderBounds) + + if ( + !layer.dragging || + layer.type === "point" /* mini hack to draw point when dragging */ + ) { + if (isCurrent || activeEffect) { + drawLayerStartAndEndPoints(context) + } else if (!currentLayerId && !currentEffectId) { + drawStartAndEndPoints(context) + } + } + } + + if (isSliding) { + helper.drawSliderEndPoint(context) + } + } + + context.fillStrokeShape(shape) + } + + // determines whether a layer is selected when it is clicked; based on the outer bounds of + // the layer, including all of its effects + function hitFunc(context, shape) { + if (layerBounds.length === 0) return // no visible layers + + const offsetX = (layerBounds[1].x + layerBounds[0].x) / 2 + const offsetY = (layerBounds[1].y + layerBounds[0].y) / 2 + const width = layerBounds[1].x - layerBounds[0].x + const height = layerBounds[1].y - layerBounds[0].y + const offsetWidth = (width - shape.getAttr("width")) / 2 + const offsetHeight = (height - shape.getAttr("height")) / 2 + + context.beginPath() + context.rect(offsetX - offsetWidth, -offsetY - offsetHeight, width, height) + context.closePath() + context.fillStrokeShape(shape) + } + + const handleChange = (attrs) => { + attrs.id = layer.id + dispatch(updateLayer(attrs)) + } + + const handleDragStart = (e) => { + if (e.currentTarget === e.target) { + if (isCurrent) { + handleChange({ dragging: true }) + } + } + } + + const handleDragEnd = (e) => { + if (e.currentTarget === e.target) { + handleChange({ + dragging: false, + x: roundP(e.target.x(), 0), + y: roundP(-e.target.y(), 0), + }) + } + } + + const handleTransform = (e) => { + const ref = groupRef.current + const scaleX = Math.abs(ref.scaleX()) + const scaleY = Math.abs(ref.scaleY()) + const width = roundP(Math.max(5, layer.width * scaleX), 0) + const height = roundP(Math.max(5, layer.height * scaleY), 0) + const originalRotation = roundP(layer.rotation, 0) + let rotation = roundP(ref.rotation(), 0) + + if ( + (width != layer.width || height != layer.height) && + rotation == originalRotation + 180.0 * Math.sign(rotation) + ) { + // node has been flipped while scaling + ref.rotation(originalRotation) + } + ref.scaleX(scaleX) + ref.scaleY(scaleY) + } + + const handleTransformStart = (e) => { + if (e.currentTarget === e.target) { + handleChange({ dragging: true }) + } + } + + const handleTransformEnd = (e) => { + if (e.currentTarget === e.target) { + const node = groupRef.current + const width = roundP( + Math.max(5, layer.width * Math.abs(node.scaleX())), + 0, + ) + const height = roundP( + Math.max(5, layer.height * Math.abs(node.scaleY())), + 0, + ) + const rotation = roundP(node.rotation(), 0) + + node.scaleX(1) + node.scaleY(1) + + const changes = { + dragging: false, + width, + height, + rotation, + } + + if (!layer.maintainAspectRatio) { + changes.aspectRatio = width / height + } + handleChange(changes) + } + } + + const handleWheel = (e) => { + if (isCurrent) { + e.evt.preventDefault() + + const deltaX = e.evt.deltaX + const deltaY = e.evt.deltaY + + if (Math.abs(deltaX) > 0 || Math.abs(deltaY) > 0) { + dispatch( + updateLayer({ + width: scaleByWheel(layer.width, deltaX, deltaY), + height: scaleByWheel(layer.height, deltaX, deltaY), + id: layer.id, + }), + ) + } + } + } + + const handleClick = (e) => { + if (selectableEffect && !isCurrent) { + dispatch(setCurrentEffect(selectableEffect.id)) + } else { + dispatch(setCurrentLayer(ownProps.id)) + } + e.cancelBubble = true // don't bubble this up to the preview window + } + + // Order of these layers is very important. The current layer or effect must always + // be the last one in order for Konva to allow dragging and transformer manipulation. + // That's why this looks a little weird. + return ( + + {remainingEffectIds.map((id, i) => { + return ( + + + + ) + })} + + {layer.visible && ( + + )} + {activeEffect && ( + + )} + + {layer.visible && isCurrent && model.canChangeSize(layer) && ( + + )} + + ) +} + +export default React.memo(ShapePreview) diff --git a/src/features/preview/previewSlice.js b/src/features/preview/previewSlice.js index c8397295..b66f3d80 100644 --- a/src/features/preview/previewSlice.js +++ b/src/features/preview/previewSlice.js @@ -1,11 +1,18 @@ import { createSlice } from "@reduxjs/toolkit" +import { createSelector } from "reselect" +import { selectState } from "@/features/app/appSlice" + +// ------------------------------ +// Slice, reducers and atomic actions +// ------------------------------ const previewSlice = createSlice({ - name: 'preview', + name: "preview", initialState: { canvasWidth: 600, canvasHeight: 600, - sliderValue: 0.0 + sliderValue: 0.0, + zoom: 1.0, }, reducers: { updatePreview(state, action) { @@ -15,12 +22,27 @@ const previewSlice = createSlice({ state.canvasHeight = action.payload.height state.canvasWidth = action.payload.width }, - } + }, }) -export const { - updatePreview, - setPreviewSize, -} = previewSlice.actions - +export const { updatePreview, setPreviewSize } = previewSlice.actions export default previewSlice.reducer + +// ------------------------------ +// Selectors +// ------------------------------ + +export const selectPreviewState = createSelector( + selectState, + (state) => state.preview, +) + +export const selectPreviewSliderValue = createSelector( + selectPreviewState, + (state) => state.sliderValue, +) + +export const selectPreviewZoom = createSelector( + selectPreviewState, + (state) => state.zoom, +) diff --git a/src/features/preview/previewSlice.spec.js b/src/features/preview/previewSlice.spec.js index 3419503d..249fb0c9 100644 --- a/src/features/preview/previewSlice.spec.js +++ b/src/features/preview/previewSlice.spec.js @@ -1,37 +1,32 @@ -import preview, { - updatePreview, - setPreviewSize, -} from './previewSlice' +import preview, { updatePreview, setPreviewSize } from "./previewSlice" -describe('preview reducer', () => { - it('should handle initial state', () => { +describe("preview reducer", () => { + it("should handle initial state", () => { expect(preview(undefined, {})).toEqual({ canvasWidth: 600, canvasHeight: 600, - sliderValue: 0 + sliderValue: 0, + zoom: 1, }) }) - it('should handle updatePreview', () => { + it("should handle updatePreview", () => { expect( - preview( - {sliderValue: 0}, - updatePreview({sliderValue: 50}) - ) + preview({ sliderValue: 0 }, updatePreview({ sliderValue: 50 })), ).toEqual({ - sliderValue: 50 + sliderValue: 50, }) }) - it('should handle setPreviewSize', () => { + it("should handle setPreviewSize", () => { expect( preview( - {canvasWidth: 600, canvasHeight: 600}, - setPreviewSize({width: 800, height: 800}) - ) + { canvasWidth: 600, canvasHeight: 600 }, + setPreviewSize({ width: 800, height: 800 }), + ), ).toEqual({ canvasWidth: 800, - canvasHeight: 800 + canvasHeight: 800, }) }) }) diff --git a/src/features/shapes/Circle.js b/src/features/shapes/Circle.js new file mode 100644 index 00000000..57932843 --- /dev/null +++ b/src/features/shapes/Circle.js @@ -0,0 +1,64 @@ +import Victor from "victor" +import Shape from "./Shape" + +const options = { + circleLobes: { + title: "Number of lobes", + min: 1, + }, + circleDirection: { + title: "Direction", + type: "togglebutton", + choices: ["clockwise", "counterclockwise"], + }, +} + +export default class Circle extends Shape { + constructor() { + super("circle") + this.label = "Circle" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + circleLobes: 1, + circleDirection: "clockwise", + maintainAspectRatio: true, + }, + } + } + + getVertices(state) { + let points = [] + + if (state.shape.circleDirection === "counterclockwise") { + for (let i = 128; i >= 0; i--) { + let angle = ((Math.PI * 2.0) / 128.0) * i + points.push( + new Victor( + Math.cos(angle), + Math.sin(state.shape.circleLobes * angle) / state.shape.circleLobes, + ), + ) + } + } else { + for (let i = 0; i <= 128; i++) { + let angle = ((Math.PI * 2.0) / 128.0) * i + points.push( + new Victor( + Math.cos(angle), + Math.sin(state.shape.circleLobes * angle) / state.shape.circleLobes, + ), + ) + } + } + + return points + } + + getOptions() { + return options + } +} diff --git a/src/models/Epicycloid.js b/src/features/shapes/Epicycloid.js similarity index 50% rename from src/models/Epicycloid.js rename to src/features/shapes/Epicycloid.js index 153db217..f7fea905 100644 --- a/src/models/Epicycloid.js +++ b/src/features/shapes/Epicycloid.js @@ -1,36 +1,33 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' -import { reduce } from '../common/util' +import Victor from "victor" +import Shape from "./Shape" +import { reduce } from "@/common/util" const options = { - ...shapeOptions, - ...{ - epicycloidA: { - title: "Large circle radius", - min: 1 - }, - epicycloidB: { - title: "Small circle radius", - min: 1 - }, - } + epicycloidA: { + title: "Large circle radius", + min: 1, + }, + epicycloidB: { + title: "Small circle radius", + min: 1, + }, } export default class Epicycloid extends Shape { constructor() { - super('Clover') - this.link = 'http://mathworld.wolfram.com/Epicycloid.html' - this.linkText = 'Wolfram Mathworld' + super("epicycloid") + this.label = "Clover" + this.link = "http://mathworld.wolfram.com/Epicycloid.html" + this.linkText = "Epicycloid at Wolfram Mathworld" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'epicycloid', epicycloidA: 4, epicycloidB: 1, - } + }, } } @@ -41,16 +38,16 @@ export default class Epicycloid extends Shape { let reduced = reduce(a, b) a = reduced[0] b = reduced[1] - let rotations = Number.isInteger(a/b) ? 1 : b - let scale = 1/(a + 2*b) + let rotations = Number.isInteger(a / b) ? 1 : b + let scale = 1 / (a + 2 * b) - for (let i=0; i<128*rotations; i++) { - let angle = Math.PI * 2.0 / 128.0 * i + for (let i = 0; i < 128 * rotations; i++) { + let angle = ((Math.PI * 2.0) / 128.0) * i points.push( new Victor( (a + b) * Math.cos(angle) - b * Math.cos(((a + b) / b) * angle), - (a + b) * Math.sin(angle) - b * Math.sin(((a + b) / b) * angle) - ).multiply({x: scale, y: scale}) + (a + b) * Math.sin(angle) - b * Math.sin(((a + b) / b) * angle), + ).multiply({ x: scale, y: scale }), ) } diff --git a/src/models/FancyText.js b/src/features/shapes/FancyText.js similarity index 52% rename from src/models/FancyText.js rename to src/features/shapes/FancyText.js index 94e47cc9..b91f6f14 100644 --- a/src/models/FancyText.js +++ b/src/features/shapes/FancyText.js @@ -1,66 +1,74 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' -import { subsample, centerOnOrigin, maxY, minY, horizontalAlign, findBounds, nearestVertex, findMinimumVertex } from '../common/geometry' -import { arrayRotate } from '../common/util' -import { pointsOnPath } from 'points-on-path' -import { getFont, supportedFonts } from '../features/fonts/fontsSlice' -import { getMachineInstance } from '../features/machine/computer' -import pointInPolygon from 'point-in-polygon' +import Victor from "victor" +import { arrayRotate } from "@/common/util" +import { pointsOnPath } from "points-on-path" +import pointInPolygon from "point-in-polygon" +import Shape from "./Shape" +import { + subsample, + centerOnOrigin, + maxY, + minY, + horizontalAlign, + findBounds, + nearestVertex, + findMinimumVertex, + dimensions, +} from "@/common/geometry" +import { connectMarkedVerticesAlongMachinePerimeter } from "@/features/machines/util" +import { getFont, supportedFonts } from "@/features/fonts/fontsSlice" const MIN_SPACING_MULTIPLIER = 1.2 -const SPECIAL_CHILDREN = ['i', 'j', '?'] +const SPECIAL_CHILDREN = ["i", "j", "?"] const options = { - ...shapeOptions, - ...{ - fancyText: { - title: 'Text', - type: 'textarea', + fancyText: { + title: "Text", + type: "textarea", + }, + fancyFont: { + title: "Font", + type: "dropdown", + choices: () => { + return Object.values(supportedFonts) }, - fancyFont: { - title: 'Font', - type: 'dropdown', - choices: () => { - return Object.values(supportedFonts) - }, - }, - fancyLineSpacing: { - title: 'Line spacing', - type: 'number', - step: 0.1 - }, - fancyConnectLines: { - title: 'Connect rows', - type: 'togglebutton', - choices: [ 'inside', 'outside' ] - }, - fancyAlignment: { - title: 'Alignment', - type: 'togglebutton', - choices: [ 'left', 'center', 'right' ] - } - } + }, + fancyLineSpacing: { + title: "Line spacing", + type: "number", + step: 0.5, + }, + fancyConnectLines: { + title: "Connect rows", + type: "togglebutton", + choices: ["inside", "outside"], + }, + fancyAlignment: { + title: "Alignment", + type: "togglebutton", + choices: ["left", "center", "right"], + }, } export default class FancyText extends Shape { constructor() { - super('Fancy Text') + super("fancyText") + this.label = "Fancy text" + this.usesMachine = true + this.usesFonts = true + this.stretch = true } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'fancy_text', - fancyText: 'Sandify', - fancyFont: 'Garamond', - fancyAlignment: 'left', - fancyConnectLines: 'inside', + fancyText: "Sandify", + fancyFont: "Garamond", + fancyAlignment: "left", + fancyConnectLines: "inside", fancyLineSpacing: 1.0, - repeatEnabled: false, - usesMachine: true, - usesFonts: true - } + maintainAspectRatio: true, + }, } } @@ -68,32 +76,78 @@ export default class FancyText extends Shape { const font = getFont(state.shape.fancyFont) if (font) { - let words = state.shape.fancyText.split("\n").filter(word => word.length > 0) - if (words.length === 0) { return [new Victor(0,0)] } + let words = state.shape.fancyText + .split("\n") + .filter((word) => word.length > 0) + if (words.length === 0) { + return [new Victor(0, 0)] + } - words = words.map(word => this.drawWord(word, font, state)) + words = words.map((word) => this.drawWord(word, font, state)) let { offsets, vertices } = this.addVerticalSpacing(words, font, state) horizontalAlign(vertices, state.shape.fancyAlignment) this.centerOnOrigin(vertices) - return this.connectWords(vertices, offsets, state).flat() + return state.creating + ? vertices.flat() // machine isn't available here + : this.connectWords(vertices, offsets, state).flat() } else { return [new Victor(0, 0)] } } + // After transformations are complete, connect words along perimeter. + finalizeVertices(vertices, state) { + if (!state.shape.dragging) { + return connectMarkedVerticesAlongMachinePerimeter(vertices, state.machine) + } else { + return vertices + } + } + + // hook to modify updates to a layer before they affect the state + handleUpdate(layer, changes) { + if ( + changes.fancyText !== undefined || + changes.fancyFont || + changes.fancyLineSpacing + ) { + // default "a" value handles the empty string case to prevent weird resizing + const newProps = { + ...layer, + fancyText: changes.fancyText || layer.fancyText || "a", + fancyFont: changes.fancyFont || layer.fancyFont, + } + const oldProps = { + ...layer, + fancyText: layer.fancyText || "a", + } + const oldVertices = this.getVertices({ shape: oldProps, creating: true }) + const vertices = this.getVertices({ shape: newProps, creating: true }) + const { width: oldWidth, height: oldHeight } = dimensions(oldVertices) + const { width, height } = dimensions(vertices) + + changes.width = + oldWidth === 0 ? this.startingWidth : (layer.width * width) / oldWidth + changes.height = + oldHeight == 0 + ? this.startingHeight + : (layer.height * height) / oldHeight + changes.aspectRatio = changes.width / layer.height + } + } + centerOnOrigin(vertices) { const bounds = findBounds(vertices.flat()) - vertices.forEach(vs => centerOnOrigin(vs, bounds)) + vertices.forEach((vs) => centerOnOrigin(vs, bounds)) } // use the specified connection method to draw lines to connect each row in a multi-row phrase connectWords(vertices, offsets, state) { - const machine = getMachineInstance([], state.machine) let newVertices = [] - for (let i=0; i 0) { @@ -101,22 +155,25 @@ export default class FancyText extends Shape { const next = currVertices[0] const prev = prevVertices[prevVertices.length - 1] - if (state.shape.fancyConnectLines === 'outside') { - // connect the two rows along the perimeter - const clipped = machine.clipLine(new Victor(prev.x - machine.sizeX*2, prev.y), - new Victor(prev.x + machine.sizeX*2, prev.y)) - const clipped2 = machine.clipLine(new Victor(next.x - machine.sizeX*2, next.y), - new Victor(next.x + machine.sizeX*2, next.y)) - - newVertices.push(clipped[1]) - newVertices.push(machine.tracePerimeter(clipped[1], clipped2[0])) - newVertices.push(clipped2[0]) + if (state.shape.fancyConnectLines === "outside") { + // mark this vertex; we will connect to the next vertice along the machine perimeter + // once all other transformations have happened + prev.connector = true + prev.hidden = true // don't render this line in the preview } else { // connect the two rows by drawing a horizontal line in the middle of the two rows - const lowest = prevVertices[findMinimumVertex(null, prevVertices, (val, v) => v.y)] - const highest = currVertices[findMinimumVertex(null, currVertices, (val, v) => -v.y)] - newVertices.push(new Victor(prev.x, lowest.y - (lowest.y - highest.y)/2)) - newVertices.push(new Victor(next.x, lowest.y - (lowest.y - highest.y)/2)) + const lowest = + prevVertices[findMinimumVertex(null, prevVertices, (val, v) => v.y)] + const highest = + currVertices[ + findMinimumVertex(null, currVertices, (val, v) => -v.y) + ] + newVertices.push( + new Victor(prev.x, lowest.y - (lowest.y - highest.y) / 2), + ) + newVertices.push( + new Victor(next.x, lowest.y - (lowest.y - highest.y) / 2), + ) } } newVertices.push(currVertices) @@ -130,24 +187,26 @@ export default class FancyText extends Shape { let yOffset = 0 const offsets = [] - const letterA = this.drawWord('A', font, state) + const letterA = this.drawWord("A", font, state) const minHeight = (maxY(letterA) - minY(letterA)) * MIN_SPACING_MULTIPLIER - for (let i=0; i new Victor(v.x, v.y - tempOffset))) + newVertices.push(currWord.map((v) => new Victor(v.x, v.y - tempOffset))) // offset height of each word by a fixed amount - const offset = Math.max(maxY(currWord) - minY(currWord), minHeight) + state.shape.fancyLineSpacing + const offset = + Math.max(maxY(currWord) - minY(currWord), minHeight) + + state.shape.fancyLineSpacing yOffset += offset offsets.push(offset) } return { vertices: newVertices, - offsets: offsets + offsets, } } @@ -159,16 +218,17 @@ export default class FancyText extends Shape { const sortedPaths = this.buildOrderedPaths(word, font) // draw paths, and connect them together - for (let i=0; i v.x) : - start = findMinimumVertex(null, points, (val, v) => -v.y) + start = + state.shape.fancyConnectLines === "outside" + ? findMinimumVertex(null, points, (val, v) => v.x) + : (start = findMinimumVertex(null, points, (val, v) => -v.y)) } // draw path @@ -178,9 +238,13 @@ export default class FancyText extends Shape { // draw children if (childPaths) { - for (let j=0; j -v.x) : - findMinimumVertex(null, loop, (val, v) => v.y) + const end = + state.shape.fancyConnectLines === "outside" + ? findMinimumVertex(null, loop, (val, v) => -v.x) + : findMinimumVertex(null, loop, (val, v) => v.y) pointsArr.push(this.shortestPathAroundLoop(start, end, loop)) } } @@ -225,7 +294,7 @@ export default class FancyText extends Shape { const segment = this.shortestPathAroundLoop(start, end, points) segment.push(new Victor(next.x, next.y)) - return { segment: segment, end: end, nextStart: nextStart } + return { segment, end, nextStart } } // renders text using an OpenType font and converts it to points we can draw @@ -239,7 +308,10 @@ export default class FancyText extends Shape { const path = font.getPath(text, x, y, fSize).toPathData() return pointsOnPath(path, tolerance, distance).map((path) => { - return subsample(path.map(pt => new Victor(pt[0], -pt[1])), .2) + return subsample( + path.map((pt) => new Victor(pt[0], -pt[1])), + 0.2, + ) }) } @@ -256,7 +328,10 @@ export default class FancyText extends Shape { } else { if (Math.abs(start - end) > loop.length / 2) { // go the other way around - return loop.slice(end, loop.length - 1).concat(loop.slice(0, start + 1)).reverse() + return loop + .slice(end, loop.length - 1) + .concat(loop.slice(0, start + 1)) + .reverse() } else { return loop.slice(start, end + 1) } @@ -267,10 +342,12 @@ export default class FancyText extends Shape { const graph = {} const points = this.convertTextToPoints(word, font) const childMap = this.findExternalChildren(word, font) - const polygons = points.map(pts => pts.map((pt) => [pt.x, pt.y])) + const polygons = points.map((pts) => pts.map((pt) => [pt.x, pt.y])) - for (let i=0; i { + idx = polygons.findIndex((polygon) => { return pointInPolygon(samplePoint, polygon) }) } @@ -301,7 +378,7 @@ export default class FancyText extends Shape { const childMap = {} let pos = 0 - for (let i=0; i 1) { @@ -320,7 +397,6 @@ export default class FancyText extends Shape { pos += paths.length } - return childMap } @@ -330,13 +406,16 @@ export default class FancyText extends Shape { // a possible (fully contained) child paths const graph = this.buildGraph(word, font) - return Object.keys(graph).sort( - (leftIndex, rightIndex) => { + return Object.keys(graph) + .sort((leftIndex, rightIndex) => { const leftPoints = graph[leftIndex].points const rightPoints = graph[rightIndex].points - return Math.min(...leftPoints.map(pt => pt.x)) - Math.min(...rightPoints.map(pt => pt.x)) + return ( + Math.min(...leftPoints.map((pt) => pt.x)) - + Math.min(...rightPoints.map((pt) => pt.x)) + ) }) - .map(key => graph[key]) + .map((key) => graph[key]) } getOptions() { diff --git a/src/features/shapes/FileImport.js b/src/features/shapes/FileImport.js new file mode 100644 index 00000000..b3b4707d --- /dev/null +++ b/src/features/shapes/FileImport.js @@ -0,0 +1,54 @@ +import { resizeVertices, dimensions, cloneVertices } from "@/common/geometry" +import { getMachine } from "@/features/machines/machineFactory" +import Shape from "./Shape" + +const options = { + fileName: { + title: "Source file", + type: "inputText", + plainText: "true", + }, +} + +export default class FileImport extends Shape { + constructor() { + super("fileImport") + this.label = "import" + this.usesMachine = true + this.selectGroup = "import" + } + + getInitialState(props) { + return { + ...super.getInitialState(), + ...{ + vertices: [], + maintainAspectRatio: true, + }, + ...(props === undefined + ? {} + : { + fileName: props.fileName, + vertices: props.vertices, + }), + } + } + + initialDimensions(props) { + const vertices = cloneVertices(props.vertices) + const machine = getMachine(props.machine) + + // default to 80% of machine size + resizeVertices(vertices, machine.width * 0.8, machine.height * 0.8) + + return dimensions(vertices) + } + + getVertices(state) { + return cloneVertices(state.shape.vertices) + } + + getOptions() { + return options + } +} diff --git a/src/features/shapes/Freeform.js b/src/features/shapes/Freeform.js new file mode 100644 index 00000000..68d3b131 --- /dev/null +++ b/src/features/shapes/Freeform.js @@ -0,0 +1,41 @@ +import Victor from "victor" +import Shape from "./Shape" + +const options = { + freeformPoints: { + title: "Points", + type: "input", + }, +} + +export default class Freeform extends Shape { + constructor() { + super("freeform") + this.startingWidth = 50 + this.startingHeight = 50 + } + + canChangeAspectRatio(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + freeformPoints: "-1,-1;-1,1;1,1", + }, + } + } + + getVertices(state) { + return state.shape.freeformPoints.split(";").map((pair) => { + const coordinates = pair.split(",") + return new Victor(coordinates[0], coordinates[1]) + }) + } + + getOptions() { + return options + } +} diff --git a/src/features/shapes/Heart.js b/src/features/shapes/Heart.js new file mode 100644 index 00000000..8995c640 --- /dev/null +++ b/src/features/shapes/Heart.js @@ -0,0 +1,38 @@ +import Victor from "victor" +import Shape from "./Shape" + +export default class Heart extends Shape { + constructor() { + super("heart") + this.label = "Heart" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + // no custom attributes + }, + } + } + + getVertices(state) { + const points = [] + for (let i = 0; i < 128; i++) { + let angle = ((Math.PI * 2.0) / 128.0) * i + let scale = 0.9 + // heart equation from: http://mathworld.wolfram.com/HeartCurve.html + points.push( + new Victor( + scale * 1.0 * Math.pow(Math.sin(angle), 3), + scale * + ((13.0 / 16.0) * Math.cos(angle) + + (-5.0 / 16.0) * Math.cos(2.0 * angle) + + (-2.0 / 16.0) * Math.cos(3.0 * angle) + + (-1.0 / 16.0) * Math.cos(4.0 * angle)), + ), + ) + } + return points + } +} diff --git a/src/models/Hypocycloid.js b/src/features/shapes/Hypocycloid.js similarity index 50% rename from src/models/Hypocycloid.js rename to src/features/shapes/Hypocycloid.js index 50cb5163..8671f88b 100644 --- a/src/models/Hypocycloid.js +++ b/src/features/shapes/Hypocycloid.js @@ -1,36 +1,33 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' -import { reduce } from '../common/util' +import Victor from "victor" +import { reduce } from "@/common/util" +import Shape from "./Shape" const options = { - ...shapeOptions, - ...{ - hypocycloidA: { - title: 'Large circle radius', - min: 1 - }, - hypocycloidB: { - title: 'Small circle radius', - min: 1 - }, - } + hypocycloidA: { + title: "Large circle radius", + min: 1, + }, + hypocycloidB: { + title: "Small circle radius", + min: 1, + }, } export default class Star extends Shape { constructor() { - super('Web') - this.link = 'http://mathworld.wolfram.com/Hypocycloid.html' - this.linkText = 'Wolfram Mathworld' + super("hypocycloid") + this.label = "Web" + this.link = "http://mathworld.wolfram.com/Hypocycloid.html" + this.linkText = "Hypocycloid at Wolfram Mathworld" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'hypocycloid', hypocycloidA: 6, hypocycloidB: 1, - } + }, } } @@ -41,16 +38,16 @@ export default class Star extends Shape { let reduced = reduce(a, b) a = reduced[0] b = reduced[1] - let rotations = Number.isInteger(a/b) ? 1 : b - let scale = b < a ? 1/a : 1/(2*(b - a/2)) + let rotations = Number.isInteger(a / b) ? 1 : b + let scale = b < a ? 1 / a : 1 / (2 * (b - a / 2)) - for (let i=0; i<128*rotations; i++) { - let angle = Math.PI * 2.0 / 128.0 * i + for (let i = 0; i < 128 * rotations; i++) { + let angle = ((Math.PI * 2.0) / 128.0) * i points.push( new Victor( (a - b) * Math.cos(angle) + b * Math.cos(((a - b) / b) * angle), - (a - b) * Math.sin(angle) - b * Math.sin(((a - b) / b) * angle) - ).multiply({x: scale, y: scale}) + (a - b) * Math.sin(angle) - b * Math.sin(((a - b) / b) * angle), + ).multiply({ x: scale, y: scale }), ) } diff --git a/src/features/shapes/NoiseWave.js b/src/features/shapes/NoiseWave.js new file mode 100644 index 00000000..7371beb0 --- /dev/null +++ b/src/features/shapes/NoiseWave.js @@ -0,0 +1,183 @@ +import Victor from "victor" +import noise from "@/common/noise" +import seedrandom from "seedrandom" +import { shapeSimilarity } from "curve-matcher" +import { offset } from "@/common/geometry" +import { getMachine } from "@/features/machines/machineFactory" +import Shape from "./Shape" + +const options = { + numParticles: { + title: "Number of waves", + min: 1, + }, + seed: { + title: "Random seed", + min: 1, + }, + noiseLevel: { + title: "Noise level", + min: 0, + max: 600, + step: 10, + }, + noiseType: { + title: "Type", + type: "dropdown", + choices: ["Perlin", "Simplex"], + }, +} + +export default class NoiseWave extends Shape { + constructor() { + super("noise_wave") + this.label = "Noise waves" + this.selectGroup = "Erasers" + this.usesMachine = true + this.autosize = false + } + + canMove(state) { + return false + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + noise: 1, + seed: 1, + noiseLevel: 0, + noiseType: "Perlin", + numParticles: 100, + }, + } + } + + getVertices(state) { + // without this adjustment, using an inverted circular mask causes clipping issues + const adjustment = 0.001 + const machineState = { + ...state.machine, + maxRadius: state.machine.maxRadius - adjustment, + } + const shape = state.shape + const rng = seedrandom(shape.seed) + const machine = getMachine(machineState) + const { sizeX, sizeY } = machine + let vertices = [] + + noise.seed(shape.seed) + + const particles = [] + for (let i = 0; i < shape.numParticles; i++) { + const p1 = { + x: sizeX * rng() - sizeX / 2, + y: sizeY * rng() - sizeY / 2, + a: 0, + } + + particles.push(p1) + particles.push({ + x: p1.x, + y: p1.y, + a: (2 * Math.PI) / 2, + }) + } + + const vertexGroups = particles.map((particle) => { + let group = [] + let wasInside = false + + // Arbitrarily choose 1000 iterations. This will stop particles that don't ever intersect with + // the machine. It needs to be high enough to always leave the machine for particles that + // don't move very fast. + for (let iterations = 0; iterations <= 1000; iterations++) { + // This has side effects on the particle + const newVertex = this.getParticleVertex(particle, shape) + group.push(newVertex) + + // Stop if we entered and then exited the machine coordinates. + const inside = machine.inBounds(newVertex) + if (wasInside && !inside) { + break + } + wasInside = inside + } + return group + }) + + let prevCurve + for (let j = 0; j < particles.length; j = j + 2) { + const curve = this.getCurve(vertexGroups, j) + + // Connect to the previous vertex, if there are any previous vertices. + if (vertices.length > 0) { + const start = vertices[vertices.length - 1] + const end = curve[0] + const startPerimeter = machine.nearestPerimeterVertex(start) + const endPerimeter = machine.nearestPerimeterVertex(end) + vertices = vertices.concat( + [ + startPerimeter, + machine.tracePerimeter(startPerimeter, endPerimeter), + endPerimeter, + end, + ].flat(), + ) + } + + if ( + !prevCurve || + shapeSimilarity(curve, prevCurve, { + estimationPoints: 100, + rotations: 0, + }) < + (state.shape.noiseSimilarity || 88) / 100 + ) { + vertices = vertices.concat(curve) + } + prevCurve = curve + } + + vertices = vertices.map((vertex) => { + return offset(vertex, -state.shape.x, -state.shape.y) + }) + + return vertices + } + + getCurve(vertexGroups, idx) { + const pEndVertices = vertexGroups[idx] + const pStartVertices = vertexGroups[idx + 1] + return pStartVertices.reverse().concat(pEndVertices) + } + + getParticleVertex(p, options) { + let periodDenominator = 600 - options.noiseLevel + if (options.noiseLevel >= 600) periodDenominator = 1 + const period = 1 / periodDenominator + const v = + options.noiseType === "Simplex" + ? noise.simplex2(p.x * period, p.y * period) + : noise.perlin2(p.x * period, p.y * period) + const a = v * 2 * Math.PI + p.a + + p.x += Math.cos(a) * 5 + p.y += Math.sin(a) * 5 + + return new Victor(p.x + options.x, p.y + options.y) + } + + getOptions() { + return options + } +} diff --git a/src/features/shapes/Point.js b/src/features/shapes/Point.js new file mode 100644 index 00000000..3fc84d25 --- /dev/null +++ b/src/features/shapes/Point.js @@ -0,0 +1,48 @@ +import Victor from "victor" +import Shape from "./Shape" + +export default class Point extends Shape { + constructor() { + super("point") + this.label = "Point" + this.startingWidth = 1 + this.startingHeight = 1 + this.shouldCache = false + this.autosize = false + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + // no custom attributes + }, + } + } + + getVertices(state) { + return [new Victor(0.0, 0.0)] + } + + finalizeVertices(vertices, state, options) { + if (!options.bounds) { + return vertices + } + + // used to calculate bounds of the shape to "hit" purposes in the preview + const point = vertices[0] + + return [ + new Victor(-20.0, -20.0).add(point), + new Victor(20.0, 20.0).add(point), + ] + } +} diff --git a/src/features/shapes/Polygon.js b/src/features/shapes/Polygon.js new file mode 100644 index 00000000..bb9400f5 --- /dev/null +++ b/src/features/shapes/Polygon.js @@ -0,0 +1,114 @@ +import Victor from "victor" +import Shape from "./Shape" + +const options = { + polygonSides: { + title: "Number of sides", + min: 3, + }, + roundCorners: { + title: "Round corners", + type: "checkbox", + }, + roundFraction: { + title: "Round fraction", + min: 0.05, + max: 0.5, + step: 0.025, + isVisible: (layer, state) => { + return state.roundCorners + }, + }, +} + +export default class Polygon extends Shape { + constructor() { + super("polygon") + this.label = "Polygon" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + type: "polygon", + polygonSides: 4, + roundCorners: false, + roundFraction: 0.25, + maintainAspectRatio: true, + }, + } + } + + getOptions() { + return options + } + + getVertices(state) { + // beta is the fraction to have rounded. + const beta = state.shape.roundFraction + // alpha is the fration to have straight. + const alpha = 1.0 - beta + let points = [] + for (let i = 0; i <= state.shape.polygonSides; i++) { + const angle = ((Math.PI * 2.0) / state.shape.polygonSides) * (0.5 + i) + if (state.shape.roundCorners && beta !== 0.0) { + // angles that make up the arc. + const angleStart = ((Math.PI * 2.0) / state.shape.polygonSides) * i + const angleEnd = ((Math.PI * 2.0) / state.shape.polygonSides) * (i + 1) + const angleResolution = 0.1 + if (points.length > 0) { + // Start with a line. We use a bunch of points for this, so they get stretch about evenly + // as the curves do. + const numberOfLinePoints = + (angleEnd - angleStart) / angleResolution / beta + points = points.concat( + this.getLineVertices( + points[points.length - 1], + new Victor( + alpha * Math.cos(angle) + beta * Math.cos(angleStart), + alpha * Math.sin(angle) + beta * Math.sin(angleStart), + ), + numberOfLinePoints, + ), + ) + } + if (i !== state.shape.polygonSides) { + // Create the arc. + for ( + let arcAngle = angleStart + angleResolution; + arcAngle <= angleEnd; + arcAngle += angleResolution + ) { + points.push( + new Victor( + alpha * Math.cos(angle) + beta * Math.cos(arcAngle), + alpha * Math.sin(angle) + beta * Math.sin(arcAngle), + ), + ) + } + } + } else { + // Not rounded corners. + points.push(new Victor(Math.cos(angle), Math.sin(angle))) + } + } + + return points + } + + // Returns a list of points from (start, end] along the line. + getLineVertices(startPoint, endPoint, numberOfPoints) { + const resolution = 1.0 / numberOfPoints + let points = [] + for (let d = resolution; d <= 1.0; d += resolution) { + points.push( + new Victor( + startPoint.x + (endPoint.x - startPoint.x) * d, + startPoint.y + (endPoint.y - startPoint.y) * d, + ), + ) + } + return points + } +} diff --git a/src/features/shapes/Reuleaux.js b/src/features/shapes/Reuleaux.js new file mode 100644 index 00000000..9c70683b --- /dev/null +++ b/src/features/shapes/Reuleaux.js @@ -0,0 +1,60 @@ +import Victor from "victor" +import Shape from "./Shape" + +const options = { + reuleauxSides: { + title: "Number of sides", + step: 1, + min: 2, + }, +} + +export default class Reuleaux extends Shape { + constructor() { + super("reuleaux") + this.label = "Reuleaux" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + reuleauxSides: 3, + }, + } + } + + getVertices(state) { + let points = [] + // Construct an equalateral triangle + let corners = [] + // Initial location at PI/2 + let angle = Math.PI / 2.0 + // How much of the circle in one side? + let coverageAngle = Math.PI / state.shape.reuleauxSides + let halfCoverageAngle = 0.5 * coverageAngle + for (let c = 0; c < state.shape.reuleauxSides; c++) { + let startAngle = angle + Math.PI - halfCoverageAngle + corners.push([new Victor(Math.cos(angle), Math.sin(angle)), startAngle]) + angle += (2.0 * Math.PI) / state.shape.reuleauxSides + } + let length = 0.5 / Math.cos(Math.PI / 2.0 / state.shape.reuleauxSides) + const scale = 1.7 + for (let corn = 0; corn < corners.length; corn++) { + for (let i = 0; i < 128; i++) { + let angle = coverageAngle * (i / 128.0) + corners[corn][1] + points.push( + new Victor( + scale * (length * corners[corn][0].x + Math.cos(angle)), + scale * (length * corners[corn][0].y + Math.sin(angle)), + ), + ) + } + } + return points + } + + getOptions() { + return options + } +} diff --git a/src/models/Rose.js b/src/features/shapes/Rose.js similarity index 51% rename from src/models/Rose.js rename to src/features/shapes/Rose.js index a00f0940..ff9c18dd 100644 --- a/src/models/Rose.js +++ b/src/features/shapes/Rose.js @@ -1,38 +1,35 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' +import Victor from "victor" +import Shape from "./Shape" const options = { - ...shapeOptions, - ...{ - roseN: { - title: 'Numerator', - step: 1, - min: 1 - }, - roseD: { - title: 'Denominator', - step: 1, - min: 1 - }, - } + roseN: { + title: "Numerator", + step: 1, + min: 1, + }, + roseD: { + title: "Denominator", + step: 1, + min: 1, + }, } export default class Rose extends Shape { constructor() { - super('Rose') - this.link = 'http://mathworld.wolfram.com/Rose.html' - this.linkText = 'Wolfram Mathworld' + super("rose") + this.label = "Rose" + this.link = "http://mathworld.wolfram.com/Rose.html" + this.linkText = "Rose at Wolfram Mathworld" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'rose', roseN: 3, roseD: 2, - transformMethod: 'intact', - } + transformMethod: "intact", + }, } } @@ -41,12 +38,12 @@ export default class Rose extends Shape { let a = 2 let n = parseInt(state.shape.roseN) let d = parseInt(state.shape.roseD) - let p = (n * d % 2 === 0) ? 2 : 1 + let p = (n * d) % 2 === 0 ? 2 : 1 let thetaClose = d * p * 32 * n let resolution = 64 * n - for (let i=0; i { + return n.length + }, + max: 500000, +}) + +export default class Shape extends Model { + constructor(type) { + super(type) + this.cache = [] + + Object.assign(this, { + selectGroup: "Shapes", + shouldCache: true, + autosize: true, + startingWidth: 100, + startingHeight: 100, + maintainAspectRatio: false, + }) + } + + // calculates the initial dimensions of the model + initialDimensions(props) { + const { width, height } = this.recalculateDimensions( + props, + this.startingWidth, + this.startingHeight, + ) + return { + width, + height, + aspectRatio: width / height, + } + } + + recalculateDimensions(props, width, height) { + if (this.autosize) { + const vertices = this.initialVertices(props) + + resizeVertices(vertices, width, height, false) + + return dimensions(vertices) + } else { + return { + width, + height, + } + } + } + + // returns an array of vertices used to calculate the initial width and height of a model + initialVertices(props) { + return this.getVertices({ + shape: this.getInitialState(props), + creating: true, + }) + } + + getCacheKey(state) { + // include only model values in key + const cacheState = { ...state } + cacheState.shape = pick(cacheState.shape, Object.keys(this.getOptions())) + cacheState.type = state.shape.type + cacheState.dragging = state.shape.dragging + + return JSON.stringify(cacheState) + } + + // override as needed; returns an array of Victor vertices that render + // the shape with the specific options + getVertices(state) { + return [] + } + + getCachedVertices(state) { + if (this.shouldCache) { + const key = this.getCacheKey(state) + let vertices = cache.get(key) + + if (!vertices) { + vertices = this.getVertices(state) + + if (vertices.length > 1) { + cache.set(key, vertices) + } + } + + // return a copy of these vertices even though it's coming from the cache, because + // downstream logic is modifying them directly; it's the computation of the vertices + // that can be expensive, not the copying. + return cloneVertices(vertices) + } else { + return this.getVertices(state) + } + } + + // override as needed to do final vertex modifications after all layer transformations are + // complete. Returns an array of vertices. + finalizeVertices(vertices, state) { + return vertices + } + + // override as needed; hook to modify updates to a layer before they affect the state + handleUpdate(changes) { + // default is to do nothing + } +} diff --git a/src/features/shapes/Star.js b/src/features/shapes/Star.js new file mode 100644 index 00000000..03b76f54 --- /dev/null +++ b/src/features/shapes/Star.js @@ -0,0 +1,50 @@ +import Victor from "victor" +import Shape from "./Shape" + +const options = { + points: { + title: "Number of points", + min: 2, + }, + starRatio: { + title: "Size of points", + step: 0.05, + min: 0.05, + }, +} + +export default class Star extends Shape { + constructor() { + super("star") + this.label = "Star" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + points: 5, + starRatio: 0.5, + }, + } + } + + getOptions() { + return options + } + + getVertices(state) { + let points = [] + for (let i = 0; i <= state.shape.points * 2; i++) { + let angle = ((Math.PI * 2.0) / (2.0 * state.shape.points)) * i + let star_scale = 1.0 + if (i % 2 === 0) { + star_scale *= state.shape.starRatio + } + points.push( + new Victor(star_scale * Math.cos(angle), star_scale * Math.sin(angle)), + ) + } + return points + } +} diff --git a/src/models/Wiper.js b/src/features/shapes/Wiper.js similarity index 66% rename from src/models/Wiper.js rename to src/features/shapes/Wiper.js index 7db1cc49..de50c707 100644 --- a/src/models/Wiper.js +++ b/src/features/shapes/Wiper.js @@ -1,37 +1,37 @@ -import { degToRad } from '../common/geometry' -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' +import { degToRad } from "@/common/geometry" +import Victor from "victor" +import Shape from "./Shape" +import { getMachine } from "@/features/machines/machineFactory" const options = { - ...shapeOptions, - ...{ - wiperType: { - title: 'Type', - type: 'togglebutton', - choices: ['Lines', 'Spiral'], + wiperType: { + title: "Wiper type", + type: "togglebutton", + choices: ["Lines", "Spiral"], + }, + wiperSize: { + title: "Wiper size", + min: 1, + }, + wiperAngleDeg: { + title: "Wiper angle", + isVisible: (layer, state) => { + return state.wiperType === "Lines" }, - wiperSize: { - title: 'Wiper size', - min: 1 - }, - wiperAngleDeg: { - title: 'Wiper angle', - isVisible: (state) => { return state.wiperType === 'Lines' }, - }, - } + }, } const outOfBounds = (point, width, height) => { - if (point.x < -width/2.0) { + if (point.x < -width / 2.0) { return true } - if (point.y < -height/2.0) { + if (point.y < -height / 2.0) { return true } - if (point.x > width/2.0) { + if (point.x > width / 2.0) { return true } - if (point.y > height/2.0) { + if (point.y > height / 2.0) { return true } return false @@ -44,7 +44,7 @@ function boundPoint(good, bad, size_x, size_y) { var dx = good.x - bad.x var dy = good.y - bad.y - var fixed = Victor(bad.x, bad.y) + var fixed = new Victor(bad.x, bad.y) var distance = 0 if (bad.x < -size_x || bad.x > size_x) { if (bad.x < -size_x) { @@ -82,11 +82,12 @@ function nearEnough(end, point) { function spiralVertices(state) { // Determine the max radius - let maxRadius = state.machine.maxRadius - if (state.machine.rectangular) { - const halfHeight = (state.machine.maxY - state.machine.minY)/2.0 - const halfWidth = (state.machine.maxX - state.machine.minX)/2.0 - maxRadius = Math.sqrt(Math.pow(halfHeight, 2.0) + Math.pow(halfWidth, 2.0)) + const machine = getMachine(state.machine) + const { height, width } = machine + let { maxRadius, type } = state.machine + + if (type === "rectangular") { + maxRadius = Math.sqrt(Math.pow(height / 2, 2.0) + Math.pow(width / 2, 2.0)) } let vertices = [] @@ -98,10 +99,12 @@ function spiralVertices(state) { while (radius <= maxRadius) { // Save where we are right now. - vertices.push(new Victor(radius * Math.cos(angle), radius * Math.sin(angle))) + vertices.push( + new Victor(radius * Math.cos(angle), radius * Math.sin(angle)), + ) // We want to have the next point be about the right arc length. - let deltaAngle = arcLength / radius * 2.0 * Math.PI + let deltaAngle = (arcLength / radius) * 2.0 * Math.PI // Limit this at small radii deltaAngle = Math.min(deltaAngle, 0.1) @@ -133,7 +136,7 @@ function linearVertices(state) { let width = 1 let outputVertices = [] let machine = state.machine - if (machine.rectangular) { + if (machine.type === "rectangular") { height = machine.maxY - machine.minY width = machine.maxX - machine.minX } else { @@ -141,7 +144,7 @@ function linearVertices(state) { width = height } - let startLocation = Victor(-width/2.0, height/2.0) + let startLocation = new Victor(-width / 2.0, height / 2.0) let cosa = Math.cos(angle) let sina = Math.sin(angle) @@ -152,24 +155,26 @@ function linearVertices(state) { if (Math.abs(sina) < 1.0e-10) { sina = 1.0e-10 } - let orig_delta_w = Victor(state.shape.wiperSize / cosa, 0.0) - let orig_delta_h = Victor(0.0, -state.shape.wiperSize / sina) + let orig_delta_w = new Victor(state.shape.wiperSize / cosa, 0.0) + let orig_delta_h = new Victor(0.0, -state.shape.wiperSize / sina) - if (angle > Math.PI/4.0 && angle < 0.75 * Math.PI) { + if (angle > Math.PI / 4.0 && angle < 0.75 * Math.PI) { // flip the logic of x,y let temp = orig_delta_w.clone() orig_delta_w = orig_delta_h.clone() orig_delta_h = temp } - if (angle > Math.PI/2.0) { - startLocation = Victor(-width/2.0, -height/2.0) + if (angle > Math.PI / 2.0) { + startLocation = new Victor(-width / 2.0, -height / 2.0) orig_delta_w = orig_delta_w.clone().multiply(Victor(-1.0, -1.0)) orig_delta_h = orig_delta_h.clone().multiply(Victor(-1.0, -1.0)) } let delta_w = orig_delta_w let delta_h = orig_delta_h let endLocation = startLocation.clone().multiply(Victor(-1.0, -1.0)) + outputVertices.push(startLocation) + let nextWidthPoint = startLocation let nextHeightPoint = startLocation @@ -180,12 +185,22 @@ function linearVertices(state) { // "right" nextWidthPoint = nextWidthPoint.clone().add(delta_w) if (outOfBounds(nextWidthPoint, width, height)) { - let corner = boundPoint(nextWidthPoint.clone().subtract(delta_w), nextWidthPoint, width/2.0, height/2.0) + let corner = boundPoint( + nextWidthPoint.clone().subtract(delta_w), + nextWidthPoint, + width / 2.0, + height / 2.0, + ) outputVertices.push(corner) if (nearEnough(endLocation, corner)) { break } - nextWidthPoint = boundPoint(nextHeightPoint, nextWidthPoint, width/2.0, height/2.0) + nextWidthPoint = boundPoint( + nextHeightPoint, + nextWidthPoint, + width / 2.0, + height / 2.0, + ) delta_w = orig_delta_h } outputVertices.push(nextWidthPoint) @@ -196,7 +211,12 @@ function linearVertices(state) { // "down-left" nextHeightPoint = nextHeightPoint.clone().add(delta_h) if (outOfBounds(nextHeightPoint, width, height)) { - nextHeightPoint = boundPoint(nextWidthPoint, nextHeightPoint, width/2.0, height/2.0) + nextHeightPoint = boundPoint( + nextWidthPoint, + nextHeightPoint, + width / 2.0, + height / 2.0, + ) delta_h = orig_delta_w } outputVertices.push(nextHeightPoint) @@ -211,12 +231,22 @@ function linearVertices(state) { break } if (outOfBounds(nextHeightPoint, width, height)) { - let corner = boundPoint(nextHeightPoint.clone().subtract(delta_h), nextHeightPoint, width/2.0, height/2.0) + let corner = boundPoint( + nextHeightPoint.clone().subtract(delta_h), + nextHeightPoint, + width / 2.0, + height / 2.0, + ) outputVertices.push(corner) if (nearEnough(endLocation, corner)) { break } - nextHeightPoint = boundPoint(nextWidthPoint, nextHeightPoint, width/2.0, height/2.0) + nextHeightPoint = boundPoint( + nextWidthPoint, + nextHeightPoint, + width / 2.0, + height / 2.0, + ) delta_h = orig_delta_w } outputVertices.push(nextHeightPoint) @@ -231,7 +261,12 @@ function linearVertices(state) { break } if (outOfBounds(nextWidthPoint, width, height)) { - nextWidthPoint = boundPoint(nextHeightPoint, nextWidthPoint, width/2.0, height/2.0) + nextWidthPoint = boundPoint( + nextHeightPoint, + nextWidthPoint, + width / 2.0, + height / 2.0, + ) delta_w = orig_delta_h } } @@ -240,30 +275,39 @@ function linearVertices(state) { export default class Wiper extends Shape { constructor() { - super('Wiper') + super("wiper") + this.label = "Wiper" + this.selectGroup = "Erasers" + this.usesMachine = true + this.shouldCache = false + this.autosize = false + } + + canMove(state) { + return false + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'wiper', wiperAngleDeg: 15, wiperSize: 4, - wiperType: 'Lines', - selectGroup: 'Erasers', - canTransform: false, - canChangeSize: false, - shouldCache: false, - autosize: false, - usesMachine: true, - repeatEnabled: false, - } + wiperType: "Lines", + }, } } getVertices(state) { - if (state.shape.wiperType === 'Lines') { + if (state.shape.wiperType === "Lines") { return linearVertices(state) } else { return spiralVertices(state) diff --git a/src/models/circle_packer/Circle.js b/src/features/shapes/circle_packer/Circle.js similarity index 71% rename from src/models/circle_packer/Circle.js rename to src/features/shapes/circle_packer/Circle.js index 60325b04..528c4c2d 100644 --- a/src/models/circle_packer/Circle.js +++ b/src/features/shapes/circle_packer/Circle.js @@ -1,4 +1,4 @@ -import Victor from 'victor' +import Victor from "victor" export class Circle extends Victor { constructor(x, y, r, state) { @@ -8,7 +8,9 @@ export class Circle extends Victor { this.r = r || 30 this.state = state this.growing = this.state.growing - if (this.growing == null) { this.growing = true } + if (this.growing == null) { + this.growing = true + } this.theta = null this.center = new Victor(0, 0) } @@ -22,7 +24,9 @@ export class Circle extends Victor { outOfBounds(radius) { radius ||= this.state.inBounds ? this.r : 0 - return this.state.rectangular ? this.outOfRectangularBounds(radius) : this.outOfPolarBounds(radius) + return this.state.rectangular + ? this.outOfRectangularBounds(radius) + : this.outOfPolarBounds(radius) } outOfPolarBounds(radius) { @@ -48,13 +52,20 @@ export class Circle extends Victor { intersection(circle) { let a = circle.r var b = this.r - var c = Math.sqrt((this.x-circle.x)*(this.x-circle.x)+(this.y-circle.y)*(this.y-circle.y)) - var d = (b*b+c*c-a*a)/(2*c) - var h = Math.sqrt(b*b-d*d) - const i1 = (circle.x-this.x)*d/c + (circle.y-this.y)*h/c + this.x - const i2 = (circle.y-this.y)*d/c - (circle.x-this.x)*h/c + this.y - const i3 = (circle.x-this.x)*d/c - (circle.y-this.y)*h/c + this.x - const i4 = (circle.y-this.y)*d/c + (circle.x-this.x)*h/c + this.y + var c = Math.sqrt( + (this.x - circle.x) * (this.x - circle.x) + + (this.y - circle.y) * (this.y - circle.y), + ) + var d = (b * b + c * c - a * a) / (2 * c) + var h = Math.sqrt(b * b - d * d) + const i1 = + ((circle.x - this.x) * d) / c + ((circle.y - this.y) * h) / c + this.x + const i2 = + ((circle.y - this.y) * d) / c - ((circle.x - this.x) * h) / c + this.y + const i3 = + ((circle.x - this.x) * d) / c - ((circle.y - this.y) * h) / c + this.x + const i4 = + ((circle.y - this.y) * d) / c + ((circle.x - this.x) * h) / c + this.y const ret = [] if (!isNaN(i1)) { @@ -91,7 +102,7 @@ export class Circle extends Victor { c = sq(this.y) + sq(p1.x - this.x) - sq(this.r) } else { a = 1 + sq(m) - b = -this.x * 2 + (m * (n - this.y)) * 2 + b = -this.x * 2 + m * (n - this.y) * 2 c = sq(this.x) + sq(n - this.y) - sq(this.r) } @@ -101,7 +112,7 @@ export class Circle extends Victor { // insert into quadratic formula let intersections = [ (-b + Math.sqrt(sq(b) - 4 * a * c)) / (2 * a), - (-b - Math.sqrt(sq(b) - 4 * a * c)) / (2 * a) + (-b - Math.sqrt(sq(b) - 4 * a * c)) / (2 * a), ] if (d === 0) { @@ -109,9 +120,9 @@ export class Circle extends Victor { } if (p2.x - p1.x === 0) { - return intersections.map(y => new Victor(p1.x, y)) + return intersections.map((y) => new Victor(p1.x, y)) } else { - return intersections.map(x => new Victor(x, m * x + n)) + return intersections.map((x) => new Victor(x, m * x + n)) } } @@ -126,7 +137,9 @@ export class Circle extends Victor { this.lineIntersection(p1, p2), this.lineIntersection(p2, p3), this.lineIntersection(p3, p4), - this.lineIntersection(p4, p1) - ].flat().filter(n => n && n.y !== Infinity && n.y !== -Infinity) + this.lineIntersection(p4, p1), + ] + .flat() + .filter((n) => n && n.y !== Infinity && n.y !== -Infinity) } } diff --git a/src/models/circle_packer/CirclePacker.js b/src/features/shapes/circle_packer/CirclePacker.js similarity index 68% rename from src/models/circle_packer/CirclePacker.js rename to src/features/shapes/circle_packer/CirclePacker.js index c41d89a2..ae766b7b 100644 --- a/src/models/circle_packer/CirclePacker.js +++ b/src/features/shapes/circle_packer/CirclePacker.js @@ -1,64 +1,69 @@ -import seedrandom from 'seedrandom' -import Shape, { shapeOptions } from '../Shape' -import { Circle } from './Circle' -import Graph from '../../common/Graph' -import { circle, arc } from '../../common/geometry' -import { getMachineInstance } from '../../features/machine/computer' -import Victor from 'victor' +import seedrandom from "seedrandom" +import Shape from "../Shape" +import { Circle } from "./Circle" +import Graph from "@/common/Graph" +import { circle, arc } from "@/common/geometry" +import { closest, farthest } from "@/common/proximity" +import { getMachine } from "@/features/machines/machineFactory" +import Victor from "victor" const ROUNDS = 100 // default number of rounds to attempt to create and grow circles const RECTANGULAR_ATTEMPTS_MULTIPLIER = 4 const ATTEMPTS_MODIFIER = 5 const options = { - ...shapeOptions, - ...{ - seed: { - title: 'Random seed', - min: 1 - }, - startingRadius: { - title: 'Minimum radius', - min: 3 - }, - attempts: { - title: 'Circle uniformity', - min: 1, - max: 100, - step: 4 - }, - inBounds: { - title: 'Stay in bounds', - type: 'checkbox' - } - } + seed: { + title: "Random seed", + min: 1, + }, + startingRadius: { + title: "Minimum radius", + min: 3, + }, + attempts: { + title: "Circle uniformity", + min: 1, + max: 100, + step: 4, + }, + inBounds: { + title: "Stay in bounds", + type: "checkbox", + }, } // adapted initially from Coding Challenge #50; Animated Circle Packing, https://www.youtube.com/watch?v=QHEQuoIKgNE // no license was specified export default class CirclePacker extends Shape { constructor() { - super('Circle Packer') + super("circlePacker") + this.label = "Circle packer" + this.usesMachine = true + this.autosize = false + this.selectGroup = "Erasers" + } + + canMove(state) { + return false + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'circle_packer', - selectGroup: 'Erasers', seed: 1, startingRadius: 4, attempts: 20, - canTransform: false, inBounds: false, - usesMachine: true, - repeatEnabled: false, - canChangeSize: false, - canRotate: false, - canMove: false, - autosize: false, - } + }, } } @@ -77,12 +82,17 @@ export default class CirclePacker extends Shape { minX: machine.minX, minY: machine.minY, maxRadius: machine.maxRadius, - rectangular: machine.rectangular, + rectangular: machine.type === "rectangular", attempts: state.shape.attempts, r: state.shape.startingRadius, - inBounds: state.shape.inBounds + inBounds: state.shape.inBounds, } - this.boundaryCircle = new Circle(0, 0, this.settings.maxRadius, this.settings) + this.boundaryCircle = new Circle( + 0, + 0, + this.settings.maxRadius, + this.settings, + ) this.boundaryRectangle = [ new Victor(-this.settings.width / 2, -this.settings.height / 2), new Victor(this.settings.width / 2, -this.settings.height / 2), @@ -101,9 +111,7 @@ export default class CirclePacker extends Shape { // experimental setupCircles() { - const circles = [ - new Circle(0, 0, 75, { ...this.settings, growing: false }), - ] + const circles = [new Circle(0, 0, 75, { ...this.settings, growing: false })] for (const c of circles) { this.addCircle(c) @@ -113,14 +121,16 @@ export default class CirclePacker extends Shape { // generate random circles within machine bounds. Grow them incrementally. If a circle collides // with another, stop them growing. Repeat. createCircles() { - let attempts = this.settings.rectangular ? - this.settings.attempts * RECTANGULAR_ATTEMPTS_MULTIPLIER : - this.settings.attempts - if (attempts <= 0) { attempts = 1 } + let attempts = this.settings.rectangular + ? this.settings.attempts * RECTANGULAR_ATTEMPTS_MULTIPLIER + : this.settings.attempts + if (attempts <= 0) { + attempts = 1 + } const rounds = Math.floor(ROUNDS * (ROUNDS / attempts)) - for (let round=0; round circle.perimeter) + this.perimeterCircles = this.circles.filter((circle) => circle.perimeter) } // ensure that we have a fully connected graph to walk connectOrphans() { - this.perimeterCircles.forEach (circle => this.markConnected(circle)) + this.perimeterCircles.forEach((circle) => this.markConnected(circle)) const center = new Victor(0, 0) - let orphans = this.circles.filter(circle => !circle.connected) - let connected = this.circles.filter(circle => circle.connected) + let orphans = this.circles.filter((circle) => !circle.connected) + let connected = this.circles.filter((circle) => circle.connected) - while(orphans.length > 0) { + while (orphans.length > 0) { // find orphan furthest from center (closest to perimeter) - const orphan = this.farthest(orphans, center) + const orphan = farthest(orphans, center) // find connected circle closest to that orphan - const connector = this.closest(connected, orphan) + const connector = closest(connected, orphan) // connect them this.graph.addEdge(orphan, connector) this.markConnected(orphan) // repeat - orphans = orphans.filter(circle => !circle.connected) - connected = this.circles.filter(circle => circle.connected) + orphans = orphans.filter((circle) => !circle.connected) + connected = this.circles.filter((circle) => circle.connected) } } // start with a perimeter circle, draw it and any neighboring circles recursively. Repeat. drawCircles() { - let curr = this.circles.find(circle => circle.perimeter) + let curr = this.circles.find((circle) => circle.perimeter) let prev = curr let intersection = this.boundaryIntersection(curr) let angle = Math.atan2(intersection.y - curr.y, intersection.x - curr.x) @@ -171,7 +181,7 @@ export default class CirclePacker extends Shape { this.drawCircle(curr, angle) angle = this.walk(curr, angle, stack) prev = curr - curr = this.perimeterCircles.find(circle => !circle.walked) + curr = this.perimeterCircles.find((circle) => !circle.walked) if (curr) { angle = this.connectAlongPerimeter(prev, curr, angle) @@ -201,11 +211,11 @@ export default class CirclePacker extends Shape { let valid = !possibleC.outOfBounds() if (valid) { - for (let i=0; i< this.circles.length; i++) { + for (let i = 0; i < this.circles.length; i++) { const c = this.circles[i] let d = possibleC.distance(c) - if (d < (c.r + possibleC.r)) { + if (d < c.r + possibleC.r) { valid = false break } @@ -217,13 +227,13 @@ export default class CirclePacker extends Shape { growCircles() { if (this.circles.length > 1) { - while (this.circles.filter(circle => circle.growing).length > 0) { - this.circles.forEach(c => { + while (this.circles.filter((circle) => circle.growing).length > 0) { + this.circles.forEach((c) => { if (c.growing) { if (c.outOfBounds()) { c.growing = false } else { - this.circles.forEach(other => { + this.circles.forEach((other) => { if (c !== other) { let d = c.distance(other) if (d < c.r + other.r) { @@ -260,8 +270,8 @@ export default class CirclePacker extends Shape { } drawConnectingArc(from, to, startingAngle) { - const li1 = this.closest(from.lineIntersection(from, to), to) - const li2 = this.closest(to.lineIntersection(from, to), from) + const li1 = closest(from.lineIntersection(from, to), to) + const li2 = closest(to.lineIntersection(from, to), from) const a2 = Math.atan2(li1.y - from.y, li1.x - from.x) const a3 = Math.atan2(li2.y - to.y, li2.x - to.x) @@ -293,12 +303,12 @@ export default class CirclePacker extends Shape { if (stack.length > 0) { const p1 = stack[0] - const li1 = this.closest(c.lineIntersection(c, p1), c) + const li1 = closest(c.lineIntersection(c, p1), c) a1 = Math.atan2(li1.y - p1.y, li1.x - p1.x) if (stack.length > 1) { const p2 = stack[1] - const li2 = this.closest(p1.lineIntersection(p1, p2), p2) + const li2 = closest(p1.lineIntersection(p1, p2), p2) a2 = Math.atan2(li2.y - p1.y, li2.x - p1.x) this.points.push(...arc(p1.r, a1, a2, p1.x, p1.y)) @@ -319,7 +329,10 @@ export default class CirclePacker extends Shape { this.points.push(...arc(c.r, angle, a2, c.x, c.y)) // connect along perimeter - const machine = getMachineInstance([], this.settings) + const machine = getMachine({ + ...this.settings, + type: this.settings.rectangular ? "rectangular" : "polar", + }) this.points.push(...machine.tracePerimeter(intersection, intersection2)) this.points.push(intersection2) @@ -340,16 +353,6 @@ export default class CirclePacker extends Shape { this.graph.addNode(c) } - // returns the point in arr that is farthest to a given point - farthest(arr, point) { - return arr.reduce((max, x, i, arr) => x.distance(point) > max.distance(point) ? x : max, arr[0]) - } - - // returns the point in arr that is closest to a given point - closest(arr, point) { - return arr.reduce((max, x, i, arr) => x.distance(point) < max.distance(point) ? x : max, arr[0]) - } - getOptions() { return options } diff --git a/src/models/fractal_spirograph/FractalSpirograph.js b/src/features/shapes/fractal_spirograph/FractalSpirograph.js similarity index 54% rename from src/models/fractal_spirograph/FractalSpirograph.js rename to src/features/shapes/fractal_spirograph/FractalSpirograph.js index 4cc63c6c..02aaefe4 100644 --- a/src/models/fractal_spirograph/FractalSpirograph.js +++ b/src/features/shapes/fractal_spirograph/FractalSpirograph.js @@ -1,67 +1,64 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from '../Shape' -import Orbit from './Orbit' +import Victor from "victor" +import Shape from "../Shape" +import Orbit from "./Orbit" const options = { - ...shapeOptions, - ...{ - fractalSpirographVelocity: { - title: 'Velocity', - min: 2 - }, - fractalSpirographResolution: { - title: 'Resolution', - min: 1 - }, - fractalSpirographNumCircles: { - title: 'Number of circles', - min: 1, - max: 6 - }, - fractalSpirographRelativeSize: { - title: 'Relative size (parent to child circle)', - min: 2, - max: 6 - }, - fractalSpirographAlternateRotation: { - title: 'Alternate rotation direction', - type: 'checkbox' - }, - } + fractalSpirographVelocity: { + title: "Velocity", + min: 2, + }, + fractalSpirographResolution: { + title: "Resolution", + min: 1, + }, + fractalSpirographNumCircles: { + title: "Number of circles", + min: 1, + max: 6, + }, + fractalSpirographRelativeSize: { + title: "Relative size (parent to child circle)", + min: 2, + max: 6, + }, + fractalSpirographAlternateRotation: { + title: "Alternate rotation direction", + type: "checkbox", + }, } // Inspired/adapted from https://thecodingtrain.com/CodingChallenges/061-fractal-spirograph // No license was specified. export default class FractalSpirograph extends Shape { constructor() { - super('Fractal Spirograph') - this.link = 'https://benice-equation.blogspot.com/2012/01/fractal-spirograph.html' - this.linkText = 'Fun math art (pictures) - benice equation' + super("fractalSpirograph") + this.label = "Fractal spirograph" + this.link = + "https://benice-equation.blogspot.com/2012/01/fractal-spirograph.html" + this.linkText = "this blog post on benice equations" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'fractal_spirograph', fractalSpirographVelocity: 8, fractalSpirographResolution: 2, fractalSpirographNumCircles: 5, fractalSpirographRelativeSize: 3, fractalSpirographAlternateRotation: true, - repeatEnabled: false, - } + }, } } getVertices(state) { let resolution = parseInt(state.shape.fractalSpirographResolution) let settings = { - resolution: resolution, + resolution, velocity: parseInt(state.shape.fractalSpirographVelocity), numCircles: parseInt(state.shape.fractalSpirographNumCircles), relativeSize: parseInt(state.shape.fractalSpirographRelativeSize), - alternateRotation: state.shape.fractalSpirographAlternateRotation + alternateRotation: state.shape.fractalSpirographAlternateRotation, } let sun = new Orbit(0, 0, 1, 0, settings) @@ -69,13 +66,13 @@ export default class FractalSpirograph extends Shape { let end let points = [] - for (var i=0; i point.multiply({x: scale, y: scale })) + points.forEach((point) => point.multiply({ x: scale, y: scale })) return points } diff --git a/src/models/fractal_spirograph/Orbit.js b/src/features/shapes/fractal_spirograph/Orbit.js similarity index 70% rename from src/models/fractal_spirograph/Orbit.js rename to src/features/shapes/fractal_spirograph/Orbit.js index 2d41752c..d428c160 100644 --- a/src/models/fractal_spirograph/Orbit.js +++ b/src/features/shapes/fractal_spirograph/Orbit.js @@ -4,12 +4,15 @@ export default class Orbit { this.y = y this.r = r this.child = null - this.angle = Math.PI/2 + this.angle = Math.PI / 2 this.level = level this.settings = settings let sign = this.settings.alternateRotation ? -1 : 1 - this.speed = Math.pow(settings.velocity * sign, this.level - 1) * Math.PI / 180 / settings.resolution + this.speed = + (Math.pow(settings.velocity * sign, this.level - 1) * Math.PI) / + 180 / + settings.resolution this.parent = parent } @@ -17,7 +20,14 @@ export default class Orbit { let newr = this.r / this.settings.relativeSize let newx = this.x + this.r + newr let newy = this.y - this.child = new Orbit(newx, newy, newr, this.level + 1, this.settings, this) + this.child = new Orbit( + newx, + newy, + newr, + this.level + 1, + this.settings, + this, + ) return this.child } diff --git a/src/features/shapes/input_text/Fonts.js b/src/features/shapes/input_text/Fonts.js new file mode 100644 index 00000000..b748b848 --- /dev/null +++ b/src/features/shapes/input_text/Fonts.js @@ -0,0 +1,693 @@ +import Victor from "victor" +import { raysol_cursive } from "./raysol_cursive" +import { raysol_sanserif } from "./raysol_sanserif" + +const fontSpacing = 1.5 + +// Format for vertices: [x,y,b] where in a 0:7(8) by -1:7 grid defining x,y and b defines the line or curve. +// Bulge directions could be represented by a 0:4 list starting at none, then NE and going clockwise. +// 4 1 +// 3 2 +let billsey = { + " ": [[8, -1, 0]], + A: [ + [0, 0, 0], + [3.5, 7, 0], + [7, 0, 0], + [5, 3.5, 0], + [2, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + B: [ + [0, 0, 0], + [0, 7, 0], + [3.5, 7, 0], + [7, 5.25, 1], + [3.5, 3.5, 2], + [0, 3.5, 0], + [3.5, 3.5, 0], + [7, 1.75, 1], + [3.5, 0, 2], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + C: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 3.5, 3], + [3.5, 7, 4], + [7, 5.25, 1], + [3.5, 7, 1], + [0, 3.5, 4], + [3.5, 0, 3], + [7, 1.75, 2], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + D: [ + [0, 0, 0], + [0, 7, 0], + [3.5, 7, 0], + [7, 3.5, 1], + [3.5, 0, 2], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + E: [ + [0, 0, 0], + [0, 7, 0], + [7, 7, 0], + [0, 7, 0], + [0, 3.5, 0], + [3.5, 3.5, 0], + [0, 3.5, 0], + [0, 0, 0], + [7, 0, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + F: [ + [0, 0, 0], + [0, 7, 0], + [7, 7, 0], + [0, 7, 0], + [0, 3.5, 0], + [3.5, 3.5, 0], + [0, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + G: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 3.5, 3], + [3.5, 7, 4], + [7, 5.25, 1], + [3.5, 7, 1], + [0, 3.5, 4], + [3.5, 0, 3], + [7, 1.75, 2], + [5.25, 1.75, 0], + [7, 1.75, 0], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + H: [ + [0, 0, 0], + [0, 7, 0], + [0, 3.5, 0], + [7, 3.5, 0], + [7, 7, 0], + [7, 0, 0], + [7, 3.5, 0], + [0, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + I: [ + [3.5, -1, 0], + [3.5, 7, 0], + [0, 7, 0], + [7, 7, 0], + [3.5, 7, 0], + [3.5, 0, 0], + [0, 0, 0], + [7, 0, 0], + [3.5, 0, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + J: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 1.75, 3], + [3.5, 0, 3], + [7, 1.75, 2], + [7, 7, 0], + [7, 1.75, 0], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + K: [ + [0, 0, 0], + [0, 7, 0], + [0, 1.75, 0], + [3.5, 3.5, 0], + [7, 7, 0], + [3.5, 3.5, 0], + [7, 0, 0], + [3.5, 3.5, 0], + [0, 1.75, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + L: [ + [0, 0, 0], + [0, 7, 0], + [0, 0, 0], + [7, 0, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + M: [ + [0, 0, 0], + [0, 7, 0], + [3.5, 0, 0], + [7, 7, 0], + [7, 0, 0], + [7, 7, 0], + [3.5, 0, 0], + [0, 7, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + N: [ + [0, 0, 0], + [0, 7, 0], + [7, 0, 0], + [7, 7, 0], + [7, 0, 0], + [0, 7, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + O: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 3.5, 3], + [3.5, 7, 4], + [7.0, 3.5, 1], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + P: [ + [0, 0, 0], + [0, 7, 0], + [3.5, 7, 0], + [7, 5.25, 1], + [3.5, 3.5, 2], + [0, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + Q: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 3.5, 3], + [3.5, 7, 4], + [7.0, 3.5, 1], + [3.5, 0, 2], + [4.325, 0.5, 4], + [6.075, 0, 0], + [7, 0.5, 2], + [6.075, 0, 2], + [4.325, 0.5, 0], + [3.5, 0, 4], + [3.5, -1, 0], + [8, -1, 0], + ], + R: [ + [0, 0, 0], + [0, 7, 0], + [3.5, 7, 0], + [7, 5.25, 1], + [3.5, 3.5, 2], + [7, 0, 0], + [3.5, 3.5, 0], + [0, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + S: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 1.75, 3], + [3.5, 0, 3], + [7, 1.75, 2], + [3.5, 3.5, 1], + [0, 5.25, 3], + [3.5, 7, 4], + [7, 5.25, 1], + [3.5, 7, 1], + [0, 5.25, 4], + [3.5, 3.5, 3], + [7, 1.75, 1], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + T: [ + [3.5, -1, 0], + [3.5, 7, 0], + [0, 7, 0], + [7, 7, 0], + [3.5, 7, 0], + [3.5, 0, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + U: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 3.5, 3], + [0, 7, 0], + [0, 3.5, 0], + [3.5, 0, 3], + [7, 3.5, 2], + [7, 7, 0], + [7, 3.5, 0], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + V: [ + [3.5, -1, 0], + [3.5, 0, 0], + [0, 7, 0], + [3.5, 0, 0], + [7, 7, 0], + [3.5, 0, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + W: [ + [1.75, -1, 0], + [1.75, 0, 0], + [0, 7, 0], + [1.75, 0, 0], + [3.5, 7, 0], + [5.25, 0, 0], + [7, 7, 0], + [5.25, 0, 0], + [3.5, 7, 0], + [1.75, 0, 0], + [1.75, -1, 0], + [8, -1, 0], + ], + X: [ + [0, 0, 0], + [7, 7, 0], + [3.5, 3.5, 0], + [0, 7, 0], + [7, 0, 0], + [3.5, 3.5, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + Y: [ + [3.5, -1, 0], + [3.5, 3.5, 0], + [0, 7, 0], + [3.5, 3.5, 0], + [7, 7, 0], + [3.5, 3.5, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + Z: [ + [0, 0, 0], + [7, 0, 0], + [0, 0, 0], + [7, 7, 0], + [0, 7, 0], + [7, 7, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + 0: [ + [3.5, -1, 0], + [3.5, 0, 0], + [6, 3.5, 2], + [3.5, 7, 1], + [1, 3.5, 4], + [3.5, 0, 3], + [3.5, -1, 0], + [8, -1, 0], + ], + 1: [ + [0, -1, 0], + [0, 0, 0], + [0, 0, 0], + [7, 0, 0], + [3.5, 0, 0], + [3.5, 7, 0], + [1.5, 6, 2], + [3.5, 7, 2], + [3.5, 0, 0], + [0, 0, 0], + [0, -1, 0], + [8, -1, 0], + ], + 2: [ + [1, -1, 0], + [1, 0, 0], + [6, 5.25, 0], + [3.5, 7, 1], + [1, 5.25, 4], + [3.5, 7, 4], + [6, 5.25, 1], + [1, 0, 0], + [6, 0, 0], + [1, 0, 0], + [1, -1, 0], + [8, -1, 0], + ], + 3: [ + [3.5, -1, 0], + [3.5, 0, 0], + [1, 1.75, 3], + [3.5, 0, 3], + [6, 1.75, 2], + [3.5, 3.5, 1], + [6, 5.25, 2], + [3.5, 7, 1], + [1, 5.25, 4], + [3.5, 7, 4], + [6, 5.25, 1], + [3.5, 3.5, 2], + [6, 1.75, 1], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + 4: [ + [3.5, -1, 0], + [3.5, 0, 0], + [3.5, 7, 0], + [1, 3.5, 0], + [6, 3.5, 0], + [3.5, 3.5, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + 5: [ + [3.5, -1, 0], + [3.5, 0, 0], + [1, 1.75, 3], + [3.5, 0, 3], + [6, 1.75, 2], + [3.5, 3.5, 1], + [1, 3.5, 0], + [1, 7, 0], + [6, 7, 0], + [1, 7, 0], + [1, 3.5, 0], + [3.5, 3.5, 0], + [6, 1.75, 1], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + 6: [ + [3.5, -1, 0], + [3.5, 0, 0], + [1, 1.75, 3], + [5.25, 7, 4], + [1, 1.75, 4], + [3.5, 0, 3], + [6, 1.75, 2], + [3.5, 3.5, 1], + [1, 1.75, 4], + [3.5, 0, 3], + [3.5, -1, 0], + [8, -1, 0], + ], + 7: [ + [3.5, -1, 0], + [3.5, 0, 0], + [6, 7, 0], + [1, 7, 0], + [6, 7, 0], + [3.5, 0, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + 8: [ + [3.5, -1, 0], + [3.5, 0, 0], + [1, 1.75, 3], + [6, 5.25, 0], + [3.5, 7, 1], + [1, 5.25, 4], + [6, 1.75, 0], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + 9: [ + [3.5, -1, 0], + [3.5, 0, 0], + [6, 5.25, 2], + [3.5, 7, 1], + [1, 5.25, 4], + [3.5, 3.5, 3], + [6, 5.25, 2], + [3.5, 0, 2], + [3.5, -1, 0], + [8, -1, 0], + ], + $: [ + [3.5, -1, 0], + [3.5, 0.5, 0], + [0, 2.0, 3], + [3.5, 0.5, 3], + [7, 2.0, 2], + [3.5, 3.5, 1], + [0, 5.0, 3], + [3.5, 6.5, 4], + [7, 5.0, 1], + [3.5, 6.5, 1], + [3.5, 7, 0], + [3.5, 0, 0], + [3.5, -1, 0], + [8, -1, 0], + ], + ".": [ + [3.5, -1, 0], + [3.5, 0.5, 0], + [3, 1, 3], + [3.5, 1.5, 4], + [4, 1, 1], + [3.5, 0.5, 2], + [3.5, -1, 0], + [8, -1, 0], + ], +} + +// This is a clever way to create a range from 0..32, and then compute an x,y for each of those +// points on the unit circle from zero to pi/2. +const curve = [...Array(32).keys()].map((index) => { + let angle = ((index + 1) * Math.PI) / 2.0 / 32.0 + return new Victor(Math.cos(angle), Math.sin(angle)) +}) + +const billseyConverter = (vertices) => { + let newVertices = [] + let prevPoint = new Victor(0, 0) + vertices.forEach((vertex) => { + switch (vertex[2]) { + case 0: + default: + newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) + break + case 1: // NE + if (vertex[1] < prevPoint[1]) { + // clockwise + let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve + .map( + (cv) => + new Victor( + cv.x * width + prevPoint[0] / 8.0, + cv.y * height + vertex[1] / 4.0, + ), + ) + .reverse(), + ) + } else { + // ccwise + let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve.map( + (cv) => + new Victor( + cv.x * width + vertex[0] / 8.0, + cv.y * height + prevPoint[1] / 4.0, + ), + ), + ) + } + newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) + break + case 2: // SE + if (vertex[1] < prevPoint[1]) { + // clockwise + let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve.map( + (cv) => + new Victor( + cv.x * width + vertex[0] / 8.0, + cv.y * height + prevPoint[1] / 4.0, + ), + ), + ) + } else { + // ccwise + let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve + .map( + (cv) => + new Victor( + cv.x * width + prevPoint[0] / 8.0, + cv.y * height + vertex[1] / 4.0, + ), + ) + .reverse(), + ) + } + newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) + break + case 3: // SW + if (vertex[1] > prevPoint[1]) { + // clockwise + let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve + .map( + (cv) => + new Victor( + cv.x * width + prevPoint[0] / 8.0, + cv.y * height + vertex[1] / 4.0, + ), + ) + .reverse(), + ) + } else { + // ccwise + let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve.map( + (cv) => + new Victor( + cv.x * width + vertex[0] / 8.0, + cv.y * height + prevPoint[1] / 4.0, + ), + ), + ) + } + newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) + break + case 4: // NW + if (vertex[1] > prevPoint[1]) { + // clockwise + let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve.map( + (cv) => + new Victor( + cv.x * width + vertex[0] / 8.0, + cv.y * height + prevPoint[1] / 4.0, + ), + ), + ) + } else { + // ccwise + let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 + let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 + newVertices = newVertices.concat( + curve + .map( + (cv) => + new Victor( + cv.x * width + prevPoint[0] / 8.0, + cv.y * height + vertex[1] / 4.0, + ), + ) + .reverse(), + ) + } + newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) + break + } + prevPoint = vertex + }) + + const scale = 0.6 + const offset_y = -0.5 + const scaledVertices = newVertices.map((vertex) => { + return new Victor(scale * vertex.x, scale * vertex.y + offset_y) + }) + return { + maxX: fontSpacing, + vertices: scaledVertices, + } +} + +const raysolConverter = (vertices) => { + let newVertices = [] + vertices.forEach((vertex) => { + newVertices.push(new Victor(vertex[0], vertex[1])) + }) + + return { + maxX: fontSpacing, + vertices: newVertices, + } +} + +export const MonospaceFont = (ch) => { + let upper = ch.toUpperCase() + // eslint-disable-next-line no-prototype-builtins + if (billsey.hasOwnProperty(upper)) { + return billseyConverter(billsey[upper]) + } else { + return billseyConverter(billsey[" "]) + } +} + +export const CursiveFont = (ch) => { + // eslint-disable-next-line no-prototype-builtins + if (raysol_cursive.hasOwnProperty(ch)) { + return raysolConverter(raysol_cursive[ch]) + } else { + return raysolConverter(raysol_cursive[" "]) + } +} + +export const SansSerifFont = (ch) => { + // eslint-disable-next-line no-prototype-builtins + if (raysol_cursive.hasOwnProperty(ch)) { + return raysolConverter(raysol_sanserif[ch]) + } else { + return raysolConverter(raysol_sanserif[" "]) + } +} diff --git a/src/features/shapes/input_text/InputText.js b/src/features/shapes/input_text/InputText.js new file mode 100644 index 00000000..44da3812 --- /dev/null +++ b/src/features/shapes/input_text/InputText.js @@ -0,0 +1,271 @@ +import { CursiveFont, SansSerifFont, MonospaceFont } from "./Fonts" +import Victor from "victor" +import Shape from "@/features/shapes/Shape" +import { arc, dimensions } from "@/common/geometry" +import { connectMarkedVerticesAlongMachinePerimeter } from "@/features/machines/util" + +const options = { + inputText: { + title: "Text", + type: "textarea", + }, + inputFont: { + title: "Font", + type: "dropdown", + choices: ["Cursive", "Sans Serif", "Monospace"], + }, + rotateDir: { + title: "Rotate", + type: "dropdown", + choices: ["Top", "Center", "Bottom"], + }, +} + +function getMaxX(points) { + // Measure the width of the line + let maxX = 0 + points.forEach((point) => { + if (point.x > maxX) { + maxX = point.x + } + }) + return maxX +} + +export default class InputText extends Shape { + constructor() { + super("inputText") + this.stretch = true + this.label = "Text" + this.usesMachine = true + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + inputText: "Sandify", + inputFont: "Cursive", + rotateDir: "Center", + maintainAspectRatio: true, + }, + } + } + + getVertices(state) { + let points = [] + let prevLetter = "" + let x = 0.0 + let lines = [] + let textPoints = [] + + for (let chi = 0; chi < state.shape.inputText.length; chi++) { + var nextLetter = state.shape.inputText[chi] + if ( + prevLetter === "b" || + prevLetter === "v" || + prevLetter === "o" || + prevLetter === "w" + ) { + // Save this letter before we possibly add in a '*' + prevLetter = nextLetter + if ( + nextLetter.search("[a-z]+") !== -1 && + state.shape.inputFont === "Cursive" + ) { + nextLetter = nextLetter + "*" + } + } else { + prevLetter = nextLetter + } + + if (nextLetter === "\n") { + // New line + lines.push(points) + points = [] + x = 0.0 + continue + } + + var shape = undefined + if (state.shape.inputFont === "Cursive") { + shape = CursiveFont(nextLetter) + } else if (state.shape.inputFont === "Sans Serif") { + shape = SansSerifFont(nextLetter) + } else if (state.shape.inputFont === "Monospace") { + shape = MonospaceFont(nextLetter) + } else { + // Internal error, but I'm going to just recover + shape = CursiveFont(nextLetter) + } + + // TODO add in the "Kern" here. + for (let vi = 0; vi < shape.vertices.length; vi++) { + points.push(new Victor(shape.vertices[vi].x + x, shape.vertices[vi].y)) + } + x += shape.vertices[shape.vertices.length - 1].x + } + // Save the last line we were working on. + lines.push(points) + + // The height of a row of text, including the space above. + const maxY = 2.4 + + if (state.shape.rotateDir === "Center") { + let y = ((lines.length - 1) * maxY) / 2.0 + + // Capture some wrap around points, to connect the lines. + lines.forEach((points, i) => { + let maxX = getMaxX(points) + let widthOffset = maxX / 2.0 + + // offset the line's vertices + points.forEach((point) => { + point.x = point.x - widthOffset + point.y = point.y + y + }) + + textPoints = [...textPoints, ...points] + + if (i > 0) { + // mark this vertex; we will connect to the next vertice along the machine perimeter + // once all other transformations have happened + const prevPoints = lines[i - 1] + const prev = prevPoints[prevPoints.length - 1] + + if (prev) { + prev.connector = true + prev.hidden = true // don't render this line in the preview + } + } + y -= maxY * 0.9 + }) + } else { + // This variable controls "Top" vs. "Bottom" + let direction = 1.0 + if (state.shape.rotateDir === "Bottom") { + direction = -1.0 + lines.reverse() + } + + // Some constants to rotate the letters. + // + // The "lines" object contains lines of words, in vertices. + // The vertices are in X, Y, the X starts at 0, the Y goes between -something and +something. + // The middle of the word is about at Y=0. + // + // We want the words to follow around a circle. We want them to stay about the same size, as + // if they were plotted in a line. We want them to be centered. + // + // r is the radius, theta is the angle. + // rPerY is the multiplier to get from Y to r. + // thetaPerX is the multiplier to get from X to theta. + // + // The Max is based on how far away from the center we start. + // + // Offset is because we want to start the row far away from the center. + // + // thetaCenter is how far off from the theta=0 we start the words. + // + const maxRPerY = 0.8 + let rPerY = direction * maxRPerY + let thetaCenter = (direction * Math.PI) / 2.0 + const maxROffset = maxY * 2.0 + let rOffset = maxROffset + const rOffsetPerLine = rOffset / lines.length + let thetaPerX = -rPerY / rOffset + + // This captures the previous angle, so we can track around for the next line. + let lastTheta + + lines.forEach((points) => { + let maxX = getMaxX(points) + // This widthOffset is in X. + let widthOffset = maxX / 2.0 + + // Scale the size of the words to fit within one circle. + if (Math.PI * 2.0 < Math.abs(thetaPerX * maxX)) { + // We are going to roll all the way around + thetaPerX = (direction * -Math.PI * 2.0) / maxX + rPerY = -thetaPerX * rOffset + } + + // Add in the connector points (if we have any) + if (lastTheta) { + let endTheta = thetaCenter + thetaPerX * -widthOffset + + // Get the Y value of the first point in the next (this) line. + let r = rOffset + rPerY * 0.0 + if (points.length > 0) { + r = rOffset + rPerY * points[0].y + } + + textPoints = [...textPoints, ...arc(r, lastTheta, endTheta)] + } + + // Transform the points and add them to textPoints. + textPoints = [ + ...textPoints, + ...points.map((point) => { + const r = rOffset + rPerY * point.y + lastTheta = thetaCenter + thetaPerX * (point.x - widthOffset) + return new Victor(r * Math.cos(lastTheta), r * Math.sin(lastTheta)) + }), + ] + + // Set up for the next line. + rOffset -= rOffsetPerLine + rPerY = direction * Math.sqrt((maxRPerY * rOffset) / maxROffset) + thetaPerX = -rPerY / rOffset + }) + } + + const scale = 2.5 // to normalize starting size + textPoints.forEach((point) => point.multiply({ x: scale, y: scale })) + return textPoints + } + + // After transformations are complete, connect words along perimeter. + finalizeVertices(vertices, state) { + if (!state.shape.dragging) { + return connectMarkedVerticesAlongMachinePerimeter(vertices, state.machine) + } else { + return vertices + } + } + + // hook to modify updates to a layer + handleUpdate(layer, changes) { + if ( + changes.inputText !== undefined || + changes.inputFont || + changes.rotateDir + ) { + const newProps = { + ...layer, + inputText: changes.inputText || "a", + inputFont: changes.inputFont || layer.inputFont, + } + const oldProps = { + ...layer, + inputText: layer.inputText || "a", + } + const oldVertices = this.getVertices({ shape: oldProps, creating: true }) + const vertices = this.getVertices({ shape: newProps, creating: true }) + const { width: oldWidth, height: oldHeight } = dimensions(oldVertices) + const { width, height } = dimensions(vertices) + + changes.width = + oldWidth === 0 ? this.startingWidth : (layer.width * width) / oldWidth + changes.height = + oldHeight == 0 + ? this.startingHeight + : (layer.height * height) / oldHeight + changes.aspectRatio = changes.width / layer.height + } + } + + getOptions() { + return options + } +} diff --git a/src/models/input_text/convert_letters.py b/src/features/shapes/input_text/convert_letters.py similarity index 100% rename from src/models/input_text/convert_letters.py rename to src/features/shapes/input_text/convert_letters.py diff --git a/src/features/shapes/input_text/raysol_cursive.js b/src/features/shapes/input_text/raysol_cursive.js new file mode 100644 index 00000000..09152f9c --- /dev/null +++ b/src/features/shapes/input_text/raysol_cursive.js @@ -0,0 +1,6275 @@ +export let raysol_cursive = { + " ": [ + [0.0, -0.786], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + ], + 0: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.549, -0.786], + [0.57, -0.779], + [0.641, -0.741], + [0.729, -0.673], + [0.754, -0.642], + [0.799, -0.548], + [0.833, -0.422], + [0.833, -0.317], + [0.833, -0.211], + [0.833, -0.106], + [0.833, -0.001], + [0.833, 0.105], + [0.833, 0.21], + [0.833, 0.315], + [0.833, 0.421], + [0.833, 0.531], + [0.81, 0.599], + [0.779, 0.645], + [0.749, 0.69], + [0.711, 0.738], + [0.629, 0.786], + [0.57, 0.786], + [0.513, 0.786], + [0.442, 0.738], + [0.374, 0.69], + [0.34, 0.645], + [0.315, 0.599], + [0.289, 0.531], + [0.289, 0.422], + [0.289, 0.313], + [0.289, 0.204], + [0.289, 0.095], + [0.289, -0.014], + [0.289, -0.123], + [0.289, -0.232], + [0.289, -0.341], + [0.289, -0.45], + [0.315, -0.559], + [0.351, -0.655], + [0.388, -0.701], + [0.449, -0.742], + [0.489, -0.762], + [0.549, -0.786], + [0.655, -0.786], + [0.731, -0.786], + [0.816, -0.786], + [0.901, -0.786], + [0.986, -0.786], + [1.071, -0.786], + [1.156, -0.786], + ], + 1: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.34, -0.629], + [0.34, -0.472], + [0.34, -0.315], + [0.34, -0.157], + [0.34, -0.0], + [0.34, 0.157], + [0.34, 0.314], + [0.34, 0.472], + [0.34, 0.629], + [0.34, 0.786], + [0.34, 0.629], + [0.34, 0.472], + [0.34, 0.314], + [0.34, 0.157], + [0.34, -0.0], + [0.34, -0.157], + [0.34, -0.315], + [0.34, -0.472], + [0.34, -0.629], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + ], + 2: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.702], + [0.442, -0.537], + [0.544, -0.33], + [0.624, -0.174], + [0.66, 0.032], + [0.687, 0.212], + [0.698, 0.295], + [0.708, 0.427], + [0.714, 0.514], + [0.708, 0.595], + [0.69, 0.659], + [0.677, 0.702], + [0.663, 0.726], + [0.629, 0.752], + [0.587, 0.769], + [0.544, 0.76], + [0.493, 0.744], + [0.442, 0.727], + [0.374, 0.701], + [0.306, 0.625], + [0.247, 0.574], + [0.306, 0.625], + [0.374, 0.701], + [0.442, 0.727], + [0.493, 0.744], + [0.544, 0.76], + [0.587, 0.769], + [0.629, 0.752], + [0.663, 0.726], + [0.677, 0.702], + [0.69, 0.659], + [0.708, 0.595], + [0.714, 0.514], + [0.708, 0.427], + [0.698, 0.295], + [0.687, 0.212], + [0.66, 0.032], + [0.624, -0.174], + [0.544, -0.33], + [0.442, -0.537], + [0.34, -0.702], + [0.425, -0.701], + [0.544, -0.633], + [0.612, -0.599], + [0.68, -0.574], + [0.765, -0.591], + [0.85, -0.616], + [0.935, -0.667], + [1.02, -0.744], + [1.105, -0.786], + ], + 3: [ + [0.085, -0.786], + [0.17, -0.786], + [0.272, -0.786], + [0.33, -0.786], + [0.405, -0.786], + [0.442, -0.786], + [0.493, -0.772], + [0.559, -0.752], + [0.612, -0.718], + [0.648, -0.683], + [0.677, -0.653], + [0.707, -0.618], + [0.731, -0.548], + [0.764, -0.473], + [0.782, -0.396], + [0.784, -0.312], + [0.775, -0.241], + [0.765, -0.181], + [0.751, -0.123], + [0.7, -0.029], + [0.62, 0.021], + [0.544, 0.038], + [0.425, 0.056], + [0.557, 0.087], + [0.586, 0.111], + [0.64, 0.165], + [0.697, 0.234], + [0.734, 0.337], + [0.749, 0.431], + [0.741, 0.516], + [0.726, 0.6], + [0.712, 0.659], + [0.672, 0.74], + [0.641, 0.777], + [0.586, 0.786], + [0.537, 0.777], + [0.485, 0.769], + [0.412, 0.744], + [0.331, 0.71], + [0.412, 0.744], + [0.485, 0.769], + [0.537, 0.777], + [0.586, 0.786], + [0.641, 0.777], + [0.672, 0.74], + [0.712, 0.659], + [0.726, 0.6], + [0.741, 0.516], + [0.749, 0.431], + [0.734, 0.337], + [0.697, 0.234], + [0.64, 0.165], + [0.586, 0.111], + [0.557, 0.087], + [0.484, 0.056], + [0.544, 0.038], + [0.62, 0.021], + [0.7, -0.029], + [0.751, -0.123], + [0.765, -0.181], + [0.775, -0.241], + [0.784, -0.312], + [0.782, -0.396], + [0.764, -0.473], + [0.731, -0.548], + [0.707, -0.618], + [0.677, -0.653], + [0.648, -0.683], + [0.612, -0.718], + [0.559, -0.752], + [0.493, -0.772], + [0.425, -0.761], + [0.357, -0.744], + [0.289, -0.718], + [0.221, -0.616], + [0.289, -0.718], + [0.357, -0.744], + [0.425, -0.761], + [0.493, -0.772], + [0.559, -0.752], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + ], + 4: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.765, -0.629], + [0.765, -0.472], + [0.765, -0.315], + [0.765, -0.157], + [0.765, -0.0], + [0.765, 0.157], + [0.765, 0.314], + [0.765, 0.472], + [0.765, 0.629], + [0.765, 0.786], + [0.68, 0.655], + [0.595, 0.524], + [0.51, 0.393], + [0.425, 0.262], + [0.34, 0.131], + [0.255, -0.0], + [0.356, -0.0], + [0.457, -0.0], + [0.558, -0.0], + [0.659, -0.0], + [0.76, -0.0], + [0.861, -0.0], + [0.962, -0.0], + [1.062, -0.0], + [1.139, -0.0], + [1.062, -0.0], + [0.962, -0.0], + [0.861, -0.0], + [0.76, -0.0], + [0.765, -0.157], + [0.765, -0.315], + [0.765, -0.472], + [0.765, -0.629], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.275, -0.786], + [1.36, -0.786], + ], + 5: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.438, -0.786], + [0.52, -0.786], + [0.607, -0.786], + [0.659, -0.783], + [0.73, -0.749], + [0.796, -0.698], + [0.853, -0.612], + [0.884, -0.497], + [0.892, -0.319], + [0.887, -0.167], + [0.85, -0.064], + [0.795, 0.038], + [0.744, 0.1], + [0.68, 0.122], + [0.608, 0.144], + [0.54, 0.123], + [0.441, 0.081], + [0.378, 0.043], + [0.302, -0.014], + [0.302, 0.145], + [0.302, 0.303], + [0.302, 0.461], + [0.302, 0.619], + [0.302, 0.727], + [0.359, 0.727], + [0.415, 0.727], + [0.471, 0.727], + [0.528, 0.727], + [0.584, 0.727], + [0.64, 0.727], + [0.731, 0.727], + [0.85, 0.727], + [0.731, 0.727], + [0.64, 0.727], + [0.584, 0.727], + [0.528, 0.727], + [0.471, 0.727], + [0.415, 0.727], + [0.359, 0.727], + [0.302, 0.727], + [0.302, 0.619], + [0.302, 0.461], + [0.302, 0.303], + [0.302, 0.145], + [0.302, -0.014], + [0.378, 0.043], + [0.441, 0.081], + [0.54, 0.123], + [0.608, 0.144], + [0.68, 0.122], + [0.744, 0.1], + [0.795, 0.038], + [0.85, -0.064], + [0.887, -0.167], + [0.892, -0.319], + [0.884, -0.497], + [0.853, -0.612], + [0.796, -0.698], + [0.73, -0.749], + [0.659, -0.783], + [0.607, -0.786], + [0.52, -0.786], + [0.425, -0.752], + [0.357, -0.701], + [0.289, -0.616], + [0.238, -0.531], + [0.187, -0.489], + [0.153, -0.472], + [0.187, -0.489], + [0.238, -0.531], + [0.289, -0.616], + [0.357, -0.701], + [0.425, -0.752], + [0.52, -0.786], + [0.607, -0.786], + [0.659, -0.786], + [0.816, -0.786], + [0.901, -0.786], + [0.986, -0.786], + [1.071, -0.786], + [1.156, -0.786], + [1.241, -0.786], + [1.326, -0.786], + ], + 6: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.449, -0.742], + [0.489, -0.762], + [0.549, -0.786], + [0.655, -0.779], + [0.726, -0.741], + [0.814, -0.673], + [0.839, -0.642], + [0.866, -0.607], + [0.924, -0.422], + [0.926, -0.323], + [0.911, -0.213], + [0.895, -0.168], + [0.864, -0.099], + [0.834, -0.053], + [0.796, -0.005], + [0.72, 0.034], + [0.619, 0.042], + [0.557, 0.034], + [0.513, 0.025], + [0.453, -0.002], + [0.332, -0.071], + [0.373, 0.033], + [0.414, 0.137], + [0.455, 0.241], + [0.496, 0.345], + [0.538, 0.449], + [0.579, 0.553], + [0.62, 0.657], + [0.661, 0.761], + [0.62, 0.657], + [0.579, 0.553], + [0.538, 0.449], + [0.496, 0.345], + [0.455, 0.241], + [0.414, 0.137], + [0.373, 0.033], + [0.332, -0.071], + [0.276, -0.2], + [0.263, -0.274], + [0.255, -0.347], + [0.274, -0.489], + [0.306, -0.559], + [0.351, -0.655], + [0.391, -0.701], + [0.489, -0.762], + [0.549, -0.786], + [0.655, -0.779], + [0.731, -0.786], + [0.816, -0.786], + [0.901, -0.786], + [0.986, -0.786], + [1.071, -0.786], + [1.156, -0.786], + ], + 7: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.391, -0.629], + [0.442, -0.472], + [0.493, -0.315], + [0.544, -0.157], + [0.595, -0.0], + [0.646, 0.157], + [0.697, 0.314], + [0.748, 0.472], + [0.799, 0.629], + [0.85, 0.786], + [0.776, 0.786], + [0.701, 0.786], + [0.627, 0.786], + [0.552, 0.786], + [0.478, 0.786], + [0.404, 0.786], + [0.329, 0.786], + [0.255, 0.786], + [0.329, 0.786], + [0.404, 0.786], + [0.478, 0.786], + [0.552, 0.786], + [0.627, 0.786], + [0.701, 0.786], + [0.776, 0.786], + [0.85, 0.786], + [0.799, 0.629], + [0.748, 0.472], + [0.697, 0.314], + [0.646, 0.157], + [0.595, -0.0], + [0.544, -0.157], + [0.493, -0.315], + [0.442, -0.472], + [0.391, -0.629], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + ], + 8: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.556, -0.784], + [0.618, -0.786], + [0.695, -0.763], + [0.756, -0.733], + [0.795, -0.664], + [0.853, -0.56], + [0.878, -0.429], + [0.87, -0.334], + [0.846, -0.267], + [0.797, -0.132], + [0.74, -0.033], + [0.674, 0.065], + [0.643, 0.098], + [0.611, 0.132], + [0.561, 0.166], + [0.527, 0.2], + [0.493, 0.247], + [0.459, 0.293], + [0.425, 0.361], + [0.391, 0.446], + [0.408, 0.545], + [0.459, 0.644], + [0.51, 0.701], + [0.57, 0.734], + [0.643, 0.76], + [0.716, 0.734], + [0.777, 0.701], + [0.828, 0.644], + [0.879, 0.545], + [0.896, 0.446], + [0.862, 0.361], + [0.828, 0.293], + [0.794, 0.247], + [0.76, 0.2], + [0.726, 0.166], + [0.676, 0.132], + [0.579, 0.098], + [0.548, 0.065], + [0.481, -0.033], + [0.425, -0.132], + [0.376, -0.267], + [0.352, -0.334], + [0.344, -0.429], + [0.369, -0.56], + [0.427, -0.664], + [0.466, -0.733], + [0.527, -0.763], + [0.603, -0.786], + [0.666, -0.784], + [0.695, -0.763], + [0.756, -0.733], + [0.795, -0.664], + [0.853, -0.56], + [0.878, -0.429], + [0.87, -0.334], + [0.846, -0.267], + [0.797, -0.132], + [0.74, -0.033], + [0.797, -0.132], + [0.846, -0.267], + [0.87, -0.334], + [0.878, -0.429], + [0.853, -0.56], + [0.795, -0.664], + [0.756, -0.733], + [0.695, -0.763], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + ], + 9: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.714, -0.786], + [0.717, -0.612], + [0.717, -0.455], + [0.717, -0.297], + [0.717, -0.139], + [0.717, 0.019], + [0.717, 0.177], + [0.717, 0.335], + [0.717, 0.493], + [0.717, 0.65], + [0.717, 0.786], + [0.648, 0.786], + [0.521, 0.786], + [0.415, 0.744], + [0.34, 0.659], + [0.306, 0.523], + [0.292, 0.364], + [0.299, 0.23], + [0.317, 0.147], + [0.339, 0.086], + [0.387, -0.03], + [0.442, -0.063], + [0.509, -0.055], + [0.558, -0.03], + [0.618, -0.004], + [0.663, 0.013], + [0.717, 0.019], + [0.717, -0.139], + [0.717, -0.297], + [0.717, -0.455], + [0.717, -0.612], + [0.714, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + ], + A: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.459, -0.781], + [0.534, -0.759], + [0.623, -0.711], + [0.715, -0.601], + [0.793, -0.507], + [0.715, -0.601], + [0.623, -0.711], + [0.534, -0.759], + [0.459, -0.781], + [0.383, -0.743], + [0.308, -0.661], + [0.25, -0.586], + [0.206, -0.475], + [0.173, -0.322], + [0.17, -0.191], + [0.187, -0.003], + [0.227, 0.147], + [0.284, 0.286], + [0.339, 0.375], + [0.435, 0.509], + [0.521, 0.596], + [0.637, 0.685], + [0.79, 0.761], + [0.865, 0.786], + [0.863, 0.706], + [0.861, 0.583], + [0.859, 0.46], + [0.857, 0.337], + [0.855, 0.213], + [0.853, 0.09], + [0.851, -0.033], + [0.849, -0.156], + [0.848, -0.28], + [0.846, -0.403], + [0.847, -0.466], + [0.868, -0.563], + [0.954, -0.635], + [1.033, -0.701], + [1.109, -0.744], + [1.213, -0.786], + ], + B: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.255, -0.629], + [0.255, -0.471], + [0.255, -0.313], + [0.255, -0.155], + [0.255, 0.002], + [0.255, 0.16], + [0.255, 0.318], + [0.255, 0.476], + [0.255, 0.633], + [0.281, 0.659], + [0.327, 0.701], + [0.38, 0.744], + [0.445, 0.773], + [0.501, 0.777], + [0.552, 0.777], + [0.589, 0.761], + [0.646, 0.726], + [0.699, 0.68], + [0.733, 0.63], + [0.764, 0.556], + [0.761, 0.455], + [0.748, 0.389], + [0.723, 0.285], + [0.689, 0.191], + [0.621, 0.106], + [0.517, 0.064], + [0.476, 0.064], + [0.517, 0.064], + [0.596, 0.025], + [0.65, -0.037], + [0.68, -0.062], + [0.748, -0.148], + [0.791, -0.248], + [0.809, -0.312], + [0.814, -0.452], + [0.811, -0.49], + [0.796, -0.566], + [0.78, -0.62], + [0.697, -0.718], + [0.622, -0.762], + [0.572, -0.786], + [0.476, -0.786], + [0.374, -0.786], + [0.255, -0.786], + [0.374, -0.786], + [0.476, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + ], + C: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.752], + [0.459, -0.693], + [0.397, -0.605], + [0.357, -0.548], + [0.332, -0.452], + [0.306, -0.327], + [0.298, -0.208], + [0.298, -0.106], + [0.298, 0.016], + [0.318, 0.183], + [0.338, 0.31], + [0.385, 0.442], + [0.462, 0.585], + [0.548, 0.675], + [0.652, 0.746], + [0.776, 0.786], + [0.872, 0.767], + [0.963, 0.643], + [1.019, 0.491], + [1.04, 0.351], + [1.019, 0.491], + [0.963, 0.643], + [0.872, 0.767], + [0.776, 0.786], + [0.652, 0.746], + [0.548, 0.675], + [0.462, 0.585], + [0.385, 0.442], + [0.338, 0.31], + [0.318, 0.183], + [0.298, 0.016], + [0.298, -0.106], + [0.298, -0.208], + [0.306, -0.327], + [0.332, -0.452], + [0.397, -0.605], + [0.459, -0.693], + [0.544, -0.748], + [0.682, -0.786], + [0.777, -0.786], + [0.85, -0.786], + [0.884, -0.786], + [0.953, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.275, -0.786], + ], + D: [ + [0.123, -0.786], + [0.213, -0.786], + [0.321, -0.786], + [0.401, -0.786], + [0.465, -0.786], + [0.544, -0.786], + [0.639, -0.786], + [0.772, -0.764], + [0.918, -0.711], + [0.955, -0.676], + [1.02, -0.592], + [1.072, -0.46], + [1.09, -0.357], + [1.104, -0.199], + [1.103, -0.111], + [1.082, 0.035], + [1.062, 0.183], + [1.037, 0.271], + [1.009, 0.356], + [0.982, 0.435], + [0.899, 0.546], + [0.816, 0.633], + [0.748, 0.684], + [0.646, 0.741], + [0.566, 0.766], + [0.496, 0.761], + [0.425, 0.733], + [0.425, 0.604], + [0.425, 0.526], + [0.425, 0.343], + [0.425, 0.149], + [0.425, -0.03], + [0.425, -0.156], + [0.425, -0.442], + [0.425, -0.544], + [0.425, -0.701], + [0.465, -0.786], + [0.544, -0.786], + [0.639, -0.786], + [0.748, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.275, -0.786], + [1.36, -0.786], + ], + E: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.701], + [0.381, -0.614], + [0.317, -0.487], + [0.277, -0.361], + [0.274, -0.221], + [0.309, -0.157], + [0.356, -0.115], + [0.405, -0.072], + [0.493, -0.03], + [0.563, 0.006], + [0.629, 0.027], + [0.714, 0.027], + [0.629, 0.027], + [0.57, 0.064], + [0.509, 0.12], + [0.474, 0.143], + [0.386, 0.229], + [0.331, 0.313], + [0.291, 0.438], + [0.293, 0.552], + [0.32, 0.66], + [0.383, 0.743], + [0.478, 0.786], + [0.564, 0.786], + [0.629, 0.786], + [0.675, 0.786], + [0.723, 0.786], + [0.799, 0.786], + [0.723, 0.786], + [0.675, 0.786], + [0.629, 0.786], + [0.564, 0.786], + [0.478, 0.786], + [0.383, 0.743], + [0.32, 0.66], + [0.293, 0.552], + [0.291, 0.438], + [0.331, 0.313], + [0.386, 0.229], + [0.474, 0.143], + [0.509, 0.12], + [0.57, 0.064], + [0.629, 0.027], + [0.714, 0.027], + [0.629, 0.027], + [0.563, 0.006], + [0.493, -0.03], + [0.405, -0.072], + [0.356, -0.115], + [0.309, -0.157], + [0.274, -0.221], + [0.277, -0.361], + [0.317, -0.487], + [0.381, -0.614], + [0.443, -0.698], + [0.5, -0.735], + [0.583, -0.769], + [0.695, -0.781], + [0.786, -0.78], + [0.864, -0.78], + [0.935, -0.779], + ], + F: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.663, -0.786], + [0.724, -0.767], + [0.792, -0.699], + [0.852, -0.558], + [0.853, -0.44], + [0.854, -0.321], + [0.855, -0.203], + [0.856, -0.085], + [0.857, 0.034], + [0.858, 0.152], + [0.859, 0.27], + [0.86, 0.389], + [0.861, 0.507], + [0.863, 0.625], + [0.969, 0.608], + [1.076, 0.588], + [1.173, 0.616], + [1.282, 0.654], + [1.394, 0.701], + [1.282, 0.654], + [1.173, 0.616], + [1.076, 0.588], + [0.969, 0.608], + [0.863, 0.625], + [0.763, 0.663], + [0.633, 0.713], + [0.466, 0.713], + [0.317, 0.628], + [0.247, 0.404], + [0.317, 0.628], + [0.466, 0.713], + [0.633, 0.713], + [0.763, 0.663], + [0.863, 0.625], + [0.861, 0.507], + [0.86, 0.389], + [0.859, 0.27], + [0.858, 0.152], + [0.857, 0.034], + [0.742, 0.037], + [0.631, 0.054], + [0.442, 0.071], + [0.631, 0.054], + [0.742, 0.037], + [0.857, 0.034], + [0.96, 0.035], + [1.075, 0.043], + [1.224, 0.052], + [1.075, 0.043], + [0.96, 0.035], + [0.857, 0.034], + [0.856, -0.085], + [0.855, -0.203], + [0.854, -0.321], + [0.854, -0.395], + [0.85, -0.506], + [0.852, -0.558], + [0.833, -0.65], + [0.773, -0.713], + [0.663, -0.769], + [0.591, -0.766], + [0.564, -0.774], + [0.537, -0.774], + [0.501, -0.766], + [0.452, -0.701], + [0.42, -0.65], + [0.413, -0.583], + [0.422, -0.519], + [0.474, -0.465], + [0.511, -0.442], + [0.573, -0.438], + [0.653, -0.442], + [0.74, -0.496], + [0.866, -0.616], + [0.927, -0.687], + [1.035, -0.756], + [1.079, -0.803], + [1.211, -0.837], + [1.31, -0.829], + [1.406, -0.82], + [1.491, -0.786], + ], + G: [ + [0.085, -0.786], + [0.171, -0.761], + [0.245, -0.712], + [0.316, -0.66], + [0.389, -0.609], + [0.489, -0.507], + [0.573, -0.398], + [0.61, -0.341], + [0.658, -0.254], + [0.708, -0.125], + [0.757, 0.004], + [0.782, 0.082], + [0.819, 0.177], + [0.837, 0.274], + [0.857, 0.392], + [0.88, 0.508], + [0.884, 0.597], + [0.881, 0.711], + [0.842, 0.799], + [0.762, 0.772], + [0.72, 0.745], + [0.697, 0.705], + [0.64, 0.59], + [0.631, 0.56], + [0.612, 0.445], + [0.607, 0.395], + [0.628, 0.243], + [0.653, 0.178], + [0.695, 0.088], + [0.834, -0.031], + [0.931, -0.028], + [1.047, 0.038], + [1.117, 0.106], + [1.179, 0.236], + [1.262, 0.405], + [1.246, 0.225], + [1.209, -0.096], + [1.181, -0.235], + [1.14, -0.389], + [1.103, -0.495], + [1.032, -0.625], + [0.956, -0.707], + [0.865, -0.758], + [0.77, -0.787], + [0.681, -0.782], + [0.598, -0.762], + [0.5, -0.71], + [0.455, -0.632], + [0.427, -0.556], + [0.38, -0.481], + [0.324, -0.33], + [0.465, -0.389], + [0.637, -0.468], + [0.784, -0.548], + [0.909, -0.586], + [1.032, -0.625], + [1.141, -0.663], + [1.245, -0.677], + [1.351, -0.699], + [1.489, -0.744], + [1.611, -0.786], + ], + H: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.496, -0.786], + [0.496, -0.609], + [0.496, -0.479], + [0.496, -0.348], + [0.496, -0.217], + [0.496, -0.086], + [0.496, 0.044], + [0.496, 0.175], + [0.496, 0.306], + [0.496, 0.404], + [0.496, 0.508], + [0.476, 0.604], + [0.453, 0.687], + [0.391, 0.744], + [0.272, 0.786], + [0.391, 0.744], + [0.453, 0.687], + [0.476, 0.604], + [0.496, 0.508], + [0.496, 0.404], + [0.496, 0.306], + [0.496, 0.175], + [0.496, 0.044], + [0.635, 0.071], + [0.774, 0.097], + [0.913, 0.123], + [1.051, 0.149], + [1.105, 0.175], + [1.105, 0.306], + [1.105, 0.404], + [1.105, 0.508], + [1.105, 0.616], + [1.122, 0.701], + [1.165, 0.76], + [1.275, 0.786], + [1.165, 0.76], + [1.122, 0.701], + [1.105, 0.616], + [1.105, 0.508], + [1.105, 0.404], + [1.105, 0.306], + [1.105, 0.175], + [1.105, 0.044], + [1.105, -0.086], + [1.105, -0.217], + [1.105, -0.348], + [1.105, -0.479], + [1.105, -0.609], + [1.139, -0.701], + [1.19, -0.761], + [1.275, -0.778], + [1.36, -0.786], + [1.445, -0.786], + [1.53, -0.786], + ], + I: [ + [0.085, -0.786], + [0.17, -0.786], + [0.289, -0.786], + [0.425, -0.786], + [0.515, -0.773], + [0.596, -0.794], + [0.685, -0.801], + [0.782, -0.773], + [0.838, -0.602], + [0.914, -0.473], + [0.876, -0.349], + [0.832, -0.152], + [0.789, 0.006], + [0.773, 0.196], + [0.765, 0.298], + [0.773, 0.517], + [0.799, 0.65], + [0.833, 0.74], + [0.884, 0.802], + [1.02, 0.804], + [1.071, 0.8], + [1.12, 0.702], + [1.151, 0.628], + [1.189, 0.387], + [1.198, 0.208], + [1.18, -0.065], + [1.165, -0.166], + [1.1, -0.403], + [1.046, -0.509], + [1.007, -0.577], + [0.899, -0.681], + [0.782, -0.773], + [0.685, -0.801], + [0.596, -0.794], + [0.515, -0.773], + [0.42, -0.719], + [0.381, -0.64], + [0.357, -0.564], + [0.317, -0.488], + [0.271, -0.336], + [0.408, -0.397], + [0.574, -0.479], + [0.716, -0.562], + [0.838, -0.602], + [0.958, -0.643], + [1.064, -0.683], + [1.168, -0.699], + [1.271, -0.722], + [1.408, -0.761], + [1.529, -0.786], + ], + J: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.457, -0.733], + [0.593, -0.715], + [0.428, -0.508], + [0.343, -0.336], + [0.301, -0.096], + [0.292, 0.057], + [0.286, 0.286], + [0.316, 0.532], + [0.382, 0.703], + [0.439, 0.754], + [0.506, 0.78], + [0.591, 0.79], + [0.69, 0.782], + [0.734, 0.739], + [0.789, 0.616], + [0.802, 0.553], + [0.814, 0.386], + [0.818, 0.209], + [0.808, -0.059], + [0.799, -0.253], + [0.787, -0.441], + [0.78, -0.614], + [0.767, -0.807], + [0.752, -0.952], + [0.76, -1.127], + [0.737, -1.292], + [0.712, -1.438], + [0.661, -1.505], + [0.604, -1.531], + [0.426, -1.533], + [0.365, -1.508], + [0.31, -1.439], + [0.298, -1.296], + [0.31, -1.143], + [0.346, -0.955], + [0.397, -0.844], + [0.457, -0.733], + [0.588, -0.715], + [0.675, -0.731], + [0.762, -0.748], + [0.849, -0.764], + [0.935, -0.78], + [1.021, -0.779], + [1.106, -0.779], + [1.188, -0.786], + ], + K: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.54, -0.627], + [0.551, -0.494], + [0.562, -0.36], + [0.574, -0.227], + [0.585, -0.094], + [0.596, 0.04], + [0.58, 0.158], + [0.563, 0.276], + [0.547, 0.393], + [0.53, 0.511], + [0.514, 0.629], + [0.497, 0.747], + [0.442, 0.744], + [0.382, 0.736], + [0.317, 0.679], + [0.268, 0.607], + [0.223, 0.532], + [0.268, 0.607], + [0.317, 0.679], + [0.382, 0.736], + [0.442, 0.744], + [0.497, 0.747], + [0.514, 0.629], + [0.53, 0.511], + [0.547, 0.393], + [0.563, 0.276], + [0.58, 0.158], + [0.596, 0.04], + [0.689, 0.087], + [0.752, 0.165], + [0.815, 0.242], + [0.878, 0.32], + [0.941, 0.397], + [1.004, 0.475], + [1.067, 0.553], + [1.13, 0.63], + [1.149, 0.74], + [1.13, 0.63], + [1.067, 0.553], + [1.004, 0.475], + [0.941, 0.397], + [0.878, 0.32], + [0.815, 0.242], + [0.752, 0.165], + [0.689, 0.087], + [0.626, 0.01], + [0.675, -0.067], + [0.725, -0.143], + [0.775, -0.219], + [0.825, -0.295], + [0.875, -0.371], + [0.925, -0.448], + [0.974, -0.524], + [1.024, -0.6], + [1.074, -0.676], + [1.124, -0.761], + [1.22, -0.786], + [1.299, -0.786], + [1.363, -0.786], + [1.442, -0.786], + [1.526, -0.786], + ], + L: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.323, -0.778], + [0.37, -0.766], + [0.406, -0.774], + [0.433, -0.774], + [0.46, -0.766], + [0.52, -0.743], + [0.558, -0.713], + [0.629, -0.65], + [0.681, -0.57], + [0.717, -0.506], + [0.723, -0.395], + [0.739, -0.305], + [0.748, -0.179], + [0.751, -0.045], + [0.743, 0.148], + [0.741, 0.224], + [0.757, 0.263], + [0.749, 0.353], + [0.776, 0.537], + [0.788, 0.6], + [0.824, 0.711], + [0.872, 0.783], + [0.894, 0.827], + [0.968, 0.85], + [1.027, 0.795], + [1.061, 0.723], + [1.082, 0.596], + [1.071, 0.517], + [1.05, 0.464], + [0.971, 0.366], + [0.94, 0.343], + [0.848, 0.288], + [0.808, 0.275], + [0.66, 0.257], + [0.624, 0.259], + [0.5, 0.288], + [0.386, 0.343], + [0.285, 0.41], + [0.386, 0.343], + [0.5, 0.288], + [0.624, 0.259], + [0.66, 0.257], + [0.808, 0.275], + [0.848, 0.288], + [0.94, 0.343], + [0.971, 0.366], + [1.05, 0.464], + [1.071, 0.517], + [1.082, 0.596], + [1.061, 0.723], + [1.027, 0.795], + [0.968, 0.85], + [0.894, 0.827], + [0.872, 0.783], + [0.824, 0.711], + [0.788, 0.6], + [0.776, 0.537], + [0.749, 0.353], + [0.757, 0.263], + [0.741, 0.224], + [0.743, 0.148], + [0.751, -0.045], + [0.748, -0.179], + [0.739, -0.305], + [0.723, -0.395], + [0.717, -0.506], + [0.681, -0.57], + [0.629, -0.65], + [0.558, -0.713], + [0.52, -0.743], + [0.46, -0.766], + [0.433, -0.774], + [0.406, -0.774], + [0.37, -0.766], + [0.32, -0.701], + [0.289, -0.65], + [0.282, -0.583], + [0.291, -0.519], + [0.343, -0.465], + [0.379, -0.442], + [0.442, -0.438], + [0.521, -0.442], + [0.609, -0.496], + [0.734, -0.616], + [0.796, -0.687], + [0.904, -0.756], + [0.948, -0.786], + [1.08, -0.786], + [1.179, -0.786], + [1.275, -0.786], + [1.36, -0.786], + ], + M: [ + [0.085, -0.786], + [0.213, -0.786], + [0.34, -0.786], + [0.468, -0.786], + [0.583, -0.736], + [0.593, -0.622], + [0.603, -0.507], + [0.613, -0.393], + [0.623, -0.278], + [0.633, -0.164], + [0.643, -0.049], + [0.653, 0.065], + [0.663, 0.18], + [0.673, 0.294], + [0.683, 0.409], + [0.655, 0.534], + [0.628, 0.634], + [0.592, 0.749], + [0.5, 0.795], + [0.412, 0.754], + [0.321, 0.685], + [0.238, 0.576], + [0.321, 0.685], + [0.412, 0.754], + [0.5, 0.795], + [0.592, 0.749], + [0.628, 0.634], + [0.655, 0.534], + [0.683, 0.409], + [0.673, 0.294], + [0.663, 0.18], + [0.653, 0.065], + [0.643, -0.049], + [0.633, -0.164], + [0.623, -0.278], + [0.613, -0.393], + [0.603, -0.507], + [0.593, -0.622], + [0.583, -0.736], + [0.593, -0.622], + [0.603, -0.507], + [0.613, -0.393], + [0.623, -0.278], + [0.633, -0.164], + [0.643, -0.049], + [0.653, 0.065], + [0.663, 0.18], + [0.673, 0.294], + [0.683, 0.409], + [0.727, 0.575], + [0.8, 0.719], + [0.921, 0.793], + [1.057, 0.807], + [1.122, 0.73], + [1.162, 0.644], + [1.188, 0.569], + [1.233, 0.406], + [1.223, 0.292], + [1.214, 0.178], + [1.205, 0.063], + [1.196, -0.051], + [1.187, -0.166], + [1.177, -0.28], + [1.168, -0.394], + [1.159, -0.509], + [1.15, -0.623], + [1.14, -0.737], + [1.15, -0.623], + [1.159, -0.509], + [1.168, -0.394], + [1.177, -0.28], + [1.187, -0.166], + [1.196, -0.051], + [1.205, 0.063], + [1.214, 0.178], + [1.223, 0.292], + [1.233, 0.406], + [1.281, 0.599], + [1.354, 0.743], + [1.398, 0.797], + [1.48, 0.835], + [1.62, 0.831], + [1.673, 0.767], + [1.711, 0.694], + [1.737, 0.619], + [1.75, 0.543], + [1.747, 0.42], + [1.743, 0.297], + [1.74, 0.174], + [1.737, 0.051], + [1.733, -0.072], + [1.73, -0.195], + [1.726, -0.318], + [1.723, -0.441], + [1.719, -0.564], + [1.716, -0.687], + [1.815, -0.746], + [1.921, -0.786], + [2.001, -0.786], + [2.085, -0.786], + [2.186, -0.786], + ], + N: [ + [0.128, -0.786], + [0.255, -0.786], + [0.425, -0.786], + [0.568, -0.765], + [0.577, -0.71], + [0.58, -0.603], + [0.584, -0.497], + [0.587, -0.39], + [0.59, -0.283], + [0.593, -0.177], + [0.597, -0.07], + [0.6, 0.037], + [0.603, 0.143], + [0.607, 0.25], + [0.61, 0.357], + [0.582, 0.537], + [0.557, 0.637], + [0.528, 0.747], + [0.471, 0.804], + [0.406, 0.8], + [0.333, 0.745], + [0.282, 0.665], + [0.234, 0.577], + [0.282, 0.665], + [0.333, 0.745], + [0.406, 0.8], + [0.471, 0.804], + [0.528, 0.747], + [0.557, 0.637], + [0.582, 0.537], + [0.61, 0.357], + [0.607, 0.25], + [0.603, 0.143], + [0.6, 0.037], + [0.597, -0.07], + [0.593, -0.177], + [0.59, -0.283], + [0.587, -0.39], + [0.584, -0.497], + [0.58, -0.603], + [0.577, -0.71], + [0.568, -0.765], + [0.577, -0.71], + [0.58, -0.603], + [0.584, -0.497], + [0.587, -0.39], + [0.59, -0.283], + [0.593, -0.177], + [0.597, -0.07], + [0.6, 0.037], + [0.603, 0.143], + [0.607, 0.25], + [0.61, 0.357], + [0.635, 0.471], + [0.659, 0.604], + [0.712, 0.723], + [0.759, 0.795], + [0.841, 0.825], + [0.947, 0.826], + [1.01, 0.775], + [1.078, 0.692], + [1.108, 0.617], + [1.13, 0.465], + [1.141, 0.3], + [1.141, 0.199], + [1.14, 0.099], + [1.139, -0.001], + [1.138, -0.101], + [1.137, -0.201], + [1.136, -0.302], + [1.136, -0.402], + [1.135, -0.502], + [1.134, -0.602], + [1.133, -0.703], + [1.197, -0.754], + [1.234, -0.786], + [1.306, -0.786], + [1.355, -0.786], + [1.42, -0.786], + [1.505, -0.786], + ], + O: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.565, -0.77], + [0.621, -0.775], + [0.714, -0.769], + [0.806, -0.733], + [0.867, -0.701], + [0.912, -0.644], + [0.959, -0.587], + [1.028, -0.429], + [1.061, -0.246], + [1.067, -0.145], + [1.065, 0.024], + [1.046, 0.265], + [1.037, 0.379], + [0.986, 0.518], + [0.918, 0.668], + [0.782, 0.786], + [0.714, 0.786], + [0.649, 0.76], + [0.572, 0.699], + [0.502, 0.656], + [0.435, 0.572], + [0.38, 0.494], + [0.332, 0.378], + [0.295, 0.296], + [0.271, 0.169], + [0.255, 0.064], + [0.255, -0.026], + [0.255, -0.106], + [0.266, -0.206], + [0.307, -0.371], + [0.34, -0.446], + [0.373, -0.519], + [0.417, -0.592], + [0.451, -0.668], + [0.509, -0.727], + [0.565, -0.77], + [0.621, -0.775], + [0.714, -0.769], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.275, -0.786], + [1.36, -0.786], + [1.445, -0.786], + ], + P: [ + [0.085, -0.786], + [0.17, -0.786], + [0.238, -0.786], + [0.289, -0.786], + [0.289, -0.641], + [0.289, -0.495], + [0.289, -0.349], + [0.289, -0.204], + [0.289, -0.058], + [0.314, -0.055], + [0.41, -0.085], + [0.476, -0.099], + [0.603, -0.071], + [0.676, -0.039], + [0.777, 0.051], + [0.8, 0.075], + [0.856, 0.217], + [0.862, 0.248], + [0.866, 0.337], + [0.862, 0.388], + [0.856, 0.463], + [0.829, 0.525], + [0.776, 0.636], + [0.749, 0.673], + [0.688, 0.748], + [0.655, 0.772], + [0.603, 0.786], + [0.561, 0.786], + [0.493, 0.769], + [0.439, 0.737], + [0.4, 0.701], + [0.354, 0.651], + [0.323, 0.599], + [0.289, 0.525], + [0.289, 0.379], + [0.289, 0.234], + [0.289, 0.088], + [0.289, -0.058], + [0.289, -0.204], + [0.289, -0.349], + [0.289, -0.495], + [0.289, -0.641], + [0.289, -0.786], + [0.374, -0.786], + [0.459, -0.786], + [0.544, -0.786], + [0.629, -0.786], + [0.714, -0.786], + [0.799, -0.786], + [0.884, -0.786], + [0.969, -0.786], + [1.02, -0.786], + [1.105, -0.786], + ], + Q: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.621, -0.786], + [0.565, -0.77], + [0.509, -0.727], + [0.451, -0.668], + [0.417, -0.592], + [0.373, -0.519], + [0.34, -0.446], + [0.307, -0.371], + [0.266, -0.206], + [0.255, -0.106], + [0.255, -0.026], + [0.255, 0.064], + [0.271, 0.169], + [0.295, 0.296], + [0.332, 0.378], + [0.38, 0.494], + [0.435, 0.572], + [0.502, 0.656], + [0.572, 0.71], + [0.649, 0.76], + [0.714, 0.786], + [0.816, 0.777], + [0.918, 0.668], + [0.986, 0.518], + [1.037, 0.379], + [1.062, 0.191], + [1.065, 0.024], + [1.067, -0.145], + [1.061, -0.246], + [1.028, -0.429], + [0.959, -0.587], + [0.912, -0.644], + [0.867, -0.701], + [0.806, -0.733], + [0.714, -0.769], + [0.621, -0.786], + [0.565, -0.77], + [0.509, -0.727], + [0.451, -0.668], + [0.417, -0.592], + [0.443, -0.531], + [0.479, -0.481], + [0.55, -0.43], + [0.674, -0.43], + [0.773, -0.472], + [0.86, -0.532], + [0.914, -0.595], + [1.011, -0.667], + [1.092, -0.732], + [1.182, -0.786], + [1.26, -0.786], + [1.351, -0.786], + ], + R: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.323, -0.786], + [0.408, -0.786], + [0.408, -0.64], + [0.408, -0.494], + [0.408, -0.348], + [0.408, -0.201], + [0.408, -0.055], + [0.408, 0.091], + [0.408, 0.237], + [0.408, 0.384], + [0.408, 0.53], + [0.408, 0.727], + [0.48, 0.744], + [0.552, 0.744], + [0.648, 0.744], + [0.731, 0.744], + [0.816, 0.744], + [0.895, 0.703], + [0.966, 0.616], + [1.005, 0.544], + [1.026, 0.494], + [1.054, 0.378], + [1.051, 0.276], + [1.036, 0.191], + [0.998, 0.132], + [0.94, 0.069], + [0.85, 0.004], + [0.738, -0.016], + [0.629, -0.03], + [0.561, -0.034], + [0.509, -0.037], + [0.433, -0.032], + [0.45, -0.091], + [0.527, -0.191], + [0.595, -0.319], + [0.655, -0.4], + [0.681, -0.437], + [0.719, -0.487], + [0.757, -0.536], + [0.795, -0.585], + [0.85, -0.65], + [0.892, -0.71], + [0.932, -0.769], + [0.969, -0.803], + [1.008, -0.82], + [1.082, -0.829], + [1.131, -0.82], + [1.19, -0.786], + [1.275, -0.786], + ], + S: [ + [0.085, -0.786], + [0.17, -0.786], + [0.238, -0.761], + [0.306, -0.718], + [0.357, -0.676], + [0.391, -0.599], + [0.433, -0.497], + [0.493, -0.327], + [0.544, -0.191], + [0.62, -0.064], + [0.689, 0.064], + [0.79, 0.154], + [0.833, 0.234], + [0.876, 0.335], + [0.909, 0.429], + [0.919, 0.52], + [0.922, 0.614], + [0.905, 0.69], + [0.871, 0.749], + [0.825, 0.777], + [0.739, 0.786], + [0.654, 0.777], + [0.584, 0.76], + [0.549, 0.734], + [0.525, 0.681], + [0.514, 0.605], + [0.507, 0.548], + [0.509, 0.463], + [0.517, 0.404], + [0.544, 0.306], + [0.587, 0.174], + [0.689, 0.064], + [0.79, -0.021], + [0.872, -0.19], + [0.944, -0.302], + [0.918, -0.44], + [0.884, -0.506], + [0.85, -0.574], + [0.765, -0.684], + [0.68, -0.748], + [0.579, -0.761], + [0.519, -0.766], + [0.476, -0.774], + [0.425, -0.774], + [0.344, -0.766], + [0.298, -0.718], + [0.264, -0.65], + [0.256, -0.583], + [0.265, -0.519], + [0.313, -0.465], + [0.354, -0.442], + [0.423, -0.429], + [0.501, -0.429], + [0.581, -0.442], + [0.669, -0.496], + [0.794, -0.616], + [0.855, -0.687], + [0.963, -0.756], + [1.046, -0.803], + [1.14, -0.837], + [1.239, -0.829], + [1.335, -0.786], + ], + T: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.44, -0.786], + [0.514, -0.786], + [0.578, -0.769], + [0.621, -0.75], + [0.683, -0.702], + [0.717, -0.659], + [0.759, -0.567], + [0.79, -0.489], + [0.809, -0.361], + [0.82, -0.229], + [0.83, -0.097], + [0.84, 0.035], + [0.851, 0.168], + [0.861, 0.3], + [0.871, 0.432], + [0.882, 0.564], + [0.882, 0.697], + [0.92, 0.681], + [0.986, 0.659], + [1.052, 0.655], + [1.123, 0.659], + [1.188, 0.681], + [1.275, 0.718], + [1.394, 0.759], + [1.275, 0.718], + [1.188, 0.681], + [1.123, 0.659], + [1.052, 0.655], + [0.986, 0.659], + [0.92, 0.681], + [0.882, 0.697], + [0.785, 0.73], + [0.731, 0.747], + [0.679, 0.762], + [0.595, 0.769], + [0.471, 0.728], + [0.34, 0.652], + [0.471, 0.728], + [0.595, 0.769], + [0.679, 0.762], + [0.731, 0.747], + [0.785, 0.73], + [0.882, 0.697], + [0.882, 0.564], + [0.871, 0.432], + [0.861, 0.3], + [0.851, 0.168], + [0.84, 0.035], + [0.83, -0.097], + [0.82, -0.229], + [0.809, -0.361], + [0.79, -0.489], + [0.579, -0.761], + [0.519, -0.766], + [0.476, -0.774], + [0.425, -0.774], + [0.344, -0.766], + [0.298, -0.718], + [0.264, -0.65], + [0.256, -0.583], + [0.265, -0.519], + [0.313, -0.465], + [0.354, -0.442], + [0.423, -0.429], + [0.501, -0.429], + [0.581, -0.442], + [0.669, -0.496], + [0.794, -0.616], + [0.855, -0.687], + [0.963, -0.756], + [1.046, -0.803], + [1.14, -0.837], + [1.239, -0.829], + [1.335, -0.82], + [1.419, -0.803], + [1.504, -0.786], + [1.589, -0.786], + ], + U: [ + [0.085, -0.786], + [0.17, -0.785], + [0.255, -0.783], + [0.34, -0.781], + [0.421, -0.745], + [0.502, -0.709], + [0.549, -0.661], + [0.521, -0.621], + [0.492, -0.535], + [0.487, -0.355], + [0.503, -0.237], + [0.518, -0.119], + [0.534, -0.001], + [0.549, 0.117], + [0.565, 0.234], + [0.581, 0.352], + [0.596, 0.47], + [0.612, 0.588], + [0.594, 0.643], + [0.539, 0.73], + [0.499, 0.755], + [0.403, 0.729], + [0.349, 0.658], + [0.289, 0.554], + [0.252, 0.493], + [0.195, 0.44], + [0.252, 0.493], + [0.289, 0.554], + [0.349, 0.658], + [0.403, 0.729], + [0.499, 0.755], + [0.539, 0.73], + [0.594, 0.643], + [0.612, 0.588], + [0.596, 0.47], + [0.581, 0.352], + [0.565, 0.234], + [0.549, 0.117], + [0.534, -0.001], + [0.518, -0.119], + [0.503, -0.237], + [0.487, -0.355], + [0.492, -0.535], + [0.521, -0.621], + [0.549, -0.661], + [0.591, -0.715], + [0.678, -0.759], + [0.764, -0.77], + [0.837, -0.738], + [0.902, -0.687], + [0.936, -0.651], + [0.967, -0.594], + [1.005, -0.551], + [1.061, -0.494], + [1.073, -0.316], + [1.088, -0.195], + [1.103, -0.073], + [1.117, 0.049], + [1.132, 0.17], + [1.147, 0.292], + [1.162, 0.413], + [1.177, 0.535], + [1.192, 0.657], + [1.217, 0.817], + [1.192, 0.657], + [1.177, 0.535], + [1.162, 0.413], + [1.147, 0.292], + [1.132, 0.17], + [1.117, 0.049], + [1.103, -0.073], + [1.088, -0.195], + [1.073, -0.316], + [1.066, -0.418], + [1.061, -0.494], + [1.073, -0.609], + [1.096, -0.659], + [1.126, -0.71], + [1.202, -0.752], + [1.275, -0.761], + [1.357, -0.786], + [1.442, -0.786], + [1.53, -0.786], + ], + V: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.778], + [0.425, -0.769], + [0.51, -0.744], + [0.595, -0.718], + [0.646, -0.659], + [0.682, -0.59], + [0.717, -0.65], + [0.751, -0.689], + [0.79, -0.735], + [0.867, -0.786], + [0.969, -0.761], + [1.022, -0.716], + [1.085, -0.571], + [1.118, -0.425], + [1.135, -0.3], + [1.152, -0.175], + [1.169, -0.049], + [1.186, 0.076], + [1.202, 0.202], + [1.219, 0.327], + [1.236, 0.452], + [1.253, 0.578], + [1.27, 0.703], + [1.287, 0.786], + [1.343, 0.744], + [1.42, 0.688], + [1.486, 0.674], + [1.543, 0.699], + [1.615, 0.735], + [1.543, 0.699], + [1.486, 0.674], + [1.42, 0.688], + [1.343, 0.744], + [1.287, 0.786], + [1.27, 0.703], + [1.253, 0.578], + [1.236, 0.452], + [1.219, 0.327], + [1.202, 0.202], + [1.186, 0.076], + [1.169, -0.049], + [1.152, -0.175], + [1.135, -0.3], + [1.118, -0.425], + [1.085, -0.571], + [1.022, -0.716], + [0.969, -0.761], + [0.867, -0.786], + [0.79, -0.735], + [0.751, -0.689], + [0.717, -0.65], + [0.682, -0.59], + [0.642, -0.426], + [0.642, -0.262], + [0.642, -0.097], + [0.642, 0.067], + [0.642, 0.231], + [0.642, 0.395], + [0.626, 0.588], + [0.592, 0.664], + [0.552, 0.735], + [0.505, 0.786], + [0.459, 0.76], + [0.414, 0.718], + [0.371, 0.667], + [0.323, 0.621], + [0.255, 0.542], + [0.323, 0.621], + [0.371, 0.667], + [0.414, 0.718], + [0.459, 0.76], + [0.505, 0.786], + [0.552, 0.735], + [0.592, 0.664], + [0.626, 0.588], + [0.642, 0.395], + [0.642, 0.231], + [0.642, 0.067], + [0.642, -0.097], + [0.642, -0.262], + [0.642, -0.426], + [0.682, -0.59], + [0.717, -0.65], + [0.751, -0.689], + [0.79, -0.735], + [0.867, -0.786], + [0.969, -0.761], + [1.022, -0.716], + [1.105, -0.752], + [1.19, -0.769], + [1.275, -0.786], + [1.36, -0.786], + [1.445, -0.786], + [1.53, -0.786], + [1.615, -0.786], + [1.7, -0.786], + [1.785, -0.786], + ], + W: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.552, -0.739], + [0.516, -0.647], + [0.487, -0.569], + [0.458, -0.43], + [0.454, -0.354], + [0.45, -0.252], + [0.456, -0.096], + [0.463, 0.061], + [0.469, 0.218], + [0.475, 0.374], + [0.481, 0.531], + [0.478, 0.66], + [0.459, 0.724], + [0.413, 0.803], + [0.357, 0.775], + [0.306, 0.659], + [0.238, 0.531], + [0.306, 0.659], + [0.357, 0.775], + [0.413, 0.803], + [0.459, 0.724], + [0.478, 0.66], + [0.481, 0.531], + [0.475, 0.374], + [0.469, 0.218], + [0.463, 0.061], + [0.456, -0.096], + [0.45, -0.252], + [0.454, -0.354], + [0.458, -0.43], + [0.487, -0.569], + [0.516, -0.647], + [0.552, -0.739], + [0.599, -0.76], + [0.652, -0.766], + [0.726, -0.753], + [0.788, -0.724], + [0.856, -0.681], + [0.912, -0.581], + [0.949, -0.494], + [0.987, -0.275], + [0.99, -0.164], + [0.993, -0.052], + [0.996, 0.06], + [0.999, 0.172], + [1.002, 0.283], + [1.005, 0.395], + [1.008, 0.507], + [1.011, 0.619], + [1.014, 0.73], + [1.018, 0.786], + [1.014, 0.73], + [1.011, 0.619], + [1.008, 0.507], + [1.005, 0.395], + [1.002, 0.283], + [0.999, 0.172], + [0.996, 0.06], + [0.993, -0.052], + [0.99, -0.164], + [0.987, -0.275], + [0.99, -0.543], + [1.025, -0.644], + [1.08, -0.695], + [1.158, -0.761], + [1.249, -0.761], + [1.335, -0.718], + [1.401, -0.672], + [1.437, -0.622], + [1.446, -0.474], + [1.455, -0.326], + [1.464, -0.179], + [1.473, -0.031], + [1.482, 0.117], + [1.491, 0.265], + [1.5, 0.413], + [1.509, 0.561], + [1.518, 0.708], + [1.527, 0.786], + [1.518, 0.708], + [1.509, 0.561], + [1.5, 0.413], + [1.491, 0.265], + [1.482, 0.117], + [1.473, -0.031], + [1.464, -0.179], + [1.455, -0.326], + [1.446, -0.474], + [1.437, -0.622], + [1.514, -0.678], + [1.602, -0.718], + [1.688, -0.752], + [1.774, -0.786], + [1.861, -0.786], + [1.945, -0.786], + ], + X: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.321, -0.682], + [0.388, -0.578], + [0.454, -0.473], + [0.52, -0.369], + [0.586, -0.264], + [0.653, -0.16], + [0.719, -0.055], + [0.785, 0.049], + [0.852, 0.154], + [0.918, 0.258], + [0.984, 0.363], + [1.05, 0.467], + [1.117, 0.572], + [1.183, 0.676], + [1.249, 0.781], + [1.183, 0.676], + [1.117, 0.572], + [1.05, 0.467], + [0.984, 0.363], + [0.918, 0.258], + [0.852, 0.154], + [0.781, 0.144], + [0.761, 0.265], + [0.741, 0.387], + [0.721, 0.508], + [0.701, 0.629], + [0.637, 0.768], + [0.512, 0.73], + [0.425, 0.642], + [0.37, 0.577], + [0.308, 0.475], + [0.37, 0.577], + [0.425, 0.642], + [0.512, 0.73], + [0.637, 0.768], + [0.701, 0.629], + [0.721, 0.508], + [0.741, 0.387], + [0.761, 0.265], + [0.781, 0.144], + [0.801, 0.023], + [0.821, -0.099], + [0.841, -0.22], + [0.861, -0.341], + [0.881, -0.463], + [0.901, -0.584], + [0.947, -0.685], + [0.984, -0.782], + [1.037, -0.786], + [1.036, -0.786], + [1.117, -0.786], + [1.214, -0.786], + [1.275, -0.786], + [1.36, -0.786], + [1.445, -0.786], + ], + Y: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.365, -0.701], + [0.387, -0.581], + [0.375, -0.466], + [0.383, -0.34], + [0.404, -0.134], + [0.426, 0.071], + [0.447, 0.276], + [0.468, 0.481], + [0.473, 0.634], + [0.445, 0.749], + [0.41, 0.786], + [0.34, 0.777], + [0.255, 0.752], + [0.34, 0.777], + [0.41, 0.786], + [0.445, 0.749], + [0.473, 0.634], + [0.468, 0.481], + [0.447, 0.276], + [0.426, 0.071], + [0.404, -0.134], + [0.383, -0.34], + [0.375, -0.466], + [0.387, -0.581], + [0.423, -0.684], + [0.467, -0.75], + [0.521, -0.756], + [0.573, -0.733], + [0.628, -0.686], + [0.685, -0.624], + [0.731, -0.548], + [0.79, -0.489], + [0.866, -0.43], + [0.886, -0.303], + [0.906, -0.176], + [0.927, -0.05], + [0.947, 0.077], + [0.968, 0.204], + [0.988, 0.331], + [1.009, 0.458], + [1.029, 0.585], + [1.05, 0.701], + [1.07, 0.786], + [1.05, 0.701], + [1.029, 0.585], + [1.009, 0.458], + [0.988, 0.331], + [0.968, 0.204], + [0.947, 0.077], + [0.927, -0.05], + [0.906, -0.176], + [0.886, -0.303], + [0.866, -0.43], + [0.847, -0.571], + [0.829, -0.712], + [0.81, -0.852], + [0.792, -0.993], + [0.773, -1.134], + [0.755, -1.275], + [0.724, -1.403], + [0.679, -1.484], + [0.62, -1.509], + [0.562, -1.522], + [0.476, -1.534], + [0.408, -1.484], + [0.376, -1.419], + [0.367, -1.306], + [0.392, -1.217], + [0.442, -1.109], + [0.51, -0.999], + [0.57, -0.891], + [0.626, -0.833], + [0.714, -0.786], + [0.782, -0.786], + [0.833, -0.786], + [0.929, -0.786], + [0.986, -0.786], + [1.054, -0.786], + [1.139, -0.786], + [1.224, -0.786], + ], + Z: [ + [0.085, -0.786], + [0.17, -0.786], + [0.245, -0.786], + [0.323, -0.701], + [0.395, -0.577], + [0.488, -0.462], + [0.626, -0.24], + [0.699, -0.091], + [0.75, 0.051], + [0.784, 0.192], + [0.797, 0.37], + [0.762, 0.534], + [0.748, 0.571], + [0.701, 0.657], + [0.628, 0.747], + [0.561, 0.752], + [0.446, 0.715], + [0.342, 0.625], + [0.314, 0.592], + [0.255, 0.53], + [0.314, 0.592], + [0.342, 0.625], + [0.446, 0.715], + [0.561, 0.752], + [0.628, 0.747], + [0.701, 0.657], + [0.748, 0.571], + [0.762, 0.534], + [0.797, 0.37], + [0.784, 0.192], + [0.75, 0.051], + [0.699, -0.091], + [0.626, -0.24], + [0.488, -0.462], + [0.395, -0.577], + [0.323, -0.701], + [0.384, -0.684], + [0.417, -0.665], + [0.532, -0.661], + [0.562, -0.686], + [0.666, -0.95], + [0.652, -1.118], + [0.645, -1.167], + [0.586, -1.385], + [0.57, -1.429], + [0.499, -1.57], + [0.379, -1.58], + [0.305, -1.56], + [0.274, -1.523], + [0.251, -1.475], + [0.234, -1.358], + [0.247, -1.211], + [0.311, -1.087], + [0.375, -0.97], + [0.442, -0.871], + [0.502, -0.799], + [0.595, -0.761], + [0.646, -0.769], + [0.714, -0.786], + [0.792, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + ], + a: [ + [0.085, -0.718], + [0.146, -0.557], + [0.146, -0.5], + [0.153, -0.455], + [0.18, -0.395], + [0.204, -0.353], + [0.219, -0.319], + [0.246, -0.276], + [0.272, -0.234], + [0.298, -0.191], + [0.333, -0.157], + [0.379, -0.132], + [0.432, -0.098], + [0.527, -0.055], + [0.629, -0.036], + [0.679, -0.036], + [0.697, -0.149], + [0.689, -0.293], + [0.68, -0.404], + [0.663, -0.489], + [0.654, -0.592], + [0.646, -0.639], + [0.561, -0.718], + [0.501, -0.773], + [0.425, -0.801], + [0.357, -0.82], + [0.279, -0.801], + [0.23, -0.754], + [0.213, -0.731], + [0.184, -0.681], + [0.151, -0.616], + [0.146, -0.557], + [0.146, -0.5], + [0.153, -0.455], + [0.18, -0.395], + [0.204, -0.353], + [0.219, -0.319], + [0.246, -0.276], + [0.272, -0.234], + [0.298, -0.191], + [0.333, -0.157], + [0.379, -0.132], + [0.432, -0.098], + [0.527, -0.055], + [0.629, -0.036], + [0.679, -0.036], + [0.697, -0.149], + [0.689, -0.293], + [0.68, -0.404], + [0.663, -0.489], + [0.654, -0.592], + [0.646, -0.639], + [0.678, -0.744], + [0.729, -0.801], + [0.781, -0.786], + [0.85, -0.786], + [0.935, -0.786], + ], + b: [ + [0.043, -0.786], + [0.085, -0.761], + [0.128, -0.727], + [0.17, -0.693], + [0.199, -0.667], + [0.227, -0.625], + [0.256, -0.574], + [0.285, -0.497], + [0.313, -0.429], + [0.342, -0.361], + [0.371, -0.268], + [0.399, -0.191], + [0.428, -0.106], + [0.457, -0.004], + [0.485, 0.064], + [0.514, 0.14], + [0.543, 0.241], + [0.571, 0.32], + [0.587, 0.399], + [0.588, 0.51], + [0.572, 0.602], + [0.529, 0.674], + [0.473, 0.743], + [0.432, 0.75], + [0.397, 0.739], + [0.367, 0.724], + [0.343, 0.686], + [0.323, 0.627], + [0.318, 0.497], + [0.316, 0.368], + [0.315, 0.238], + [0.313, 0.108], + [0.316, -0.022], + [0.318, -0.152], + [0.32, -0.282], + [0.321, -0.412], + [0.323, -0.542], + [0.333, -0.672], + [0.352, -0.718], + [0.381, -0.771], + [0.412, -0.786], + [0.463, -0.786], + [0.5, -0.782], + [0.537, -0.764], + [0.564, -0.746], + [0.59, -0.688], + [0.604, -0.634], + [0.622, -0.573], + [0.636, -0.514], + [0.655, -0.446], + [0.662, -0.377], + [0.67, -0.293], + [0.672, -0.2], + [0.674, -0.112], + [0.743, -0.14], + [0.79, -0.157], + [0.842, -0.149], + ], + c: [ + [0.034, -0.769], + [0.051, -0.735], + [0.076, -0.676], + [0.097, -0.599], + [0.113, -0.565], + [0.136, -0.514], + [0.163, -0.446], + [0.21, -0.344], + [0.246, -0.268], + [0.272, -0.222], + [0.296, -0.191], + [0.329, -0.152], + [0.36, -0.123], + [0.396, -0.094], + [0.442, -0.081], + [0.485, -0.072], + [0.529, -0.064], + [0.595, -0.064], + [0.646, -0.106], + [0.68, -0.191], + [0.646, -0.106], + [0.595, -0.064], + [0.529, -0.064], + [0.485, -0.072], + [0.442, -0.081], + [0.396, -0.094], + [0.36, -0.123], + [0.329, -0.152], + [0.296, -0.191], + [0.272, -0.222], + [0.246, -0.268], + [0.199, -0.407], + [0.199, -0.497], + [0.202, -0.565], + [0.22, -0.657], + [0.246, -0.708], + [0.263, -0.731], + [0.279, -0.754], + [0.306, -0.795], + [0.355, -0.829], + [0.446, -0.846], + [0.561, -0.829], + [0.637, -0.82], + [0.697, -0.812], + [0.765, -0.803], + [0.85, -0.795], + [0.935, -0.786], + ], + d: [ + [0.085, -0.786], + [0.136, -0.769], + [0.181, -0.701], + [0.238, -0.616], + [0.279, -0.557], + [0.282, -0.5], + [0.289, -0.455], + [0.298, -0.395], + [0.313, -0.319], + [0.333, -0.242], + [0.357, -0.191], + [0.425, -0.123], + [0.469, -0.089], + [0.515, -0.072], + [0.629, -0.043], + [0.697, -0.036], + [0.782, -0.036], + [0.697, -0.036], + [0.629, -0.043], + [0.515, -0.072], + [0.469, -0.089], + [0.425, -0.123], + [0.357, -0.191], + [0.333, -0.242], + [0.313, -0.319], + [0.298, -0.395], + [0.289, -0.455], + [0.282, -0.5], + [0.279, -0.557], + [0.287, -0.616], + [0.32, -0.681], + [0.366, -0.754], + [0.415, -0.801], + [0.459, -0.81], + [0.51, -0.808], + [0.561, -0.801], + [0.637, -0.773], + [0.697, -0.718], + [0.799, -0.65], + [0.867, -0.639], + [0.867, -0.592], + [0.867, -0.489], + [0.867, -0.404], + [0.867, -0.293], + [0.867, -0.149], + [0.867, 0.064], + [0.867, 0.234], + [0.867, 0.404], + [0.867, 0.574], + [0.867, 0.744], + [0.867, 0.574], + [0.867, 0.404], + [0.867, 0.234], + [0.867, 0.064], + [0.867, -0.149], + [0.867, -0.293], + [0.867, -0.404], + [0.867, -0.489], + [0.867, -0.592], + [0.867, -0.639], + [0.875, -0.701], + [0.899, -0.744], + [0.95, -0.801], + [1.002, -0.824], + [1.068, -0.815], + [1.122, -0.812], + [1.19, -0.786], + ], + e: [ + [0.085, -0.786], + [0.17, -0.786], + [0.29, -0.744], + [0.378, -0.693], + [0.459, -0.659], + [0.503, -0.616], + [0.537, -0.548], + [0.561, -0.497], + [0.571, -0.446], + [0.576, -0.404], + [0.579, -0.336], + [0.576, -0.276], + [0.568, -0.229], + [0.559, -0.191], + [0.551, -0.16], + [0.534, -0.106], + [0.517, -0.072], + [0.486, -0.047], + [0.444, -0.03], + [0.401, -0.021], + [0.359, -0.03], + [0.316, -0.047], + [0.286, -0.072], + [0.269, -0.106], + [0.252, -0.16], + [0.243, -0.191], + [0.235, -0.229], + [0.226, -0.276], + [0.223, -0.336], + [0.226, -0.404], + [0.231, -0.446], + [0.241, -0.497], + [0.265, -0.548], + [0.299, -0.616], + [0.342, -0.659], + [0.422, -0.701], + [0.51, -0.744], + [0.605, -0.761], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + ], + f: [ + [0.043, -0.786], + [0.076, -0.779], + [0.107, -0.773], + [0.145, -0.744], + [0.192, -0.71], + [0.225, -0.684], + [0.264, -0.667], + [0.321, -0.642], + [0.374, -0.592], + [0.425, -0.548], + [0.451, -0.446], + [0.468, -0.361], + [0.485, -0.276], + [0.501, -0.191], + [0.518, -0.106], + [0.535, -0.038], + [0.552, 0.047], + [0.565, 0.131], + [0.582, 0.212], + [0.605, 0.299], + [0.619, 0.402], + [0.632, 0.506], + [0.614, 0.607], + [0.578, 0.667], + [0.535, 0.68], + [0.485, 0.684], + [0.425, 0.671], + [0.374, 0.652], + [0.329, 0.619], + [0.298, 0.531], + [0.294, 0.428], + [0.292, 0.299], + [0.294, 0.169], + [0.296, -0.0], + [0.296, -0.172], + [0.296, -0.276], + [0.298, -0.385], + [0.297, -0.489], + [0.296, -0.598], + [0.295, -0.71], + [0.295, -0.829], + [0.292, -0.931], + [0.289, -1.041], + [0.286, -1.126], + [0.281, -1.254], + [0.281, -1.356], + [0.279, -1.466], + [0.272, -1.602], + [0.323, -1.602], + [0.374, -1.601], + [0.423, -1.594], + [0.474, -1.551], + [0.51, -1.509], + [0.542, -1.466], + [0.55, -1.381], + [0.542, -1.296], + [0.533, -1.211], + [0.522, -1.126], + [0.508, -1.041], + [0.491, -0.956], + [0.468, -0.888], + [0.442, -0.846], + [0.383, -0.752], + [0.42, -0.769], + [0.468, -0.803], + [0.51, -0.829], + [0.567, -0.812], + [0.639, -0.803], + [0.723, -0.795], + [0.807, -0.786], + [0.892, -0.786], + ], + g: [ + [0.033, -0.778], + [0.067, -0.761], + [0.117, -0.727], + [0.145, -0.706], + [0.204, -0.662], + [0.238, -0.633], + [0.284, -0.592], + [0.317, -0.557], + [0.35, -0.506], + [0.384, -0.458], + [0.4, -0.43], + [0.434, -0.384], + [0.467, -0.337], + [0.5, -0.291], + [0.527, -0.251], + [0.559, -0.217], + [0.601, -0.175], + [0.633, -0.149], + [0.678, -0.132], + [0.729, -0.115], + [0.78, -0.098], + [0.831, -0.086], + [0.883, -0.089], + [0.901, -0.123], + [0.898, -0.191], + [0.894, -0.259], + [0.891, -0.327], + [0.887, -0.395], + [0.884, -0.463], + [0.881, -0.531], + [0.877, -0.599], + [0.874, -0.667], + [0.87, -0.735], + [0.816, -0.761], + [0.763, -0.786], + [0.678, -0.812], + [0.61, -0.824], + [0.527, -0.812], + [0.457, -0.786], + [0.4, -0.754], + [0.355, -0.676], + [0.334, -0.592], + [0.317, -0.557], + [0.35, -0.506], + [0.384, -0.458], + [0.4, -0.43], + [0.434, -0.384], + [0.467, -0.337], + [0.5, -0.291], + [0.527, -0.251], + [0.559, -0.217], + [0.601, -0.175], + [0.633, -0.149], + [0.678, -0.132], + [0.729, -0.115], + [0.78, -0.098], + [0.831, -0.086], + [0.883, -0.089], + [0.901, -0.123], + [0.898, -0.191], + [0.894, -0.259], + [0.891, -0.327], + [0.887, -0.395], + [0.884, -0.463], + [0.881, -0.531], + [0.877, -0.599], + [0.874, -0.667], + [0.87, -0.735], + [0.867, -0.803], + [0.864, -0.871], + [0.86, -0.939], + [0.857, -1.007], + [0.853, -1.075], + [0.85, -1.143], + [0.847, -1.211], + [0.843, -1.279], + [0.84, -1.347], + [0.836, -1.415], + [0.833, -1.484], + [0.83, -1.551], + [0.826, -1.619], + [0.765, -1.615], + [0.697, -1.608], + [0.646, -1.598], + [0.595, -1.568], + [0.544, -1.526], + [0.493, -1.466], + [0.459, -1.398], + [0.442, -1.347], + [0.425, -1.279], + [0.433, -1.228], + [0.459, -1.186], + [0.5, -1.125], + [0.53, -1.084], + [0.567, -1.041], + [0.627, -0.99], + [0.695, -0.948], + [0.746, -0.914], + [0.8, -0.871], + [0.873, -0.829], + [0.949, -0.82], + [1.037, -0.812], + [1.105, -0.803], + [1.19, -0.786], + ], + h: [ + [0.046, -0.71], + [0.072, -0.666], + [0.11, -0.611], + [0.134, -0.564], + [0.169, -0.515], + [0.197, -0.467], + [0.221, -0.419], + [0.25, -0.374], + [0.277, -0.327], + [0.303, -0.276], + [0.326, -0.242], + [0.349, -0.2], + [0.383, -0.155], + [0.432, -0.083], + [0.483, -0.038], + [0.508, 0.013], + [0.549, 0.064], + [0.575, 0.131], + [0.602, 0.202], + [0.617, 0.249], + [0.641, 0.297], + [0.651, 0.37], + [0.66, 0.438], + [0.662, 0.523], + [0.651, 0.616], + [0.641, 0.693], + [0.599, 0.742], + [0.542, 0.769], + [0.483, 0.769], + [0.406, 0.738], + [0.355, 0.702], + [0.321, 0.636], + [0.295, 0.511], + [0.295, 0.425], + [0.295, 0.339], + [0.295, 0.227], + [0.295, 0.114], + [0.295, 0.001], + [0.295, -0.111], + [0.295, -0.224], + [0.295, -0.336], + [0.295, -0.449], + [0.295, -0.561], + [0.295, -0.674], + [0.295, -0.786], + [0.299, -0.674], + [0.302, -0.561], + [0.329, -0.514], + [0.368, -0.447], + [0.392, -0.386], + [0.42, -0.307], + [0.447, -0.255], + [0.475, -0.185], + [0.507, -0.149], + [0.564, -0.132], + [0.625, -0.123], + [0.678, -0.132], + [0.743, -0.166], + [0.767, -0.229], + [0.76, -0.307], + [0.755, -0.375], + [0.748, -0.453], + [0.748, -0.533], + [0.761, -0.623], + [0.786, -0.717], + [0.845, -0.766], + [0.92, -0.794], + [1.005, -0.786], + ], + i: [ + [0.085, -0.791], + [0.173, -0.803], + [0.256, -0.811], + [0.289, -0.765], + [0.316, -0.712], + [0.331, -0.635], + [0.333, -0.55], + [0.335, -0.508], + [0.341, -0.431], + [0.346, -0.372], + [0.352, -0.287], + [0.352, -0.202], + [0.354, -0.143], + [0.357, -0.032], + [0.357, -0.143], + [0.358, -0.202], + [0.356, -0.287], + [0.36, -0.372], + [0.364, -0.432], + [0.368, -0.508], + [0.369, -0.551], + [0.37, -0.636], + [0.384, -0.712], + [0.409, -0.765], + [0.441, -0.811], + [0.518, -0.829], + [0.585, -0.795], + [0.677, -0.786], + ], + j: [ + [0.042, -0.761], + [0.098, -0.734], + [0.131, -0.693], + [0.159, -0.658], + [0.188, -0.613], + [0.199, -0.589], + [0.225, -0.548], + [0.25, -0.516], + [0.272, -0.468], + [0.295, -0.42], + [0.317, -0.36], + [0.334, -0.299], + [0.343, -0.264], + [0.36, -0.195], + [0.373, -0.1], + [0.383, -0.049], + [0.383, -0.099], + [0.383, -0.167], + [0.383, -0.276], + [0.383, -0.395], + [0.383, -0.513], + [0.383, -0.632], + [0.383, -0.751], + [0.383, -0.869], + [0.383, -0.988], + [0.383, -1.107], + [0.383, -1.225], + [0.383, -1.344], + [0.368, -1.405], + [0.349, -1.466], + [0.326, -1.514], + [0.296, -1.53], + [0.255, -1.534], + [0.218, -1.518], + [0.196, -1.496], + [0.172, -1.406], + [0.162, -1.296], + [0.159, -1.211], + [0.173, -1.126], + [0.196, -1.053], + [0.218, -1.005], + [0.241, -0.957], + [0.263, -0.909], + [0.286, -0.861], + [0.301, -0.837], + [0.328, -0.808], + [0.356, -0.78], + [0.384, -0.753], + [0.408, -0.742], + [0.439, -0.734], + [0.473, -0.733], + [0.509, -0.75], + [0.552, -0.767], + [0.595, -0.786], + ], + k: [ + [0.043, -0.744], + [0.076, -0.701], + [0.106, -0.659], + [0.136, -0.616], + [0.17, -0.548], + [0.206, -0.5], + [0.239, -0.453], + [0.272, -0.407], + [0.298, -0.384], + [0.337, -0.305], + [0.384, -0.226], + [0.431, -0.147], + [0.479, -0.069], + [0.526, 0.01], + [0.555, 0.056], + [0.584, 0.103], + [0.605, 0.149], + [0.622, 0.195], + [0.659, 0.261], + [0.677, 0.309], + [0.695, 0.356], + [0.713, 0.404], + [0.732, 0.451], + [0.75, 0.499], + [0.765, 0.565], + [0.771, 0.635], + [0.737, 0.676], + [0.695, 0.684], + [0.654, 0.684], + [0.603, 0.684], + [0.552, 0.676], + [0.501, 0.659], + [0.451, 0.612], + [0.4, 0.562], + [0.357, 0.466], + [0.34, 0.369], + [0.34, 0.273], + [0.34, 0.176], + [0.34, 0.079], + [0.34, 0.01], + [0.34, -0.066], + [0.34, -0.143], + [0.34, -0.219], + [0.34, -0.296], + [0.34, -0.372], + [0.34, -0.449], + [0.34, -0.525], + [0.34, -0.601], + [0.34, -0.678], + [0.34, -0.754], + [0.34, -0.847], + [0.34, -0.754], + [0.34, -0.678], + [0.34, -0.601], + [0.34, -0.525], + [0.34, -0.449], + [0.354, -0.372], + [0.397, -0.361], + [0.465, -0.353], + [0.533, -0.344], + [0.618, -0.327], + [0.686, -0.302], + [0.754, -0.276], + [0.797, -0.234], + [0.822, -0.198], + [0.812, -0.14], + [0.788, -0.089], + [0.758, -0.059], + [0.72, -0.032], + [0.652, -0.055], + [0.601, -0.106], + [0.516, -0.191], + [0.465, -0.276], + [0.431, -0.336], + [0.383, -0.378], + [0.414, -0.421], + [0.455, -0.453], + [0.489, -0.5], + [0.522, -0.546], + [0.554, -0.592], + [0.577, -0.639], + [0.591, -0.662], + [0.622, -0.708], + [0.655, -0.754], + [0.688, -0.801], + [0.729, -0.846], + [0.771, -0.871], + [0.814, -0.863], + [0.856, -0.846], + [0.899, -0.829], + [0.941, -0.812], + [0.971, -0.803], + [1.011, -0.786], + [1.065, -0.803], + [1.105, -0.786], + ], + l: [ + [0.06, -0.744], + [0.097, -0.694], + [0.124, -0.646], + [0.145, -0.616], + [0.171, -0.574], + [0.194, -0.526], + [0.224, -0.477], + [0.255, -0.429], + [0.289, -0.381], + [0.306, -0.332], + [0.34, -0.286], + [0.377, -0.238], + [0.403, -0.191], + [0.435, -0.115], + [0.459, -0.055], + [0.483, 0.013], + [0.501, 0.056], + [0.51, 0.095], + [0.524, 0.14], + [0.534, 0.19], + [0.548, 0.237], + [0.554, 0.284], + [0.566, 0.351], + [0.578, 0.404], + [0.585, 0.48], + [0.594, 0.566], + [0.595, 0.613], + [0.585, 0.682], + [0.55, 0.734], + [0.515, 0.771], + [0.48, 0.782], + [0.451, 0.786], + [0.4, 0.781], + [0.347, 0.767], + [0.324, 0.719], + [0.315, 0.672], + [0.308, 0.632], + [0.304, 0.574], + [0.304, 0.488], + [0.304, 0.401], + [0.304, 0.314], + [0.304, 0.227], + [0.304, 0.141], + [0.304, 0.054], + [0.304, -0.033], + [0.304, -0.119], + [0.303, -0.206], + [0.303, -0.293], + [0.303, -0.38], + [0.303, -0.466], + [0.303, -0.553], + [0.303, -0.64], + [0.311, -0.702], + [0.343, -0.752], + [0.383, -0.778], + [0.434, -0.784], + [0.483, -0.807], + [0.538, -0.821], + [0.603, -0.803], + [0.677, -0.795], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + ], + m: [ + [0.066, -0.744], + [0.1, -0.708], + [0.116, -0.685], + [0.15, -0.639], + [0.166, -0.615], + [0.2, -0.569], + [0.216, -0.546], + [0.233, -0.523], + [0.25, -0.5], + [0.27, -0.463], + [0.295, -0.412], + [0.316, -0.384], + [0.324, -0.361], + [0.334, -0.337], + [0.349, -0.314], + [0.372, -0.276], + [0.389, -0.251], + [0.416, -0.222], + [0.449, -0.175], + [0.466, -0.152], + [0.482, -0.129], + [0.499, -0.106], + [0.527, -0.081], + [0.567, -0.069], + [0.603, -0.055], + [0.649, -0.059], + [0.665, -0.083], + [0.669, -0.103], + [0.674, -0.154], + [0.679, -0.205], + [0.685, -0.256], + [0.69, -0.307], + [0.695, -0.358], + [0.686, -0.402], + [0.676, -0.447], + [0.666, -0.491], + [0.657, -0.535], + [0.647, -0.579], + [0.637, -0.624], + [0.628, -0.668], + [0.618, -0.712], + [0.608, -0.756], + [0.599, -0.801], + [0.608, -0.756], + [0.618, -0.712], + [0.628, -0.668], + [0.637, -0.624], + [0.647, -0.579], + [0.657, -0.535], + [0.666, -0.491], + [0.676, -0.447], + [0.686, -0.402], + [0.695, -0.358], + [0.715, -0.314], + [0.743, -0.276], + [0.765, -0.245], + [0.782, -0.222], + [0.798, -0.198], + [0.815, -0.175], + [0.832, -0.152], + [0.848, -0.129], + [0.882, -0.089], + [0.916, -0.064], + [0.966, -0.044], + [1.015, -0.036], + [1.031, -0.059], + [1.048, -0.083], + [1.065, -0.106], + [1.075, -0.143], + [1.085, -0.18], + [1.095, -0.217], + [1.105, -0.254], + [1.114, -0.291], + [1.103, -0.34], + [1.091, -0.388], + [1.08, -0.437], + [1.068, -0.486], + [1.056, -0.534], + [1.045, -0.583], + [1.033, -0.632], + [1.021, -0.68], + [1.01, -0.729], + [1.009, -0.777], + [1.01, -0.729], + [1.021, -0.68], + [1.033, -0.632], + [1.045, -0.583], + [1.056, -0.534], + [1.068, -0.486], + [1.08, -0.437], + [1.091, -0.388], + [1.103, -0.34], + [1.114, -0.291], + [1.131, -0.268], + [1.156, -0.234], + [1.181, -0.198], + [1.198, -0.175], + [1.215, -0.14], + [1.248, -0.106], + [1.264, -0.083], + [1.29, -0.059], + [1.358, -0.038], + [1.431, -0.059], + [1.464, -0.106], + [1.48, -0.129], + [1.497, -0.175], + [1.489, -0.224], + [1.48, -0.272], + [1.472, -0.32], + [1.464, -0.369], + [1.455, -0.417], + [1.447, -0.466], + [1.439, -0.514], + [1.431, -0.562], + [1.422, -0.611], + [1.414, -0.659], + [1.414, -0.708], + [1.447, -0.754], + [1.464, -0.777], + [1.496, -0.803], + [1.58, -0.812], + [1.63, -0.812], + [1.677, -0.799], + [1.73, -0.795], + [1.785, -0.786], + ], + n: [ + [0.033, -0.786], + [0.067, -0.786], + [0.085, -0.744], + [0.102, -0.701], + [0.119, -0.625], + [0.145, -0.531], + [0.17, -0.446], + [0.196, -0.361], + [0.221, -0.234], + [0.255, -0.106], + [0.292, 0.01], + [0.332, 0.064], + [0.374, 0.038], + [0.4, -0.013], + [0.414, -0.059], + [0.423, -0.106], + [0.431, -0.149], + [0.435, -0.198], + [0.43, -0.254], + [0.43, -0.31], + [0.43, -0.365], + [0.43, -0.421], + [0.43, -0.476], + [0.43, -0.532], + [0.43, -0.588], + [0.43, -0.643], + [0.43, -0.699], + [0.43, -0.754], + [0.43, -0.699], + [0.43, -0.643], + [0.43, -0.588], + [0.43, -0.532], + [0.43, -0.476], + [0.43, -0.421], + [0.43, -0.365], + [0.43, -0.31], + [0.43, -0.254], + [0.459, -0.242], + [0.485, -0.217], + [0.508, -0.198], + [0.525, -0.175], + [0.542, -0.152], + [0.558, -0.129], + [0.587, -0.098], + [0.62, -0.059], + [0.656, -0.013], + [0.691, 0.01], + [0.741, 0.01], + [0.774, -0.013], + [0.791, -0.036], + [0.808, -0.059], + [0.816, -0.106], + [0.825, -0.149], + [0.825, -0.234], + [0.825, -0.293], + [0.825, -0.361], + [0.825, -0.421], + [0.825, -0.48], + [0.825, -0.523], + [0.825, -0.574], + [0.825, -0.616], + [0.825, -0.662], + [0.825, -0.708], + [0.833, -0.761], + [0.865, -0.812], + [0.924, -0.82], + [0.967, -0.812], + [1.024, -0.786], + ], + o: [ + [0.085, -0.727], + [0.134, -0.659], + [0.162, -0.608], + [0.187, -0.557], + [0.204, -0.514], + [0.214, -0.48], + [0.238, -0.43], + [0.256, -0.395], + [0.267, -0.361], + [0.289, -0.319], + [0.314, -0.268], + [0.331, -0.245], + [0.346, -0.222], + [0.372, -0.183], + [0.397, -0.152], + [0.414, -0.129], + [0.431, -0.106], + [0.447, -0.083], + [0.482, -0.072], + [0.525, -0.055], + [0.584, -0.055], + [0.627, -0.072], + [0.647, -0.083], + [0.669, -0.106], + [0.685, -0.123], + [0.697, -0.149], + [0.714, -0.175], + [0.72, -0.224], + [0.719, -0.272], + [0.724, -0.32], + [0.723, -0.368], + [0.716, -0.417], + [0.711, -0.465], + [0.702, -0.513], + [0.689, -0.562], + [0.671, -0.61], + [0.654, -0.658], + [0.643, -0.701], + [0.62, -0.752], + [0.595, -0.795], + [0.552, -0.829], + [0.51, -0.846], + [0.459, -0.854], + [0.397, -0.842], + [0.372, -0.82], + [0.347, -0.791], + [0.314, -0.754], + [0.298, -0.731], + [0.281, -0.708], + [0.264, -0.685], + [0.253, -0.659], + [0.236, -0.616], + [0.219, -0.574], + [0.207, -0.531], + [0.214, -0.48], + [0.238, -0.43], + [0.256, -0.395], + [0.267, -0.361], + [0.289, -0.319], + [0.314, -0.268], + [0.331, -0.245], + [0.346, -0.222], + [0.372, -0.183], + [0.397, -0.152], + [0.414, -0.129], + [0.431, -0.106], + [0.447, -0.083], + [0.482, -0.072], + [0.524, -0.106], + [0.544, -0.149], + [0.57, -0.183], + [0.595, -0.2], + [0.629, -0.217], + [0.663, -0.225], + [0.697, -0.225], + [0.731, -0.225], + [0.765, -0.225], + [0.799, -0.221], + [0.833, -0.217], + [0.867, -0.208], + [0.901, -0.191], + [0.935, -0.174], + [0.969, -0.149], + ], + p: [ + [0.069, -0.801], + [0.13, -0.767], + [0.181, -0.693], + [0.211, -0.61], + [0.232, -0.524], + [0.253, -0.438], + [0.274, -0.352], + [0.291, -0.3], + [0.316, -0.257], + [0.337, -0.179], + [0.364, -0.136], + [0.372, -0.215], + [0.37, -0.323], + [0.368, -0.431], + [0.367, -0.539], + [0.365, -0.646], + [0.363, -0.754], + [0.361, -0.862], + [0.359, -0.97], + [0.357, -1.078], + [0.355, -1.186], + [0.353, -1.294], + [0.352, -1.402], + [0.35, -1.51], + [0.352, -1.402], + [0.353, -1.294], + [0.355, -1.186], + [0.357, -1.078], + [0.359, -0.97], + [0.361, -0.862], + [0.363, -0.754], + [0.365, -0.646], + [0.367, -0.539], + [0.368, -0.431], + [0.37, -0.323], + [0.372, -0.215], + [0.374, -0.107], + [0.364, -0.136], + [0.407, -0.091], + [0.438, -0.048], + [0.478, -0.02], + [0.51, -0.002], + [0.534, 0.007], + [0.564, 0.017], + [0.61, 0.01], + [0.662, -0.011], + [0.709, -0.077], + [0.722, -0.104], + [0.753, -0.17], + [0.771, -0.282], + [0.771, -0.357], + [0.774, -0.469], + [0.76, -0.538], + [0.748, -0.616], + [0.726, -0.654], + [0.691, -0.694], + [0.651, -0.714], + [0.589, -0.754], + [0.531, -0.747], + [0.476, -0.744], + [0.425, -0.727], + [0.476, -0.744], + [0.531, -0.747], + [0.589, -0.754], + [0.625, -0.748], + [0.678, -0.763], + [0.763, -0.777], + [0.814, -0.783], + [0.878, -0.803], + [0.935, -0.803], + [0.996, -0.795], + [1.054, -0.786], + ], + q: [ + [0.033, -0.778], + [0.067, -0.761], + [0.117, -0.727], + [0.145, -0.706], + [0.183, -0.662], + [0.216, -0.615], + [0.233, -0.592], + [0.275, -0.548], + [0.299, -0.506], + [0.333, -0.458], + [0.349, -0.43], + [0.383, -0.384], + [0.416, -0.337], + [0.449, -0.291], + [0.476, -0.251], + [0.508, -0.217], + [0.55, -0.175], + [0.582, -0.149], + [0.627, -0.132], + [0.678, -0.115], + [0.729, -0.098], + [0.78, -0.086], + [0.832, -0.089], + [0.85, -0.123], + [0.847, -0.191], + [0.843, -0.259], + [0.84, -0.327], + [0.836, -0.395], + [0.833, -0.463], + [0.83, -0.531], + [0.826, -0.599], + [0.823, -0.667], + [0.819, -0.735], + [0.765, -0.761], + [0.712, -0.786], + [0.627, -0.812], + [0.559, -0.824], + [0.476, -0.812], + [0.406, -0.786], + [0.349, -0.754], + [0.304, -0.676], + [0.283, -0.592], + [0.299, -0.506], + [0.333, -0.458], + [0.349, -0.43], + [0.383, -0.384], + [0.416, -0.337], + [0.449, -0.291], + [0.476, -0.251], + [0.508, -0.217], + [0.55, -0.175], + [0.582, -0.149], + [0.627, -0.132], + [0.678, -0.115], + [0.729, -0.098], + [0.78, -0.086], + [0.832, -0.089], + [0.85, -0.123], + [0.847, -0.191], + [0.843, -0.259], + [0.84, -0.327], + [0.836, -0.395], + [0.833, -0.463], + [0.83, -0.531], + [0.826, -0.599], + [0.823, -0.667], + [0.819, -0.735], + [0.816, -0.803], + [0.813, -0.871], + [0.809, -0.939], + [0.806, -1.007], + [0.802, -1.075], + [0.799, -1.143], + [0.796, -1.211], + [0.792, -1.279], + [0.789, -1.347], + [0.785, -1.415], + [0.782, -1.484], + [0.779, -1.551], + [0.775, -1.619], + [0.816, -1.615], + [0.867, -1.608], + [0.901, -1.598], + [0.935, -1.568], + [0.969, -1.526], + [1.003, -1.466], + [1.037, -1.398], + [1.054, -1.347], + [1.062, -1.279], + [1.054, -1.228], + [1.037, -1.186], + [1.003, -1.125], + [0.969, -1.084], + [0.935, -1.041], + [0.901, -0.99], + [0.867, -0.948], + [0.85, -0.914], + [0.85, -0.854], + [0.898, -0.829], + [0.952, -0.812], + [1.003, -0.795], + [1.054, -0.786], + [1.139, -0.786], + [1.224, -0.786], + ], + r: [ + [0.085, -0.786], + [0.17, -0.752], + [0.221, -0.701], + [0.255, -0.659], + [0.289, -0.616], + [0.309, -0.531], + [0.332, -0.446], + [0.349, -0.353], + [0.362, -0.293], + [0.374, -0.234], + [0.389, -0.166], + [0.4, -0.106], + [0.527, -0.106], + [0.612, -0.106], + [0.697, -0.106], + [0.782, -0.106], + [0.867, -0.106], + [0.867, -0.149], + [0.859, -0.234], + [0.85, -0.319], + [0.833, -0.404], + [0.816, -0.489], + [0.807, -0.574], + [0.833, -0.659], + [0.867, -0.701], + [0.935, -0.744], + [1.02, -0.769], + [1.122, -0.786], + [1.241, -0.786], + ], + s: [ + [0.066, -0.769], + [0.134, -0.731], + [0.168, -0.701], + [0.2, -0.667], + [0.255, -0.615], + [0.313, -0.531], + [0.383, -0.446], + [0.417, -0.378], + [0.442, -0.319], + [0.451, -0.242], + [0.451, -0.191], + [0.425, -0.064], + [0.51, -0.14], + [0.561, -0.191], + [0.612, -0.234], + [0.653, -0.276], + [0.697, -0.319], + [0.731, -0.402], + [0.748, -0.446], + [0.756, -0.49], + [0.765, -0.534], + [0.756, -0.578], + [0.739, -0.622], + [0.714, -0.666], + [0.68, -0.71], + [0.632, -0.747], + [0.567, -0.786], + [0.517, -0.801], + [0.468, -0.803], + [0.417, -0.801], + [0.374, -0.786], + [0.306, -0.761], + [0.238, -0.727], + [0.306, -0.761], + [0.374, -0.786], + [0.417, -0.801], + [0.468, -0.803], + [0.517, -0.801], + [0.567, -0.786], + [0.632, -0.747], + [0.678, -0.769], + [0.72, -0.786], + [0.763, -0.786], + [0.805, -0.786], + [0.85, -0.786], + [0.935, -0.786], + ], + t: [ + [0.085, -0.786], + [0.17, -0.786], + [0.238, -0.786], + [0.298, -0.786], + [0.374, -0.786], + [0.445, -0.786], + [0.484, -0.759], + [0.499, -0.605], + [0.514, -0.452], + [0.529, -0.299], + [0.543, -0.146], + [0.558, 0.008], + [0.573, 0.161], + [0.588, 0.314], + [0.552, 0.314], + [0.522, 0.314], + [0.467, 0.314], + [0.411, 0.314], + [0.34, 0.314], + [0.255, 0.314], + [0.17, 0.314], + [0.255, 0.314], + [0.34, 0.314], + [0.411, 0.314], + [0.467, 0.314], + [0.522, 0.314], + [0.552, 0.314], + [0.633, 0.314], + [0.688, 0.314], + [0.729, 0.314], + [0.784, 0.314], + [0.84, 0.314], + [0.895, 0.314], + [0.978, 0.314], + [1.062, 0.314], + [0.978, 0.314], + [0.895, 0.314], + [0.84, 0.314], + [0.784, 0.314], + [0.729, 0.314], + [0.688, 0.314], + [0.633, 0.314], + [0.588, 0.314], + [0.602, 0.467], + [0.617, 0.621], + [0.632, 0.774], + [0.632, 0.621], + [0.632, 0.467], + [0.632, 0.314], + [0.632, 0.161], + [0.632, 0.008], + [0.632, -0.146], + [0.632, -0.299], + [0.632, -0.452], + [0.632, -0.605], + [0.632, -0.759], + [0.659, -0.805], + [0.72, -0.816], + [0.807, -0.799], + [0.894, -0.791], + [0.978, -0.786], + [1.062, -0.786], + [1.147, -0.786], + [1.232, -0.786], + ], + u: [ + [0.043, -0.761], + [0.085, -0.744], + [0.128, -0.727], + [0.156, -0.71], + [0.179, -0.69], + [0.204, -0.646], + [0.221, -0.602], + [0.238, -0.557], + [0.255, -0.506], + [0.286, -0.491], + [0.293, -0.442], + [0.299, -0.392], + [0.306, -0.343], + [0.312, -0.294], + [0.319, -0.245], + [0.325, -0.195], + [0.332, -0.146], + [0.338, -0.097], + [0.344, -0.048], + [0.338, -0.097], + [0.332, -0.146], + [0.325, -0.195], + [0.319, -0.245], + [0.312, -0.294], + [0.306, -0.343], + [0.299, -0.392], + [0.293, -0.442], + [0.286, -0.491], + [0.28, -0.54], + [0.273, -0.589], + [0.267, -0.639], + [0.26, -0.688], + [0.254, -0.737], + [0.26, -0.786], + [0.289, -0.803], + [0.332, -0.812], + [0.383, -0.803], + [0.425, -0.795], + [0.461, -0.778], + [0.501, -0.761], + [0.544, -0.744], + [0.583, -0.727], + [0.616, -0.71], + [0.646, -0.684], + [0.671, -0.65], + [0.682, -0.605], + [0.686, -0.558], + [0.689, -0.511], + [0.693, -0.464], + [0.697, -0.416], + [0.7, -0.369], + [0.704, -0.322], + [0.708, -0.275], + [0.711, -0.228], + [0.715, -0.18], + [0.719, -0.133], + [0.723, -0.074], + [0.726, -0.023], + [0.723, -0.074], + [0.719, -0.133], + [0.715, -0.18], + [0.711, -0.228], + [0.708, -0.275], + [0.704, -0.322], + [0.7, -0.369], + [0.697, -0.416], + [0.693, -0.464], + [0.712, -0.529], + [0.719, -0.582], + [0.731, -0.633], + [0.748, -0.684], + [0.756, -0.735], + [0.79, -0.786], + [0.845, -0.803], + [0.901, -0.803], + [0.944, -0.795], + [1.02, -0.786], + ], + v: [ + [0.03, -0.784], + [0.05, -0.735], + [0.07, -0.687], + [0.091, -0.639], + [0.111, -0.591], + [0.131, -0.543], + [0.151, -0.494], + [0.172, -0.431], + [0.184, -0.375], + [0.204, -0.327], + [0.224, -0.279], + [0.245, -0.231], + [0.265, -0.182], + [0.285, -0.134], + [0.321, -0.085], + [0.348, -0.06], + [0.388, -0.046], + [0.43, -0.054], + [0.455, -0.076], + [0.476, -0.097], + [0.488, -0.134], + [0.498, -0.176], + [0.508, -0.212], + [0.509, -0.244], + [0.505, -0.28], + [0.503, -0.321], + [0.501, -0.363], + [0.498, -0.404], + [0.496, -0.446], + [0.493, -0.487], + [0.491, -0.528], + [0.488, -0.57], + [0.486, -0.611], + [0.493, -0.657], + [0.509, -0.707], + [0.525, -0.749], + [0.554, -0.79], + [0.593, -0.814], + [0.635, -0.793], + [0.674, -0.766], + [0.689, -0.723], + [0.703, -0.68], + [0.718, -0.637], + [0.733, -0.594], + [0.737, -0.547], + [0.753, -0.502], + [0.759, -0.45], + [0.769, -0.408], + [0.78, -0.331], + [0.791, -0.255], + [0.803, -0.179], + [0.814, -0.102], + [0.886, -0.11], + [0.96, -0.13], + [1.015, -0.143], + [1.058, -0.149], + ], + w: [ + [0.03, -0.781], + [0.05, -0.754], + [0.083, -0.708], + [0.102, -0.684], + [0.123, -0.659], + [0.146, -0.611], + [0.17, -0.564], + [0.193, -0.516], + [0.216, -0.468], + [0.24, -0.42], + [0.262, -0.361], + [0.284, -0.29], + [0.306, -0.219], + [0.328, -0.148], + [0.35, -0.077], + [0.361, -0.041], + [0.356, -0.126], + [0.352, -0.21], + [0.348, -0.294], + [0.343, -0.379], + [0.339, -0.463], + [0.342, -0.517], + [0.351, -0.602], + [0.359, -0.67], + [0.39, -0.738], + [0.433, -0.783], + [0.495, -0.799], + [0.565, -0.776], + [0.589, -0.728], + [0.612, -0.68], + [0.636, -0.632], + [0.655, -0.585], + [0.673, -0.537], + [0.689, -0.49], + [0.704, -0.442], + [0.711, -0.358], + [0.719, -0.274], + [0.726, -0.19], + [0.734, -0.105], + [0.741, -0.064], + [0.753, -0.12], + [0.765, -0.219], + [0.777, -0.317], + [0.789, -0.416], + [0.801, -0.515], + [0.812, -0.614], + [0.824, -0.712], + [0.867, -0.78], + [0.911, -0.786], + [0.952, -0.775], + [0.988, -0.723], + [1.014, -0.682], + [1.037, -0.634], + [1.061, -0.587], + [1.073, -0.53], + [1.085, -0.448], + [1.091, -0.403], + [1.101, -0.314], + [1.112, -0.224], + [1.122, -0.135], + [1.133, -0.064], + [1.188, -0.072], + [1.244, -0.089], + [1.298, -0.106], + [1.356, -0.149], + ], + x: [ + [0.085, -0.786], + [0.17, -0.786], + [0.22, -0.721], + [0.262, -0.667], + [0.304, -0.614], + [0.346, -0.56], + [0.388, -0.506], + [0.43, -0.452], + [0.471, -0.398], + [0.522, -0.337], + [0.555, -0.291], + [0.597, -0.237], + [0.639, -0.183], + [0.681, -0.129], + [0.723, -0.075], + [0.765, -0.021], + [0.799, 0.021], + [0.765, -0.021], + [0.723, -0.075], + [0.681, -0.129], + [0.639, -0.183], + [0.597, -0.237], + [0.555, -0.291], + [0.522, -0.337], + [0.445, -0.429], + [0.417, -0.383], + [0.38, -0.315], + [0.343, -0.248], + [0.306, -0.181], + [0.269, -0.114], + [0.232, -0.046], + [0.196, 0.021], + [0.232, -0.046], + [0.269, -0.114], + [0.306, -0.181], + [0.343, -0.248], + [0.38, -0.315], + [0.417, -0.383], + [0.445, -0.429], + [0.491, -0.517], + [0.528, -0.585], + [0.565, -0.652], + [0.602, -0.719], + [0.639, -0.786], + [0.68, -0.824], + [0.718, -0.83], + [0.763, -0.846], + [0.799, -0.842], + [0.834, -0.837], + [0.863, -0.82], + [0.901, -0.808], + [0.935, -0.795], + [0.986, -0.786], + ], + y: [ + [0.033, -0.778], + [0.066, -0.76], + [0.099, -0.739], + [0.124, -0.72], + [0.145, -0.684], + [0.166, -0.648], + [0.187, -0.612], + [0.208, -0.576], + [0.229, -0.54], + [0.251, -0.504], + [0.272, -0.468], + [0.293, -0.431], + [0.314, -0.395], + [0.335, -0.359], + [0.357, -0.323], + [0.378, -0.287], + [0.399, -0.251], + [0.42, -0.215], + [0.441, -0.179], + [0.462, -0.143], + [0.513, -0.123], + [0.547, -0.123], + [0.586, -0.138], + [0.604, -0.161], + [0.611, -0.198], + [0.606, -0.241], + [0.601, -0.279], + [0.585, -0.358], + [0.57, -0.437], + [0.554, -0.515], + [0.539, -0.594], + [0.523, -0.672], + [0.521, -0.735], + [0.531, -0.788], + [0.549, -0.811], + [0.568, -0.834], + [0.586, -0.857], + [0.609, -0.878], + [0.635, -0.895], + [0.669, -0.902], + [0.703, -0.902], + [0.773, -0.893], + [0.838, -0.857], + [0.87, -0.823], + [0.943, -0.745], + [0.95, -0.674], + [0.957, -0.603], + [0.964, -0.533], + [0.971, -0.462], + [0.977, -0.391], + [0.984, -0.32], + [0.991, -0.249], + [0.998, -0.179], + [1.005, -0.132], + [0.998, -0.179], + [0.991, -0.249], + [0.984, -0.32], + [0.977, -0.391], + [0.971, -0.462], + [0.964, -0.533], + [0.957, -0.603], + [0.95, -0.674], + [0.943, -0.745], + [0.936, -0.816], + [0.929, -0.887], + [0.923, -0.957], + [0.916, -1.028], + [0.909, -1.099], + [0.902, -1.17], + [0.895, -1.241], + [0.888, -1.311], + [0.881, -1.382], + [0.875, -1.453], + [0.868, -1.524], + [0.838, -1.571], + [0.787, -1.584], + [0.72, -1.593], + [0.652, -1.601], + [0.59, -1.593], + [0.543, -1.576], + [0.524, -1.553], + [0.506, -1.53], + [0.488, -1.507], + [0.472, -1.476], + [0.466, -1.438], + [0.473, -1.387], + [0.497, -1.348], + [0.511, -1.314], + [0.534, -1.275], + [0.548, -1.241], + [0.567, -1.205], + [0.582, -1.181], + [0.597, -1.158], + [0.612, -1.134], + [0.627, -1.111], + [0.642, -1.087], + [0.657, -1.064], + [0.698, -1.038], + [0.747, -1.012], + [0.796, -0.986], + [0.846, -0.959], + [0.983, -0.897], + [1.038, -0.858], + [1.094, -0.827], + [1.151, -0.809], + [1.207, -0.791], + [1.258, -0.786], + ], + z: [ + [0.034, -0.752], + [0.067, -0.708], + [0.083, -0.685], + [0.116, -0.639], + [0.133, -0.615], + [0.166, -0.569], + [0.183, -0.546], + [0.216, -0.5], + [0.233, -0.476], + [0.266, -0.43], + [0.287, -0.395], + [0.316, -0.353], + [0.333, -0.327], + [0.366, -0.285], + [0.389, -0.251], + [0.44, -0.191], + [0.491, -0.123], + [0.516, -0.083], + [0.549, -0.047], + [0.576, -0.03], + [0.615, -0.036], + [0.649, -0.059], + [0.665, -0.083], + [0.682, -0.106], + [0.699, -0.129], + [0.708, -0.191], + [0.699, -0.245], + [0.678, -0.319], + [0.652, -0.386], + [0.615, -0.453], + [0.582, -0.5], + [0.542, -0.574], + [0.499, -0.639], + [0.466, -0.685], + [0.449, -0.708], + [0.399, -0.777], + [0.383, -0.801], + [0.399, -0.777], + [0.449, -0.708], + [0.466, -0.685], + [0.499, -0.639], + [0.549, -0.639], + [0.576, -0.667], + [0.599, -0.708], + [0.615, -0.731], + [0.642, -0.769], + [0.665, -0.824], + [0.669, -0.847], + [0.665, -0.87], + [0.665, -0.916], + [0.665, -0.963], + [0.652, -1.084], + [0.627, -1.169], + [0.602, -1.243], + [0.582, -1.287], + [0.566, -1.31], + [0.532, -1.38], + [0.516, -1.403], + [0.493, -1.432], + [0.459, -1.495], + [0.432, -1.519], + [0.401, -1.534], + [0.366, -1.519], + [0.349, -1.495], + [0.304, -1.441], + [0.283, -1.403], + [0.27, -1.356], + [0.283, -1.31], + [0.303, -1.267], + [0.333, -1.218], + [0.349, -1.194], + [0.366, -1.171], + [0.383, -1.148], + [0.399, -1.125], + [0.416, -1.102], + [0.432, -1.079], + [0.449, -1.055], + [0.466, -1.032], + [0.501, -1.002], + [0.536, -0.965], + [0.571, -0.931], + [0.605, -0.897], + [0.64, -0.871], + [0.675, -0.846], + [0.71, -0.829], + [0.745, -0.812], + [0.78, -0.803], + [0.815, -0.791], + [0.85, -0.786], + [0.892, -0.778], + [0.935, -0.778], + [0.978, -0.786], + ], + "a*": [ + [0.068, -0.174], + [0.136, -0.149], + [0.204, -0.132], + [0.272, -0.098], + [0.34, -0.089], + [0.432, -0.081], + [0.527, -0.055], + [0.629, -0.036], + [0.679, -0.036], + [0.697, -0.149], + [0.689, -0.293], + [0.68, -0.404], + [0.663, -0.489], + [0.654, -0.592], + [0.646, -0.639], + [0.561, -0.718], + [0.501, -0.773], + [0.425, -0.801], + [0.357, -0.82], + [0.279, -0.801], + [0.23, -0.754], + [0.213, -0.731], + [0.184, -0.681], + [0.151, -0.616], + [0.146, -0.557], + [0.146, -0.5], + [0.153, -0.455], + [0.18, -0.395], + [0.204, -0.353], + [0.219, -0.319], + [0.246, -0.276], + [0.272, -0.234], + [0.298, -0.191], + [0.333, -0.157], + [0.379, -0.132], + [0.432, -0.081], + [0.527, -0.055], + [0.629, -0.036], + [0.679, -0.036], + [0.697, -0.149], + [0.689, -0.293], + [0.68, -0.404], + [0.663, -0.489], + [0.654, -0.592], + [0.646, -0.639], + [0.678, -0.744], + [0.729, -0.801], + [0.781, -0.786], + [0.85, -0.786], + ], + "b*": [ + [0.043, -0.157], + [0.085, -0.166], + [0.128, -0.157], + [0.179, -0.157], + [0.23, -0.162], + [0.281, -0.157], + [0.332, -0.14], + [0.365, -0.115], + [0.391, -0.064], + [0.414, -0.004], + [0.443, 0.064], + [0.472, 0.14], + [0.5, 0.241], + [0.529, 0.32], + [0.544, 0.399], + [0.546, 0.51], + [0.53, 0.602], + [0.487, 0.674], + [0.431, 0.743], + [0.39, 0.75], + [0.355, 0.739], + [0.324, 0.724], + [0.3, 0.686], + [0.281, 0.627], + [0.275, 0.497], + [0.274, 0.368], + [0.272, 0.238], + [0.27, 0.108], + [0.274, -0.022], + [0.275, -0.152], + [0.277, -0.282], + [0.279, -0.412], + [0.281, -0.542], + [0.291, -0.672], + [0.309, -0.718], + [0.339, -0.771], + [0.369, -0.786], + [0.42, -0.786], + [0.457, -0.782], + [0.494, -0.764], + [0.522, -0.746], + [0.548, -0.688], + [0.562, -0.634], + [0.58, -0.573], + [0.594, -0.514], + [0.613, -0.446], + [0.619, -0.377], + [0.628, -0.293], + [0.63, -0.2], + [0.631, -0.112], + [0.701, -0.14], + [0.748, -0.157], + [0.799, -0.149], + ], + "c*": [ + [0.085, -0.14], + [0.175, -0.132], + [0.243, -0.123], + [0.311, -0.106], + [0.367, -0.089], + [0.413, -0.081], + [0.456, -0.072], + [0.5, -0.064], + [0.566, -0.064], + [0.617, -0.106], + [0.651, -0.191], + [0.617, -0.106], + [0.566, -0.064], + [0.5, -0.064], + [0.456, -0.072], + [0.413, -0.081], + [0.367, -0.094], + [0.331, -0.123], + [0.3, -0.152], + [0.267, -0.191], + [0.243, -0.222], + [0.217, -0.268], + [0.17, -0.407], + [0.17, -0.497], + [0.173, -0.565], + [0.191, -0.657], + [0.217, -0.708], + [0.234, -0.731], + [0.251, -0.754], + [0.277, -0.795], + [0.326, -0.829], + [0.417, -0.846], + [0.532, -0.829], + [0.609, -0.82], + [0.668, -0.812], + [0.736, -0.803], + [0.821, -0.795], + [0.906, -0.786], + ], + "d*": [ + [0.068, -0.157], + [0.136, -0.166], + [0.204, -0.157], + [0.272, -0.14], + [0.34, -0.123], + [0.425, -0.123], + [0.469, -0.089], + [0.515, -0.072], + [0.629, -0.043], + [0.697, -0.036], + [0.782, -0.036], + [0.697, -0.036], + [0.629, -0.043], + [0.515, -0.072], + [0.469, -0.089], + [0.425, -0.123], + [0.357, -0.191], + [0.333, -0.242], + [0.313, -0.319], + [0.298, -0.395], + [0.289, -0.455], + [0.282, -0.5], + [0.279, -0.557], + [0.287, -0.616], + [0.32, -0.681], + [0.366, -0.754], + [0.415, -0.801], + [0.459, -0.81], + [0.51, -0.808], + [0.561, -0.801], + [0.637, -0.773], + [0.697, -0.718], + [0.799, -0.65], + [0.867, -0.639], + [0.867, -0.592], + [0.867, -0.489], + [0.867, -0.404], + [0.867, -0.293], + [0.867, -0.149], + [0.867, 0.064], + [0.867, 0.234], + [0.867, 0.404], + [0.867, 0.574], + [0.867, 0.744], + [0.867, 0.574], + [0.867, 0.404], + [0.867, 0.234], + [0.867, 0.064], + [0.867, -0.149], + [0.867, -0.293], + [0.867, -0.404], + [0.867, -0.489], + [0.867, -0.592], + [0.867, -0.639], + [0.875, -0.701], + [0.899, -0.744], + [0.95, -0.801], + [1.002, -0.824], + [1.068, -0.815], + [1.122, -0.812], + [1.19, -0.795], + [1.275, -0.786], + ], + "e*": [ + [0.085, -0.149], + [0.136, -0.162], + [0.17, -0.174], + [0.204, -0.191], + [0.231, -0.208], + [0.264, -0.242], + [0.315, -0.276], + [0.383, -0.327], + [0.451, -0.344], + [0.501, -0.336], + [0.552, -0.268], + [0.566, -0.229], + [0.568, -0.191], + [0.559, -0.16], + [0.542, -0.106], + [0.525, -0.072], + [0.495, -0.047], + [0.452, -0.03], + [0.41, -0.021], + [0.367, -0.03], + [0.325, -0.047], + [0.294, -0.072], + [0.26, -0.106], + [0.235, -0.149], + [0.231, -0.208], + [0.231, -0.268], + [0.231, -0.327], + [0.235, -0.404], + [0.24, -0.446], + [0.25, -0.497], + [0.26, -0.548], + [0.281, -0.616], + [0.298, -0.667], + [0.332, -0.701], + [0.365, -0.735], + [0.417, -0.761], + [0.485, -0.769], + [0.552, -0.778], + [0.62, -0.786], + [0.68, -0.786], + [0.765, -0.786], + ], + "f*": [ + [0.043, -0.191], + [0.076, -0.234], + [0.111, -0.31], + [0.145, -0.395], + [0.179, -0.446], + [0.213, -0.489], + [0.247, -0.531], + [0.281, -0.574], + [0.321, -0.642], + [0.374, -0.592], + [0.425, -0.548], + [0.451, -0.446], + [0.468, -0.361], + [0.485, -0.276], + [0.501, -0.191], + [0.518, -0.106], + [0.535, -0.038], + [0.552, 0.047], + [0.565, 0.131], + [0.582, 0.212], + [0.605, 0.299], + [0.619, 0.402], + [0.632, 0.506], + [0.614, 0.607], + [0.578, 0.667], + [0.535, 0.68], + [0.485, 0.684], + [0.425, 0.671], + [0.374, 0.652], + [0.329, 0.619], + [0.298, 0.531], + [0.294, 0.428], + [0.292, 0.299], + [0.294, 0.169], + [0.296, -0.0], + [0.296, -0.172], + [0.296, -0.276], + [0.298, -0.385], + [0.297, -0.489], + [0.296, -0.598], + [0.295, -0.71], + [0.295, -0.829], + [0.292, -0.931], + [0.289, -1.041], + [0.286, -1.126], + [0.281, -1.254], + [0.281, -1.356], + [0.279, -1.466], + [0.272, -1.602], + [0.323, -1.602], + [0.374, -1.601], + [0.423, -1.594], + [0.474, -1.551], + [0.51, -1.509], + [0.542, -1.466], + [0.55, -1.381], + [0.542, -1.296], + [0.533, -1.211], + [0.522, -1.126], + [0.508, -1.041], + [0.491, -0.956], + [0.468, -0.888], + [0.442, -0.846], + [0.383, -0.752], + [0.42, -0.769], + [0.468, -0.803], + [0.51, -0.829], + [0.567, -0.812], + [0.639, -0.803], + [0.723, -0.795], + [0.807, -0.786], + ], + "g*": [ + [0.068, -0.157], + [0.136, -0.166], + [0.204, -0.174], + [0.272, -0.183], + [0.34, -0.174], + [0.391, -0.179], + [0.448, -0.175], + [0.48, -0.149], + [0.525, -0.132], + [0.576, -0.115], + [0.627, -0.098], + [0.678, -0.086], + [0.73, -0.089], + [0.748, -0.123], + [0.745, -0.191], + [0.741, -0.259], + [0.738, -0.327], + [0.734, -0.395], + [0.731, -0.463], + [0.728, -0.531], + [0.724, -0.599], + [0.721, -0.667], + [0.717, -0.735], + [0.663, -0.761], + [0.61, -0.786], + [0.525, -0.812], + [0.457, -0.824], + [0.374, -0.812], + [0.304, -0.786], + [0.247, -0.754], + [0.202, -0.676], + [0.181, -0.592], + [0.177, -0.548], + [0.197, -0.506], + [0.231, -0.458], + [0.247, -0.43], + [0.281, -0.384], + [0.314, -0.337], + [0.347, -0.291], + [0.374, -0.251], + [0.406, -0.217], + [0.448, -0.175], + [0.48, -0.149], + [0.525, -0.132], + [0.576, -0.115], + [0.627, -0.098], + [0.678, -0.086], + [0.73, -0.089], + [0.748, -0.123], + [0.745, -0.191], + [0.741, -0.259], + [0.738, -0.327], + [0.734, -0.395], + [0.731, -0.463], + [0.728, -0.531], + [0.724, -0.599], + [0.721, -0.667], + [0.717, -0.735], + [0.714, -0.803], + [0.711, -0.871], + [0.707, -0.939], + [0.704, -1.007], + [0.7, -1.075], + [0.697, -1.143], + [0.694, -1.211], + [0.69, -1.279], + [0.687, -1.347], + [0.683, -1.415], + [0.68, -1.484], + [0.677, -1.551], + [0.673, -1.619], + [0.612, -1.615], + [0.544, -1.608], + [0.493, -1.598], + [0.442, -1.568], + [0.391, -1.526], + [0.34, -1.466], + [0.306, -1.398], + [0.289, -1.347], + [0.272, -1.279], + [0.281, -1.228], + [0.306, -1.186], + [0.347, -1.125], + [0.377, -1.084], + [0.414, -1.041], + [0.474, -0.99], + [0.542, -0.948], + [0.593, -0.914], + [0.647, -0.871], + [0.72, -0.829], + [0.796, -0.82], + [0.884, -0.812], + [0.969, -0.803], + [1.054, -0.786], + ], + "h*": [ + [0.068, -0.174], + [0.136, -0.2], + [0.204, -0.217], + [0.272, -0.225], + [0.323, -0.217], + [0.303, -0.276], + [0.326, -0.242], + [0.349, -0.2], + [0.383, -0.155], + [0.432, -0.083], + [0.483, -0.038], + [0.508, 0.013], + [0.549, 0.064], + [0.575, 0.131], + [0.602, 0.202], + [0.617, 0.249], + [0.641, 0.297], + [0.651, 0.37], + [0.66, 0.438], + [0.662, 0.523], + [0.651, 0.616], + [0.641, 0.693], + [0.599, 0.742], + [0.542, 0.769], + [0.483, 0.769], + [0.406, 0.738], + [0.355, 0.702], + [0.321, 0.636], + [0.295, 0.511], + [0.295, 0.425], + [0.295, 0.339], + [0.295, 0.227], + [0.295, 0.114], + [0.295, 0.001], + [0.295, -0.111], + [0.295, -0.224], + [0.295, -0.336], + [0.295, -0.449], + [0.295, -0.561], + [0.295, -0.674], + [0.295, -0.786], + [0.299, -0.674], + [0.302, -0.561], + [0.329, -0.514], + [0.368, -0.447], + [0.392, -0.386], + [0.42, -0.307], + [0.447, -0.255], + [0.475, -0.185], + [0.507, -0.149], + [0.564, -0.132], + [0.625, -0.123], + [0.678, -0.132], + [0.743, -0.166], + [0.767, -0.229], + [0.76, -0.307], + [0.755, -0.375], + [0.748, -0.453], + [0.748, -0.533], + [0.761, -0.623], + [0.786, -0.717], + [0.845, -0.766], + [0.92, -0.794], + [1.005, -0.786], + ], + "i*": [ + [0.051, -0.166], + [0.084, -0.167], + [0.118, -0.16], + [0.154, -0.143], + [0.192, -0.084], + [0.233, -0.026], + [0.227, -0.136], + [0.224, -0.195], + [0.218, -0.28], + [0.216, -0.365], + [0.216, -0.425], + [0.216, -0.501], + [0.216, -0.544], + [0.214, -0.629], + [0.219, -0.706], + [0.241, -0.759], + [0.271, -0.806], + [0.347, -0.827], + [0.431, -0.803], + ], + "j*": [ + [0.034, -0.155], + [0.061, -0.162], + [0.095, -0.166], + [0.129, -0.174], + [0.163, -0.157], + [0.197, -0.14], + [0.231, -0.115], + [0.265, -0.089], + [0.299, -0.072], + [0.316, -0.055], + [0.333, -0.05], + [0.357, -0.038], + [0.383, -0.049], + [0.383, -0.099], + [0.383, -0.167], + [0.383, -0.276], + [0.383, -0.395], + [0.383, -0.513], + [0.383, -0.632], + [0.383, -0.751], + [0.383, -0.869], + [0.383, -0.988], + [0.383, -1.107], + [0.383, -1.225], + [0.383, -1.344], + [0.368, -1.405], + [0.349, -1.466], + [0.326, -1.514], + [0.296, -1.53], + [0.255, -1.534], + [0.218, -1.518], + [0.196, -1.496], + [0.172, -1.406], + [0.162, -1.296], + [0.159, -1.211], + [0.173, -1.126], + [0.196, -1.053], + [0.218, -1.005], + [0.241, -0.957], + [0.263, -0.909], + [0.286, -0.861], + [0.301, -0.837], + [0.328, -0.808], + [0.356, -0.78], + [0.384, -0.753], + [0.408, -0.742], + [0.439, -0.734], + [0.473, -0.733], + [0.509, -0.75], + [0.552, -0.767], + [0.595, -0.786], + ], + "k*": [ + [0.043, -0.166], + [0.085, -0.191], + [0.119, -0.208], + [0.153, -0.251], + [0.187, -0.276], + [0.221, -0.276], + [0.272, -0.259], + [0.323, -0.234], + [0.337, -0.305], + [0.384, -0.226], + [0.431, -0.147], + [0.479, -0.069], + [0.526, 0.01], + [0.555, 0.056], + [0.584, 0.103], + [0.605, 0.149], + [0.622, 0.195], + [0.659, 0.261], + [0.677, 0.309], + [0.695, 0.356], + [0.713, 0.404], + [0.732, 0.451], + [0.75, 0.499], + [0.765, 0.565], + [0.771, 0.635], + [0.737, 0.676], + [0.695, 0.684], + [0.654, 0.684], + [0.603, 0.684], + [0.552, 0.676], + [0.501, 0.659], + [0.451, 0.612], + [0.4, 0.562], + [0.357, 0.466], + [0.34, 0.369], + [0.34, 0.273], + [0.34, 0.176], + [0.34, 0.079], + [0.34, 0.01], + [0.34, -0.066], + [0.34, -0.143], + [0.34, -0.219], + [0.34, -0.296], + [0.34, -0.372], + [0.34, -0.449], + [0.34, -0.525], + [0.34, -0.601], + [0.34, -0.678], + [0.34, -0.754], + [0.34, -0.847], + [0.34, -0.754], + [0.34, -0.678], + [0.34, -0.601], + [0.34, -0.525], + [0.34, -0.449], + [0.354, -0.372], + [0.397, -0.361], + [0.465, -0.353], + [0.533, -0.344], + [0.618, -0.327], + [0.686, -0.302], + [0.754, -0.276], + [0.797, -0.234], + [0.822, -0.198], + [0.812, -0.14], + [0.788, -0.089], + [0.758, -0.059], + [0.72, -0.032], + [0.652, -0.055], + [0.601, -0.106], + [0.516, -0.191], + [0.465, -0.276], + [0.431, -0.336], + [0.383, -0.378], + [0.414, -0.421], + [0.455, -0.453], + [0.489, -0.5], + [0.522, -0.546], + [0.554, -0.592], + [0.577, -0.639], + [0.591, -0.662], + [0.622, -0.708], + [0.655, -0.754], + [0.688, -0.801], + [0.729, -0.846], + [0.771, -0.871], + [0.814, -0.863], + [0.856, -0.846], + [0.899, -0.829], + [0.941, -0.812], + [0.971, -0.803], + [1.011, -0.786], + [1.065, -0.786], + [1.105, -0.786], + ], + "l*": [ + [0.031, -0.157], + [0.054, -0.174], + [0.088, -0.191], + [0.122, -0.234], + [0.156, -0.276], + [0.207, -0.302], + [0.241, -0.319], + [0.284, -0.327], + [0.306, -0.332], + [0.34, -0.286], + [0.377, -0.238], + [0.403, -0.191], + [0.435, -0.115], + [0.459, -0.055], + [0.483, 0.013], + [0.501, 0.056], + [0.51, 0.095], + [0.524, 0.14], + [0.534, 0.19], + [0.548, 0.237], + [0.554, 0.284], + [0.566, 0.351], + [0.578, 0.404], + [0.585, 0.48], + [0.594, 0.566], + [0.595, 0.613], + [0.585, 0.682], + [0.55, 0.734], + [0.515, 0.771], + [0.48, 0.782], + [0.451, 0.786], + [0.4, 0.781], + [0.347, 0.767], + [0.324, 0.719], + [0.315, 0.672], + [0.308, 0.632], + [0.304, 0.574], + [0.304, 0.488], + [0.304, 0.401], + [0.304, 0.314], + [0.304, 0.227], + [0.304, 0.141], + [0.304, 0.054], + [0.304, -0.033], + [0.304, -0.119], + [0.303, -0.206], + [0.303, -0.293], + [0.303, -0.38], + [0.303, -0.466], + [0.303, -0.553], + [0.303, -0.64], + [0.311, -0.702], + [0.343, -0.752], + [0.383, -0.778], + [0.434, -0.784], + [0.483, -0.807], + [0.538, -0.821], + [0.603, -0.803], + [0.677, -0.795], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + ], + "m*": [ + [0.034, -0.149], + [0.085, -0.14], + [0.136, -0.14], + [0.187, -0.132], + [0.238, -0.123], + [0.272, -0.106], + [0.315, -0.072], + [0.349, -0.055], + [0.394, -0.059], + [0.41, -0.083], + [0.414, -0.103], + [0.419, -0.154], + [0.424, -0.205], + [0.43, -0.256], + [0.435, -0.307], + [0.44, -0.358], + [0.431, -0.402], + [0.421, -0.447], + [0.411, -0.491], + [0.402, -0.535], + [0.392, -0.579], + [0.382, -0.624], + [0.373, -0.668], + [0.363, -0.712], + [0.353, -0.756], + [0.344, -0.801], + [0.353, -0.756], + [0.363, -0.712], + [0.373, -0.668], + [0.382, -0.624], + [0.392, -0.579], + [0.402, -0.535], + [0.411, -0.491], + [0.421, -0.447], + [0.431, -0.402], + [0.44, -0.358], + [0.46, -0.314], + [0.488, -0.276], + [0.51, -0.245], + [0.527, -0.222], + [0.543, -0.198], + [0.56, -0.175], + [0.577, -0.152], + [0.593, -0.129], + [0.627, -0.089], + [0.661, -0.064], + [0.711, -0.044], + [0.76, -0.036], + [0.776, -0.059], + [0.793, -0.083], + [0.81, -0.106], + [0.82, -0.143], + [0.83, -0.18], + [0.84, -0.217], + [0.85, -0.254], + [0.859, -0.291], + [0.848, -0.34], + [0.836, -0.388], + [0.825, -0.437], + [0.813, -0.486], + [0.801, -0.534], + [0.79, -0.583], + [0.778, -0.632], + [0.766, -0.68], + [0.755, -0.729], + [0.754, -0.777], + [0.755, -0.729], + [0.766, -0.68], + [0.778, -0.632], + [0.79, -0.583], + [0.801, -0.534], + [0.813, -0.486], + [0.825, -0.437], + [0.836, -0.388], + [0.848, -0.34], + [0.859, -0.291], + [0.876, -0.268], + [0.901, -0.234], + [0.926, -0.198], + [0.943, -0.175], + [0.961, -0.14], + [0.993, -0.106], + [1.009, -0.083], + [1.035, -0.059], + [1.103, -0.038], + [1.176, -0.059], + [1.209, -0.106], + [1.225, -0.129], + [1.242, -0.175], + [1.234, -0.224], + [1.225, -0.272], + [1.217, -0.32], + [1.209, -0.369], + [1.2, -0.417], + [1.192, -0.466], + [1.184, -0.514], + [1.176, -0.562], + [1.167, -0.611], + [1.159, -0.659], + [1.159, -0.708], + [1.192, -0.754], + [1.209, -0.777], + [1.241, -0.803], + [1.325, -0.812], + [1.375, -0.812], + [1.422, -0.803], + [1.475, -0.799], + [1.564, -0.795], + [1.649, -0.786], + ], + "n*": [ + [0.051, -0.132], + [0.102, -0.115], + [0.153, -0.098], + [0.204, -0.047], + [0.238, -0.004], + [0.264, 0.021], + [0.291, 0.038], + [0.332, 0.064], + [0.374, 0.038], + [0.4, -0.013], + [0.414, -0.059], + [0.423, -0.106], + [0.431, -0.149], + [0.435, -0.198], + [0.43, -0.254], + [0.43, -0.31], + [0.43, -0.365], + [0.43, -0.421], + [0.43, -0.476], + [0.43, -0.532], + [0.43, -0.588], + [0.43, -0.643], + [0.43, -0.699], + [0.43, -0.754], + [0.43, -0.699], + [0.43, -0.643], + [0.43, -0.588], + [0.43, -0.532], + [0.43, -0.476], + [0.43, -0.421], + [0.43, -0.365], + [0.43, -0.31], + [0.43, -0.254], + [0.459, -0.242], + [0.485, -0.217], + [0.508, -0.198], + [0.525, -0.175], + [0.542, -0.152], + [0.558, -0.129], + [0.587, -0.098], + [0.62, -0.059], + [0.656, -0.013], + [0.691, 0.01], + [0.741, 0.01], + [0.774, -0.013], + [0.791, -0.036], + [0.808, -0.059], + [0.816, -0.106], + [0.825, -0.149], + [0.825, -0.234], + [0.825, -0.293], + [0.825, -0.361], + [0.825, -0.421], + [0.825, -0.48], + [0.825, -0.523], + [0.825, -0.574], + [0.825, -0.616], + [0.825, -0.662], + [0.825, -0.708], + [0.833, -0.761], + [0.865, -0.812], + [0.924, -0.82], + [0.967, -0.812], + [1.024, -0.786], + [1.088, -0.786], + ], + "o*": [ + [0.051, -0.17], + [0.102, -0.174], + [0.153, -0.166], + [0.204, -0.157], + [0.255, -0.149], + [0.306, -0.14], + [0.346, -0.152], + [0.363, -0.129], + [0.38, -0.106], + [0.396, -0.083], + [0.431, -0.072], + [0.474, -0.055], + [0.533, -0.055], + [0.576, -0.072], + [0.596, -0.083], + [0.618, -0.106], + [0.634, -0.123], + [0.646, -0.149], + [0.663, -0.175], + [0.669, -0.224], + [0.668, -0.272], + [0.673, -0.32], + [0.671, -0.368], + [0.665, -0.417], + [0.66, -0.465], + [0.651, -0.513], + [0.637, -0.562], + [0.62, -0.61], + [0.603, -0.658], + [0.592, -0.701], + [0.57, -0.752], + [0.544, -0.795], + [0.501, -0.829], + [0.459, -0.846], + [0.408, -0.854], + [0.346, -0.842], + [0.321, -0.82], + [0.296, -0.791], + [0.263, -0.754], + [0.247, -0.731], + [0.23, -0.708], + [0.213, -0.685], + [0.202, -0.659], + [0.185, -0.616], + [0.168, -0.574], + [0.156, -0.531], + [0.163, -0.48], + [0.187, -0.43], + [0.205, -0.395], + [0.216, -0.361], + [0.238, -0.319], + [0.263, -0.268], + [0.28, -0.245], + [0.295, -0.222], + [0.321, -0.183], + [0.346, -0.152], + [0.363, -0.129], + [0.38, -0.106], + [0.396, -0.083], + [0.431, -0.072], + [0.473, -0.106], + [0.493, -0.149], + [0.518, -0.183], + [0.544, -0.2], + [0.578, -0.217], + [0.612, -0.225], + [0.646, -0.225], + [0.68, -0.225], + [0.714, -0.225], + [0.748, -0.221], + [0.782, -0.217], + [0.816, -0.208], + [0.85, -0.191], + [0.884, -0.174], + [0.918, -0.149], + ], + "p*": [ + [0.043, -0.153], + [0.085, -0.157], + [0.136, -0.157], + [0.187, -0.157], + [0.238, -0.14], + [0.279, -0.136], + [0.287, -0.215], + [0.285, -0.323], + [0.283, -0.431], + [0.282, -0.539], + [0.28, -0.646], + [0.278, -0.754], + [0.276, -0.862], + [0.274, -0.97], + [0.272, -1.078], + [0.27, -1.186], + [0.268, -1.294], + [0.267, -1.402], + [0.265, -1.51], + [0.267, -1.402], + [0.268, -1.294], + [0.27, -1.186], + [0.272, -1.078], + [0.274, -0.97], + [0.276, -0.862], + [0.278, -0.754], + [0.28, -0.646], + [0.282, -0.539], + [0.283, -0.431], + [0.285, -0.323], + [0.287, -0.215], + [0.289, -0.107], + [0.279, -0.136], + [0.322, -0.091], + [0.353, -0.048], + [0.393, -0.02], + [0.425, -0.002], + [0.449, 0.007], + [0.479, 0.017], + [0.525, 0.01], + [0.577, -0.011], + [0.624, -0.077], + [0.637, -0.104], + [0.668, -0.17], + [0.686, -0.282], + [0.686, -0.357], + [0.689, -0.469], + [0.675, -0.538], + [0.663, -0.616], + [0.641, -0.654], + [0.606, -0.694], + [0.566, -0.714], + [0.504, -0.754], + [0.446, -0.747], + [0.391, -0.744], + [0.34, -0.727], + [0.391, -0.744], + [0.446, -0.747], + [0.504, -0.754], + [0.54, -0.748], + [0.593, -0.763], + [0.678, -0.777], + [0.729, -0.783], + [0.793, -0.803], + [0.85, -0.803], + [0.911, -0.795], + [0.969, -0.786], + ], + "q*": [ + [0.051, -0.153], + [0.102, -0.157], + [0.153, -0.162], + [0.204, -0.166], + [0.255, -0.183], + [0.306, -0.2], + [0.357, -0.191], + [0.408, -0.183], + [0.459, -0.166], + [0.514, -0.149], + [0.559, -0.132], + [0.61, -0.115], + [0.661, -0.098], + [0.712, -0.086], + [0.764, -0.089], + [0.782, -0.123], + [0.779, -0.191], + [0.775, -0.259], + [0.772, -0.327], + [0.768, -0.395], + [0.765, -0.463], + [0.762, -0.531], + [0.758, -0.599], + [0.755, -0.667], + [0.751, -0.735], + [0.697, -0.761], + [0.644, -0.786], + [0.559, -0.812], + [0.491, -0.824], + [0.408, -0.812], + [0.338, -0.786], + [0.281, -0.754], + [0.236, -0.676], + [0.215, -0.592], + [0.207, -0.548], + [0.231, -0.506], + [0.265, -0.458], + [0.281, -0.43], + [0.315, -0.384], + [0.348, -0.337], + [0.381, -0.291], + [0.408, -0.251], + [0.44, -0.217], + [0.482, -0.175], + [0.514, -0.149], + [0.559, -0.132], + [0.61, -0.115], + [0.661, -0.098], + [0.712, -0.086], + [0.764, -0.089], + [0.782, -0.123], + [0.779, -0.191], + [0.775, -0.259], + [0.772, -0.327], + [0.768, -0.395], + [0.765, -0.463], + [0.762, -0.531], + [0.758, -0.599], + [0.755, -0.667], + [0.751, -0.735], + [0.748, -0.803], + [0.745, -0.871], + [0.741, -0.939], + [0.738, -1.007], + [0.734, -1.075], + [0.731, -1.143], + [0.728, -1.211], + [0.724, -1.279], + [0.721, -1.347], + [0.717, -1.415], + [0.714, -1.484], + [0.711, -1.551], + [0.707, -1.619], + [0.748, -1.615], + [0.799, -1.608], + [0.833, -1.598], + [0.867, -1.568], + [0.901, -1.526], + [0.935, -1.466], + [0.969, -1.398], + [0.986, -1.347], + [0.995, -1.279], + [0.986, -1.228], + [0.969, -1.186], + [0.935, -1.125], + [0.901, -1.084], + [0.867, -1.041], + [0.833, -0.99], + [0.799, -0.948], + [0.782, -0.914], + [0.782, -0.854], + [0.83, -0.829], + [0.884, -0.812], + [0.935, -0.803], + [0.986, -0.799], + [1.02, -0.795], + [1.105, -0.791], + [1.207, -0.786], + ], + "r*": [ + [0.085, -0.174], + [0.17, -0.183], + [0.17, -0.064], + [0.255, -0.064], + [0.34, -0.064], + [0.425, -0.064], + [0.51, -0.064], + [0.51, -0.149], + [0.501, -0.234], + [0.493, -0.319], + [0.476, -0.404], + [0.459, -0.489], + [0.451, -0.574], + [0.476, -0.659], + [0.51, -0.701], + [0.578, -0.744], + [0.663, -0.769], + [0.765, -0.786], + ], + "s*": [ + [0.085, -0.149], + [0.17, -0.157], + [0.221, -0.174], + [0.272, -0.2], + [0.323, -0.234], + [0.374, -0.234], + [0.425, -0.225], + [0.476, -0.217], + [0.527, -0.2], + [0.561, -0.191], + [0.603, -0.166], + [0.663, -0.145], + [0.748, -0.119], + [0.819, -0.106], + [0.82, -0.174], + [0.83, -0.222], + [0.842, -0.289], + [0.855, -0.353], + [0.867, -0.402], + [0.867, -0.446], + [0.867, -0.49], + [0.859, -0.534], + [0.85, -0.578], + [0.842, -0.622], + [0.825, -0.666], + [0.782, -0.71], + [0.657, -0.769], + [0.611, -0.757], + [0.547, -0.735], + [0.497, -0.684], + [0.447, -0.616], + [0.397, -0.531], + [0.354, -0.446], + [0.332, -0.361], + [0.323, -0.276], + [0.332, -0.361], + [0.354, -0.446], + [0.397, -0.531], + [0.447, -0.616], + [0.497, -0.684], + [0.547, -0.735], + [0.611, -0.757], + [0.657, -0.769], + [0.7, -0.786], + [0.742, -0.795], + [0.785, -0.803], + [0.85, -0.812], + [0.935, -0.803], + [1.02, -0.795], + [1.105, -0.786], + ], + "t*": [ + [0.085, -0.191], + [0.17, -0.234], + [0.255, -0.276], + [0.34, -0.259], + [0.425, -0.191], + [0.51, -0.106], + [0.558, 0.008], + [0.573, 0.161], + [0.588, 0.314], + [0.552, 0.314], + [0.522, 0.314], + [0.467, 0.314], + [0.411, 0.314], + [0.34, 0.314], + [0.255, 0.314], + [0.17, 0.314], + [0.255, 0.314], + [0.34, 0.314], + [0.411, 0.314], + [0.467, 0.314], + [0.522, 0.314], + [0.552, 0.314], + [0.633, 0.314], + [0.688, 0.314], + [0.729, 0.314], + [0.784, 0.314], + [0.84, 0.314], + [0.895, 0.314], + [0.978, 0.314], + [1.062, 0.314], + [0.978, 0.314], + [0.895, 0.314], + [0.84, 0.314], + [0.784, 0.314], + [0.729, 0.314], + [0.688, 0.314], + [0.633, 0.314], + [0.588, 0.314], + [0.602, 0.467], + [0.617, 0.621], + [0.632, 0.774], + [0.632, 0.621], + [0.632, 0.467], + [0.632, 0.314], + [0.632, 0.161], + [0.632, 0.008], + [0.632, -0.146], + [0.632, -0.299], + [0.632, -0.452], + [0.632, -0.605], + [0.632, -0.759], + [0.659, -0.805], + [0.72, -0.816], + [0.807, -0.799], + [0.894, -0.791], + [0.978, -0.786], + [1.062, -0.786], + [1.147, -0.786], + [1.232, -0.786], + ], + "u*": [ + [0.043, -0.157], + [0.085, -0.166], + [0.128, -0.157], + [0.162, -0.157], + [0.196, -0.14], + [0.23, -0.106], + [0.272, -0.081], + [0.306, -0.055], + [0.344, -0.048], + [0.338, -0.097], + [0.332, -0.146], + [0.325, -0.195], + [0.319, -0.245], + [0.312, -0.294], + [0.306, -0.343], + [0.299, -0.392], + [0.293, -0.442], + [0.286, -0.491], + [0.28, -0.54], + [0.273, -0.589], + [0.267, -0.639], + [0.26, -0.688], + [0.254, -0.737], + [0.26, -0.786], + [0.289, -0.803], + [0.332, -0.812], + [0.383, -0.803], + [0.425, -0.795], + [0.461, -0.778], + [0.501, -0.761], + [0.544, -0.744], + [0.583, -0.727], + [0.616, -0.71], + [0.646, -0.684], + [0.671, -0.65], + [0.682, -0.605], + [0.686, -0.558], + [0.689, -0.511], + [0.693, -0.464], + [0.697, -0.416], + [0.7, -0.369], + [0.704, -0.322], + [0.708, -0.275], + [0.711, -0.228], + [0.715, -0.18], + [0.719, -0.133], + [0.723, -0.074], + [0.726, -0.023], + [0.723, -0.074], + [0.719, -0.133], + [0.715, -0.18], + [0.711, -0.228], + [0.708, -0.275], + [0.704, -0.322], + [0.7, -0.369], + [0.697, -0.416], + [0.693, -0.464], + [0.712, -0.529], + [0.719, -0.582], + [0.731, -0.633], + [0.748, -0.684], + [0.756, -0.735], + [0.79, -0.786], + [0.845, -0.803], + [0.901, -0.803], + [0.944, -0.795], + [1.02, -0.786], + ], + "v*": [ + [0.051, -0.157], + [0.102, -0.14], + [0.136, -0.123], + [0.162, -0.098], + [0.187, -0.081], + [0.211, -0.055], + [0.243, -0.054], + [0.268, -0.076], + [0.289, -0.097], + [0.301, -0.134], + [0.311, -0.176], + [0.321, -0.212], + [0.322, -0.244], + [0.318, -0.28], + [0.316, -0.321], + [0.314, -0.363], + [0.311, -0.404], + [0.309, -0.446], + [0.306, -0.487], + [0.304, -0.528], + [0.301, -0.57], + [0.299, -0.611], + [0.306, -0.657], + [0.322, -0.707], + [0.338, -0.749], + [0.367, -0.79], + [0.406, -0.814], + [0.448, -0.793], + [0.487, -0.766], + [0.502, -0.723], + [0.516, -0.68], + [0.531, -0.637], + [0.546, -0.594], + [0.55, -0.547], + [0.566, -0.502], + [0.572, -0.45], + [0.582, -0.408], + [0.593, -0.331], + [0.604, -0.255], + [0.616, -0.179], + [0.627, -0.102], + [0.699, -0.11], + [0.773, -0.13], + [0.828, -0.143], + [0.871, -0.149], + ], + "w*": [ + [0.051, -0.128], + [0.102, -0.115], + [0.153, -0.081], + [0.187, -0.064], + [0.225, -0.041], + [0.22, -0.126], + [0.216, -0.21], + [0.212, -0.294], + [0.207, -0.379], + [0.203, -0.463], + [0.206, -0.517], + [0.215, -0.602], + [0.223, -0.67], + [0.254, -0.738], + [0.297, -0.783], + [0.359, -0.799], + [0.429, -0.776], + [0.453, -0.728], + [0.476, -0.68], + [0.5, -0.632], + [0.519, -0.585], + [0.537, -0.537], + [0.553, -0.49], + [0.568, -0.442], + [0.575, -0.358], + [0.583, -0.274], + [0.59, -0.19], + [0.598, -0.105], + [0.605, -0.064], + [0.617, -0.12], + [0.629, -0.219], + [0.641, -0.317], + [0.653, -0.416], + [0.665, -0.515], + [0.676, -0.614], + [0.688, -0.712], + [0.731, -0.78], + [0.775, -0.786], + [0.816, -0.775], + [0.852, -0.723], + [0.878, -0.682], + [0.901, -0.634], + [0.925, -0.587], + [0.937, -0.53], + [0.949, -0.448], + [0.955, -0.403], + [0.965, -0.314], + [0.976, -0.224], + [0.986, -0.135], + [0.997, -0.064], + [1.052, -0.072], + [1.108, -0.089], + [1.162, -0.106], + [1.22, -0.149], + ], + "x*": [ + [0.043, -0.106], + [0.085, -0.064], + [0.128, -0.004], + [0.196, 0.021], + [0.232, -0.046], + [0.269, -0.114], + [0.306, -0.181], + [0.343, -0.248], + [0.38, -0.315], + [0.417, -0.383], + [0.445, -0.429], + [0.43, -0.452], + [0.388, -0.506], + [0.346, -0.56], + [0.304, -0.614], + [0.262, -0.667], + [0.22, -0.721], + [0.17, -0.786], + [0.22, -0.721], + [0.262, -0.667], + [0.304, -0.614], + [0.346, -0.56], + [0.388, -0.506], + [0.43, -0.452], + [0.471, -0.398], + [0.522, -0.337], + [0.555, -0.291], + [0.597, -0.237], + [0.639, -0.183], + [0.681, -0.129], + [0.723, -0.075], + [0.765, -0.021], + [0.799, 0.021], + [0.765, -0.021], + [0.723, -0.075], + [0.681, -0.129], + [0.639, -0.183], + [0.597, -0.237], + [0.555, -0.291], + [0.522, -0.337], + [0.471, -0.398], + [0.445, -0.429], + [0.491, -0.517], + [0.528, -0.585], + [0.565, -0.652], + [0.602, -0.719], + [0.639, -0.786], + [0.68, -0.824], + [0.718, -0.83], + [0.763, -0.846], + [0.799, -0.842], + [0.834, -0.837], + [0.863, -0.82], + [0.901, -0.808], + [0.935, -0.795], + [0.986, -0.786], + ], + "y*": [ + [0.043, -0.157], + [0.085, -0.166], + [0.128, -0.157], + [0.162, -0.157], + [0.196, -0.149], + [0.23, -0.14], + [0.264, -0.123], + [0.306, -0.123], + [0.34, -0.123], + [0.379, -0.138], + [0.397, -0.161], + [0.405, -0.198], + [0.399, -0.241], + [0.394, -0.279], + [0.378, -0.358], + [0.363, -0.437], + [0.347, -0.515], + [0.332, -0.594], + [0.317, -0.672], + [0.315, -0.735], + [0.325, -0.788], + [0.343, -0.811], + [0.361, -0.834], + [0.379, -0.857], + [0.402, -0.878], + [0.428, -0.895], + [0.462, -0.902], + [0.496, -0.902], + [0.566, -0.893], + [0.632, -0.857], + [0.663, -0.823], + [0.737, -0.745], + [0.743, -0.674], + [0.75, -0.603], + [0.757, -0.533], + [0.764, -0.462], + [0.771, -0.391], + [0.778, -0.32], + [0.785, -0.249], + [0.791, -0.179], + [0.799, -0.132], + [0.791, -0.179], + [0.785, -0.249], + [0.778, -0.32], + [0.771, -0.391], + [0.764, -0.462], + [0.757, -0.533], + [0.75, -0.603], + [0.743, -0.674], + [0.737, -0.745], + [0.73, -0.816], + [0.723, -0.887], + [0.716, -0.957], + [0.709, -1.028], + [0.702, -1.099], + [0.695, -1.17], + [0.689, -1.241], + [0.682, -1.311], + [0.675, -1.382], + [0.668, -1.453], + [0.661, -1.524], + [0.631, -1.571], + [0.58, -1.584], + [0.513, -1.593], + [0.446, -1.601], + [0.383, -1.593], + [0.336, -1.576], + [0.318, -1.553], + [0.3, -1.53], + [0.281, -1.507], + [0.265, -1.476], + [0.26, -1.438], + [0.267, -1.387], + [0.291, -1.348], + [0.304, -1.314], + [0.327, -1.275], + [0.342, -1.241], + [0.36, -1.205], + [0.375, -1.181], + [0.39, -1.158], + [0.405, -1.134], + [0.42, -1.111], + [0.435, -1.087], + [0.45, -1.064], + [0.491, -1.038], + [0.541, -1.012], + [0.59, -0.986], + [0.639, -0.959], + [0.777, -0.897], + [0.832, -0.858], + [0.888, -0.827], + [0.944, -0.809], + [1.001, -0.791], + [1.052, -0.786], + ], + "z*": [ + [0.043, -0.157], + [0.085, -0.166], + [0.136, -0.174], + [0.187, -0.174], + [0.238, -0.174], + [0.289, -0.174], + [0.34, -0.157], + [0.374, -0.14], + [0.406, -0.115], + [0.431, -0.083], + [0.464, -0.047], + [0.491, -0.03], + [0.53, -0.036], + [0.564, -0.059], + [0.595, -0.083], + [0.612, -0.106], + [0.629, -0.149], + [0.623, -0.191], + [0.614, -0.245], + [0.593, -0.319], + [0.567, -0.386], + [0.53, -0.453], + [0.497, -0.5], + [0.457, -0.574], + [0.414, -0.639], + [0.381, -0.685], + [0.364, -0.708], + [0.314, -0.777], + [0.298, -0.801], + [0.314, -0.777], + [0.364, -0.708], + [0.381, -0.685], + [0.414, -0.639], + [0.464, -0.639], + [0.491, -0.667], + [0.514, -0.708], + [0.53, -0.731], + [0.557, -0.769], + [0.58, -0.824], + [0.584, -0.847], + [0.58, -0.87], + [0.58, -0.916], + [0.58, -0.963], + [0.567, -1.084], + [0.542, -1.169], + [0.517, -1.243], + [0.497, -1.287], + [0.481, -1.31], + [0.447, -1.38], + [0.431, -1.403], + [0.408, -1.432], + [0.374, -1.495], + [0.347, -1.519], + [0.316, -1.534], + [0.281, -1.519], + [0.264, -1.495], + [0.219, -1.441], + [0.198, -1.403], + [0.185, -1.356], + [0.198, -1.31], + [0.218, -1.267], + [0.248, -1.218], + [0.264, -1.194], + [0.281, -1.171], + [0.298, -1.148], + [0.314, -1.125], + [0.331, -1.102], + [0.347, -1.079], + [0.364, -1.055], + [0.381, -1.032], + [0.416, -1.002], + [0.451, -0.965], + [0.486, -0.931], + [0.52, -0.897], + [0.555, -0.871], + [0.59, -0.846], + [0.625, -0.829], + [0.66, -0.812], + [0.695, -0.803], + [0.73, -0.791], + [0.765, -0.786], + [0.816, -0.778], + [0.867, -0.778], + [0.918, -0.786], + ], + ",": [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.357, -0.701], + [0.391, -0.616], + [0.459, -0.701], + [0.476, -0.786], + [0.493, -0.871], + [0.493, -0.956], + [0.459, -1.041], + [0.425, -1.126], + [0.357, -1.211], + [0.255, -1.296], + [0.357, -1.211], + [0.425, -1.126], + [0.459, -1.041], + [0.493, -0.956], + [0.493, -0.871], + [0.476, -0.786], + [0.459, -0.701], + [0.391, -0.616], + [0.459, -0.701], + [0.476, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + ], + "?": [ + [0.085, -0.786], + [0.17, -0.786], + [0.272, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.786], + [0.425, -0.701], + [0.425, -0.616], + [0.425, -0.531], + [0.425, -0.446], + [0.425, -0.361], + [0.425, -0.276], + [0.425, -0.191], + [0.425, -0.064], + [0.527, -0.038], + [0.586, -0.021], + [0.64, 0.004], + [0.697, 0.08], + [0.734, 0.149], + [0.749, 0.252], + [0.748, 0.387], + [0.741, 0.516], + [0.726, 0.6], + [0.712, 0.659], + [0.672, 0.74], + [0.641, 0.777], + [0.586, 0.786], + [0.537, 0.794], + [0.485, 0.786], + [0.412, 0.744], + [0.34, 0.701], + [0.213, 0.616], + [0.34, 0.701], + [0.412, 0.744], + [0.485, 0.786], + [0.537, 0.794], + [0.586, 0.786], + [0.641, 0.777], + [0.672, 0.74], + [0.712, 0.659], + [0.726, 0.6], + [0.741, 0.516], + [0.748, 0.387], + [0.749, 0.252], + [0.734, 0.149], + [0.697, 0.08], + [0.64, 0.004], + [0.586, -0.021], + [0.527, -0.038], + [0.425, -0.064], + [0.425, -0.191], + [0.425, -0.276], + [0.425, -0.361], + [0.425, -0.446], + [0.425, -0.531], + [0.425, -0.616], + [0.425, -0.701], + [0.425, -0.786], + [0.612, -0.786], + [0.561, -0.659], + [0.425, -0.574], + [0.289, -0.659], + [0.238, -0.786], + [0.289, -0.914], + [0.425, -0.999], + [0.561, -0.914], + [0.612, -0.786], + [0.425, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + ], + "&": [ + [0.085, -0.786], + [0.17, -0.786], + [0.238, -0.786], + [0.344, -0.778], + [0.425, -0.774], + [0.501, -0.774], + [0.63, -0.761], + [0.731, -0.748], + [0.816, -0.684], + [0.901, -0.574], + [0.969, -0.506], + [1.02, -0.44], + [1.105, -0.319], + [1.207, -0.191], + [1.105, -0.319], + [1.02, -0.44], + [0.969, -0.506], + [0.901, -0.574], + [0.816, -0.684], + [0.731, -0.748], + [0.63, -0.761], + [0.501, -0.774], + [0.425, -0.774], + [0.344, -0.778], + [0.298, -0.718], + [0.272, -0.676], + [0.255, -0.599], + [0.247, -0.497], + [0.255, -0.327], + [0.306, -0.191], + [0.408, -0.064], + [0.493, 0.004], + [0.544, 0.047], + [0.663, 0.089], + [0.756, 0.154], + [0.799, 0.234], + [0.842, 0.335], + [0.875, 0.429], + [0.885, 0.52], + [0.888, 0.614], + [0.871, 0.69], + [0.837, 0.749], + [0.79, 0.777], + [0.706, 0.786], + [0.637, 0.786], + [0.57, 0.777], + [0.499, 0.76], + [0.464, 0.734], + [0.44, 0.681], + [0.429, 0.605], + [0.422, 0.548], + [0.424, 0.463], + [0.432, 0.404], + [0.459, 0.306], + [0.501, 0.174], + [0.578, 0.064], + [0.646, -0.106], + [0.714, -0.276], + [0.765, -0.446], + [0.816, -0.616], + [0.867, -0.786], + [0.935, -0.829], + [1.02, -0.829], + [1.097, -0.803], + [1.191, -0.786], + [1.29, -0.786], + [1.385, -0.786], + [1.462, -0.786], + ], + $: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -1.041], + [0.51, -0.786], + [0.51, -0.531], + [0.51, -0.276], + [0.51, -0.021], + [0.51, 0.234], + [0.51, 0.489], + [0.51, 0.829], + [0.544, 0.829], + [0.544, 0.489], + [0.544, 0.234], + [0.544, -0.021], + [0.544, -0.276], + [0.544, -0.531], + [0.544, -0.786], + [0.544, -1.041], + [0.544, -0.786], + [0.652, -0.786], + [0.729, -0.778], + [0.79, -0.733], + [0.829, -0.664], + [0.887, -0.56], + [0.912, -0.429], + [0.904, -0.334], + [0.88, -0.267], + [0.831, -0.191], + [0.774, -0.14], + [0.708, -0.14], + [0.629, -0.14], + [0.544, -0.14], + [0.475, -0.14], + [0.408, -0.132], + [0.34, -0.098], + [0.306, -0.072], + [0.272, -0.03], + [0.221, 0.038], + [0.187, 0.115], + [0.17, 0.242], + [0.187, 0.341], + [0.238, 0.44], + [0.289, 0.497], + [0.349, 0.53], + [0.425, 0.548], + [0.51, 0.548], + [0.592, 0.548], + [0.68, 0.548], + [0.765, 0.548], + [0.85, 0.548], + [0.765, 0.548], + [0.68, 0.548], + [0.592, 0.548], + [0.51, 0.548], + [0.425, 0.548], + [0.349, 0.53], + [0.289, 0.497], + [0.238, 0.44], + [0.187, 0.341], + [0.17, 0.242], + [0.187, 0.115], + [0.221, 0.038], + [0.272, -0.03], + [0.306, -0.072], + [0.34, -0.098], + [0.408, -0.132], + [0.475, -0.14], + [0.544, -0.14], + [0.629, -0.14], + [0.708, -0.14], + [0.774, -0.14], + [0.831, -0.191], + [0.88, -0.267], + [0.904, -0.334], + [0.912, -0.429], + [0.887, -0.56], + [0.829, -0.664], + [0.79, -0.733], + [0.729, -0.778], + [0.652, -0.786], + [0.51, -0.786], + [0.425, -0.786], + [0.34, -0.786], + [0.255, -0.786], + [0.17, -0.786], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + ], + "!": [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -0.531], + [0.51, -0.276], + [0.51, -0.021], + [0.51, 0.234], + [0.51, 0.489], + [0.51, 0.786], + [0.51, 0.489], + [0.51, 0.234], + [0.51, -0.021], + [0.51, -0.276], + [0.51, -0.531], + [0.51, -0.786], + [0.697, -0.786], + [0.646, -0.659], + [0.51, -0.574], + [0.374, -0.659], + [0.323, -0.786], + [0.374, -0.914], + [0.51, -0.999], + [0.646, -0.914], + [0.697, -0.786], + [0.51, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + ], +} diff --git a/src/models/input_text/raysol_cursive.txt b/src/features/shapes/input_text/raysol_cursive.txt similarity index 100% rename from src/models/input_text/raysol_cursive.txt rename to src/features/shapes/input_text/raysol_cursive.txt diff --git a/src/features/shapes/input_text/raysol_sanserif.js b/src/features/shapes/input_text/raysol_sanserif.js new file mode 100644 index 00000000..d7bf13bb --- /dev/null +++ b/src/features/shapes/input_text/raysol_sanserif.js @@ -0,0 +1,4255 @@ +export let raysol_sanserif = { + " ": [ + [0.0, -0.786], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + 0: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.544, -0.691], + [0.629, -0.595], + [0.68, -0.5], + [0.723, -0.404], + [0.765, -0.308], + [0.799, -0.213], + [0.833, -0.117], + [0.84, -0.009], + [0.833, 0.117], + [0.799, 0.212], + [0.765, 0.308], + [0.723, 0.404], + [0.68, 0.499], + [0.629, 0.595], + [0.544, 0.69], + [0.425, 0.786], + [0.306, 0.69], + [0.221, 0.595], + [0.17, 0.499], + [0.128, 0.404], + [0.085, 0.308], + [0.051, 0.212], + [0.017, 0.117], + [0.01, -0.009], + [0.017, -0.117], + [0.051, -0.213], + [0.085, -0.308], + [0.128, -0.404], + [0.17, -0.5], + [0.221, -0.595], + [0.306, -0.691], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + 1: [ + [0.085, -0.786], + [0.085, -0.629], + [0.085, -0.472], + [0.085, -0.315], + [0.085, -0.157], + [0.085, -0.0], + [0.085, 0.157], + [0.085, 0.314], + [0.085, 0.472], + [0.085, 0.629], + [0.085, 0.786], + [0.085, 0.629], + [0.085, 0.472], + [0.085, 0.314], + [0.085, 0.157], + [0.085, -0.0], + [0.085, -0.157], + [0.085, -0.315], + [0.085, -0.472], + [0.085, -0.629], + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + 2: [ + [0.085, -0.786], + [0.17, -0.786], + [0.085, -0.786], + [0.177, -0.599], + [0.269, -0.412], + [0.36, -0.225], + [0.452, -0.038], + [0.544, 0.149], + [0.612, 0.276], + [0.654, 0.404], + [0.663, 0.531], + [0.637, 0.616], + [0.587, 0.701], + [0.527, 0.752], + [0.451, 0.782], + [0.383, 0.786], + [0.315, 0.782], + [0.238, 0.752], + [0.179, 0.701], + [0.128, 0.616], + [0.085, 0.531], + [0.128, 0.616], + [0.179, 0.701], + [0.238, 0.752], + [0.315, 0.782], + [0.383, 0.786], + [0.451, 0.782], + [0.527, 0.752], + [0.587, 0.701], + [0.637, 0.616], + [0.663, 0.531], + [0.654, 0.404], + [0.612, 0.276], + [0.544, 0.149], + [0.452, -0.038], + [0.36, -0.225], + [0.269, -0.412], + [0.177, -0.599], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.765, -0.786], + [0.85, -0.574], + [0.85, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + 3: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.34, -0.786], + [0.408, -0.782], + [0.485, -0.752], + [0.544, -0.701], + [0.595, -0.616], + [0.62, -0.531], + [0.612, -0.404], + [0.57, -0.276], + [0.476, -0.149], + [0.34, 0.064], + [0.255, 0.064], + [0.34, 0.064], + [0.501, 0.149], + [0.57, 0.276], + [0.612, 0.404], + [0.62, 0.531], + [0.595, 0.616], + [0.544, 0.701], + [0.485, 0.752], + [0.408, 0.782], + [0.34, 0.786], + [0.272, 0.782], + [0.196, 0.752], + [0.136, 0.701], + [0.085, 0.616], + [0.043, 0.531], + [0.085, 0.616], + [0.136, 0.701], + [0.196, 0.752], + [0.272, 0.782], + [0.34, 0.786], + [0.408, 0.782], + [0.485, 0.752], + [0.544, 0.701], + [0.595, 0.616], + [0.62, 0.531], + [0.612, 0.404], + [0.57, 0.276], + [0.501, 0.149], + [0.34, 0.064], + [0.255, 0.064], + [0.34, 0.064], + [0.476, -0.149], + [0.57, -0.276], + [0.612, -0.404], + [0.62, -0.531], + [0.595, -0.616], + [0.544, -0.701], + [0.485, -0.752], + [0.408, -0.782], + [0.34, -0.786], + [0.272, -0.782], + [0.196, -0.752], + [0.136, -0.701], + [0.085, -0.616], + [0.043, -0.531], + [0.0, -0.438], + [0.043, -0.531], + [0.085, -0.616], + [0.136, -0.701], + [0.196, -0.752], + [0.272, -0.782], + [0.34, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + 4: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.595, -0.616], + [0.595, -0.446], + [0.595, -0.276], + [0.595, -0.106], + [0.595, -0.0], + [0.51, -0.0], + [0.425, -0.0], + [0.34, -0.0], + [0.255, -0.0], + [0.17, -0.0], + [0.068, -0.0], + [0.085, 0.064], + [0.085, 0.234], + [0.085, 0.404], + [0.085, 0.574], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.574], + [0.085, 0.404], + [0.085, 0.234], + [0.085, 0.064], + [0.085, -0.0], + [0.17, -0.0], + [0.255, -0.0], + [0.34, -0.0], + [0.425, -0.0], + [0.51, -0.0], + [0.595, -0.0], + [0.68, -0.0], + [0.807, -0.0], + [0.935, -0.0], + [0.807, -0.0], + [0.68, -0.0], + [0.595, -0.0], + [0.595, 0.064], + [0.595, 0.234], + [0.595, 0.404], + [0.595, 0.574], + [0.595, 0.744], + [0.595, 0.786], + [0.595, 0.744], + [0.595, 0.574], + [0.595, 0.404], + [0.595, 0.234], + [0.595, 0.064], + [0.595, -0.0], + [0.595, -0.106], + [0.595, -0.276], + [0.595, -0.446], + [0.595, -0.616], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + 5: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.744], + [0.493, -0.74], + [0.57, -0.71], + [0.629, -0.659], + [0.68, -0.574], + [0.706, -0.489], + [0.714, -0.361], + [0.697, -0.191], + [0.654, -0.064], + [0.561, 0.064], + [0.425, 0.174], + [0.272, 0.166], + [0.136, 0.14], + [0.153, 0.302], + [0.17, 0.463], + [0.187, 0.625], + [0.204, 0.786], + [0.289, 0.786], + [0.374, 0.786], + [0.459, 0.786], + [0.544, 0.786], + [0.68, 0.786], + [0.799, 0.786], + [0.68, 0.786], + [0.544, 0.786], + [0.459, 0.786], + [0.374, 0.786], + [0.289, 0.786], + [0.204, 0.786], + [0.187, 0.625], + [0.17, 0.463], + [0.153, 0.302], + [0.136, 0.14], + [0.272, 0.166], + [0.425, 0.174], + [0.561, 0.064], + [0.654, -0.064], + [0.697, -0.191], + [0.714, -0.361], + [0.706, -0.489], + [0.68, -0.574], + [0.629, -0.659], + [0.57, -0.71], + [0.493, -0.74], + [0.425, -0.744], + [0.357, -0.74], + [0.281, -0.71], + [0.221, -0.659], + [0.17, -0.616], + [0.128, -0.548], + [0.076, -0.421], + [0.128, -0.548], + [0.17, -0.616], + [0.221, -0.659], + [0.281, -0.71], + [0.357, -0.74], + [0.425, -0.744], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + 6: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.357, -0.744], + [0.425, -0.74], + [0.501, -0.71], + [0.561, -0.659], + [0.612, -0.574], + [0.637, -0.489], + [0.629, -0.361], + [0.587, -0.234], + [0.51, -0.106], + [0.442, -0.038], + [0.357, -0.021], + [0.272, -0.038], + [0.442, -0.038], + [0.357, -0.021], + [0.272, -0.038], + [0.204, -0.106], + [0.128, -0.234], + [0.085, -0.361], + [0.112, -0.247], + [0.139, -0.132], + [0.167, -0.017], + [0.194, 0.098], + [0.221, 0.212], + [0.248, 0.327], + [0.275, 0.442], + [0.303, 0.557], + [0.33, 0.671], + [0.357, 0.786], + [0.33, 0.671], + [0.303, 0.557], + [0.275, 0.442], + [0.248, 0.327], + [0.221, 0.212], + [0.194, 0.098], + [0.167, -0.017], + [0.139, -0.132], + [0.112, -0.247], + [0.085, -0.361], + [0.076, -0.489], + [0.102, -0.574], + [0.153, -0.659], + [0.213, -0.71], + [0.289, -0.74], + [0.357, -0.744], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + 7: [ + [0.085, -0.786], + [0.17, -0.786], + [0.221, -0.629], + [0.272, -0.472], + [0.323, -0.315], + [0.374, -0.157], + [0.425, -0.0], + [0.476, 0.157], + [0.527, 0.314], + [0.578, 0.472], + [0.629, 0.629], + [0.68, 0.786], + [0.606, 0.786], + [0.531, 0.786], + [0.457, 0.786], + [0.383, 0.786], + [0.308, 0.786], + [0.234, 0.786], + [0.159, 0.786], + [0.043, 0.786], + [0.159, 0.786], + [0.234, 0.786], + [0.308, 0.786], + [0.383, 0.786], + [0.457, 0.786], + [0.531, 0.786], + [0.606, 0.786], + [0.68, 0.786], + [0.629, 0.629], + [0.578, 0.472], + [0.527, 0.314], + [0.476, 0.157], + [0.425, -0.0], + [0.374, -0.157], + [0.323, -0.315], + [0.272, -0.472], + [0.221, -0.629], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + 8: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.34, -0.744], + [0.408, -0.74], + [0.485, -0.71], + [0.544, -0.659], + [0.595, -0.574], + [0.62, -0.489], + [0.612, -0.361], + [0.57, -0.234], + [0.493, -0.106], + [0.425, 0.021], + [0.34, 0.021], + [0.255, 0.021], + [0.179, 0.149], + [0.111, 0.276], + [0.068, 0.404], + [0.06, 0.531], + [0.085, 0.616], + [0.136, 0.701], + [0.196, 0.752], + [0.272, 0.782], + [0.34, 0.786], + [0.408, 0.782], + [0.485, 0.752], + [0.544, 0.701], + [0.595, 0.616], + [0.62, 0.531], + [0.612, 0.404], + [0.57, 0.276], + [0.501, 0.149], + [0.425, 0.021], + [0.34, 0.021], + [0.255, 0.021], + [0.187, -0.106], + [0.111, -0.234], + [0.068, -0.361], + [0.06, -0.489], + [0.085, -0.574], + [0.136, -0.659], + [0.196, -0.71], + [0.272, -0.74], + [0.34, -0.744], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + 9: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.646, -0.786], + [0.646, -0.616], + [0.646, -0.446], + [0.646, -0.276], + [0.646, -0.106], + [0.646, 0.064], + [0.646, 0.234], + [0.646, 0.404], + [0.595, 0.276], + [0.527, 0.149], + [0.365, 0.064], + [0.204, 0.149], + [0.136, 0.276], + [0.093, 0.404], + [0.085, 0.531], + [0.111, 0.616], + [0.162, 0.701], + [0.221, 0.752], + [0.298, 0.782], + [0.365, 0.786], + [0.433, 0.782], + [0.51, 0.752], + [0.57, 0.701], + [0.62, 0.616], + [0.646, 0.531], + [0.646, 0.404], + [0.646, 0.234], + [0.646, 0.064], + [0.646, -0.106], + [0.646, -0.276], + [0.646, -0.446], + [0.646, -0.616], + [0.646, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + A: [ + [0.085, -0.786], + [0.128, -0.629], + [0.17, -0.472], + [0.213, -0.315], + [0.255, -0.157], + [0.298, -0.0], + [0.34, 0.157], + [0.383, 0.314], + [0.425, 0.472], + [0.468, 0.629], + [0.51, 0.786], + [0.552, 0.629], + [0.595, 0.472], + [0.637, 0.314], + [0.68, 0.157], + [0.723, -0.0], + [0.765, -0.157], + [0.68, -0.157], + [0.595, -0.157], + [0.51, -0.157], + [0.425, -0.157], + [0.34, -0.157], + [0.255, -0.157], + [0.34, -0.157], + [0.425, -0.157], + [0.51, -0.157], + [0.595, -0.157], + [0.68, -0.157], + [0.765, -0.157], + [0.807, -0.315], + [0.85, -0.472], + [0.892, -0.629], + [0.935, -0.786], + [1.275, -0.786], + ], + B: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.153, 0.786], + [0.221, 0.786], + [0.289, 0.786], + [0.357, 0.786], + [0.425, 0.786], + [0.459, 0.777], + [0.51, 0.752], + [0.561, 0.701], + [0.595, 0.667], + [0.629, 0.616], + [0.663, 0.531], + [0.697, 0.446], + [0.697, 0.404], + [0.663, 0.319], + [0.629, 0.234], + [0.595, 0.183], + [0.561, 0.149], + [0.51, 0.098], + [0.459, 0.072], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.459, 0.055], + [0.51, 0.03], + [0.561, -0.021], + [0.595, -0.055], + [0.629, -0.106], + [0.663, -0.191], + [0.697, -0.276], + [0.714, -0.361], + [0.697, -0.446], + [0.663, -0.531], + [0.629, -0.616], + [0.595, -0.667], + [0.561, -0.701], + [0.51, -0.752], + [0.459, -0.778], + [0.425, -0.786], + [0.357, -0.786], + [0.289, -0.786], + [0.221, -0.786], + [0.153, -0.786], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.561, -0.786], + [0.646, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + C: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -0.744], + [0.442, -0.74], + [0.365, -0.71], + [0.306, -0.659], + [0.255, -0.574], + [0.213, -0.489], + [0.17, -0.395], + [0.136, -0.276], + [0.102, -0.132], + [0.085, 0.021], + [0.102, 0.174], + [0.136, 0.319], + [0.17, 0.438], + [0.213, 0.531], + [0.255, 0.616], + [0.306, 0.701], + [0.365, 0.752], + [0.442, 0.782], + [0.51, 0.786], + [0.578, 0.782], + [0.654, 0.752], + [0.714, 0.701], + [0.765, 0.616], + [0.807, 0.531], + [0.765, 0.616], + [0.714, 0.701], + [0.654, 0.752], + [0.578, 0.782], + [0.51, 0.786], + [0.442, 0.782], + [0.365, 0.752], + [0.306, 0.701], + [0.255, 0.616], + [0.213, 0.531], + [0.17, 0.438], + [0.136, 0.319], + [0.102, 0.174], + [0.085, 0.021], + [0.102, -0.132], + [0.136, -0.276], + [0.17, -0.395], + [0.213, -0.489], + [0.255, -0.574], + [0.306, -0.659], + [0.365, -0.71], + [0.442, -0.74], + [0.51, -0.744], + [0.578, -0.74], + [0.654, -0.71], + [0.714, -0.659], + [0.765, -0.574], + [0.807, -0.489], + [0.765, -0.574], + [0.714, -0.659], + [0.654, -0.71], + [0.578, -0.74], + [0.51, -0.744], + [0.51, -0.786], + [0.425, -0.786], + [0.374, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + D: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.408, -0.74], + [0.485, -0.71], + [0.544, -0.659], + [0.595, -0.574], + [0.637, -0.489], + [0.68, -0.395], + [0.714, -0.276], + [0.748, -0.132], + [0.765, 0.021], + [0.748, 0.174], + [0.714, 0.319], + [0.68, 0.438], + [0.637, 0.531], + [0.595, 0.616], + [0.544, 0.701], + [0.485, 0.752], + [0.408, 0.782], + [0.34, 0.786], + [0.272, 0.786], + [0.196, 0.786], + [0.136, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + E: [ + [0.085, -0.786], + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.493, 0.064], + [0.561, 0.064], + [0.629, 0.064], + [0.561, 0.064], + [0.493, 0.064], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.153, 0.786], + [0.221, 0.786], + [0.289, 0.786], + [0.357, 0.786], + [0.425, 0.786], + [0.493, 0.786], + [0.561, 0.786], + [0.629, 0.786], + [0.629, 0.701], + [0.629, 0.531], + [0.629, 0.701], + [0.561, 0.786], + [0.493, 0.786], + [0.425, 0.786], + [0.357, 0.786], + [0.289, 0.786], + [0.221, 0.786], + [0.153, 0.786], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.493, -0.786], + [0.561, -0.786], + [0.629, -0.701], + [0.629, -0.531], + [0.629, -0.701], + [0.629, -0.786], + [0.714, -0.786], + [1.054, -0.786], + ], + F: [ + [0.085, -0.786], + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.493, 0.064], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.085, 0.064], + [0.085, 0.786], + [0.153, 0.786], + [0.221, 0.786], + [0.289, 0.786], + [0.357, 0.786], + [0.425, 0.786], + [0.493, 0.786], + [0.561, 0.786], + [0.629, 0.786], + [0.561, 0.786], + [0.493, 0.786], + [0.425, 0.786], + [0.357, 0.786], + [0.289, 0.786], + [0.221, 0.786], + [0.153, 0.786], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.493, -0.786], + [0.561, -0.786], + [0.629, -0.786], + [0.969, -0.786], + ], + G: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.744], + [0.493, -0.74], + [0.57, -0.71], + [0.629, -0.659], + [0.68, -0.574], + [0.723, -0.489], + [0.765, -0.395], + [0.799, -0.276], + [0.833, -0.132], + [0.85, 0.021], + [0.765, 0.021], + [0.68, 0.021], + [0.595, 0.021], + [0.51, 0.021], + [0.425, 0.021], + [0.51, 0.021], + [0.595, 0.021], + [0.68, 0.021], + [0.765, 0.021], + [0.85, 0.021], + [0.833, -0.132], + [0.799, -0.276], + [0.765, -0.395], + [0.723, -0.489], + [0.68, -0.574], + [0.629, -0.659], + [0.57, -0.71], + [0.493, -0.74], + [0.425, -0.744], + [0.357, -0.74], + [0.281, -0.71], + [0.221, -0.659], + [0.17, -0.574], + [0.128, -0.489], + [0.085, -0.395], + [0.051, -0.276], + [0.017, -0.132], + [0.0, 0.021], + [0.017, 0.174], + [0.051, 0.319], + [0.085, 0.438], + [0.128, 0.531], + [0.17, 0.616], + [0.221, 0.701], + [0.281, 0.752], + [0.357, 0.782], + [0.425, 0.786], + [0.493, 0.782], + [0.57, 0.752], + [0.629, 0.701], + [0.68, 0.616], + [0.629, 0.701], + [0.57, 0.752], + [0.493, 0.782], + [0.425, 0.786], + [0.357, 0.782], + [0.281, 0.752], + [0.221, 0.701], + [0.17, 0.616], + [0.128, 0.531], + [0.085, 0.438], + [0.051, 0.319], + [0.017, 0.174], + [0.0, 0.021], + [0.017, -0.132], + [0.051, -0.276], + [0.085, -0.395], + [0.128, -0.489], + [0.17, -0.574], + [0.221, -0.659], + [0.281, -0.71], + [0.357, -0.74], + [0.425, -0.744], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + H: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.493, 0.064], + [0.561, 0.064], + [0.629, 0.064], + [0.697, 0.064], + [0.765, 0.064], + [0.765, 0.149], + [0.765, 0.234], + [0.765, 0.319], + [0.765, 0.404], + [0.765, 0.489], + [0.765, 0.574], + [0.765, 0.659], + [0.765, 0.744], + [0.765, 0.786], + [0.765, 0.744], + [0.765, 0.659], + [0.765, 0.574], + [0.765, 0.489], + [0.765, 0.404], + [0.765, 0.319], + [0.765, 0.234], + [0.765, 0.149], + [0.765, 0.064], + [0.697, 0.064], + [0.629, 0.064], + [0.561, 0.064], + [0.493, 0.064], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.493, 0.064], + [0.561, 0.064], + [0.629, 0.064], + [0.697, 0.064], + [0.765, 0.064], + [0.765, -0.021], + [0.765, -0.106], + [0.765, -0.191], + [0.765, -0.276], + [0.765, -0.361], + [0.765, -0.446], + [0.765, -0.531], + [0.765, -0.616], + [0.765, -0.701], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + I: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.34, -0.701], + [0.34, -0.616], + [0.34, -0.531], + [0.34, -0.446], + [0.34, -0.361], + [0.34, -0.276], + [0.34, -0.191], + [0.34, -0.106], + [0.34, -0.021], + [0.34, 0.064], + [0.34, 0.149], + [0.34, 0.234], + [0.34, 0.319], + [0.34, 0.404], + [0.34, 0.489], + [0.34, 0.574], + [0.34, 0.659], + [0.34, 0.744], + [0.34, 0.786], + [0.255, 0.786], + [0.17, 0.786], + [0.085, 0.786], + [0.17, 0.786], + [0.255, 0.786], + [0.34, 0.786], + [0.425, 0.786], + [0.51, 0.786], + [0.595, 0.786], + [0.51, 0.786], + [0.425, 0.786], + [0.34, 0.744], + [0.34, 0.659], + [0.34, 0.574], + [0.34, 0.489], + [0.34, 0.404], + [0.34, 0.319], + [0.34, 0.234], + [0.34, 0.149], + [0.34, 0.064], + [0.34, -0.021], + [0.34, -0.106], + [0.34, -0.191], + [0.34, -0.276], + [0.34, -0.361], + [0.34, -0.446], + [0.34, -0.531], + [0.34, -0.616], + [0.34, -0.701], + [0.34, -0.786], + [0.255, -0.701], + [0.17, -0.701], + [0.085, -0.701], + [0.17, -0.701], + [0.255, -0.701], + [0.34, -0.701], + [0.425, -0.701], + [0.51, -0.701], + [0.595, -0.701], + [0.51, -0.701], + [0.425, -0.701], + [0.34, -0.701], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + J: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.391, -0.786], + [0.425, -0.778], + [0.476, -0.752], + [0.527, -0.701], + [0.561, -0.667], + [0.595, -0.616], + [0.629, -0.531], + [0.663, -0.446], + [0.68, -0.361], + [0.68, -0.276], + [0.68, -0.191], + [0.68, -0.106], + [0.68, -0.021], + [0.68, 0.064], + [0.68, 0.149], + [0.68, 0.234], + [0.68, 0.319], + [0.68, 0.404], + [0.68, 0.489], + [0.68, 0.574], + [0.68, 0.659], + [0.68, 0.744], + [0.68, 0.786], + [0.68, 0.744], + [0.68, 0.659], + [0.68, 0.574], + [0.68, 0.489], + [0.68, 0.404], + [0.68, 0.319], + [0.68, 0.234], + [0.68, 0.149], + [0.68, 0.064], + [0.68, -0.021], + [0.68, -0.106], + [0.68, -0.191], + [0.68, -0.276], + [0.68, -0.361], + [0.663, -0.446], + [0.629, -0.531], + [0.595, -0.616], + [0.561, -0.667], + [0.527, -0.701], + [0.476, -0.752], + [0.425, -0.778], + [0.391, -0.786], + [0.34, -0.786], + [0.289, -0.786], + [0.255, -0.778], + [0.204, -0.752], + [0.153, -0.701], + [0.119, -0.667], + [0.085, -0.616], + [0.051, -0.531], + [0.017, -0.446], + [0.0, -0.361], + [0.017, -0.446], + [0.051, -0.531], + [0.085, -0.616], + [0.119, -0.667], + [0.153, -0.701], + [0.204, -0.752], + [0.255, -0.778], + [0.289, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + K: [ + [0.085, -0.786], + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.224, 0.136], + [0.279, 0.208], + [0.333, 0.28], + [0.388, 0.353], + [0.442, 0.425], + [0.496, 0.497], + [0.551, 0.569], + [0.605, 0.642], + [0.66, 0.714], + [0.714, 0.786], + [0.66, 0.714], + [0.605, 0.642], + [0.551, 0.569], + [0.496, 0.497], + [0.442, 0.425], + [0.388, 0.353], + [0.333, 0.28], + [0.279, 0.208], + [0.224, 0.136], + [0.17, 0.064], + [0.224, -0.021], + [0.279, -0.106], + [0.333, -0.191], + [0.388, -0.276], + [0.442, -0.361], + [0.496, -0.446], + [0.551, -0.531], + [0.605, -0.616], + [0.66, -0.701], + [0.714, -0.786], + [0.799, -0.786], + [1.139, -0.786], + ], + L: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.765, -0.574], + [0.765, -0.446], + [0.765, -0.574], + [0.765, -0.701], + [0.765, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + M: [ + [0.085, -0.786], + [0.085, -0.786], + [0.119, -0.629], + [0.153, -0.472], + [0.187, -0.315], + [0.221, -0.157], + [0.255, -0.0], + [0.289, 0.157], + [0.323, 0.314], + [0.357, 0.472], + [0.391, 0.629], + [0.425, 0.786], + [0.459, 0.629], + [0.493, 0.472], + [0.527, 0.314], + [0.561, 0.157], + [0.595, -0.0], + [0.629, -0.157], + [0.663, -0.315], + [0.697, -0.472], + [0.731, -0.629], + [0.765, -0.786], + [0.799, -0.629], + [0.833, -0.472], + [0.867, -0.315], + [0.901, -0.157], + [0.935, -0.0], + [0.969, 0.157], + [1.003, 0.314], + [1.037, 0.472], + [1.071, 0.629], + [1.105, 0.786], + [1.139, 0.629], + [1.173, 0.472], + [1.207, 0.314], + [1.241, 0.157], + [1.275, -0.0], + [1.309, -0.157], + [1.343, -0.315], + [1.377, -0.472], + [1.411, -0.629], + [1.445, -0.786], + [1.53, -0.786], + [1.87, -0.786], + ], + N: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.17, 0.629], + [0.255, 0.472], + [0.34, 0.314], + [0.425, 0.157], + [0.51, -0.0], + [0.595, -0.157], + [0.68, -0.315], + [0.765, -0.472], + [0.85, -0.629], + [0.935, -0.786], + [0.935, -0.701], + [0.935, -0.616], + [0.935, -0.531], + [0.935, -0.446], + [0.935, -0.361], + [0.935, -0.276], + [0.935, -0.191], + [0.935, -0.106], + [0.935, -0.021], + [0.935, 0.064], + [0.935, 0.149], + [0.935, 0.234], + [0.935, 0.319], + [0.935, 0.404], + [0.935, 0.489], + [0.935, 0.574], + [0.935, 0.659], + [0.935, 0.744], + [0.935, 0.786], + [0.935, 0.744], + [0.935, 0.659], + [0.935, 0.574], + [0.935, 0.489], + [0.935, 0.404], + [0.935, 0.319], + [0.935, 0.234], + [0.935, 0.149], + [0.935, 0.064], + [0.935, -0.021], + [0.935, -0.106], + [0.935, -0.191], + [0.935, -0.276], + [0.935, -0.361], + [0.935, -0.446], + [0.935, -0.531], + [0.935, -0.616], + [0.935, -0.701], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + O: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -0.744], + [0.578, -0.74], + [0.654, -0.71], + [0.714, -0.659], + [0.765, -0.574], + [0.807, -0.489], + [0.85, -0.395], + [0.884, -0.276], + [0.918, -0.132], + [0.935, 0.021], + [0.918, 0.174], + [0.884, 0.319], + [0.85, 0.438], + [0.807, 0.531], + [0.765, 0.616], + [0.714, 0.701], + [0.654, 0.752], + [0.578, 0.782], + [0.51, 0.786], + [0.442, 0.782], + [0.365, 0.752], + [0.306, 0.701], + [0.255, 0.616], + [0.213, 0.531], + [0.17, 0.438], + [0.136, 0.319], + [0.102, 0.174], + [0.085, 0.021], + [0.102, -0.132], + [0.136, -0.276], + [0.17, -0.395], + [0.213, -0.489], + [0.255, -0.574], + [0.306, -0.659], + [0.365, -0.71], + [0.442, -0.74], + [0.51, -0.744], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + P: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.459, 0.072], + [0.51, 0.098], + [0.561, 0.149], + [0.595, 0.183], + [0.629, 0.234], + [0.663, 0.319], + [0.697, 0.404], + [0.697, 0.446], + [0.663, 0.531], + [0.629, 0.616], + [0.595, 0.667], + [0.561, 0.701], + [0.51, 0.752], + [0.459, 0.777], + [0.425, 0.786], + [0.357, 0.786], + [0.289, 0.786], + [0.221, 0.786], + [0.153, 0.786], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.493, -0.786], + [0.561, -0.786], + [0.629, -0.786], + [0.697, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + Q: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -0.744], + [0.578, -0.74], + [0.654, -0.71], + [0.714, -0.659], + [0.765, -0.574], + [0.807, -0.489], + [0.85, -0.395], + [0.884, -0.276], + [0.918, -0.132], + [0.935, 0.021], + [0.918, 0.174], + [0.884, 0.319], + [0.85, 0.438], + [0.807, 0.531], + [0.765, 0.616], + [0.714, 0.701], + [0.654, 0.752], + [0.578, 0.782], + [0.51, 0.786], + [0.442, 0.782], + [0.365, 0.752], + [0.306, 0.701], + [0.255, 0.616], + [0.213, 0.531], + [0.17, 0.438], + [0.136, 0.319], + [0.102, 0.174], + [0.085, 0.021], + [0.102, -0.132], + [0.136, -0.276], + [0.17, -0.395], + [0.213, -0.489], + [0.255, -0.574], + [0.306, -0.659], + [0.365, -0.71], + [0.442, -0.74], + [0.51, -0.744], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.799, -0.854], + [0.833, -0.922], + [0.867, -0.99], + [0.765, -0.786], + [0.765, -0.786], + [0.867, -0.99], + [0.833, -0.922], + [0.799, -0.854], + [0.765, -0.786], + [0.731, -0.718], + [0.697, -0.65], + [0.663, -0.582], + [0.629, -0.514], + [0.595, -0.446], + [0.629, -0.514], + [0.663, -0.582], + [0.697, -0.65], + [0.731, -0.718], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + R: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.153, 0.786], + [0.221, 0.786], + [0.289, 0.786], + [0.357, 0.786], + [0.425, 0.786], + [0.459, 0.777], + [0.51, 0.752], + [0.561, 0.701], + [0.595, 0.667], + [0.629, 0.616], + [0.663, 0.531], + [0.697, 0.446], + [0.697, 0.404], + [0.663, 0.319], + [0.629, 0.234], + [0.595, 0.183], + [0.561, 0.149], + [0.51, 0.098], + [0.459, 0.072], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.153, 0.064], + [0.221, 0.064], + [0.289, 0.064], + [0.357, 0.064], + [0.391, -0.021], + [0.425, -0.106], + [0.459, -0.191], + [0.493, -0.276], + [0.527, -0.361], + [0.561, -0.446], + [0.595, -0.531], + [0.629, -0.616], + [0.663, -0.701], + [0.697, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + S: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.744], + [0.493, -0.74], + [0.57, -0.71], + [0.629, -0.659], + [0.68, -0.574], + [0.706, -0.489], + [0.697, -0.361], + [0.654, -0.234], + [0.561, -0.106], + [0.425, 0.021], + [0.289, 0.149], + [0.196, 0.276], + [0.153, 0.404], + [0.145, 0.531], + [0.17, 0.616], + [0.221, 0.701], + [0.281, 0.752], + [0.357, 0.782], + [0.425, 0.786], + [0.493, 0.782], + [0.57, 0.752], + [0.629, 0.701], + [0.68, 0.616], + [0.723, 0.531], + [0.68, 0.616], + [0.629, 0.701], + [0.57, 0.752], + [0.493, 0.782], + [0.425, 0.786], + [0.357, 0.782], + [0.281, 0.752], + [0.221, 0.701], + [0.17, 0.616], + [0.145, 0.531], + [0.153, 0.404], + [0.196, 0.276], + [0.289, 0.149], + [0.425, 0.021], + [0.561, -0.106], + [0.654, -0.234], + [0.697, -0.361], + [0.706, -0.489], + [0.68, -0.574], + [0.629, -0.659], + [0.57, -0.71], + [0.493, -0.74], + [0.425, -0.744], + [0.357, -0.74], + [0.281, -0.71], + [0.221, -0.659], + [0.17, -0.574], + [0.128, -0.489], + [0.085, -0.395], + [0.128, -0.489], + [0.17, -0.574], + [0.221, -0.659], + [0.281, -0.71], + [0.357, -0.74], + [0.425, -0.744], + [0.425, -0.786], + [0.425, -0.744], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + T: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.595, -0.701], + [0.595, -0.616], + [0.595, -0.531], + [0.595, -0.446], + [0.595, -0.361], + [0.595, -0.276], + [0.595, -0.191], + [0.595, -0.106], + [0.595, -0.021], + [0.595, 0.064], + [0.595, 0.149], + [0.595, 0.234], + [0.595, 0.319], + [0.595, 0.404], + [0.595, 0.489], + [0.595, 0.574], + [0.595, 0.659], + [0.595, 0.744], + [0.595, 0.786], + [0.51, 0.786], + [0.425, 0.786], + [0.34, 0.786], + [0.255, 0.786], + [0.17, 0.786], + [0.085, 0.786], + [0.17, 0.786], + [0.255, 0.786], + [0.34, 0.786], + [0.425, 0.786], + [0.51, 0.786], + [0.595, 0.786], + [0.68, 0.786], + [0.765, 0.786], + [0.85, 0.786], + [0.935, 0.786], + [1.02, 0.786], + [1.105, 0.786], + [1.02, 0.786], + [0.935, 0.786], + [0.85, 0.786], + [0.765, 0.786], + [0.68, 0.786], + [0.595, 0.744], + [0.595, 0.659], + [0.595, 0.574], + [0.595, 0.489], + [0.595, 0.404], + [0.595, 0.319], + [0.595, 0.234], + [0.595, 0.149], + [0.595, 0.064], + [0.595, -0.021], + [0.595, -0.106], + [0.595, -0.191], + [0.595, -0.276], + [0.595, -0.361], + [0.595, -0.446], + [0.595, -0.531], + [0.595, -0.616], + [0.595, -0.701], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.445, -0.786], + ], + U: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.51, -0.744], + [0.578, -0.74], + [0.654, -0.71], + [0.714, -0.659], + [0.765, -0.574], + [0.807, -0.489], + [0.85, -0.395], + [0.884, -0.276], + [0.918, -0.132], + [0.935, 0.021], + [0.935, 0.106], + [0.935, 0.191], + [0.935, 0.276], + [0.935, 0.361], + [0.935, 0.446], + [0.935, 0.531], + [0.935, 0.616], + [0.935, 0.701], + [0.935, 0.786], + [0.935, 0.701], + [0.935, 0.616], + [0.935, 0.531], + [0.935, 0.446], + [0.935, 0.361], + [0.935, 0.276], + [0.935, 0.191], + [0.935, 0.106], + [0.935, 0.021], + [0.918, -0.132], + [0.884, -0.276], + [0.85, -0.395], + [0.807, -0.489], + [0.765, -0.574], + [0.714, -0.659], + [0.654, -0.71], + [0.578, -0.74], + [0.51, -0.744], + [0.442, -0.74], + [0.365, -0.71], + [0.306, -0.659], + [0.255, -0.574], + [0.213, -0.489], + [0.17, -0.395], + [0.136, -0.276], + [0.102, -0.132], + [0.085, 0.021], + [0.085, 0.106], + [0.085, 0.191], + [0.085, 0.276], + [0.085, 0.361], + [0.085, 0.446], + [0.085, 0.531], + [0.085, 0.616], + [0.085, 0.701], + [0.085, 0.786], + [0.085, 0.701], + [0.085, 0.616], + [0.085, 0.531], + [0.085, 0.446], + [0.085, 0.361], + [0.085, 0.276], + [0.085, 0.191], + [0.085, 0.106], + [0.085, 0.021], + [0.102, -0.132], + [0.136, -0.276], + [0.17, -0.395], + [0.213, -0.489], + [0.255, -0.574], + [0.306, -0.659], + [0.365, -0.71], + [0.442, -0.74], + [0.51, -0.744], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + V: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.646, -0.629], + [0.697, -0.472], + [0.748, -0.315], + [0.799, -0.157], + [0.85, -0.0], + [0.901, 0.157], + [0.952, 0.314], + [1.003, 0.472], + [1.054, 0.629], + [1.105, 0.786], + [1.054, 0.629], + [1.003, 0.472], + [0.952, 0.314], + [0.901, 0.157], + [0.85, -0.0], + [0.799, -0.157], + [0.748, -0.315], + [0.697, -0.472], + [0.646, -0.629], + [0.595, -0.786], + [0.544, -0.629], + [0.493, -0.472], + [0.442, -0.315], + [0.391, -0.157], + [0.34, -0.0], + [0.289, 0.157], + [0.238, 0.314], + [0.187, 0.472], + [0.136, 0.629], + [0.085, 0.786], + [0.136, 0.629], + [0.187, 0.472], + [0.238, 0.314], + [0.289, 0.157], + [0.34, -0.0], + [0.391, -0.157], + [0.442, -0.315], + [0.493, -0.472], + [0.544, -0.629], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.53, -0.786], + ], + W: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.786], + [0.391, -0.629], + [0.357, -0.472], + [0.323, -0.315], + [0.289, -0.157], + [0.255, -0.0], + [0.221, 0.157], + [0.187, 0.314], + [0.153, 0.472], + [0.119, 0.629], + [0.085, 0.786], + [0.119, 0.629], + [0.153, 0.472], + [0.187, 0.314], + [0.221, 0.157], + [0.255, -0.0], + [0.289, -0.157], + [0.323, -0.315], + [0.357, -0.472], + [0.391, -0.629], + [0.425, -0.786], + [0.459, -0.629], + [0.493, -0.472], + [0.527, -0.315], + [0.561, -0.157], + [0.595, -0.0], + [0.629, 0.157], + [0.663, 0.314], + [0.697, 0.472], + [0.731, 0.629], + [0.765, 0.786], + [0.799, 0.629], + [0.833, 0.472], + [0.867, 0.314], + [0.901, 0.157], + [0.935, -0.0], + [0.969, -0.157], + [1.003, -0.315], + [1.037, -0.472], + [1.071, -0.629], + [1.105, -0.786], + [1.139, -0.629], + [1.173, -0.472], + [1.207, -0.315], + [1.241, -0.157], + [1.275, -0.0], + [1.309, 0.157], + [1.343, 0.314], + [1.377, 0.472], + [1.411, 0.629], + [1.445, 0.786], + [1.411, 0.629], + [1.377, 0.472], + [1.343, 0.314], + [1.309, 0.157], + [1.275, -0.0], + [1.241, -0.157], + [1.207, -0.315], + [1.173, -0.472], + [1.139, -0.629], + [1.105, -0.786], + [1.19, -0.786], + [1.275, -0.786], + [1.36, -0.786], + [1.445, -0.786], + [1.53, -0.786], + [1.87, -0.786], + ], + X: [ + [0.085, -0.786], + [0.187, -0.629], + [0.289, -0.472], + [0.391, -0.315], + [0.493, -0.157], + [0.595, -0.0], + [0.697, 0.157], + [0.799, 0.314], + [0.901, 0.472], + [1.003, 0.629], + [1.105, 0.786], + [1.003, 0.629], + [0.901, 0.472], + [0.799, 0.314], + [0.697, 0.157], + [0.595, -0.0], + [0.493, 0.157], + [0.391, 0.314], + [0.289, 0.472], + [0.187, 0.629], + [0.085, 0.786], + [0.187, 0.629], + [0.289, 0.472], + [0.391, 0.314], + [0.493, 0.157], + [0.595, -0.0], + [0.697, -0.157], + [0.799, -0.315], + [0.901, -0.472], + [1.003, -0.629], + [1.105, -0.786], + [1.19, -0.786], + [1.53, -0.786], + ], + Y: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.595, -0.701], + [0.595, -0.616], + [0.595, -0.531], + [0.595, -0.446], + [0.595, -0.361], + [0.595, -0.276], + [0.595, -0.191], + [0.595, -0.106], + [0.595, -0.021], + [0.595, -0.0], + [0.697, 0.157], + [0.799, 0.314], + [0.901, 0.472], + [1.003, 0.629], + [1.105, 0.786], + [1.003, 0.629], + [0.901, 0.472], + [0.799, 0.314], + [0.697, 0.157], + [0.595, -0.0], + [0.493, 0.157], + [0.391, 0.314], + [0.289, 0.472], + [0.187, 0.629], + [0.085, 0.786], + [0.187, 0.629], + [0.289, 0.472], + [0.391, 0.314], + [0.493, 0.157], + [0.595, -0.0], + [0.595, -0.021], + [0.595, -0.106], + [0.595, -0.191], + [0.595, -0.276], + [0.595, -0.361], + [0.595, -0.446], + [0.595, -0.531], + [0.595, -0.616], + [0.595, -0.701], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.53, -0.786], + ], + Z: [ + [0.085, -0.786], + [0.187, -0.629], + [0.289, -0.472], + [0.391, -0.315], + [0.493, -0.157], + [0.595, -0.0], + [0.697, 0.157], + [0.799, 0.314], + [0.901, 0.472], + [1.003, 0.629], + [1.105, 0.786], + [0.935, 0.786], + [0.765, 0.786], + [0.595, 0.786], + [0.425, 0.786], + [0.255, 0.786], + [0.085, 0.786], + [0.255, 0.786], + [0.425, 0.786], + [0.595, 0.786], + [0.765, 0.786], + [0.935, 0.786], + [1.105, 0.786], + [1.003, 0.629], + [0.901, 0.472], + [0.799, 0.314], + [0.697, 0.157], + [0.595, -0.0], + [0.493, -0.157], + [0.391, -0.315], + [0.289, -0.472], + [0.187, -0.629], + [0.085, -0.769], + [0.255, -0.769], + [0.425, -0.769], + [0.595, -0.769], + [0.765, -0.769], + [0.935, -0.769], + [1.105, -0.769], + [1.105, -0.786], + [1.19, -0.786], + [1.53, -0.786], + ], + a: [ + [0.068, -0.786], + [0.153, -0.786], + [0.238, -0.786], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.646, -0.701], + [0.646, -0.616], + [0.646, -0.531], + [0.646, -0.446], + [0.646, -0.361], + [0.646, -0.276], + [0.646, -0.191], + [0.646, -0.106], + [0.646, -0.021], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.731, -0.786], + [1.071, -0.786], + ], + b: [ + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.459, -0.778], + [0.51, -0.752], + [0.561, -0.701], + [0.595, -0.667], + [0.629, -0.616], + [0.663, -0.531], + [0.697, -0.446], + [0.714, -0.361], + [0.697, -0.276], + [0.663, -0.191], + [0.629, -0.106], + [0.595, -0.055], + [0.561, -0.021], + [0.51, 0.03], + [0.459, 0.055], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.744], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.017, -0.786], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.425, -0.786], + [0.561, -0.786], + [0.646, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + c: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.374, -0.786], + [0.34, -0.778], + [0.289, -0.752], + [0.238, -0.701], + [0.204, -0.667], + [0.17, -0.616], + [0.136, -0.531], + [0.102, -0.446], + [0.085, -0.361], + [0.102, -0.276], + [0.136, -0.191], + [0.17, -0.106], + [0.204, -0.055], + [0.238, -0.021], + [0.289, 0.03], + [0.34, 0.055], + [0.374, 0.064], + [0.442, 0.064], + [0.51, 0.064], + [0.578, 0.064], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.986, -0.786], + ], + d: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.714, -0.786], + [0.714, -0.701], + [0.714, -0.616], + [0.714, -0.531], + [0.714, -0.446], + [0.714, -0.361], + [0.714, -0.276], + [0.714, -0.191], + [0.714, -0.106], + [0.714, -0.021], + [0.714, 0.064], + [0.714, 0.149], + [0.714, 0.234], + [0.714, 0.319], + [0.714, 0.404], + [0.714, 0.489], + [0.714, 0.574], + [0.714, 0.659], + [0.714, 0.744], + [0.714, 0.786], + [0.714, 0.744], + [0.714, 0.659], + [0.714, 0.574], + [0.714, 0.489], + [0.714, 0.404], + [0.714, 0.319], + [0.714, 0.234], + [0.714, 0.149], + [0.714, 0.064], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.714, -0.786], + [0.799, -0.786], + [1.139, -0.786], + ], + e: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.374, -0.786], + [0.34, -0.778], + [0.289, -0.752], + [0.238, -0.701], + [0.204, -0.667], + [0.17, -0.616], + [0.128, -0.531], + [0.102, -0.446], + [0.094, -0.361], + [0.179, -0.361], + [0.255, -0.361], + [0.332, -0.361], + [0.408, -0.361], + [0.476, -0.361], + [0.518, -0.361], + [0.595, -0.361], + [0.671, -0.361], + [0.748, -0.361], + [0.723, -0.276], + [0.706, -0.191], + [0.663, -0.106], + [0.629, -0.055], + [0.595, -0.021], + [0.544, 0.03], + [0.493, 0.055], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.128, -0.191], + [0.102, -0.276], + [0.102, -0.446], + [0.128, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.714, -0.786], + [0.816, -0.786], + [1.156, -0.786], + ], + f: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.701], + [0.425, -0.616], + [0.425, -0.531], + [0.425, -0.446], + [0.425, -0.361], + [0.425, -0.276], + [0.425, -0.191], + [0.425, -0.106], + [0.425, -0.021], + [0.425, 0.064], + [0.51, 0.064], + [0.595, 0.064], + [0.68, 0.064], + [0.807, 0.064], + [0.68, 0.064], + [0.595, 0.064], + [0.51, 0.064], + [0.425, 0.064], + [0.34, 0.064], + [0.255, 0.064], + [0.17, 0.064], + [0.043, 0.064], + [0.17, 0.064], + [0.255, 0.064], + [0.34, 0.064], + [0.425, 0.064], + [0.425, 0.149], + [0.425, 0.234], + [0.425, 0.319], + [0.442, 0.446], + [0.468, 0.531], + [0.51, 0.616], + [0.544, 0.667], + [0.578, 0.701], + [0.629, 0.752], + [0.68, 0.777], + [0.714, 0.786], + [0.782, 0.786], + [0.85, 0.786], + [0.782, 0.786], + [0.714, 0.786], + [0.68, 0.777], + [0.629, 0.752], + [0.578, 0.701], + [0.544, 0.667], + [0.51, 0.616], + [0.468, 0.531], + [0.442, 0.446], + [0.425, 0.319], + [0.425, 0.234], + [0.425, 0.149], + [0.425, 0.064], + [0.425, -0.021], + [0.425, -0.106], + [0.425, -0.191], + [0.425, -0.276], + [0.425, -0.361], + [0.425, -0.446], + [0.425, -0.531], + [0.425, -0.616], + [0.425, -0.701], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + g: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.646, -0.871], + [0.646, -0.956], + [0.646, -1.041], + [0.646, -1.126], + [0.629, -1.254], + [0.603, -1.339], + [0.561, -1.424], + [0.527, -1.475], + [0.493, -1.509], + [0.442, -1.56], + [0.391, -1.585], + [0.357, -1.594], + [0.289, -1.594], + [0.221, -1.594], + [0.153, -1.594], + [0.221, -1.594], + [0.289, -1.594], + [0.357, -1.594], + [0.391, -1.585], + [0.442, -1.56], + [0.493, -1.509], + [0.527, -1.475], + [0.561, -1.424], + [0.603, -1.339], + [0.629, -1.254], + [0.646, -1.126], + [0.646, -1.041], + [0.646, -0.956], + [0.646, -0.871], + [0.646, -0.786], + [0.646, -0.701], + [0.646, -0.616], + [0.646, -0.531], + [0.646, -0.446], + [0.646, -0.361], + [0.646, -0.276], + [0.646, -0.191], + [0.646, -0.106], + [0.646, -0.021], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.714, -0.786], + [1.054, -0.786], + ], + h: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.106], + [0.102, -0.064], + [0.153, -0.03], + [0.238, 0.021], + [0.323, 0.064], + [0.425, 0.064], + [0.51, 0.021], + [0.595, -0.03], + [0.646, -0.064], + [0.663, -0.106], + [0.663, -0.191], + [0.663, -0.276], + [0.663, -0.361], + [0.663, -0.446], + [0.663, -0.531], + [0.663, -0.616], + [0.663, -0.701], + [0.663, -0.786], + [0.748, -0.786], + [1.088, -0.786], + ], + i: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + j: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.493, -0.786], + [0.493, -0.701], + [0.493, -0.616], + [0.493, -0.531], + [0.493, -0.446], + [0.493, -0.361], + [0.493, -0.276], + [0.493, -0.191], + [0.493, -0.106], + [0.493, -0.021], + [0.493, 0.064], + [0.493, -0.021], + [0.493, -0.106], + [0.493, -0.191], + [0.493, -0.276], + [0.493, -0.361], + [0.493, -0.446], + [0.493, -0.531], + [0.493, -0.616], + [0.493, -0.701], + [0.493, -0.786], + [0.493, -0.871], + [0.493, -0.956], + [0.493, -1.041], + [0.493, -1.126], + [0.476, -1.254], + [0.451, -1.339], + [0.408, -1.424], + [0.374, -1.475], + [0.34, -1.509], + [0.289, -1.56], + [0.238, -1.585], + [0.204, -1.594], + [0.136, -1.594], + [0.068, -1.594], + [0.0, -1.594], + [0.068, -1.594], + [0.136, -1.594], + [0.204, -1.594], + [0.238, -1.585], + [0.289, -1.56], + [0.34, -1.509], + [0.374, -1.475], + [0.408, -1.424], + [0.451, -1.339], + [0.476, -1.254], + [0.493, -1.126], + [0.493, -1.041], + [0.493, -0.956], + [0.493, -0.871], + [0.493, -0.786], + [0.442, -0.786], + [0.493, -0.786], + [0.578, -0.786], + [0.918, -0.786], + ], + k: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.184, -0.295], + [0.283, -0.228], + [0.383, -0.162], + [0.482, -0.095], + [0.581, -0.029], + [0.68, 0.038], + [0.581, -0.029], + [0.482, -0.095], + [0.383, -0.162], + [0.283, -0.228], + [0.184, -0.295], + [0.085, -0.361], + [0.184, -0.432], + [0.283, -0.503], + [0.383, -0.574], + [0.482, -0.645], + [0.581, -0.716], + [0.68, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + l: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, 0.149], + [0.085, 0.234], + [0.085, 0.319], + [0.085, 0.404], + [0.085, 0.489], + [0.085, 0.574], + [0.085, 0.659], + [0.085, 0.744], + [0.085, 0.744], + [0.085, 0.786], + [0.085, 0.659], + [0.085, 0.574], + [0.085, 0.489], + [0.085, 0.404], + [0.085, 0.319], + [0.085, 0.234], + [0.085, 0.149], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + m: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.153, 0.004], + [0.255, 0.03], + [0.323, 0.047], + [0.391, 0.047], + [0.459, 0.03], + [0.561, 0.004], + [0.612, -0.021], + [0.629, -0.106], + [0.629, -0.191], + [0.629, -0.276], + [0.629, -0.361], + [0.629, -0.446], + [0.629, -0.531], + [0.629, -0.616], + [0.629, -0.701], + [0.629, -0.808], + [0.629, -0.701], + [0.629, -0.616], + [0.629, -0.531], + [0.629, -0.446], + [0.629, -0.361], + [0.629, -0.276], + [0.629, -0.191], + [0.629, -0.106], + [0.646, -0.021], + [0.697, 0.004], + [0.799, 0.03], + [0.867, 0.047], + [0.935, 0.047], + [1.003, 0.03], + [1.105, 0.004], + [1.156, -0.021], + [1.173, -0.106], + [1.173, -0.191], + [1.173, -0.276], + [1.173, -0.361], + [1.173, -0.446], + [1.173, -0.531], + [1.173, -0.616], + [1.173, -0.701], + [1.173, -0.786], + [1.258, -0.786], + [1.598, -0.786], + ], + n: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.153, 0.004], + [0.255, 0.03], + [0.323, 0.047], + [0.391, 0.047], + [0.459, 0.03], + [0.561, 0.004], + [0.612, -0.021], + [0.629, -0.106], + [0.629, -0.191], + [0.629, -0.276], + [0.629, -0.361], + [0.629, -0.446], + [0.629, -0.531], + [0.629, -0.616], + [0.629, -0.701], + [0.629, -0.786], + [0.714, -0.786], + [1.054, -0.786], + ], + o: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.646, -0.786], + [0.68, -0.778], + [0.731, -0.752], + [0.782, -0.701], + [0.816, -0.667], + [0.85, -0.616], + [0.884, -0.531], + [0.918, -0.446], + [0.935, -0.361], + [0.918, -0.276], + [0.884, -0.191], + [0.85, -0.106], + [0.816, -0.055], + [0.782, -0.021], + [0.731, 0.03], + [0.68, 0.055], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.36, -0.786], + ], + p: [ + [0.085, -0.786], + [0.085, -0.871], + [0.085, -0.956], + [0.085, -1.041], + [0.085, -1.126], + [0.085, -1.211], + [0.085, -1.296], + [0.085, -1.381], + [0.085, -1.466], + [0.085, -1.551], + [0.085, -1.211], + [0.085, -1.551], + [0.085, -1.466], + [0.085, -1.381], + [0.085, -1.296], + [0.085, -1.211], + [0.085, -1.126], + [0.085, -1.041], + [0.085, -0.956], + [0.085, -0.871], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.391, -0.778], + [0.442, -0.752], + [0.493, -0.701], + [0.527, -0.667], + [0.561, -0.616], + [0.595, -0.531], + [0.629, -0.446], + [0.646, -0.361], + [0.629, -0.276], + [0.595, -0.191], + [0.561, -0.106], + [0.527, -0.055], + [0.493, -0.021], + [0.442, 0.03], + [0.391, 0.055], + [0.357, 0.064], + [0.289, 0.064], + [0.221, 0.064], + [0.153, 0.064], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.153, -0.786], + [0.221, -0.786], + [0.289, -0.786], + [0.357, -0.786], + [0.493, -0.786], + [0.578, -0.786], + [0.663, -0.786], + [0.731, -0.786], + [1.071, -0.786], + ], + q: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.646, -0.786], + [0.646, -0.871], + [0.646, -0.956], + [0.646, -1.041], + [0.646, -1.126], + [0.663, -1.254], + [0.689, -1.339], + [0.731, -1.424], + [0.765, -1.475], + [0.799, -1.509], + [0.85, -1.56], + [0.901, -1.585], + [0.935, -1.594], + [1.003, -1.594], + [1.071, -1.594], + [1.139, -1.594], + [1.071, -1.594], + [1.003, -1.594], + [0.935, -1.594], + [0.901, -1.585], + [0.85, -1.56], + [0.799, -1.509], + [0.765, -1.475], + [0.731, -1.424], + [0.689, -1.339], + [0.663, -1.254], + [0.646, -1.126], + [0.646, -1.041], + [0.646, -0.956], + [0.646, -0.871], + [0.646, -0.786], + [0.646, -0.701], + [0.646, -0.616], + [0.646, -0.531], + [0.646, -0.446], + [0.646, -0.361], + [0.646, -0.276], + [0.646, -0.191], + [0.646, -0.106], + [0.646, -0.021], + [0.646, 0.064], + [0.578, 0.064], + [0.51, 0.064], + [0.442, 0.064], + [0.374, 0.064], + [0.34, 0.055], + [0.289, 0.03], + [0.238, -0.021], + [0.204, -0.055], + [0.17, -0.106], + [0.136, -0.191], + [0.102, -0.276], + [0.085, -0.361], + [0.102, -0.446], + [0.136, -0.531], + [0.17, -0.616], + [0.204, -0.667], + [0.238, -0.701], + [0.289, -0.752], + [0.34, -0.778], + [0.374, -0.786], + [0.442, -0.786], + [0.51, -0.786], + [0.578, -0.786], + [0.714, -0.786], + [0.816, -0.786], + [0.918, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.224, -0.786], + [1.564, -0.786], + ], + r: [ + [0.085, -0.786], + [0.085, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, -0.021], + [0.085, 0.149], + [0.085, 0.191], + [0.085, 0.149], + [0.085, -0.021], + [0.153, 0.004], + [0.255, 0.03], + [0.323, 0.055], + [0.391, 0.064], + [0.459, 0.055], + [0.527, 0.03], + [0.595, -0.021], + [0.527, 0.03], + [0.459, 0.055], + [0.391, 0.064], + [0.323, 0.055], + [0.255, 0.03], + [0.153, 0.004], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.085, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + s: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.561, -0.786], + [0.595, -0.778], + [0.646, -0.752], + [0.697, -0.701], + [0.731, -0.667], + [0.765, -0.616], + [0.756, -0.565], + [0.731, -0.531], + [0.663, -0.489], + [0.595, -0.446], + [0.51, -0.404], + [0.425, -0.361], + [0.34, -0.319], + [0.255, -0.276], + [0.187, -0.234], + [0.119, -0.191], + [0.102, -0.115], + [0.119, -0.055], + [0.153, -0.021], + [0.204, 0.03], + [0.255, 0.055], + [0.289, 0.064], + [0.357, 0.064], + [0.425, 0.064], + [0.493, 0.064], + [0.561, 0.064], + [0.595, 0.055], + [0.646, 0.03], + [0.697, -0.021], + [0.731, -0.055], + [0.697, -0.021], + [0.646, 0.03], + [0.595, 0.055], + [0.561, 0.064], + [0.493, 0.064], + [0.425, 0.064], + [0.357, 0.064], + [0.289, 0.064], + [0.255, 0.055], + [0.204, 0.03], + [0.153, -0.021], + [0.119, -0.055], + [0.102, -0.115], + [0.119, -0.191], + [0.187, -0.234], + [0.255, -0.276], + [0.34, -0.319], + [0.425, -0.361], + [0.51, -0.404], + [0.595, -0.446], + [0.663, -0.489], + [0.731, -0.531], + [0.756, -0.565], + [0.765, -0.616], + [0.731, -0.667], + [0.697, -0.701], + [0.646, -0.752], + [0.595, -0.778], + [0.561, -0.786], + [0.51, -0.786], + [0.425, -0.786], + [0.34, -0.786], + [0.289, -0.786], + [0.255, -0.778], + [0.204, -0.752], + [0.153, -0.701], + [0.119, -0.667], + [0.06, -0.616], + [0.119, -0.667], + [0.153, -0.701], + [0.204, -0.752], + [0.255, -0.778], + [0.289, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [1.19, -0.786], + ], + t: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.374, -0.786], + [0.374, -0.701], + [0.374, -0.616], + [0.374, -0.531], + [0.374, -0.446], + [0.374, -0.361], + [0.374, -0.276], + [0.374, -0.191], + [0.374, -0.106], + [0.374, -0.021], + [0.374, 0.064], + [0.374, 0.149], + [0.374, 0.234], + [0.374, 0.319], + [0.374, 0.361], + [0.374, 0.446], + [0.306, 0.446], + [0.238, 0.446], + [0.17, 0.446], + [0.043, 0.446], + [0.17, 0.446], + [0.238, 0.446], + [0.306, 0.446], + [0.374, 0.446], + [0.442, 0.446], + [0.51, 0.446], + [0.578, 0.446], + [0.706, 0.446], + [0.578, 0.446], + [0.51, 0.446], + [0.442, 0.446], + [0.374, 0.446], + [0.374, 0.531], + [0.374, 0.616], + [0.374, 0.701], + [0.374, 0.786], + [0.374, 0.701], + [0.374, 0.616], + [0.374, 0.531], + [0.374, 0.446], + [0.374, 0.361], + [0.374, 0.319], + [0.374, 0.234], + [0.374, 0.149], + [0.374, 0.064], + [0.374, -0.021], + [0.374, -0.106], + [0.374, -0.191], + [0.374, -0.276], + [0.374, -0.361], + [0.374, -0.446], + [0.374, -0.531], + [0.374, -0.616], + [0.374, -0.701], + [0.374, -0.786], + [0.459, -0.786], + [0.544, -0.786], + [0.663, -0.786], + [0.765, -0.786], + [1.105, -0.786], + ], + u: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.323, -0.769], + [0.255, -0.752], + [0.153, -0.727], + [0.102, -0.701], + [0.085, -0.616], + [0.085, -0.531], + [0.085, -0.446], + [0.085, -0.361], + [0.085, -0.276], + [0.085, -0.191], + [0.085, -0.106], + [0.085, -0.021], + [0.085, 0.064], + [0.085, -0.021], + [0.085, -0.106], + [0.085, -0.191], + [0.085, -0.276], + [0.085, -0.361], + [0.085, -0.446], + [0.085, -0.531], + [0.085, -0.616], + [0.102, -0.701], + [0.153, -0.727], + [0.255, -0.752], + [0.323, -0.769], + [0.391, -0.786], + [0.459, -0.769], + [0.527, -0.752], + [0.629, -0.727], + [0.68, -0.701], + [0.697, -0.701], + [0.697, -0.616], + [0.697, -0.531], + [0.697, -0.446], + [0.697, -0.361], + [0.697, -0.276], + [0.697, -0.191], + [0.697, -0.106], + [0.697, -0.021], + [0.697, 0.064], + [0.697, -0.021], + [0.697, -0.106], + [0.697, -0.191], + [0.697, -0.276], + [0.697, -0.361], + [0.697, -0.446], + [0.697, -0.531], + [0.697, -0.616], + [0.697, -0.701], + [0.697, -0.786], + [0.782, -0.786], + [1.122, -0.786], + ], + v: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.468, -0.786], + [0.429, -0.701], + [0.391, -0.616], + [0.353, -0.531], + [0.315, -0.446], + [0.276, -0.361], + [0.238, -0.276], + [0.2, -0.191], + [0.162, -0.106], + [0.123, -0.021], + [0.085, 0.064], + [0.123, -0.021], + [0.162, -0.106], + [0.2, -0.191], + [0.238, -0.276], + [0.276, -0.361], + [0.315, -0.446], + [0.353, -0.531], + [0.391, -0.616], + [0.429, -0.701], + [0.468, -0.786], + [0.506, -0.701], + [0.544, -0.616], + [0.582, -0.531], + [0.62, -0.446], + [0.659, -0.361], + [0.697, -0.276], + [0.735, -0.191], + [0.773, -0.106], + [0.812, -0.021], + [0.85, 0.064], + [0.812, -0.021], + [0.773, -0.106], + [0.735, -0.191], + [0.697, -0.276], + [0.659, -0.361], + [0.62, -0.446], + [0.582, -0.531], + [0.544, -0.616], + [0.506, -0.701], + [0.468, -0.786], + [0.552, -0.786], + [0.663, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + w: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.315, -0.701], + [0.289, -0.616], + [0.264, -0.531], + [0.238, -0.446], + [0.213, -0.361], + [0.187, -0.276], + [0.162, -0.191], + [0.136, -0.106], + [0.111, -0.021], + [0.085, 0.064], + [0.111, -0.021], + [0.136, -0.106], + [0.162, -0.191], + [0.187, -0.276], + [0.213, -0.361], + [0.238, -0.446], + [0.264, -0.531], + [0.289, -0.616], + [0.315, -0.701], + [0.34, -0.786], + [0.365, -0.701], + [0.391, -0.616], + [0.417, -0.531], + [0.442, -0.446], + [0.468, -0.361], + [0.493, -0.276], + [0.518, -0.191], + [0.544, -0.106], + [0.57, -0.021], + [0.595, 0.064], + [0.62, -0.021], + [0.646, -0.106], + [0.671, -0.191], + [0.697, -0.276], + [0.723, -0.361], + [0.748, -0.446], + [0.773, -0.531], + [0.799, -0.616], + [0.825, -0.701], + [0.85, -0.786], + [0.875, -0.701], + [0.901, -0.616], + [0.926, -0.531], + [0.952, -0.446], + [0.978, -0.361], + [1.003, -0.276], + [1.028, -0.191], + [1.054, -0.106], + [1.079, -0.021], + [1.105, 0.064], + [1.079, -0.021], + [1.054, -0.106], + [1.028, -0.191], + [1.003, -0.276], + [0.978, -0.361], + [0.952, -0.446], + [0.926, -0.531], + [0.901, -0.616], + [0.875, -0.701], + [0.85, -0.786], + [0.935, -0.786], + [1.02, -0.786], + [1.105, -0.786], + [1.19, -0.786], + [1.53, -0.786], + ], + x: [ + [0.076, -0.701], + [0.153, -0.616], + [0.23, -0.531], + [0.306, -0.446], + [0.383, -0.361], + [0.459, -0.276], + [0.535, -0.191], + [0.612, -0.106], + [0.689, -0.021], + [0.765, 0.064], + [0.689, -0.021], + [0.612, -0.106], + [0.535, -0.191], + [0.459, -0.276], + [0.383, -0.361], + [0.306, -0.276], + [0.23, -0.191], + [0.153, -0.106], + [0.076, -0.021], + [0.0, 0.064], + [0.076, -0.021], + [0.153, -0.106], + [0.23, -0.191], + [0.306, -0.276], + [0.383, -0.361], + [0.459, -0.446], + [0.535, -0.531], + [0.612, -0.616], + [0.689, -0.701], + [0.765, -0.786], + [1.105, -0.786], + ], + y: [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.468, -0.786], + [0.429, -0.701], + [0.391, -0.616], + [0.353, -0.531], + [0.315, -0.446], + [0.276, -0.361], + [0.238, -0.276], + [0.2, -0.191], + [0.162, -0.106], + [0.123, -0.021], + [0.085, 0.064], + [0.123, -0.021], + [0.162, -0.106], + [0.2, -0.191], + [0.238, -0.276], + [0.276, -0.361], + [0.315, -0.446], + [0.353, -0.531], + [0.391, -0.616], + [0.429, -0.701], + [0.468, -0.786], + [0.506, -0.701], + [0.544, -0.616], + [0.582, -0.531], + [0.62, -0.446], + [0.659, -0.361], + [0.697, -0.276], + [0.735, -0.191], + [0.773, -0.106], + [0.812, -0.021], + [0.85, 0.064], + [0.812, -0.021], + [0.773, -0.106], + [0.735, -0.191], + [0.697, -0.276], + [0.659, -0.361], + [0.62, -0.446], + [0.582, -0.531], + [0.544, -0.616], + [0.506, -0.701], + [0.468, -0.786], + [0.429, -0.871], + [0.391, -0.956], + [0.353, -1.041], + [0.315, -1.126], + [0.276, -1.211], + [0.238, -1.296], + [0.2, -1.381], + [0.238, -1.296], + [0.276, -1.211], + [0.315, -1.126], + [0.353, -1.041], + [0.391, -0.956], + [0.429, -0.871], + [0.468, -0.786], + [0.552, -0.786], + [0.637, -0.786], + [0.723, -0.786], + [0.807, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + z: [ + [0.085, -0.786], + [0.162, -0.701], + [0.238, -0.616], + [0.315, -0.531], + [0.391, -0.446], + [0.468, -0.361], + [0.544, -0.276], + [0.62, -0.191], + [0.697, -0.106], + [0.773, -0.021], + [0.85, 0.064], + [0.765, 0.064], + [0.68, 0.064], + [0.595, 0.064], + [0.51, 0.064], + [0.425, 0.064], + [0.34, 0.064], + [0.255, 0.064], + [0.17, 0.064], + [0.085, 0.064], + [0.17, 0.064], + [0.255, 0.064], + [0.34, 0.064], + [0.425, 0.064], + [0.51, 0.064], + [0.595, 0.064], + [0.68, 0.064], + [0.765, 0.064], + [0.85, 0.064], + [0.773, -0.021], + [0.697, -0.106], + [0.62, -0.191], + [0.544, -0.276], + [0.468, -0.361], + [0.391, -0.446], + [0.315, -0.531], + [0.238, -0.616], + [0.162, -0.701], + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [0.765, -0.786], + [0.85, -0.786], + [0.935, -0.786], + [1.275, -0.786], + ], + "a*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "b*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "c*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "d*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "e*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "f*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "g*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "h*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "i*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "j*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "k*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "l*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "m*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "n*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "o*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "p*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "q*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "r*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "s*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "t*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "u*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "v*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "w*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "x*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "y*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + "z*": [ + [0.085, -0.786], + [0.17, -0.786], + [0.51, -0.786], + ], + ",": [ + [0.085, -0.786], + [0.17, -0.786], + [0.187, -0.701], + [0.221, -0.616], + [0.289, -0.701], + [0.306, -0.786], + [0.323, -0.871], + [0.323, -0.956], + [0.289, -1.041], + [0.255, -1.126], + [0.187, -1.211], + [0.085, -1.296], + [0.187, -1.211], + [0.255, -1.126], + [0.289, -1.041], + [0.323, -0.956], + [0.323, -0.871], + [0.306, -0.786], + [0.289, -0.701], + [0.221, -0.616], + [0.289, -0.701], + [0.306, -0.786], + [0.425, -0.786], + [0.765, -0.786], + ], + "?": [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.425, -0.701], + [0.425, -0.616], + [0.425, -0.531], + [0.425, -0.446], + [0.425, -0.361], + [0.425, -0.276], + [0.425, -0.191], + [0.425, -0.106], + [0.425, -0.081], + [0.452, -0.038], + [0.476, 0.004], + [0.51, 0.072], + [0.544, 0.149], + [0.578, 0.208], + [0.612, 0.276], + [0.629, 0.319], + [0.646, 0.361], + [0.654, 0.404], + [0.66, 0.472], + [0.663, 0.531], + [0.654, 0.574], + [0.637, 0.616], + [0.62, 0.659], + [0.587, 0.701], + [0.561, 0.735], + [0.527, 0.752], + [0.485, 0.773], + [0.451, 0.782], + [0.417, 0.786], + [0.383, 0.786], + [0.34, 0.783], + [0.315, 0.782], + [0.272, 0.769], + [0.238, 0.752], + [0.204, 0.731], + [0.179, 0.701], + [0.15, 0.659], + [0.128, 0.616], + [0.102, 0.574], + [0.085, 0.531], + [0.102, 0.574], + [0.128, 0.616], + [0.15, 0.659], + [0.179, 0.701], + [0.204, 0.731], + [0.238, 0.752], + [0.272, 0.769], + [0.315, 0.782], + [0.34, 0.783], + [0.383, 0.786], + [0.417, 0.786], + [0.451, 0.782], + [0.485, 0.773], + [0.527, 0.752], + [0.561, 0.735], + [0.587, 0.701], + [0.62, 0.659], + [0.637, 0.616], + [0.654, 0.574], + [0.663, 0.531], + [0.66, 0.472], + [0.654, 0.404], + [0.646, 0.361], + [0.629, 0.319], + [0.612, 0.276], + [0.578, 0.208], + [0.544, 0.149], + [0.51, 0.072], + [0.476, 0.004], + [0.452, -0.038], + [0.425, -0.081], + [0.425, -0.106], + [0.425, -0.149], + [0.425, -0.191], + [0.425, -0.234], + [0.425, -0.276], + [0.425, -0.319], + [0.425, -0.361], + [0.425, -0.404], + [0.425, -0.446], + [0.425, -0.489], + [0.425, -0.531], + [0.425, -0.574], + [0.425, -0.616], + [0.425, -0.659], + [0.425, -0.701], + [0.425, -0.744], + [0.425, -0.786], + [0.34, -0.786], + [0.425, -0.786], + [0.612, -0.786], + [0.561, -0.659], + [0.425, -0.574], + [0.289, -0.659], + [0.238, -0.786], + [0.289, -0.914], + [0.425, -0.999], + [0.561, -0.914], + [0.612, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.595, -0.786], + [0.68, -0.786], + [1.02, -0.786], + ], + "&": [ + [0.085, -0.786], + [0.174, -0.778], + [0.255, -0.774], + [0.332, -0.774], + [0.46, -0.761], + [0.561, -0.748], + [0.646, -0.684], + [0.731, -0.574], + [0.799, -0.506], + [0.85, -0.44], + [0.935, -0.319], + [1.037, -0.191], + [0.935, -0.319], + [0.85, -0.44], + [0.799, -0.506], + [0.731, -0.574], + [0.646, -0.684], + [0.561, -0.748], + [0.46, -0.761], + [0.332, -0.774], + [0.255, -0.774], + [0.174, -0.778], + [0.128, -0.718], + [0.102, -0.676], + [0.085, -0.599], + [0.076, -0.497], + [0.085, -0.327], + [0.136, -0.191], + [0.238, -0.064], + [0.323, 0.004], + [0.374, 0.047], + [0.493, 0.089], + [0.587, 0.154], + [0.629, 0.234], + [0.672, 0.335], + [0.706, 0.429], + [0.715, 0.52], + [0.718, 0.614], + [0.701, 0.69], + [0.667, 0.749], + [0.62, 0.777], + [0.535, 0.786], + [0.468, 0.786], + [0.4, 0.777], + [0.329, 0.76], + [0.294, 0.734], + [0.27, 0.681], + [0.259, 0.605], + [0.252, 0.548], + [0.254, 0.463], + [0.262, 0.404], + [0.289, 0.306], + [0.332, 0.174], + [0.408, 0.064], + [0.476, -0.106], + [0.544, -0.276], + [0.595, -0.446], + [0.646, -0.616], + [0.697, -0.786], + [0.765, -0.829], + [0.85, -0.829], + [0.926, -0.803], + [1.021, -0.786], + [1.12, -0.786], + [1.46, -0.786], + ], + $: [ + [0.102, -0.786], + [0.221, -0.786], + [0.306, -0.786], + [0.391, -0.786], + [0.476, -0.786], + [0.476, -0.786], + [0.476, -1.126], + [0.476, -0.786], + [0.476, -0.531], + [0.476, -0.276], + [0.476, -0.021], + [0.476, 0.234], + [0.476, 0.489], + [0.476, 0.829], + [0.51, 0.829], + [0.51, 0.489], + [0.51, 0.234], + [0.51, -0.021], + [0.51, -0.276], + [0.51, -0.531], + [0.51, -0.786], + [0.51, -1.126], + [0.51, -0.786], + [0.476, -0.786], + [0.476, -0.871], + [0.595, -0.91], + [0.671, -0.88], + [0.731, -0.829], + [0.782, -0.744], + [0.807, -0.659], + [0.799, -0.531], + [0.756, -0.404], + [0.663, -0.276], + [0.476, -0.149], + [0.289, -0.021], + [0.196, 0.106], + [0.153, 0.234], + [0.145, 0.361], + [0.17, 0.446], + [0.221, 0.531], + [0.281, 0.582], + [0.357, 0.612], + [0.476, 0.616], + [0.595, 0.612], + [0.671, 0.582], + [0.731, 0.531], + [0.782, 0.446], + [0.825, 0.361], + [0.782, 0.446], + [0.731, 0.531], + [0.671, 0.582], + [0.595, 0.612], + [0.476, 0.616], + [0.357, 0.612], + [0.281, 0.582], + [0.221, 0.531], + [0.17, 0.446], + [0.145, 0.361], + [0.153, 0.234], + [0.196, 0.106], + [0.289, -0.021], + [0.476, -0.149], + [0.663, -0.276], + [0.756, -0.404], + [0.799, -0.531], + [0.807, -0.659], + [0.782, -0.744], + [0.731, -0.829], + [0.671, -0.88], + [0.595, -0.91], + [0.476, -0.914], + [0.357, -0.91], + [0.281, -0.88], + [0.221, -0.829], + [0.17, -0.744], + [0.128, -0.659], + [0.085, -0.565], + [0.128, -0.659], + [0.17, -0.744], + [0.221, -0.829], + [0.281, -0.88], + [0.357, -0.91], + [0.476, -0.914], + [0.476, -0.786], + [0.561, -0.786], + [0.646, -0.786], + [0.731, -0.786], + [0.816, -0.786], + [0.901, -0.786], + [1.241, -0.786], + ], + "!": [ + [0.085, -0.786], + [0.17, -0.786], + [0.255, -0.786], + [0.255, -0.531], + [0.255, -0.276], + [0.255, -0.021], + [0.255, 0.234], + [0.255, 0.489], + [0.255, 0.786], + [0.255, 0.489], + [0.255, 0.234], + [0.255, -0.021], + [0.255, -0.276], + [0.255, -0.531], + [0.255, -0.786], + [0.442, -0.786], + [0.391, -0.659], + [0.255, -0.574], + [0.119, -0.659], + [0.068, -0.786], + [0.119, -0.914], + [0.255, -0.999], + [0.391, -0.914], + [0.442, -0.786], + [0.255, -0.786], + [0.425, -0.786], + [0.51, -0.786], + [0.85, -0.786], + ], +} diff --git a/src/models/input_text/raysol_sanserif.txt b/src/features/shapes/input_text/raysol_sanserif.txt similarity index 100% rename from src/models/input_text/raysol_sanserif.txt rename to src/features/shapes/input_text/raysol_sanserif.txt diff --git a/src/features/shapes/lsystem/LSystem.js b/src/features/shapes/lsystem/LSystem.js new file mode 100644 index 00000000..aa0e6f4b --- /dev/null +++ b/src/features/shapes/lsystem/LSystem.js @@ -0,0 +1,71 @@ +import Shape from "../Shape" +import { + lsystem, + lsystemPath, + onSubtypeChange, + onMinIterations, + onMaxIterations, +} from "@/common/lindenmayer" +import { subtypes } from "./subtypes" +import { resizeVertices } from "@/common/geometry" + +const options = { + subtype: { + title: "Type", + type: "dropdown", + choices: Object.keys(subtypes), + onChange: (model, changes, state) => { + return onSubtypeChange(subtypes[changes.subtype], changes, state) + }, + }, + iterations: { + title: "Iterations", + min: (state) => { + return onMinIterations(subtypes[state.subtype], state) + }, + max: (state) => { + return onMaxIterations(subtypes[state.subtype], state) + }, + }, +} + +export default class LSystem extends Shape { + constructor() { + super("lsystem") + this.label = "Fractal line writer" + this.link = "https://en.wikipedia.org/wiki/L-system" + this.linkText = "L-systems at Wikipedia" + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + iterations: 3, + subtype: "McWorter's Pentadendrite", + }, + } + } + + getVertices(state) { + const shape = state.shape + const iterations = shape.iterations || 1 + + // generate our vertices using a set of l-system rules + let config = subtypes[shape.subtype] + config.iterations = iterations + config.side = 5 + + if (config.angle === undefined) { + config.angle = Math.PI / 2 + } + + let curve = lsystemPath(lsystem(config), config) + const scale = 18.0 // to normalize starting size + return resizeVertices(curve, scale, scale) + } + + getOptions() { + return options + } +} diff --git a/src/features/shapes/lsystem/subtypes.js b/src/features/shapes/lsystem/subtypes.js new file mode 100644 index 00000000..1fa69137 --- /dev/null +++ b/src/features/shapes/lsystem/subtypes.js @@ -0,0 +1,222 @@ +// L-system instructions for space filling curves +export const subtypes = { + // http://mathforum.org/advanced/robertd/lsys2d.html + "32-segment": { + axiom: "F+F+F+F", + draw: ["F"], + rules: { + F: "-F+F-F-F+F+FF-F+F+FF+F-F-FF+FF-FF+F+F-FF-F-F+FF-F-F+F+F-F+", + }, + startingAngle: Math.PI, + maxIterations: 2, + }, + // http://www.kevs3d.co.uk/dev/lsystems/ + "Cog Triangle": { + axiom: "W----W----W", + draw: ["F"], + rules: { + W: "+++X--F--ZFX+", + X: "---W++F++YFW-", + Y: "+ZFX--F--Z+++", + Z: "-YFW++F++Y---", + }, + angle: Math.PI / 6, + minIterations: 1, + maxIterations: 8, + }, + // https://onlinemathtools.com/l-system-generator + "Fractal Tree": { + axiom: "F", + draw: ["F"], + rules: { + F: "F[+FF][-FF]F[-F][+F]F", + }, + angle: Math.PI / 5, + maxIterations: 5, + }, + // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ + "Fractal Tree 2": { + axiom: "F", + draw: ["F"], + rules: { + F: "F[-F][+F]", + }, + angle: (10 * Math.PI) / 72, + maxIterations: 9, + }, + // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ + "Fractal Tree 3": { + axiom: "X", + draw: ["F"], + rules: { + F: "FF", + X: "F+[-F-XF-X][+FF][--XF[+X]][++F-X]", + }, + angle: Math.PI / 8, + maxIterations: 6, + }, + // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ + "Fractal Tree 4": { + axiom: "X", + draw: ["F"], + rules: { + F: "FX[FX[+XF]]", + X: "FF[+XZ++X-F[+ZX]][-X++F-X]", + Z: "[+F-X-F][++ZX]", + }, + angle: Math.PI / 8, + maxIterations: 5, + }, + // http://algorithmicbotany.org/papers/abop/abop-ch1.pdf + "Fractal Tree 5": { + axiom: "X", + draw: ["F"], + rules: { + X: "F[+X]F[-X]+X", + F: "FF", + }, + angle: Math.PI / 9, + maxIterations: 8, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "Gosper (flowsnake)": { + axiom: "A", + draw: ["A", "B"], + rules: { + A: "A-B--B+A++AA+B-", + B: "+A-BB--B-A++A+B", + }, + angle: Math.PI / 3, + maxIterations: 5, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + Ice: { + axiom: "F+F+F+F", + draw: ["F"], + rules: { + F: "FF+F++F+F", + }, + startingAngle: Math.PI, + maxIterations: 6, + }, + // https://fronkonstin.com/2017/06/26/a-shiny-app-to-draw-curves-based-on-l-systems/ + "Koch Cube 1": { + axiom: "F-F-F-F", + draw: ["F"], + rules: { + F: "FF-F-F-F-FF", + }, + maxIterations: 5, + }, + // http://algorithmicbotany.org/papers/abop/abop-ch1.pdf + "Koch Cube 2": { + axiom: "F-F-F-F", + draw: ["F"], + rules: { + F: "FF-F+F-F-FF", + }, + maxIterations: 5, + }, + // https://onlinemathtools.com/l-system-generator + "Koch Curve": { + axiom: "F", + draw: ["F"], + rules: { + F: "F+F--F+F", + }, + angle: (4 * Math.PI) / 9, + startingAngle: Math.PI, + maxIterations: 7, + }, + // https://fronkonstin.com/2017/06/26/a-shiny-app-to-draw-curves-based-on-l-systems/ + "Koch Flower": { + axiom: "F-F-F-F", + draw: ["F"], + rules: { + F: "FF-F-F-F-F-F+F", + }, + maxIterations: 4, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "Koch Island": { + axiom: "F+F+F+F", + draw: ["F"], + rules: { + F: "F+F-F-FF+F+F-F", + }, + startingAngle: Math.PI, + maxIterations: 4, + }, + "Koch Snowflake": { + axiom: "F--F--F--", + draw: ["F"], + rules: { + F: "F+F--F+F", + }, + angle: Math.PI / 3, + startingAngle: -Math.PI / 3, + maxIterations: 5, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "McWorter's Pentadendrite": { + axiom: "F-F-F-F-F", + draw: ["F"], + rules: { + F: "F-F-F++F+F-F", + }, + angle: (2 * Math.PI) / 5, + maxIterations: 5, + }, + // https://onlinemathtools.com/l-system-generator + "Penrose Tile": { + axiom: "[7]++[7]++[7]++[7]++[7]", + draw: ["6", "7", "8", "9"], + rules: { + 6: "8++9----7[-8----6]++", + 7: "+8--9[---6--7]+", + 8: "-6++7[+++8++9]-", + 9: "--8++++6[+9++++7]--7", + }, + angle: Math.PI / 5, + maxIterations: 6, + }, + Plusses: { + axiom: "XYXYXYX+XYXYXYX+XYXYXYX+XYXYXYX", + draw: ["F"], + rules: { + X: "FX+FX+FXFY-FY-", + Y: "+FX+FXFY-FY-FY", + }, + maxIterations: 4, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "Red Dragon": { + axiom: "FA", + draw: ["F"], + rules: { + A: "A+BF+", + B: "-FA-B", + }, + minIterations: 9, + maxIterations: 15, + startingAngle: Math.PI, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "Sierpinski Triangle (arrowhead)": { + axiom: "X", + draw: ["X", "Y"], + rules: { + X: "Y+X+Y", + Y: "X-Y-X", + }, + angle: Math.PI / 3, + startingAngle: (i) => { + if (i % 2 === 0) { + return 0 + } else { + return -Math.PI / 3 + } + }, + maxIterations: 8, + }, +} diff --git a/src/features/shapes/shapeFactory.js b/src/features/shapes/shapeFactory.js new file mode 100644 index 00000000..0cd50cb6 --- /dev/null +++ b/src/features/shapes/shapeFactory.js @@ -0,0 +1,88 @@ +import Circle from "./Circle" +import Epicycloid from "./Epicycloid" +import FancyText from "./FancyText" +import FileImport from "./FileImport" +import FractalSpirograph from "./fractal_spirograph/FractalSpirograph" +import Heart from "./Heart" +import Hypocycloid from "./Hypocycloid" +import InputText from "./input_text/InputText" +import LSystem from "./lsystem/LSystem" +import Point from "./Point" +import Polygon from "./Polygon" +import Reuleaux from "./Reuleaux" +import Rose from "./Rose" +import Star from "./Star" +import TessellationTwist from "./tessellation_twist/TessellationTwist" +import V1Engineering from "./v1_engineering/V1Engineering" +import CirclePacker from "./circle_packer/CirclePacker" +import NoiseWave from "./NoiseWave" +import SpaceFiller from "./space_filler/SpaceFiller" +import Wiper from "./Wiper" + +export const shapeFactory = { + polygon: Polygon, + star: Star, + circle: Circle, + heart: Heart, + reuleaux: Reuleaux, + epicycloid: Epicycloid, + hypocycloid: Hypocycloid, + rose: Rose, + inputText: InputText, + fancyText: FancyText, + v1Engineering: V1Engineering, + lsystem: LSystem, + fractalSpirograph: FractalSpirograph, + tessellationTwist: TessellationTwist, + point: Point, + circlePacker: CirclePacker, + wiper: Wiper, + spaceFiller: SpaceFiller, + noise_wave: NoiseWave, + fileImport: FileImport, +} + +export const getShape = (type, ...args) => { + return new shapeFactory[type](args) +} + +export const getDefaultShapeType = () => { + const shape = localStorage.getItem("defaultShape") + + // minor hack: fancy text relies on fonts being loaded, so it can't be used for initial + // state when the app loads + return shape && shape !== "fancyText" ? shape : "polygon" +} + +export const getDefaultShape = () => { + return getShape(getDefaultShapeType()) +} + +export const getShapeSelectOptions = () => { + const groupOptions = [] + const types = Object.keys(shapeFactory) + + for (const type of types) { + const shape = getShape(type) + const optionLabel = { value: type, label: shape.label } + + let found = false + for (const group of groupOptions) { + if (group.label === shape.selectGroup) { + found = true + group.options.push(optionLabel) + } + } + if (!found) { + if (shape.selectGroup === "import") { + // users can't manually select this group + continue + } + + const newOptions = [optionLabel] + groupOptions.push({ label: shape.selectGroup, options: newOptions }) + } + } + + return groupOptions +} diff --git a/src/features/shapes/space_filler/SpaceFiller.js b/src/features/shapes/space_filler/SpaceFiller.js new file mode 100644 index 00000000..de5044e4 --- /dev/null +++ b/src/features/shapes/space_filler/SpaceFiller.js @@ -0,0 +1,103 @@ +import Shape from "../Shape" +import { + lsystem, + lsystemPath, + onSubtypeChange, + onMinIterations, + onMaxIterations, +} from "@/common/lindenmayer" +import { resizeVertices, centerOnOrigin } from "@/common/geometry" +import { subtypes } from "./subtypes" +import { getMachine } from "@/features/machines/machineFactory" + +const options = { + fillerSubtype: { + title: "Type", + type: "dropdown", + choices: Object.keys(subtypes), + onChange: (model, changes, state) => { + return onSubtypeChange(subtypes[changes.fillerSubtype], changes, state) + }, + }, + iterations: { + title: "Iterations", + min: (state) => { + return onMinIterations(subtypes[state.fillerSubtype], state) + }, + max: (state) => { + return onMaxIterations(subtypes[state.fillerSubtype], state) + }, + }, +} + +export default class SpaceFiller extends Shape { + constructor() { + super("spaceFiller") + this.label = "Space filler" + this.usesMachine = true + this.autosize = false + this.selectGroup = "Erasers" + this.linkText = "Fractal charm: space filling curves" + this.link = "https://www.youtube.com/watch?v=RU0wScIj36o" + } + + canMove(state) { + return false + } + + canChangeSize(state) { + return false + } + + canRotate(state) { + return false + } + + getInitialState() { + return { + ...super.getInitialState(), + ...{ + iterations: 6, + fillerSubtype: "Hilbert", + }, + } + } + + getVertices(state) { + const machine = getMachine(state.machine) + const iterations = state.shape.iterations || 1 + + let { sizeX, sizeY } = machine + if (state.machine.type === "rectangular") { + sizeX = sizeX * 2 + sizeY = sizeY * 2 + } + + // generate our vertices using a set of l-system rules + let config = subtypes[state.shape.fillerSubtype] + config.iterations = iterations + + if (config.side === undefined) { + config.side = 5 + } + if (config.angle === undefined) { + config.angle = Math.PI / 2 + } + + let curve = lsystemPath(lsystem(config), config) + let scale = 1 + + if (config.iterationsGrow) { + scale = + typeof config.iterationsGrow === "function" + ? config.iterationsGrow(config) + : config.iterationsGrow + } + + return centerOnOrigin(resizeVertices(curve, sizeX * scale, sizeY * scale)) + } + + getOptions() { + return options + } +} diff --git a/src/features/shapes/space_filler/subtypes.js b/src/features/shapes/space_filler/subtypes.js new file mode 100644 index 00000000..dc54298d --- /dev/null +++ b/src/features/shapes/space_filler/subtypes.js @@ -0,0 +1,76 @@ +// L-system instructions for space filling curves +export const subtypes = { + // http://mathforum.org/advanced/robertd/lsys2d.html + "Gosper (flowsnake)": { + axiom: "A", + draw: ["A", "B"], + rules: { + A: "A-B--B+A++AA+B-", + B: "+A-BB--B-A++A+B", + }, + angle: Math.PI / 3, + iterationsGrow: (config) => { + return config.iterations + }, + maxIterations: 6, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + Hilbert: { + axiom: "L", + draw: "F", + rules: { + L: "+RF-LFL-FR+", + R: "-LF+RFR+FL-", + }, + startingAngle: Math.PI, + minIterations: 2, + }, + // http://mathforum.org/advanced/robertd/lsys2d.html + "Hilbert 2": { + axiom: "X", + draw: "F", + rules: { + X: "XFYFX+F+YFXFY-F-XFYFX", + Y: "YFXFY-F-XFYFX+F+YFXFY", + }, + startingAngle: Math.PI, + maxIterations: 4, + }, + // https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve + Sierpinski: { + axiom: "F--XF--F--XF", + draw: ["F", "G"], + rules: { + X: "XF+G+XF--F--XF+G+X", + }, + startingAngle: Math.PI / 4, + angle: Math.PI / 4, + maxIterations: 6, + }, + // https://onlinemathtools.com/l-system-generator + "Penrose Tile": { + axiom: "[7]++[7]++[7]++[7]++[7]", + draw: ["6", "7", "8", "9"], + rules: { + 6: "8++9----7[-8----6]++", + 7: "+8--9[---6--7]+", + 8: "-6++7[+++8++9]-", + 9: "--8++++6[+9++++7]--7", + }, + angle: Math.PI / 5, + maxIterations: 6, + iterationsGrow: (config) => { + return 1 + Math.max(1, 3 / config.iterations) + }, + }, + // https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve + "Sierpinski Square": { + axiom: "F+XF+F+XF", + draw: "F", + rules: { + X: "XF-F+F-XF+F+XF-F+F-X", + }, + startingAngle: Math.PI / 4, + maxIterations: 6, + }, +} diff --git a/src/models/tessellation_twist/TessellationTwist.js b/src/features/shapes/tessellation_twist/TessellationTwist.js similarity index 61% rename from src/models/tessellation_twist/TessellationTwist.js rename to src/features/shapes/tessellation_twist/TessellationTwist.js index 5189fb4c..9e2ba356 100644 --- a/src/models/tessellation_twist/TessellationTwist.js +++ b/src/features/shapes/tessellation_twist/TessellationTwist.js @@ -1,23 +1,22 @@ -import Victor from 'victor' -import Graph, { mix } from '../../common/Graph' -import { eulerianTrail } from '../../common/eulerianTrail' -import { difference } from '../../common/util' -import Shape, { shapeOptions } from '../Shape' +import Victor from "victor" +import Graph, { mix } from "@/common/Graph" +import { eulerianTrail } from "@/common/eulerianTrail" +import { difference } from "@/common/util" +import { cloneVertices } from "@/common/geometry" +import Shape from "../Shape" const vecTriangle = [ new Victor(-0.85, -0.4907477295), new Victor(0.85, -0.4907477295), - new Victor(0.0, 0.9814954573), + new Victor(0.0, 0.9814954573), ] - const vecSquare = [ new Victor(-0.7, -0.7), - new Victor( 0.7, 0.7), - new Victor(-0.7, 0.7), - + new Victor(0.7, 0.7), + new Victor(-0.7, 0.7), new Victor(-0.7, -0.7), - new Victor(0.7, 0.7), - new Victor(0.7, -0.7) + new Victor(0.7, 0.7), + new Victor(0.7, -0.7), ] function getEdges(edges, a, b, c, count, settings) { @@ -25,24 +24,33 @@ function getEdges(edges, a, b, c, count, settings) { if (count === 0) { if (settings.rotate > 0) { - da = Math.sqrt(Math.pow(a.x, 2) + Math.pow(a.y, 2)) * (settings.rotate * Math.PI / 180.0) - db = Math.sqrt(Math.pow(b.x, 2) + Math.pow(b.y, 2)) * (settings.rotate * Math.PI / 180.0) - dc = Math.sqrt(Math.pow(c.x, 2) + Math.pow(c.y, 2)) * (settings.rotate * Math.PI / 180.0) + da = + Math.sqrt(Math.pow(a.x, 2) + Math.pow(a.y, 2)) * + ((settings.rotate * Math.PI) / 180.0) + db = + Math.sqrt(Math.pow(b.x, 2) + Math.pow(b.y, 2)) * + ((settings.rotate * Math.PI) / 180.0) + dc = + Math.sqrt(Math.pow(c.x, 2) + Math.pow(c.y, 2)) * + ((settings.rotate * Math.PI) / 180.0) } else { - da = (settings.rotate * Math.PI / 180.0) - db = (settings.rotate * Math.PI / 180.0) - dc = (settings.rotate * Math.PI / 180.0) + da = (settings.rotate * Math.PI) / 180.0 + db = (settings.rotate * Math.PI) / 180.0 + dc = (settings.rotate * Math.PI) / 180.0 } let ap = new Victor( - (a.x * Math.cos(da)) - (a.y * Math.sin(da)), - (a.x * Math.sin(da)) + (a.y * Math.cos(da))) + a.x * Math.cos(da) - a.y * Math.sin(da), + a.x * Math.sin(da) + a.y * Math.cos(da), + ) let bp = new Victor( - (b.x * Math.cos(db)) - (b.y * Math.sin(db)), - (b.x * Math.sin(db)) + (b.y * Math.cos(db))) + b.x * Math.cos(db) - b.y * Math.sin(db), + b.x * Math.sin(db) + b.y * Math.cos(db), + ) let cp = new Victor( - (c.x * Math.cos(dc)) - (c.y * Math.sin(dc)), - (c.x * Math.sin(dc)) + (c.y * Math.cos(dc))) + c.x * Math.cos(dc) - c.y * Math.sin(dc), + c.x * Math.sin(dc) + c.y * Math.cos(dc), + ) edges.push([ap, bp], [ap, cp], [bp, cp]) return @@ -59,54 +67,52 @@ function getEdges(edges, a, b, c, count, settings) { } const options = { - ...shapeOptions, - ...{ - tessellationTwistNumSides: { - title: "Number of sides", - min: 3 - }, - tessellationTwistIterations: { - title: "Iterations", - min: 0, - max: 4 - }, - tessellationTwistRotate: { - title: "Rotate and twist", - step: 5, - min: 0 - } - } + tessellationTwistNumSides: { + title: "Number of sides", + min: 3, + }, + tessellationTwistIterations: { + title: "Iterations", + min: 0, + max: 4, + }, + tessellationTwistRotate: { + title: "Rotate and twist", + step: 5, + min: 0, + }, } // Adapted from https://codepen.io/rafaelpascoalrodrigues/pen/KpBJve. See NOTICE for licensing details. export default class TessellationTwist extends Shape { constructor() { - super('Tessellation Twist') + super("tessellationTwist") + this.label = "Tessellation twist" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'tessellation_twist', tessellationTwistNumSides: 5, tessellationTwistIterations: 2, tessellationTwistRotate: 0, - repeatEnabled: false, - } + }, } } getShapeVertices(numSides) { - let vertices = [] - for (let i=0; i<=numSides; i++) { - let angle = Math.PI * 2.0 / numSides * (0.5 + i) - let angle2 = Math.PI * 2.0 / numSides * (0.5 + ((i + 1) % numSides)) + const vertices = [] + + for (let i = 0; i <= numSides; i++) { + let angle = ((Math.PI * 2.0) / numSides) * (0.5 + i) + let angle2 = ((Math.PI * 2.0) / numSides) * (0.5 + ((i + 1) % numSides)) vertices.push(new Victor(0, 0)) vertices.push(new Victor(Math.cos(angle), Math.sin(angle))) vertices.push(new Victor(Math.cos(angle2), Math.sin(angle2))) } + return vertices } @@ -130,8 +136,14 @@ export default class TessellationTwist extends Shape { // build our tessellations for (var i = 0; i < vertices.length; i += 3) { - getEdges(edges, vertices[i + 0], vertices[i + 1], vertices[i + 2], - tessellation, { rotate: parseInt(state.shape.tessellationTwistRotate) }) + getEdges( + edges, + vertices[i + 0], + vertices[i + 1], + vertices[i + 2], + tessellation, + { rotate: parseInt(state.shape.tessellationTwistRotate) }, + ) } // build edge and adjacency maps; this serves to ensure unique @@ -150,7 +162,7 @@ export default class TessellationTwist extends Shape { // build a graph // find the eulerian trail that efficiently visits all of the vertices - let trail = eulerianTrail({edges: Object.values(graph.edgeMap)}) + let trail = eulerianTrail({ edges: Object.values(graph.edgeMap) }) let prevKey let walkedVertices = [] @@ -161,15 +173,17 @@ export default class TessellationTwist extends Shape { // the missing nodes and create edges for them. There is a complex algorithm // (chinese postman) that can be used to do this for the general case, but // it's computationally expensive and overkill for our situation. - for (i = 0; i < trail.length-1; i++) { - let edge = [trail[i], trail[i+1]].sort().toString() + for (i = 0; i < trail.length - 1; i++) { + let edge = [trail[i], trail[i + 1]].sort().toString() walkedEdges.push(edge) } walkedEdges = new Set(walkedEdges) - let missingEdges = Array.from(difference(walkedEdges, graph.edgeKeys)).reduce((hash, d) => { - d = d.split(',') - hash[d[0] + ',' + d[1]] = d[2] + ',' + d[3] + let missingEdges = Array.from( + difference(walkedEdges, graph.edgeKeys), + ).reduce((hash, d) => { + d = d.split(",") + hash[d[0] + "," + d[1]] = d[2] + "," + d[3] return hash }, {}) @@ -181,7 +195,7 @@ export default class TessellationTwist extends Shape { // non-eulerian move, so we'll walk the shortest valid path between them let path = graph.dijkstraShortestPath(prevKey, key) path.shift() - path.forEach(node => walkedVertices.push(node)) + path.forEach((node) => walkedVertices.push(node)) walkedVertices.push(vertex) } else { walkedVertices.push(vertex) @@ -207,13 +221,15 @@ export default class TessellationTwist extends Shape { }) const scale = 10.5 // to normalize starting size - walkedVertices.forEach(point => { + walkedVertices.forEach((point) => { if (!point.visited) { - point.multiply({x: scale, y: scale }) + point.multiply({ x: scale, y: scale }) point.visited = true } }) - return walkedVertices + + // cloned because some vertices are included multiple times and we need to de-dupe + return cloneVertices(walkedVertices) } getOptions() { diff --git a/src/models/v1_engineering/V1Engineering.js b/src/features/shapes/v1_engineering/V1Engineering.js similarity index 55% rename from src/models/v1_engineering/V1Engineering.js rename to src/features/shapes/v1_engineering/V1Engineering.js index d2c36c9e..6ac51303 100644 --- a/src/models/v1_engineering/V1Engineering.js +++ b/src/features/shapes/v1_engineering/V1Engineering.js @@ -1,17 +1,18 @@ -import Vicious1Vertices from './Vicious1Vertices' -import Shape from '../Shape' +import Vicious1Vertices from "./Vicious1Vertices" +import Shape from "../Shape" export default class V1Engineering extends Shape { constructor() { - super('V1Engineering') + super("v1Engineering") + this.label = "V1Engineering" } getInitialState() { return { ...super.getInitialState(), ...{ - type: 'v1Engineering', - } + // no custom attributes + }, } } diff --git a/src/models/v1_engineering/Vicious1Vertices.js b/src/features/shapes/v1_engineering/Vicious1Vertices.js similarity index 99% rename from src/models/v1_engineering/Vicious1Vertices.js rename to src/features/shapes/v1_engineering/Vicious1Vertices.js index d1eb01b8..8d54216d 100644 --- a/src/models/v1_engineering/Vicious1Vertices.js +++ b/src/features/shapes/v1_engineering/Vicious1Vertices.js @@ -1,4 +1,4 @@ -import Victor from 'victor' +import Victor from "victor" let Vicious1Vertices = () => { return [ diff --git a/src/features/store/selectors.js b/src/features/store/selectors.js deleted file mode 100644 index a176df54..00000000 --- a/src/features/store/selectors.js +++ /dev/null @@ -1,36 +0,0 @@ -import { createSelectorCreator, defaultMemoize, createSelector } from 'reselect' -import isEqual from 'lodash' - -// the make selector functions below are patterned after the comment here: -// https://github.com/reduxjs/reselect/issues/74#issuecomment-472442728 -const cachedSelectors = {} - -// ensures we only create a single selector for a given layer -export const getCachedSelector = (fn, ...layerIds) => { - const key = layerIds.join('-') - - if (!cachedSelectors[fn.name]) { - cachedSelectors[fn.name] = {} - } - - if (!cachedSelectors[fn.name][key]) { - cachedSelectors[fn.name][key] = fn.apply(null, layerIds) - } - - return cachedSelectors[fn.name][key] -} - -// does a deep equality check instead of checking immutability; used in cases -// where a selector depends on another selector that returns a new object each time, -// e.g., makeGetLayerIndex -export const createDeepEqualSelector = createSelectorCreator(defaultMemoize, isEqual) - -// root selectors -export const getState = state => state -export const getMain = state => { return state.main } -export const getLayers = createSelector(getMain, (main) => main.layers) -export const getApp = createSelector(getMain, (main) => main.app) -export const getExporter = createSelector(getMain, (main) => main.exporter) -export const getMachine = createSelector(getMain, (main) => main.machine) -export const getPreview = createSelector(getMain, (main) => main.preview) -export const getFonts = state => state.fonts diff --git a/src/features/transforms/RotationTransform.js b/src/features/transforms/RotationTransform.js deleted file mode 100644 index 6f3fc68e..00000000 --- a/src/features/transforms/RotationTransform.js +++ /dev/null @@ -1,107 +0,0 @@ -import { connect } from 'react-redux' -import React, { Component } from 'react' -import { - Accordion, - Card, - Col, - Form, - Row, - ToggleButton, - ToggleButtonGroup, -} from 'react-bootstrap' -import InputOption from '../../components/InputOption' -import { toggleSpin, updateLayer } from '../layers/layersSlice' -import { getCurrentLayer } from '../layers/selectors' -import Transform from '../../models/Transform' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - - return { - layer: layer, - active: layer.spinEnabled, - options: (new Transform()).getOptions() - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - const { id } = ownProps - - return { - onChange: (attrs) => { - attrs.id = id - dispatch(updateLayer(attrs)) - }, - onSpinMethodChange: (value) => { - dispatch(updateLayer({ spinMethod: value, id: id})) - }, - onSpin: () => { - dispatch(toggleSpin({id: id})) - }, - } -} - -class RotationTransform extends Component { - render() { - const activeClassName = this.props.active ? 'active' : '' - const activeKey = this.props.active ? 1 : null - - return ( - - - -

Spin

- Spins the shape -
- - - - - - - - - - Scale by - - - - - - constant - function - - - - - - - - - -
-
- ) - } -} - -export default connect(mapStateToProps, mapDispatchToProps)(RotationTransform) diff --git a/src/features/transforms/ScaleTransform.js b/src/features/transforms/ScaleTransform.js deleted file mode 100644 index 70edd1b1..00000000 --- a/src/features/transforms/ScaleTransform.js +++ /dev/null @@ -1,96 +0,0 @@ -import { connect } from 'react-redux' -import React, { Component } from 'react' -import { - Accordion, - Card, - Col, - Form, - Row, - ToggleButton, - ToggleButtonGroup, -} from 'react-bootstrap' -import InputOption from '../../components/InputOption' -import { updateLayer, toggleGrow } from '../layers/layersSlice' -import { getCurrentLayer } from '../layers/selectors' -import Transform from '../../models/Transform' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - - return { - layer: layer, - active: layer.growEnabled, - options: (new Transform()).getOptions() - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - const { id } = ownProps - - return { - onChange: (attrs) => { - attrs.id = id - dispatch(updateLayer(attrs)) - }, - onGrowMethodChange: (value) => { - dispatch(updateLayer({ growMethod: value, id: id})) - }, - onGrow: () => { - dispatch(toggleGrow({id: id})) - }, - } -} - -class ScaleTransform extends Component { - render() { - const activeClassName = this.props.active ? 'active' : '' - const activeKey = this.props.active ? 1 : null - - return ( - - - -

Scale

- Grows or shrinks the shape -
- - - - - - - - - Scale by - - - - - constant - function - - - - - - - -
-
- ) - } -} -export default connect(mapStateToProps, mapDispatchToProps)(ScaleTransform) diff --git a/src/features/transforms/TrackTransform.js b/src/features/transforms/TrackTransform.js deleted file mode 100644 index 7a4c0197..00000000 --- a/src/features/transforms/TrackTransform.js +++ /dev/null @@ -1,113 +0,0 @@ -import { connect } from 'react-redux' -import React, { Component } from 'react' -import { - Accordion, - Card -} from 'react-bootstrap' -import InputOption from '../../components/InputOption' -import { - toggleTrack, - toggleTrackGrow, - updateLayer -} from '../layers/layersSlice' -import { getCurrentLayer } from '../layers/selectors' -import Transform from '../../models/Transform' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - - return { - layer: layer, - active: layer.trackEnabled, - activeGrow: layer.trackGrowEnabled, - options: new Transform().getOptions() - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - const { id } = ownProps - - return { - onChange: (attrs) => { - attrs.id = id - dispatch(updateLayer(attrs)) - }, - onTrack: () => { - dispatch(toggleTrack({id: id})) - }, - onTrackGrow: () => { - dispatch(toggleTrackGrow({id: id})) - }, - } -} - -class TrackTransform extends Component { - render() { - const activeClassName = this.props.active ? 'active' : '' - const activeKey = this.props.active ? 1 : null - const activeGrowClassName = this.props.activeGrow ? 'active' : '' - const activeGrowKey = this.props.activeGrow ? 1 : null - - return ( - - - -

Track

- Moves the shape along a track (shown in green) -
- - - - - - - - - - - - -

Scale track

- Grows or shrinks the track -
- - - - - - -
-
-
-
-
-
- ) - } -} -export default connect(mapStateToProps, mapDispatchToProps)(TrackTransform) diff --git a/src/features/transforms/Transforms.js b/src/features/transforms/Transforms.js deleted file mode 100644 index ee88eec4..00000000 --- a/src/features/transforms/Transforms.js +++ /dev/null @@ -1,194 +0,0 @@ -import { connect } from 'react-redux' -import React, { Component } from 'react' -import { - Accordion, - Card, - Row, - Col, - Form, - ToggleButton, - ToggleButtonGroup -} from 'react-bootstrap' -import InputOption from '../../components/InputOption' -import CheckboxOption from '../../components/CheckboxOption' -import ToggleButtonOption from '../../components/ToggleButtonOption' -import { updateLayer, toggleRepeat } from '../layers/layersSlice' -import { getCurrentLayer } from '../layers/selectors' -import Transform from '../../models/Transform' -import ScaleTransform from './ScaleTransform' -import RotationTransform from './RotationTransform' -import TrackTransform from './TrackTransform' - -const mapStateToProps = (state, ownProps) => { - const layer = getCurrentLayer(state) - - return { - layer: layer, - active: layer.repeatEnabled, - options: (new Transform()).getOptions() - } -} - -const mapDispatchToProps = (dispatch, ownProps) => { - const { id } = ownProps - - return { - onChange: (attrs) => { - attrs.id = id - dispatch(updateLayer(attrs)) - }, - onRepeat: () => { - dispatch(toggleRepeat({id: id})) - }, - ontransformMethodChange: (value) => { - dispatch(updateLayer({ transformMethod: value, id: id})) - } - } -} - -class Transforms extends Component { - render() { - const activeClassName = this.props.active ? 'active' : '' - const activeKey = this.props.active ? 1 : null - - return ( -
- - - - - - - - - - - - - {this.props.layer.canTransform && - - -

Loop and transform

- Draws the shape multiple times, transforming it each time. -
- - - - - - - - - When transforming shape - - - - - - smear - keep intact - - - - - - - - - - - -
-
- } - - {!this.props.layer.effect && - -

Fine tuning (advanced)

- - - - - - - -
-
} -
- ) - } -} - -export default connect(mapStateToProps, mapDispatchToProps)(Transforms) diff --git a/src/index.js b/src/index.js index b91cff57..460734af 100644 --- a/src/index.js +++ b/src/index.js @@ -1,10 +1,14 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import './features/app/reactGA' -import App from './features/app/App' -import './index.css' +import React from "react" +import { createRoot } from "react-dom/client" +import "./features/app/reactGA" +import App from "./features/app/App" +import "./index.css" -ReactDOM.render( - , - document.getElementById('root') -) +if (import.meta.hot) { + import.meta.hot.on("vite:beforeFullReload", () => { + location.reload() + }) +} + +const root = createRoot(document.getElementById("root")) +root.render() diff --git a/src/models/Circle.js b/src/models/Circle.js deleted file mode 100644 index 90ba6e2e..00000000 --- a/src/models/Circle.js +++ /dev/null @@ -1,56 +0,0 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' - -const options = { - ...shapeOptions, - ...{ - circleLobes: { - title: 'Number of lobes', - min: 1 - }, - circleDirection: { - title: 'Direction', - type: 'togglebutton', - choices: ['clockwise', 'counterclockwise'] - } - } -} - -export default class Circle extends Shape { - constructor() { - super('Circle') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'circle', - circleLobes: 1, - circleDirection: 'clockwise' - }, - } - } - - getVertices(state) { - let points = [] - - if (state.shape.circleDirection === 'counterclockwise') { - for (let i=128; i>=0; i--) { - let angle = Math.PI * 2.0 / 128.0 * i - points.push(new Victor(Math.cos(angle), Math.sin(state.shape.circleLobes * angle)/state.shape.circleLobes)) - } - } else { - for (let i=0; i<=128; i++) { - let angle = Math.PI * 2.0 / 128.0 * i - points.push(new Victor(Math.cos(angle), Math.sin(state.shape.circleLobes * angle)/state.shape.circleLobes)) - } - } - - return points - } - - getOptions() { - return options - } -} diff --git a/src/models/Effect.js b/src/models/Effect.js deleted file mode 100644 index 16f9b9bd..00000000 --- a/src/models/Effect.js +++ /dev/null @@ -1,17 +0,0 @@ -import Shape from './Shape' - -export default class Effect extends Shape { - getInitialState() { - return { - ...super.getInitialState(), - ...{ - effect: true, - canTransform: false, - shouldCache: false, - canChangeSize: true, - repeatEnabled: false, - autosize: false - } - } - } -} diff --git a/src/models/Exporter.js b/src/models/Exporter.js deleted file mode 100644 index 787c1765..00000000 --- a/src/models/Exporter.js +++ /dev/null @@ -1,47 +0,0 @@ -export const [GCODE, THETARHO, SVG, SCARA] = ['gcode', 'thetarho', 'svg', 'scara'] -export const exportTypes = { - 'gcode': 'GCode', - 'thetarho': 'Theta Rho', - 'svg': 'SVG', - 'scara': 'SCARA GCode (experimental)' -} - -const exporterOptions = { - fileName: { - title: 'File name', - type: 'string' - }, - fileType: { - title: 'Export as', - type: 'dropdown', - choices: exportTypes - }, - polarRhoMax: { - title: 'Maximum rho value (0-1)', - min: 0, - max: 1 - }, - unitsPerCircle: { - title: 'Units per circle', - type: 'number', - }, - post: { - title: 'Program end code', - type: 'textarea', - isVisible: (state) => { return state.fileType !== SVG }, - }, - pre: { - title: 'Program start code', - type: 'textarea', - isVisible: (state) => { return state.fileType !== SVG }, - }, - reverse: { - title: 'Reverse path in the code', - }, -} - -export class Exporter { - getOptions() { - return exporterOptions - } -} diff --git a/src/models/FileImport.js b/src/models/FileImport.js deleted file mode 100644 index 1c5d99f3..00000000 --- a/src/models/FileImport.js +++ /dev/null @@ -1,82 +0,0 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' - -const options = { - ...shapeOptions, - ...{ - fileName: { - title: 'From file:', - type: 'inputText', - plainText: 'true' - }, - aspectRatio: { - title: 'Aspect Ratio', - type: 'checkbox' - }, - comments: { - title: 'Comments', - type: 'comments' - }, - } -} - -export default class FileImport extends Shape { - constructor() { - super('FileImport') - } - - getInitialState(importProps) { - return { - ...super.getInitialState(), - ...{ - type: 'file_import', - aspectRatio: true, - originalAspectRatio: 1.0, - vertices: [], - comments: [], - selectGroup: 'import', - canTransform: false, - usesMachine: true, - repeatEnabled: false - }, - ...(importProps === undefined ? {} : { - fileName: importProps.fileName, - vertices: importProps.vertices, - originalAspectRatio: importProps.originalAspectRatio, - comments: importProps.comments - }) - } - } - - getVertices(state) { - if (state.shape.vertices.length < 1) - { - // During initialization, this function gets called, but the machine isn't created right yet. - return [new Victor(0.0, 0.0), new Victor(0.0, 0.1)] - } - - let x_scale = (state.machine.maxX - state.machine.minX)/2.0 * 0.1 - let y_scale = (state.machine.maxY - state.machine.minY)/2.0 * 0.1 - - if (!state.machine.rectangular) { - x_scale = y_scale = state.machine.maxRadius * 0.1 - } - - if (state.shape.aspectRatio) { - const machine_aspect_ratio = y_scale / x_scale - if (state.shape.originalAspectRatio > machine_aspect_ratio) { - x_scale = x_scale / state.shape.originalAspectRatio * machine_aspect_ratio - } else { - y_scale = y_scale * state.shape.originalAspectRatio / machine_aspect_ratio - } - } - - return state.shape.vertices.map( (vertex) => { - return Victor(vertex.x * x_scale, vertex.y * y_scale) - }) - } - - getOptions() { - return options - } -} diff --git a/src/models/Fisheye.js b/src/models/Fisheye.js deleted file mode 100644 index f9fd957c..00000000 --- a/src/models/Fisheye.js +++ /dev/null @@ -1,59 +0,0 @@ -import Victor from 'victor' -import Effect from './Effect' -import { shapeOptions } from './Shape' -import { circle } from '../common/geometry' -import * as d3Fisheye from 'd3-fisheye' - -const options = { - ...shapeOptions, - ...{ - fisheyeDistortion: { - title: 'Distortion', - min: -2, - max: 40, - step: 0.1, - } - } -} - -export default class Fisheye extends Effect { - constructor() { - super('Fisheye') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'fisheye', - selectGroup: 'effects', - fisheyeDistortion: 3, - startingWidth: 100, - startingHeight: 100, - canRotate: false, - canChangeHeight: false - } - } - } - - getVertices(state) { - const width = state.shape.startingWidth - return circle(width/2) - } - - applyEffect(effect, layer, vertices) { - const fisheye = d3Fisheye.radial() - .radius(effect.startingWidth/2) - .distortion(effect.fisheyeDistortion/2) - fisheye.focus([effect.offsetX, effect.offsetY]) - - return vertices.map(vertex => { - const warped = fisheye([vertex.x, vertex.y]) - return new Victor(warped[0], warped[1]) - }) - } - - getOptions() { - return options - } -} diff --git a/src/models/Freeform.js b/src/models/Freeform.js deleted file mode 100644 index 442ede83..00000000 --- a/src/models/Freeform.js +++ /dev/null @@ -1,43 +0,0 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' - -const options = { - ...shapeOptions, - ...{ - freeformPoints: { - title: 'Points', - type: 'input' - } - } -} - -export default class Freeform extends Shape { - constructor() { - super('Freeform') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'freeform', - freeformPoints: '-1,-1;-1,1;1,1', - repeatEnabled: false, - canChangeHeight: false, - startingWidth: 50, - startingHeight: 50 - }, - } - } - - getVertices(state) { - return state.shape.freeformPoints.split(';').map((pair) => { - const coordinates = pair.split(',') - return new Victor(coordinates[0], coordinates[1]) - }) - } - - getOptions() { - return options - } -} diff --git a/src/models/Heart.js b/src/models/Heart.js deleted file mode 100644 index aafda133..00000000 --- a/src/models/Heart.js +++ /dev/null @@ -1,32 +0,0 @@ -import Victor from 'victor' -import Shape from './Shape' - -export default class Heart extends Shape { - constructor() { - super('Heart') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'heart', - } - } - } - - getVertices(state) { - let points = [] - for (let i=0; i<128; i++) { - let angle = Math.PI * 2.0 / 128.0 * i - let scale = 0.9 - // heart equation from: http://mathworld.wolfram.com/HeartCurve.html - points.push(new Victor(scale * 1.0 * Math.pow(Math.sin(angle), 3), - scale * (13.0/16.0 * Math.cos(angle) + - -5.0/16.0 * Math.cos(2.0 * angle) + - -2.0/16.0 * Math.cos(3.0 * angle) + - -1.0/16.0 * Math.cos(4.0 * angle)))) - } - return points - } -} diff --git a/src/models/Machine.js b/src/models/Machine.js deleted file mode 100644 index e52ae792..00000000 --- a/src/models/Machine.js +++ /dev/null @@ -1,36 +0,0 @@ -const machineOptions = { - minX: { - title: 'Min X (mm)', - }, - maxX: { - title: 'Max X (mm)', - }, - minY: { - title: 'Min Y (mm)', - }, - maxY: { - title: 'Max Y (mm)', - }, - origin: { - title: 'Force origin' - }, - maxRadius: { - title: 'Max radius (mm)' - }, - minimizeMoves: { - title: 'Try to minimize perimeter moves', - type: 'checkbox' - }, - polarEndPoint: { - title: 'End point' - }, - polarStartPoint: { - title: 'Start point' - }, -} - -export default class Machine { - getOptions() { - return machineOptions - } -} diff --git a/src/models/Mask.js b/src/models/Mask.js deleted file mode 100644 index 675c98f3..00000000 --- a/src/models/Mask.js +++ /dev/null @@ -1,112 +0,0 @@ -import Victor from 'victor' -import { shapeOptions } from './Shape' -import Effect from './Effect' -import { rotate, offset, circle } from '../common/geometry' -import PolarMachine from '../features/machine/PolarMachine' -import RectMachine from '../features/machine/RectMachine' -import PolarInvertedMachine from '../features/machine/PolarInvertedMachine' -import RectInvertedMachine from '../features/machine/RectInvertedMachine' - -const options = { - ...shapeOptions, - ...{ - maskMachine: { - title: 'Mask shape', - type: 'togglebutton', - choices: ['rectangle', 'circle'], - onChange: (changes, attrs) => { - if (changes.maskMachine === 'circle') { - changes.rotation = 0 - - const size = Math.min(attrs.startingWidth, attrs.startingHeight) - changes.startingHeight = size - changes.startingWidth = size - changes.canRotate = false - changes.canChangeHeight = false - } else { - changes.canRotate = true - changes.canChangeHeight = true - } - - return changes - } - }, - maskMinimizeMoves: { - title: 'Try to minimize perimeter moves', - type: 'checkbox' - }, - maskInvert: { - title: 'Invert', - type: 'checkbox' - }, - maskBorder: { - title: 'Draw border', - type: 'checkbox' - } - } -} - -export default class Mask extends Effect { - constructor() { - super('Mask') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'mask', - selectGroup: 'effects', - startingWidth: 100, - startingHeight: 100, - maskMinimizeMoves: false, - maskMachine: 'rectangle', - maskBorder: false, - maskInvert: false - } - } - } - - getVertices(state) { - const width = state.shape.startingWidth - const height = state.shape.startingHeight - - if (state.shape.dragging && state.shape.maskMachine === 'circle') { - return circle(width/2) - } else { - return [ - new Victor(-width/2, height/2), - new Victor(width/2, height/2), - new Victor(width/2, -height/2), - new Victor(-width/2, -height/2), - new Victor(-width/2, height/2), - ] - } - } - - applyEffect(effect, layer, vertices) { - vertices = vertices.map(vertex => { - return rotate(offset(vertex, -effect.offsetX, -effect.offsetY), effect.rotation) - }) - - if (!layer.dragging && !effect.dragging) { - const machineClass = effect.maskMachine === 'circle' ? - (effect.maskInvert ? PolarInvertedMachine : PolarMachine) : - (effect.maskInvert ? RectInvertedMachine : RectMachine) - - const machine = new machineClass( - vertices, - { minX: 0, maxX: effect.startingWidth, minY: 0, maxY: effect.startingHeight, minimizeMoves: effect.maskMinimizeMoves, maxRadius: effect.startingWidth/2, perimeterConstant: effect.maskPerimeterConstant, mask: true }, - { border: effect.maskBorder }) - vertices = machine.polish().vertices - } - - return vertices.map(vertex => { - return offset(rotate(vertex, -effect.rotation), effect.offsetX, effect.offsetY) - }) - } - - getOptions() { - return options - } -} diff --git a/src/models/Noise.js b/src/models/Noise.js deleted file mode 100644 index dba833e0..00000000 --- a/src/models/Noise.js +++ /dev/null @@ -1,132 +0,0 @@ -import { shapeOptions } from './Shape' -import Victor from 'victor' -import Effect from './Effect' -import noise from '../common/noise' -import { subsample } from '../common/geometry' - -const options = { - ...shapeOptions, - ...{ - seed: { - title: 'Random seed', - min: 1 - }, - noiseMagnification: { - title: 'Magnification', - min: 1, - max: 100, - step: 1, - isVisible: (state) => { return state.noiseApplication !== 'Linear' } - }, - noiseAmplitude: { - title: 'Amplitude', - min: 0, - max: 20, - step: 1 - }, - noiseType: { - title: 'Noise type', - type: 'togglebutton', - choices: ['Perlin', 'Simplex'], - }, - noiseApplication: { - title: 'Application', - type: 'togglebutton', - choices: ['Contour', 'Linear'], - }, - } -} - -export default class Noise extends Effect { - constructor() { - super('Noise') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'noise', - selectGroup: 'effects', - seed: 1, - noiseAmplitude: 4, - noiseMagnification: 58, - noiseType: 'Simplex', - noiseApplication: 'Contour', - canTransform: false, - repeatEnabled: false, - canChangeSize: false, - canRotate: false, - canMove: false, - subsample: true - } - } - } - - applyEffect(effect, layer, vertices) { - if (effect.noiseAmplitude > 0) { - noise.seed(effect.seed) - vertices = subsample(vertices, 2.0) - - if (effect.noiseApplication === 'Linear') { - return this.applyLinearEffect(effect, vertices) - } else { - return this.applyRadialEffect(effect, vertices, this.contour) - } - } else { - return vertices - } - } - - applyLinearEffect(effect, vertices) { - return vertices.map(vertex => { - const a = this.octaveNoise(effect.noiseType, vertex.x, vertex.y, 2, effect.noiseAmplitude) - return new Victor(vertex.x + a, vertex.y + a) - }) - } - - applyRadialEffect(effect, vertices, contourFn) { - let periodDenominator = effect.noiseType === 'Simplex' ? - 100 + 6 * effect.noiseMagnification : - 100 + effect.noiseMagnification - if (periodDenominator === 0) periodDenominator = 1 - const period = 1/periodDenominator - - return vertices.map(vertex => { - const v = this.noise(effect.noiseType, vertex.x * period, vertex.y * period) - const a = v * Math.PI * 2 - return contourFn(a * effect.noiseAmplitude, vertex) - }) - } - - noise(noiseType, x, y) { - return noiseType === 'Simplex' ? noise.simplex2(x, y) : noise.perlin2(x, y) - } - - octaveNoise(noiseType, x, y, octaves, persistence) { - let total = 0 - let frequency = 1 - let amplitude = 1 - - for(let i=0; i { - let group = [] - let wasInside = false - - // Arbitrarily choose 1000 iterations. This will stop particles that don't ever intersect with - // the machine. It needs to be high enough to always leave the machine for particles that - // don't move very fast. - for (let iterations=0; iterations<=1000; iterations++) { - // This has side effects on the particle - const newVertex = this.getParticleVertex(particle, shape) - group.push(newVertex) - - // Stop if we entered and then exited the machine coordinates. - const inside = machineInstance.inBounds(newVertex) - if (wasInside && !inside) { - break - } - wasInside = inside - } - return group - }) - - let prevCurve - for (let j=0; j 0) { - const start = vertices[vertices.length - 1] - const end = curve[0] - const startPerimeter = machineInstance.nearestPerimeterVertex(start) - const endPerimeter = machineInstance.nearestPerimeterVertex(end) - vertices = vertices.concat([startPerimeter, machineInstance.tracePerimeter(startPerimeter, endPerimeter), endPerimeter, end].flat()) - } - - if (!prevCurve || shapeSimilarity(curve, prevCurve, { estimationPoints: 100, rotations: 0 }) < ((state.shape.noiseSimilarity || 88) / 100)) { - vertices = vertices.concat(curve) - } - prevCurve = curve - } - - vertices = vertices.map(vertex => { - return offset(vertex, -state.shape.offsetX, -state.shape.offsetY) - }) - - return vertices - } - - getCurve(vertexGroups, idx) { - const pEndVertices = vertexGroups[idx] - const pStartVertices = vertexGroups[idx+1] - return pStartVertices.reverse().concat(pEndVertices) - } - - getParticleVertex(p, options) { - let periodDenominator = 600 - options.noiseLevel - if (options.noiseLevel >= 600) periodDenominator = 1 - const period = 1/periodDenominator - const v = options.noiseType === 'Simplex' ? noise.simplex2(p.x * period, p.y * period) : noise.perlin2(p.x * period, p.y * period) - const a = v * 2 * Math.PI + p.a - - p.x += Math.cos(a) * 5 - p.y += Math.sin(a) * 5 - - return new Victor(p.x + options.offsetX, p.y + options.offsetY) - } - - getOptions() { - return options - } -} diff --git a/src/models/Point.js b/src/models/Point.js deleted file mode 100644 index 4a53e9a4..00000000 --- a/src/models/Point.js +++ /dev/null @@ -1,28 +0,0 @@ -import Victor from 'victor' -import Shape from './Shape' - -export default class Point extends Shape { - constructor() { - super('Point') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'point', - autosize: false, - startingWidth: 1, - startingHeight: 1, - canTransform: false, - shouldCache: false, - canChangeSize: false, - repeatEnabled: false, - } - } - } - - getVertices(state) { - return [new Victor(0.0, 0.0)] - } -} diff --git a/src/models/Polygon.js b/src/models/Polygon.js deleted file mode 100644 index 29a97559..00000000 --- a/src/models/Polygon.js +++ /dev/null @@ -1,92 +0,0 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' - -const options = { - ...shapeOptions, - ...{ - polygonSides: { - title: 'Number of sides', - min: 3 - }, - roundCorners: { - title: 'Round corners', - type: 'checkbox', - }, - roundFraction: { - title: 'Round fraction', - min: 0.05, - max: 0.5, - step: 0.025, - isVisible: (state) => { return state.roundCorners } - }, - } -} - -export default class Polygon extends Shape { - constructor() { - super('Polygon') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'polygon', - polygonSides: 4, - roundCorners: false, - roundFraction: 0.25, - } - } - } - - // Returns a list of points from (start, end] along the line. - getLineVertices(startPoint, endPoint, numberOfPoints) { - const resolution = 1.0/numberOfPoints - let points = [] - for (let d=resolution; d<=1.0; d+=resolution) { - points.push(new Victor(startPoint.x + (endPoint.x - startPoint.x)*d, - startPoint.y + (endPoint.y - startPoint.y)*d)) - } - return points - } - - getVertices(state) { - // beta is the fraction to have rounded. - const beta = state.shape.roundFraction - // alpha is the fration to have straight. - const alpha = (1.0-beta) - let points = [] - for (let i=0; i<=state.shape.polygonSides; i++) { - const angle = Math.PI * 2.0 / state.shape.polygonSides * (0.5 + i) - if (state.shape.roundCorners && beta !== 0.0) { - // angles that make up the arc. - const angleStart = Math.PI * 2.0 / state.shape.polygonSides * i - const angleEnd = Math.PI * 2.0 / state.shape.polygonSides * (i + 1) - const angleResolution = 0.10 - if (points.length > 0) { - // Start with a line. We use a bunch of points for this, so they get stretch about evenly - // as the curves do. - const numberOfLinePoints = (angleEnd - angleStart)/angleResolution/beta - points = points.concat(this.getLineVertices(points[points.length-1], - new Victor(alpha * Math.cos(angle) + beta * Math.cos(angleStart), - alpha * Math.sin(angle) + beta * Math.sin(angleStart)), - numberOfLinePoints)) - } - if (i !== state.shape.polygonSides) { - // Create the arc. - for (let arcAngle=angleStart + angleResolution; arcAngle<=angleEnd; arcAngle += angleResolution) { - points.push(new Victor(alpha * Math.cos(angle) + beta * Math.cos(arcAngle), alpha * Math.sin(angle) + beta * Math.sin(arcAngle))) - } - } - } else { - // Not rounded corners. - points.push(new Victor(Math.cos(angle), Math.sin(angle))) - } - } - return points - } - - getOptions() { - return options - } -} diff --git a/src/models/Reuleaux.js b/src/models/Reuleaux.js deleted file mode 100644 index d6265744..00000000 --- a/src/models/Reuleaux.js +++ /dev/null @@ -1,59 +0,0 @@ -import Victor from 'victor' -import Shape, { shapeOptions } from './Shape' - -const options = { - ...shapeOptions, - ...{ - reuleauxSides: { - title: 'Number of sides', - step: 1, - min: 2 - }, - } -} - -export default class Reuleaux extends Shape { - constructor() { - super('Reuleaux') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'reuleaux', - reuleauxSides: 3 - } - } - } - - getVertices(state) { - let points = [] - // Construct an equalateral triangle - let corners = [] - // Initial location at PI/2 - let angle = Math.PI/2.0 - // How much of the circle in one side? - let coverageAngle = Math.PI/state.shape.reuleauxSides - let halfCoverageAngle = 0.5 * coverageAngle - for (let c=0; c { return state.canChangeSize }, - onChange: (changes, attrs) => { - if (!attrs.canChangeHeight) { - changes.startingHeight = changes.startingWidth - } - return changes - } - }, - startingHeight: { - title: 'Initial height', - min: 1, - isVisible: (state) => { return state.canChangeSize && state.canChangeHeight }, - }, - offsetX: { - title: 'X offset', - isVisible: (state) => { return state.canMove } - }, - offsetY: { - title: 'Y offset', - isVisible: (state) => { return state.canMove } - }, - rotation: { - title: 'Rotate (degrees)', - isVisible: state => { return state.canRotate } - }, - connectionMethod: { - title: 'Connect to next layer', - choices: ['line', 'along perimeter'] - }, - backtrackPct: { - title: 'Backtrack at end (%)', - min: 0, - max: 100, - step: 2 - }, - drawPortionPct: { - title: 'Draw portion of path (%)', - min: 0, - max: 100, - step: 2 - }, - rotateStartingPct: { - title: 'Rotate starting point (%)', - min: -100, - max: 100, - step: 2 - }, - reverse: { - title: 'Reverse path', - type: 'checkbox', - isVisible: (state) => { return !state.effect } - }, - numLoops: { - title: 'Number of loops', - min: 1 - }, - transformMethod: { - title: 'When transforming shape', - type: 'dropdown', - choices: ['smear', 'intact'], - }, - growEnabled: { - title: 'Scale' - }, - growValue: { - title: 'Scale (+/-)', - }, - growMethod: { - title: 'Scale by', - choices: ['constant', 'function'] - }, - growMathInput: { - title: 'Scale function (i)', - type: 'text', - isVisible: state => { return state.growMethod === 'function' }, - }, - growMath: { - }, - spinEnabled: { - title: 'Spin', - isVisible: state => { return state.growMethod === 'constant'}, - }, - spinValue: { - title: 'Spin (+/-)', - step: 0.1, - }, - spinMethod: { - title: 'Spin by', - type: 'dropdown', - choices: ['constant', 'function'] - }, - spinMathInput: { - title: 'Spin function (i)', - type: 'text', - isVisible: state => { return state.spinMethod === 'function' }, - }, - spinMath: { - title: 'Spin function (i)', - }, - spinSwitchbacks: { - title: 'Switchbacks', - isVisible: state => { return state.spinMethod === 'constant'}, - }, - trackEnabled: { - title: 'Track' - }, - trackGrowEnabled: { - title: 'Scale track' - }, - trackValue: { - title: 'Track size', - }, - trackNumLoops: { - title: 'Number of loops at each track position', - min: 1 - }, - trackLength: { - title: 'Track length', - step: 0.05 - }, - trackGrow: { - title: 'Scale (+/-)', - }, -} - -// used as a way to keep a shape's transform settings separate. Actual state -// is stored on Shape. -export default class Transform { - getOptions() { - return transformOptions - } -} diff --git a/src/models/Warp.js b/src/models/Warp.js deleted file mode 100644 index 02756b63..00000000 --- a/src/models/Warp.js +++ /dev/null @@ -1,170 +0,0 @@ -import Victor from 'victor' -import Effect from './Effect' -import { shapeOptions } from './Shape' -import { circle, subsample } from '../common/geometry' -import { evaluate } from 'mathjs' - -const options = { - ...shapeOptions, - ...{ - warpType: { - title: 'Warp type', - type: 'dropdown', - choices: ['angle', 'quad', 'circle', 'grid', 'shear', 'custom'], - onChange: (changes, attrs) => { - changes.canChangeSize = changes.warpType !== 'custom' - if (['angle', 'quad', 'shear'].includes(changes.warpType)) { - changes.rotation = changes.warpType === 'shear' ? 0 : 45 - changes.canRotate = true - } else { - changes.rotation = 0 - changes.canRotate = false - } - - return changes - } - }, - period: { - title: 'Period', - step: 0.2, - isVisible: (state) => { return !['custom', 'shear'].includes(state.warpType) }, - }, - xMathInput: { - title: 'X(x,y)', - delayKey: 'xMath', - type: 'text', - isVisible: (state) => { return state.warpType === 'custom' }, - }, - yMathInput: { - title: 'Y(x,y)', - delayKey: 'yMath', - type: 'text', - isVisible: (state) => { return state.warpType === 'custom' }, - }, - subsample: { - title: 'Subsample points', - type: 'checkbox', - }, - } -} - -export default class Warp extends Effect { - constructor() { - super('Warp') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'warp', - selectGroup: 'effects', - warpType: 'angle', - period: 10.0, - subsample: true, - xMathInput: 'x + 4*sin((x+y)/20)', - xMath: 'x + 4*sin((x+y)/20)', - yMathInput: 'y + 4*sin((x-y)/20)', - yMath: 'y + 4*sin((x-y)/20)', - startingWidth: 40, - startingHeight: 40, - rotation: 45, - canRotate: true, - canChangeHeight: false - } - } - } - - getVertices(state) { - const width = state.shape.startingWidth - return circle(width/2) - } - - applyEffect(effect, layer, vertices) { - if (effect.subsample) { - vertices = subsample(vertices, 2.0) - } - - if (effect.warpType === 'angle' || effect.warpType === 'quad') { - return this.angle(effect.warpType === 'angle' ? +1.0 : -1.0, effect, vertices) - } else if (effect.warpType === 'circle') { - return this.circle(effect, vertices) - } else if (effect.warpType === 'grid') { - return this.grid(effect, vertices) - } else if (effect.warpType === 'shear') { - return this.shear(effect, vertices) - } else if (effect.warpType === 'custom') { - return this.custom(effect, vertices) - } - - return vertices - } - - angle(ySign, effect, vertices) { - const periodx = 10.0 * effect.period / (Math.PI * 2.0) / Math.cos(-effect.rotation / 180.0 * Math.PI) - const periody = 10.0 * effect.period / (Math.PI * 2.0) / Math.sin(-effect.rotation / 180.0 * Math.PI) - const scale = effect.startingWidth / 10.0 - - return vertices.map(vertex => { - const originalx = vertex.x - effect.offsetX - const originaly = vertex.y - effect.offsetY - const x = originalx + scale * Math.sin(originalx/periodx + originaly/periody) - const y = originaly + scale * Math.sin(originalx/periodx + ySign * originaly/periody) - return new Victor(x + effect.offsetX, y + effect.offsetY) - }) - } - - circle(effect, vertices) { - const periodx = 10.0 * effect.period / (Math.PI * 2.0) - const periody = 10.0 * effect.period / (Math.PI * 2.0) - const scale = effect.startingWidth / 10.0 - - return vertices.map(vertex=> { - const originalx = vertex.x - effect.offsetX - const originaly = vertex.y - effect.offsetY - const theta = Math.atan2(originaly,originalx) - const x = originalx + scale * Math.cos(theta) * Math.cos(Math.sqrt(originalx*originalx + originaly*originaly)/periodx) - const y = originaly + scale * Math.sin(theta) * Math.cos(Math.sqrt(originalx*originalx + originaly*originaly)/periody) - return new Victor(x + effect.offsetX, y + effect.offsetY) - }) - } - - grid(effect, vertices) { - const periodx = 10.0 * effect.period / (Math.PI * 2.0) - const periody = 10.0 * effect.period / (Math.PI * 2.0) - const scale = effect.startingWidth / 10.0 - - return vertices.map(vertex => { - const originalx = vertex.x - effect.offsetX - const originaly = vertex.y - effect.offsetY - const x = originalx + scale * Math.sin(originalx/periodx) * Math.sin(originaly/periody) - const y = originaly + scale * Math.sin(originalx/periodx) * Math.sin(originaly/periody) - return new Victor(x + effect.offsetX, y + effect.offsetY) - }) - } - - shear(effect, vertices) { - const shear = (effect.startingWidth - 1)/ 100 - const xShear = shear * Math.sin(effect.rotation / 180.0 * Math.PI) - const yShear = shear * Math.cos(effect.rotation / 180.0 * Math.PI) - return vertices.map(vertex => new Victor(vertex.x + xShear * vertex.y, vertex.y + yShear * vertex.x)) - } - - custom(effect, vertices) { - return vertices.map(vertex => { - try { - const x = evaluate(effect.xMath, {x: vertex.x - effect.offsetX, y: vertex.y - effect.offsetY}) - const y = evaluate(effect.yMath, {x: vertex.x - effect.offsetX, y: vertex.y - effect.offsetY}) - return new Victor(x + effect.offsetX, y + effect.offsetY) - } - catch (err) { - console.log("Error parsing custom effect: " + err) - return vertex - } - }) - } - - getOptions() { - return options - } -} diff --git a/src/models/input_text/Fonts.js b/src/models/input_text/Fonts.js deleted file mode 100644 index 077137fb..00000000 --- a/src/models/input_text/Fonts.js +++ /dev/null @@ -1,170 +0,0 @@ -import Victor from 'victor' -import { raysol_cursive } from './raysol_cursive' -import { raysol_sanserif } from './raysol_sanserif' - -const fontSpacing = 1.5 - -// Format for vertices: [x,y,b] where in a 0:7(8) by -1:7 grid defining x,y and b defines the line or curve. -// Bulge directions could be represented by a 0:4 list starting at none, then NE and going clockwise. -// 4 1 -// 3 2 -let billsey = { - ' ': [ [8,-1,0] ], - 'A': [ [0,0,0], [3.5,7,0], [7,0,0], [5,3.5,0], [2,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'B': [ [0,0,0], [0,7,0], [3.5,7,0], [7,5.25,1], [3.5,3.5,2], [0,3.5,0], [3.5,3.5,0], [7,1.75,1], [3.5,0,2], [0,0,0], [0,-1,0], [8,-1,0] ], - 'C': [ [3.5,-1,0], [3.5,0,0], [0,3.5,3], [3.5,7,4], [7,5.25,1], [3.5,7,1], [0,3.5,4], [3.5,0,3], [7,1.75,2], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - 'D': [ [0,0,0], [0,7,0], [3.5,7,0], [7,3.5,1], [3.5,0,2], [0,0,0], [0,-1,0], [8,-1,0] ], - 'E': [ [0,0,0], [0,7,0], [7,7,0], [0,7,0], [0,3.5,0], [3.5,3.5,0], [0,3.5,0], [0,0,0], [7,0,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'F': [ [0,0,0], [0,7,0], [7,7,0], [0,7,0], [0,3.5,0], [3.5,3.5,0], [0,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'G': [ [3.5,-1,0], [3.5,0,0], [0,3.5,3], [3.5,7,4], [7,5.25,1], [3.5,7,1], [0,3.5,4], [3.5,0,3], [7,1.75,2], [5.25,1.75,0], [7,1.75,0], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - 'H': [ [0,0,0], [0,7,0], [0,3.5,0], [7,3.5,0], [7,7,0], [7,0,0], [7,3.5,0], [0,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'I': [ [3.5,-1,0], [3.5,7,0], [0,7,0], [7,7,0], [3.5,7,0], [3.5,0,0], [0,0,0], [7,0,0], [3.5,0,0], [3.5,-1,0], [8,-1,0] ], - 'J': [ [3.5,-1,0], [3.5,0,0], [0,1.75,3], [3.5,0,3], [7,1.75,2], [7,7,0], [7,1.75,0], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - 'K': [ [0,0,0], [0,7,0], [0,1.75,0], [3.5,3.5,0], [7,7,0], [3.5,3.5,0], [7,0,0], [3.5,3.5,0], [0,1.75,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'L': [ [0,0,0], [0,7,0], [0,0,0], [7,0,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'M': [ [0,0,0], [0,7,0], [3.5,0,0], [7,7,0], [7,0,0], [7,7,0], [3.5,0,0], [0,7,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'N': [ [0,0,0], [0,7,0], [7,0,0], [7,7,0], [7,0,0], [0,7,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'O': [ [3.5,-1,0], [3.5, 0, 0], [0, 3.5, 3], [3.5, 7, 4], [7.0, 3.5, 1], [3.5, 0, 2], [3.5, -1, 0], [8, -1, 0] ], - 'P': [ [0,0,0], [0,7,0], [3.5,7,0], [7,5.25,1], [3.5,3.5,2], [0,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'Q': [ [3.5,-1,0], [3.5, 0, 0], [0, 3.5, 3], [3.5, 7, 4], [7.0, 3.5, 1], [3.5, 0, 2], [4.325,0.5,4], [6.075,0,0], [7,0.5,2], [6.075,0,2], [4.325,0.5,0], [3.5,0,4], [3.5, -1, 0], [8, -1, 0] ], - 'R': [ [0,0,0], [0,7,0], [3.5,7,0], [7,5.25,1], [3.5,3.5,2], [7,0,0], [3.5,3.5,0], [0,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'S': [ [3.5,-1,0], [3.5,0,0], [0,1.75,3], [3.5,0,3], [7,1.75,2], [3.5,3.5,1], [0,5.25,3], [3.5,7,4], [7,5.25,1], [3.5,7,1], [0,5.25,4], [3.5,3.5,3], [7,1.75,1], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - 'T': [ [3.5,-1,0], [3.5,7,0], [0,7,0], [7,7,0], [3.5,7,0], [3.5,0,0], [3.5,-1,0], [8,-1,0] ], - 'U': [ [3.5,-1,0], [3.5,0,0], [0,3.5,3], [0,7,0], [0,3.5,0], [3.5,0,3], [7,3.5,2], [7,7,0], [7,3.5,0], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - 'V': [ [3.5,-1,0], [3.5,0,0], [0,7,0], [3.5,0,0], [7,7,0], [3.5,0,0], [3.5,-1,0], [8,-1,0] ], - 'W': [ [1.75,-1,0], [1.75,0,0], [0,7,0], [1.75,0,0], [3.5,7,0], [5.25,0,0], [7,7,0], [5.25,0,0], [3.5,7,0], [1.75,0,0], [1.75,-1,0], [8,-1,0] ], - 'X': [ [0,0,0], [7,7,0], [3.5,3.5,0], [0,7,0], [7,0,0], [3.5,3.5,0], [0,0,0], [0,-1,0], [8,-1,0] ], - 'Y': [ [3.5,-1,0], [3.5,3.5,0], [0,7,0], [3.5,3.5,0], [7,7,0], [3.5,3.5,0], [3.5,-1,0], [8,-1,0] ], - 'Z': [ [0,0,0], [7,0,0], [0,0,0], [7,7,0], [0,7,0], [7,7,0], [0,0,0], [0,-1,0], [8,-1,0] ], - '0': [ [3.5,-1,0], [3.5,0,0], [6,3.5,2], [3.5,7,1], [1,3.5,4], [3.5,0,3], [3.5,-1,0], [8,-1,0] ], - '1': [ [0,-1,0], [0,0,0], [0,0,0], [7,0,0], [3.5,0,0], [3.5,7,0], [1.5,6,2], [3.5,7,2], [3.5,0,0], [0,0,0], [0,-1,0], [8,-1,0] ], - '2': [ [1,-1,0], [1,0,0], [6,5.25,0], [3.5,7,1], [1,5.25,4], [3.5,7,4], [6,5.25,1], [1,0,0], [6,0,0], [1,0,0], [1,-1,0], [8,-1,0] ], - '3': [ [3.5,-1,0], [3.5,0,0], [1,1.75,3], [3.5,0,3], [6,1.75,2], [3.5,3.5,1], [6,5.25,2], [3.5,7,1], [1,5.25,4], [3.5,7,4], [6,5.25,1], [3.5,3.5,2], [6,1.75,1], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - '4': [ [3.5,-1,0], [3.5,0,0], [3.5,7,0], [1,3.5,0], [6,3.5,0], [3.5,3.5,0], [3.5,-1,0], [8,-1,0] ], - '5': [ [3.5,-1,0], [3.5,0,0], [1,1.75,3], [3.5,0,3], [6,1.75,2], [3.5,3.5,1],[1,3.5,0], [1,7,0], [6,7,0], [1,7,0], [1,3.5,0], [3.5,3.5,0], [6,1.75,1], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - '6': [ [3.5,-1,0], [3.5,0,0], [1,1.75,3], [5.25,7,4], [1,1.75,4], [3.5,0,3],[6,1.75,2], [3.5,3.5,1], [1,1.75,4], [3.5,0,3], [3.5,-1,0], [8,-1,0] ], - '7': [ [3.5,-1,0], [3.5,0,0], [6,7,0], [1,7,0], [6,7,0], [3.5,0,0], [3.5,-1,0], [8,-1,0] ], - '8': [ [3.5,-1,0], [3.5,0,0], [1,1.75,3], [6,5.25,0], [3.5,7,1], [1,5.25,4], [6,1.75,0], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - '9': [ [3.5,-1,0], [3.5,0,0], [6,5.25,2], [3.5,7,1], [1,5.25,4], [3.5,3.5,3], [6,5.25,2], [3.5,0,2], [3.5,-1,0], [8,-1,0] ], - '$': [ [3.5,-1,0], [3.5,0.5,0], [0,2.00,3], [3.5,0.5,3], [7,2.00,2], [3.5,3.5,1], [0,5.00,3], [3.5,6.5,4], [7,5.00,1], [3.5,6.5,1], [3.5, 7, 0], [3.5, 0, 0], [3.5,-1,0], [8,-1,0] ], - '.': [ [3.5,-1,0], [3.5,0.5,0], [3,1,3], [3.5,1.5,4], [4,1,1], [3.5,0.5,2], [3.5,-1,0], [8,-1,0] ], -} - -// This is a clever way to create a range from 0..32, and then compute an x,y for each of those -// points on the unit circle from zero to pi/2. -const curve = [...Array(32).keys()].map((index) => { - let angle = (index+1) * Math.PI/2.0/32.0 - return new Victor(Math.cos(angle), Math.sin(angle)) -}) - -const billseyConverter = (vertices) => { - let newVertices = [] - let prevPoint = new Victor(0,0) - vertices.forEach( (vertex) => { - switch (vertex[2]) { - case 0: - default: - newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) - break - case 1: // NE - if (vertex[1] < prevPoint[1]) { // clockwise - let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + prevPoint[0] / 8.0, cv.y * height + vertex[1] / 4.0)).reverse()) - } else { // ccwise - let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + vertex[0] / 8.0, cv.y * height + prevPoint[1] / 4.0))) - } - newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) - break - case 2: // SE - if (vertex[1] < prevPoint[1]) { // clockwise - let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + vertex[0] / 8.0, cv.y * height + prevPoint[1] / 4.0))) - } else { // ccwise - let width = Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + prevPoint[0] / 8.0, cv.y * height + vertex[1] / 4.0)).reverse()) - } - newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) - break - case 3: // SW - if (vertex[1] > prevPoint[1]) { // clockwise - let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + prevPoint[0] / 8.0, cv.y * height + vertex[1] / 4.0)).reverse()) - } else { // ccwise - let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = -Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + vertex[0] / 8.0, cv.y * height + prevPoint[1] / 4.0))) - } - newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) - break - case 4: // NW - if (vertex[1] > prevPoint[1]) { // clockwise - let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + vertex[0] / 8.0, cv.y * height + prevPoint[1] / 4.0))) - } else { // ccwise - let width = -Math.abs(vertex[0] - prevPoint[0]) / 8.0 - let height = Math.abs(vertex[1] - prevPoint[1]) / 4.0 - newVertices = newVertices.concat(curve.map( cv => new Victor(cv.x * width + prevPoint[0] / 8.0, cv.y * height + vertex[1] / 4.0)).reverse()) - } - newVertices.push(new Victor(vertex[0] / 8.0, vertex[1] / 4.0)) - break - } - prevPoint = vertex - }) - - const scale = 0.6 - const offset_y = -0.5 - const scaledVertices = newVertices.map( vertex => { - return new Victor(scale * vertex.x, scale * vertex.y + offset_y) - }) - return { - maxX: fontSpacing, - vertices: scaledVertices, - } -} - -const raysolConverter = (vertices) => { - let newVertices = [] - vertices.forEach( (vertex) => { - newVertices.push(new Victor(vertex[0], vertex[1])) - }) - - return { - maxX: fontSpacing, - vertices: newVertices, - } -} - -export const MonospaceFont = (ch) => { - let upper = ch.toUpperCase() - // eslint-disable-next-line no-prototype-builtins - if (billsey.hasOwnProperty(upper)) { - return billseyConverter(billsey[upper]) - } else { - return billseyConverter(billsey[' ']) - } -} - -export const CursiveFont = (ch) => { - // eslint-disable-next-line no-prototype-builtins - if (raysol_cursive.hasOwnProperty(ch)) { - return raysolConverter(raysol_cursive[ch]) - } else { - return raysolConverter(raysol_cursive[' ']) - } -} - -export const SansSerifFont = (ch) => { - // eslint-disable-next-line no-prototype-builtins - if (raysol_cursive.hasOwnProperty(ch)) { - return raysolConverter(raysol_sanserif[ch]) - } else { - return raysolConverter(raysol_sanserif[' ']) - } -} diff --git a/src/models/input_text/InputText.js b/src/models/input_text/InputText.js deleted file mode 100644 index e6ba61a8..00000000 --- a/src/models/input_text/InputText.js +++ /dev/null @@ -1,220 +0,0 @@ -import { CursiveFont, SansSerifFont, MonospaceFont } from './Fonts' -import Victor from 'victor' -import Shape, { shapeOptions } from '../Shape' -import { arc } from '../../common/geometry' - -const options = { - ...shapeOptions, - ...{ - inputText: { - title: 'Text', - type: 'textarea', - }, - inputFont: { - title: 'Font', - type: 'dropdown', - choices: ['Cursive', 'Sans Serif', 'Monospace'], - }, - rotateDir: { - title: 'Rotate', - type: 'dropdown', - choices: ['Top', 'Center', 'Bottom'], - }, - } -} - -function getMaxX(points) { - // Measure the width of the line - let maxX = 0 - points.forEach( (point) => { - if (point.x > maxX) { - maxX = point.x - } - }) - return maxX -} - -export default class InputText extends Shape { - constructor() { - super('Text') - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'inputText', - inputText: 'Sandify', - inputFont: 'Cursive', - rotateDir: 'Center', - repeatEnabled: false - } - } - } - - getVertices(state) { - let points = [] - let prevLetter = '' - let x = 0.0 - let lines = [] - let textPoints = [] - - for (let chi = 0; chi < state.shape.inputText.length; chi++) { - var nextLetter = state.shape.inputText[chi] - if (prevLetter === 'b' || prevLetter === 'v' || prevLetter === 'o' || prevLetter === 'w') { - // Save this letter before we possibly add in a '*' - prevLetter = nextLetter - if (nextLetter.search('[a-z]+') !== -1 && state.shape.inputFont === 'Cursive') - { - nextLetter = nextLetter + '*' - } - } - else { - prevLetter = nextLetter - } - - if (nextLetter === '\n') { - // New line - lines.push(points) - points = [] - x = 0.0 - continue - } - - var shape = undefined - if (state.shape.inputFont === 'Cursive') { - shape = CursiveFont(nextLetter) - } else if (state.shape.inputFont === 'Sans Serif') { - shape = SansSerifFont(nextLetter) - } else if (state.shape.inputFont === 'Monospace') { - shape = MonospaceFont(nextLetter) - } else { - // Internal error, but I'm going to just recover - shape = CursiveFont(nextLetter) - } - - // TODO add in the "Kern" here. - for (let vi = 0; vi < shape.vertices.length; vi++) { - points.push(new Victor(shape.vertices[vi].x + x, shape.vertices[vi].y)) - } - x += shape.vertices[shape.vertices.length-1].x - } - // Save the last line we were working on. - lines.push(points) - - // The height of a row of text, including the space above. - const maxY = 2.4 - - if (state.shape.rotateDir === 'Center') { - // Starting Y offset - let y = (lines.length - 1) * maxY / 2.0 - - // Capture some wrap around points, to connect the lines. - let connectorPoints = [] - lines.forEach( (points) => { - let maxX = getMaxX(points) - let widthOffset = maxX / 2.0 - - // Add in the connector points (if we have any) - textPoints = [...textPoints, ...connectorPoints] - connectorPoints = [] - - // offset the line's vertices - textPoints = [...textPoints, ...points.map( (point) => { - return new Victor(point.x - widthOffset, point.y + y) - })] - - // Add in some points way off, so to wrap around for this line. - connectorPoints.push(new Victor(1e9, y)) - connectorPoints.push(new Victor(1e9, -1e9)) - connectorPoints.push(new Victor(-1e9, -1e9)) - y -= maxY - connectorPoints.push(new Victor(-1e9, y)) - }) - } else { - // This variable controls "Top" vs. "Bottom" - let direction = 1.0 - if (state.shape.rotateDir === 'Bottom') { - direction = -1.0 - lines.reverse() - } - - // Some constants to rotate the letters. - // - // The "lines" object contains lines of words, in vertices. - // The vertices are in X, Y, the X starts at 0, the Y goes between -something and +something. - // The middle of the word is about at Y=0. - // - // We want the words to follow around a circle. We want them to stay about the same size, as - // if they were plotted in a line. We want them to be centered. - // - // r is the radius, theta is the angle. - // rPerY is the multiplier to get from Y to r. - // thetaPerX is the multiplier to get from X to theta. - // - // The Max is based on how far away from the center we start. - // - // Offset is because we want to start the row far away from the center. - // - // thetaCenter is how far off from the theta=0 we start the words. - // - const maxRPerY = 0.8 - let rPerY = direction * maxRPerY - let thetaCenter = direction * Math.PI / 2.0 - const maxROffset = maxY * 2.0 - let rOffset = maxROffset - const rOffsetPerLine = rOffset / lines.length - let thetaPerX = -rPerY / rOffset - - // This captures the previous angle, so we can track around for the next line. - let lastTheta - - lines.forEach( (points) => { - - let maxX = getMaxX(points) - // This widthOffset is in X. - let widthOffset = maxX / 2.0 - - // Scale the size of the words to fit within one circle. - if (Math.PI * 2.0 < Math.abs(thetaPerX * maxX)) { - // We are going to roll all the way around - thetaPerX = direction * -Math.PI * 2.0 / maxX - rPerY = -thetaPerX * rOffset - } - - // Add in the connector points (if we have any) - if (lastTheta) { - let endTheta = thetaCenter + thetaPerX * -widthOffset - - // Get the Y value of the first point in the next (this) line. - let r = rOffset + rPerY * 0.0 - if (points.length > 0) { - r = rOffset + rPerY * points[0].y - } - - textPoints = [...textPoints, ...arc(r, lastTheta, endTheta)] - } - - // Transform the points and add them to textPoints. - textPoints = [...textPoints, ...points.map( (point) => { - const r = rOffset + rPerY * point.y - lastTheta = thetaCenter + thetaPerX * (point.x - widthOffset) - return new Victor(r * Math.cos(lastTheta), r * Math.sin(lastTheta)) - })] - - // Set up for the next line. - rOffset -= rOffsetPerLine - rPerY = direction * Math.sqrt(maxRPerY * rOffset / maxROffset) - thetaPerX = -rPerY / rOffset - }) - } - - const scale = 2.5 // to normalize starting size - textPoints.forEach(point => point.multiply({x: scale, y: scale })) - return textPoints - } - - getOptions() { - return options - } -} diff --git a/src/models/input_text/raysol_cursive.js b/src/models/input_text/raysol_cursive.js deleted file mode 100644 index 5f9a7fcc..00000000 --- a/src/models/input_text/raysol_cursive.js +++ /dev/null @@ -1,96 +0,0 @@ -export let raysol_cursive = { - ' ' : [ [0.000,-0.786], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], ], - '0' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.549,-0.786], [0.570,-0.779], [0.641,-0.741], [0.729,-0.673], [0.754,-0.642], [0.799,-0.548], [0.833,-0.422], [0.833,-0.317], [0.833,-0.211], [0.833,-0.106], [0.833,-0.001], [0.833,0.105], [0.833,0.210], [0.833,0.315], [0.833,0.421], [0.833,0.531], [0.810,0.599], [0.779,0.645], [0.749,0.690], [0.711,0.738], [0.629,0.786], [0.570,0.786], [0.513,0.786], [0.442,0.738], [0.374,0.690], [0.340,0.645], [0.315,0.599], [0.289,0.531], [0.289,0.422], [0.289,0.313], [0.289,0.204], [0.289,0.095], [0.289,-0.014], [0.289,-0.123], [0.289,-0.232], [0.289,-0.341], [0.289,-0.450], [0.315,-0.559], [0.351,-0.655], [0.388,-0.701], [0.449,-0.742], [0.489,-0.762], [0.549,-0.786], [0.655,-0.786], [0.731,-0.786], [0.816,-0.786], [0.901,-0.786], [0.986,-0.786], [1.071,-0.786], [1.156,-0.786], ], - '1' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.340,-0.629], [0.340,-0.472], [0.340,-0.315], [0.340,-0.157], [0.340,-0.000], [0.340,0.157], [0.340,0.314], [0.340,0.472], [0.340,0.629], [0.340,0.786], [0.340,0.629], [0.340,0.472], [0.340,0.314], [0.340,0.157], [0.340,-0.000], [0.340,-0.157], [0.340,-0.315], [0.340,-0.472], [0.340,-0.629], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], ], - '2' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.702], [0.442,-0.537], [0.544,-0.330], [0.624,-0.174], [0.660,0.032], [0.687,0.212], [0.698,0.295], [0.708,0.427], [0.714,0.514], [0.708,0.595], [0.690,0.659], [0.677,0.702], [0.663,0.726], [0.629,0.752], [0.587,0.769], [0.544,0.760], [0.493,0.744], [0.442,0.727], [0.374,0.701], [0.306,0.625], [0.247,0.574], [0.306,0.625], [0.374,0.701], [0.442,0.727], [0.493,0.744], [0.544,0.760], [0.587,0.769], [0.629,0.752], [0.663,0.726], [0.677,0.702], [0.690,0.659], [0.708,0.595], [0.714,0.514], [0.708,0.427], [0.698,0.295], [0.687,0.212], [0.660,0.032], [0.624,-0.174], [0.544,-0.330], [0.442,-0.537], [0.340,-0.702], [0.425,-0.701], [0.544,-0.633], [0.612,-0.599], [0.680,-0.574], [0.765,-0.591], [0.850,-0.616], [0.935,-0.667], [1.020,-0.744], [1.105,-0.786], ], - '3' : [ [0.085,-0.786], [0.170,-0.786], [0.272,-0.786], [0.330,-0.786], [0.405,-0.786], [0.442,-0.786], [0.493,-0.772], [0.559,-0.752], [0.612,-0.718], [0.648,-0.683], [0.677,-0.653], [0.707,-0.618], [0.731,-0.548], [0.764,-0.473], [0.782,-0.396], [0.784,-0.312], [0.775,-0.241], [0.765,-0.181], [0.751,-0.123], [0.700,-0.029], [0.620,0.021], [0.544,0.038], [0.425,0.056], [0.557,0.087], [0.586,0.111], [0.640,0.165], [0.697,0.234], [0.734,0.337], [0.749,0.431], [0.741,0.516], [0.726,0.600], [0.712,0.659], [0.672,0.740], [0.641,0.777], [0.586,0.786], [0.537,0.777], [0.485,0.769], [0.412,0.744], [0.331,0.710], [0.412,0.744], [0.485,0.769], [0.537,0.777], [0.586,0.786], [0.641,0.777], [0.672,0.740], [0.712,0.659], [0.726,0.600], [0.741,0.516], [0.749,0.431], [0.734,0.337], [0.697,0.234], [0.640,0.165], [0.586,0.111], [0.557,0.087], [0.484,0.056], [0.544,0.038], [0.620,0.021], [0.700,-0.029], [0.751,-0.123], [0.765,-0.181], [0.775,-0.241], [0.784,-0.312], [0.782,-0.396], [0.764,-0.473], [0.731,-0.548], [0.707,-0.618], [0.677,-0.653], [0.648,-0.683], [0.612,-0.718], [0.559,-0.752], [0.493,-0.772], [0.425,-0.761], [0.357,-0.744], [0.289,-0.718], [0.221,-0.616], [0.289,-0.718], [0.357,-0.744], [0.425,-0.761], [0.493,-0.772], [0.559,-0.752], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], ], - '4' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.765,-0.629], [0.765,-0.472], [0.765,-0.315], [0.765,-0.157], [0.765,-0.000], [0.765,0.157], [0.765,0.314], [0.765,0.472], [0.765,0.629], [0.765,0.786], [0.680,0.655], [0.595,0.524], [0.510,0.393], [0.425,0.262], [0.340,0.131], [0.255,-0.000], [0.356,-0.000], [0.457,-0.000], [0.558,-0.000], [0.659,-0.000], [0.760,-0.000], [0.861,-0.000], [0.962,-0.000], [1.062,-0.000], [1.139,-0.000], [1.062,-0.000], [0.962,-0.000], [0.861,-0.000], [0.760,-0.000], [0.765,-0.157], [0.765,-0.315], [0.765,-0.472], [0.765,-0.629], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.275,-0.786], [1.360,-0.786], ], - '5' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.438,-0.786], [0.520,-0.786], [0.607,-0.786], [0.659,-0.783], [0.730,-0.749], [0.796,-0.698], [0.853,-0.612], [0.884,-0.497], [0.892,-0.319], [0.887,-0.167], [0.850,-0.064], [0.795,0.038], [0.744,0.100], [0.680,0.122], [0.608,0.144], [0.540,0.123], [0.441,0.081], [0.378,0.043], [0.302,-0.014], [0.302,0.145], [0.302,0.303], [0.302,0.461], [0.302,0.619], [0.302,0.727], [0.359,0.727], [0.415,0.727], [0.471,0.727], [0.528,0.727], [0.584,0.727], [0.640,0.727], [0.731,0.727], [0.850,0.727], [0.731,0.727], [0.640,0.727], [0.584,0.727], [0.528,0.727], [0.471,0.727], [0.415,0.727], [0.359,0.727], [0.302,0.727], [0.302,0.619], [0.302,0.461], [0.302,0.303], [0.302,0.145], [0.302,-0.014], [0.378,0.043], [0.441,0.081], [0.540,0.123], [0.608,0.144], [0.680,0.122], [0.744,0.100], [0.795,0.038], [0.850,-0.064], [0.887,-0.167], [0.892,-0.319], [0.884,-0.497], [0.853,-0.612], [0.796,-0.698], [0.730,-0.749], [0.659,-0.783], [0.607,-0.786], [0.520,-0.786], [0.425,-0.752], [0.357,-0.701], [0.289,-0.616], [0.238,-0.531], [0.187,-0.489], [0.153,-0.472], [0.187,-0.489], [0.238,-0.531], [0.289,-0.616], [0.357,-0.701], [0.425,-0.752], [0.520,-0.786], [0.607,-0.786], [0.659,-0.786], [0.816,-0.786], [0.901,-0.786], [0.986,-0.786], [1.071,-0.786], [1.156,-0.786], [1.241,-0.786], [1.326,-0.786], ], - '6' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.449,-0.742], [0.489,-0.762], [0.549,-0.786], [0.655,-0.779], [0.726,-0.741], [0.814,-0.673], [0.839,-0.642], [0.866,-0.607], [0.924,-0.422], [0.926,-0.323], [0.911,-0.213], [0.895,-0.168], [0.864,-0.099], [0.834,-0.053], [0.796,-0.005], [0.720,0.034], [0.619,0.042], [0.557,0.034], [0.513,0.025], [0.453,-0.002], [0.332,-0.071], [0.373,0.033], [0.414,0.137], [0.455,0.241], [0.496,0.345], [0.538,0.449], [0.579,0.553], [0.620,0.657], [0.661,0.761], [0.620,0.657], [0.579,0.553], [0.538,0.449], [0.496,0.345], [0.455,0.241], [0.414,0.137], [0.373,0.033], [0.332,-0.071], [0.276,-0.200], [0.263,-0.274], [0.255,-0.347], [0.274,-0.489], [0.306,-0.559], [0.351,-0.655], [0.391,-0.701], [0.489,-0.762], [0.549,-0.786], [0.655,-0.779], [0.731,-0.786], [0.816,-0.786], [0.901,-0.786], [0.986,-0.786], [1.071,-0.786], [1.156,-0.786], ], - '7' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.391,-0.629], [0.442,-0.472], [0.493,-0.315], [0.544,-0.157], [0.595,-0.000], [0.646,0.157], [0.697,0.314], [0.748,0.472], [0.799,0.629], [0.850,0.786], [0.776,0.786], [0.701,0.786], [0.627,0.786], [0.552,0.786], [0.478,0.786], [0.404,0.786], [0.329,0.786], [0.255,0.786], [0.329,0.786], [0.404,0.786], [0.478,0.786], [0.552,0.786], [0.627,0.786], [0.701,0.786], [0.776,0.786], [0.850,0.786], [0.799,0.629], [0.748,0.472], [0.697,0.314], [0.646,0.157], [0.595,-0.000], [0.544,-0.157], [0.493,-0.315], [0.442,-0.472], [0.391,-0.629], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], ], - '8' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.556,-0.784], [0.618,-0.786], [0.695,-0.763], [0.756,-0.733], [0.795,-0.664], [0.853,-0.560], [0.878,-0.429], [0.870,-0.334], [0.846,-0.267], [0.797,-0.132], [0.740,-0.033], [0.674,0.065], [0.643,0.098], [0.611,0.132], [0.561,0.166], [0.527,0.200], [0.493,0.247], [0.459,0.293], [0.425,0.361], [0.391,0.446], [0.408,0.545], [0.459,0.644], [0.510,0.701], [0.570,0.734], [0.643,0.760], [0.716,0.734], [0.777,0.701], [0.828,0.644], [0.879,0.545], [0.896,0.446], [0.862,0.361], [0.828,0.293], [0.794,0.247], [0.760,0.200], [0.726,0.166], [0.676,0.132], [0.579,0.098], [0.548,0.065], [0.481,-0.033], [0.425,-0.132], [0.376,-0.267], [0.352,-0.334], [0.344,-0.429], [0.369,-0.560], [0.427,-0.664], [0.466,-0.733], [0.527,-0.763], [0.603,-0.786], [0.666,-0.784], [0.695,-0.763], [0.756,-0.733], [0.795,-0.664], [0.853,-0.560], [0.878,-0.429], [0.870,-0.334], [0.846,-0.267], [0.797,-0.132], [0.740,-0.033], [0.797,-0.132], [0.846,-0.267], [0.870,-0.334], [0.878,-0.429], [0.853,-0.560], [0.795,-0.664], [0.756,-0.733], [0.695,-0.763], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], ], - '9' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.714,-0.786], [0.717,-0.612], [0.717,-0.455], [0.717,-0.297], [0.717,-0.139], [0.717,0.019], [0.717,0.177], [0.717,0.335], [0.717,0.493], [0.717,0.650], [0.717,0.786], [0.648,0.786], [0.521,0.786], [0.415,0.744], [0.340,0.659], [0.306,0.523], [0.292,0.364], [0.299,0.230], [0.317,0.147], [0.339,0.086], [0.387,-0.030], [0.442,-0.063], [0.509,-0.055], [0.558,-0.030], [0.618,-0.004], [0.663,0.013], [0.717,0.019], [0.717,-0.139], [0.717,-0.297], [0.717,-0.455], [0.717,-0.612], [0.714,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], ], - 'A' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.459,-0.781], [0.534,-0.759], [0.623,-0.711], [0.715,-0.601], [0.793,-0.507], [0.715,-0.601], [0.623,-0.711], [0.534,-0.759], [0.459,-0.781], [0.383,-0.743], [0.308,-0.661], [0.250,-0.586], [0.206,-0.475], [0.173,-0.322], [0.170,-0.191], [0.187,-0.003], [0.227,0.147], [0.284,0.286], [0.339,0.375], [0.435,0.509], [0.521,0.596], [0.637,0.685], [0.790,0.761], [0.865,0.786], [0.863,0.706], [0.861,0.583], [0.859,0.460], [0.857,0.337], [0.855,0.213], [0.853,0.090], [0.851,-0.033], [0.849,-0.156], [0.848,-0.280], [0.846,-0.403], [0.847,-0.466], [0.868,-0.563], [0.954,-0.635], [1.033,-0.701], [1.109,-0.744], [1.213,-0.786], ], - 'B' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.255,-0.629], [0.255,-0.471], [0.255,-0.313], [0.255,-0.155], [0.255,0.002], [0.255,0.160], [0.255,0.318], [0.255,0.476], [0.255,0.633], [0.281,0.659], [0.327,0.701], [0.380,0.744], [0.445,0.773], [0.501,0.777], [0.552,0.777], [0.589,0.761], [0.646,0.726], [0.699,0.680], [0.733,0.630], [0.764,0.556], [0.761,0.455], [0.748,0.389], [0.723,0.285], [0.689,0.191], [0.621,0.106], [0.517,0.064], [0.476,0.064], [0.517,0.064], [0.596,0.025], [0.650,-0.037], [0.680,-0.062], [0.748,-0.148], [0.791,-0.248], [0.809,-0.312], [0.814,-0.452], [0.811,-0.490], [0.796,-0.566], [0.780,-0.620], [0.697,-0.718], [0.622,-0.762], [0.572,-0.786], [0.476,-0.786], [0.374,-0.786], [0.255,-0.786], [0.374,-0.786], [0.476,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], ], - 'C' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.752], [0.459,-0.693], [0.397,-0.605], [0.357,-0.548], [0.332,-0.452], [0.306,-0.327], [0.298,-0.208], [0.298,-0.106], [0.298,0.016], [0.318,0.183], [0.338,0.310], [0.385,0.442], [0.462,0.585], [0.548,0.675], [0.652,0.746], [0.776,0.786], [0.872,0.767], [0.963,0.643], [1.019,0.491], [1.040,0.351], [1.019,0.491], [0.963,0.643], [0.872,0.767], [0.776,0.786], [0.652,0.746], [0.548,0.675], [0.462,0.585], [0.385,0.442], [0.338,0.310], [0.318,0.183], [0.298,0.016], [0.298,-0.106], [0.298,-0.208], [0.306,-0.327], [0.332,-0.452], [0.397,-0.605], [0.459,-0.693], [0.544,-0.748], [0.682,-0.786], [0.777,-0.786], [0.850,-0.786], [0.884,-0.786], [0.953,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.275,-0.786], ], - 'D' : [ [0.123,-0.786], [0.213,-0.786], [0.321,-0.786], [0.401,-0.786], [0.465,-0.786], [0.544,-0.786], [0.639,-0.786], [0.772,-0.764], [0.918,-0.711], [0.955,-0.676], [1.020,-0.592], [1.072,-0.460], [1.090,-0.357], [1.104,-0.199], [1.103,-0.111], [1.082,0.035], [1.062,0.183], [1.037,0.271], [1.009,0.356], [0.982,0.435], [0.899,0.546], [0.816,0.633], [0.748,0.684], [0.646,0.741], [0.566,0.766], [0.496,0.761], [0.425,0.733], [0.425,0.604], [0.425,0.526], [0.425,0.343], [0.425,0.149], [0.425,-0.030], [0.425,-0.156], [0.425,-0.442], [0.425,-0.544], [0.425,-0.701], [0.465,-0.786], [0.544,-0.786], [0.639,-0.786], [0.748,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.275,-0.786], [1.360,-0.786], ], - 'E' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.701], [0.381,-0.614], [0.317,-0.487], [0.277,-0.361], [0.274,-0.221], [0.309,-0.157], [0.356,-0.115], [0.405,-0.072], [0.493,-0.030], [0.563,0.006], [0.629,0.027], [0.714,0.027], [0.629,0.027], [0.570,0.064], [0.509,0.120], [0.474,0.143], [0.386,0.229], [0.331,0.313], [0.291,0.438], [0.293,0.552], [0.320,0.660], [0.383,0.743], [0.478,0.786], [0.564,0.786], [0.629,0.786], [0.675,0.786], [0.723,0.786], [0.799,0.786], [0.723,0.786], [0.675,0.786], [0.629,0.786], [0.564,0.786], [0.478,0.786], [0.383,0.743], [0.320,0.660], [0.293,0.552], [0.291,0.438], [0.331,0.313], [0.386,0.229], [0.474,0.143], [0.509,0.120], [0.570,0.064], [0.629,0.027], [0.714,0.027], [0.629,0.027], [0.563,0.006], [0.493,-0.030], [0.405,-0.072], [0.356,-0.115], [0.309,-0.157], [0.274,-0.221], [0.277,-0.361], [0.317,-0.487], [0.381,-0.614], [0.443,-0.698], [0.500,-0.735], [0.583,-0.769], [0.695,-0.781], [0.786,-0.780], [0.864,-0.780], [0.935,-0.779], ], - 'F' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.578,-0.786], [0.663,-0.786], [0.724,-0.767], [0.792,-0.699], [0.852,-0.558], [0.853,-0.440], [0.854,-0.321], [0.855,-0.203], [0.856,-0.085], [0.857,0.034], [0.858,0.152], [0.859,0.270], [0.860,0.389], [0.861,0.507], [0.863,0.625], [0.969,0.608], [1.076,0.588], [1.173,0.616], [1.282,0.654], [1.394,0.701], [1.282,0.654], [1.173,0.616], [1.076,0.588], [0.969,0.608], [0.863,0.625], [0.763,0.663], [0.633,0.713], [0.466,0.713], [0.317,0.628], [0.247,0.404], [0.317,0.628], [0.466,0.713], [0.633,0.713], [0.763,0.663], [0.863,0.625], [0.861,0.507], [0.860,0.389], [0.859,0.270], [0.858,0.152], [0.857,0.034], [0.742,0.037], [0.631,0.054], [0.442,0.071], [0.631,0.054], [0.742,0.037], [0.857,0.034], [0.960,0.035], [1.075,0.043], [1.224,0.052], [1.075,0.043], [0.960,0.035], [0.857,0.034], [0.856,-0.085], [0.855,-0.203], [0.854,-0.321], [0.854,-0.395], [0.850,-0.506], [0.852,-0.558], [0.833,-0.650], [0.773,-0.713], [0.663,-0.769], [0.591,-0.766], [0.564,-0.774], [0.537,-0.774], [0.501,-0.766], [0.452,-0.701], [0.420,-0.650], [0.413,-0.583], [0.422,-0.519], [0.474,-0.465], [0.511,-0.442], [0.573,-0.438], [0.653,-0.442], [0.740,-0.496], [0.866,-0.616], [0.927,-0.687], [1.035,-0.756], [1.079,-0.803], [1.211,-0.837], [1.310,-0.829], [1.406,-0.820], [1.491,-0.786], ], - 'G' : [ [0.085,-0.786], [0.171,-0.761], [0.245,-0.712], [0.316,-0.660], [0.389,-0.609], [0.489,-0.507], [0.573,-0.398], [0.610,-0.341], [0.658,-0.254], [0.708,-0.125], [0.757,0.004], [0.782,0.082], [0.819,0.177], [0.837,0.274], [0.857,0.392], [0.880,0.508], [0.884,0.597], [0.881,0.711], [0.842,0.799], [0.762,0.772], [0.720,0.745], [0.697,0.705], [0.640,0.590], [0.631,0.560], [0.612,0.445], [0.607,0.395], [0.628,0.243], [0.653,0.178], [0.695,0.088], [0.834,-0.031], [0.931,-0.028], [1.047,0.038], [1.117,0.106], [1.179,0.236], [1.262,0.405], [1.246,0.225], [1.209,-0.096], [1.181,-0.235], [1.140,-0.389], [1.103,-0.495], [1.032,-0.625], [0.956,-0.707], [0.865,-0.758], [0.770,-0.787], [0.681,-0.782], [0.598,-0.762], [0.500,-0.710], [0.455,-0.632], [0.427,-0.556], [0.380,-0.481], [0.324,-0.330], [0.465,-0.389], [0.637,-0.468], [0.784,-0.548], [0.909,-0.586], [1.032,-0.625], [1.141,-0.663], [1.245,-0.677], [1.351,-0.699], [1.489,-0.744], [1.611,-0.786], ], - 'H' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.496,-0.786], [0.496,-0.609], [0.496,-0.479], [0.496,-0.348], [0.496,-0.217], [0.496,-0.086], [0.496,0.044], [0.496,0.175], [0.496,0.306], [0.496,0.404], [0.496,0.508], [0.476,0.604], [0.453,0.687], [0.391,0.744], [0.272,0.786], [0.391,0.744], [0.453,0.687], [0.476,0.604], [0.496,0.508], [0.496,0.404], [0.496,0.306], [0.496,0.175], [0.496,0.044], [0.635,0.071], [0.774,0.097], [0.913,0.123], [1.051,0.149], [1.105,0.175], [1.105,0.306], [1.105,0.404], [1.105,0.508], [1.105,0.616], [1.122,0.701], [1.165,0.760], [1.275,0.786], [1.165,0.760], [1.122,0.701], [1.105,0.616], [1.105,0.508], [1.105,0.404], [1.105,0.306], [1.105,0.175], [1.105,0.044], [1.105,-0.086], [1.105,-0.217], [1.105,-0.348], [1.105,-0.479], [1.105,-0.609], [1.139,-0.701], [1.190,-0.761], [1.275,-0.778], [1.360,-0.786], [1.445,-0.786], [1.530,-0.786], ], - 'I' : [ [0.085,-0.786], [0.170,-0.786], [0.289,-0.786], [0.425,-0.786], [0.515,-0.773], [0.596,-0.794], [0.685,-0.801], [0.782,-0.773], [0.838,-0.602], [0.914,-0.473], [0.876,-0.349], [0.832,-0.152], [0.789,0.006], [0.773,0.196], [0.765,0.298], [0.773,0.517], [0.799,0.650], [0.833,0.740], [0.884,0.802], [1.020,0.804], [1.071,0.800], [1.120,0.702], [1.151,0.628], [1.189,0.387], [1.198,0.208], [1.180,-0.065], [1.165,-0.166], [1.100,-0.403], [1.046,-0.509], [1.007,-0.577], [0.899,-0.681], [0.782,-0.773], [0.685,-0.801], [0.596,-0.794], [0.515,-0.773], [0.420,-0.719], [0.381,-0.640], [0.357,-0.564], [0.317,-0.488], [0.271,-0.336], [0.408,-0.397], [0.574,-0.479], [0.716,-0.562], [0.838,-0.602], [0.958,-0.643], [1.064,-0.683], [1.168,-0.699], [1.271,-0.722], [1.408,-0.761], [1.529,-0.786], ], - 'J' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.457,-0.733], [0.593,-0.715], [0.428,-0.508], [0.343,-0.336], [0.301,-0.096], [0.292,0.057], [0.286,0.286], [0.316,0.532], [0.382,0.703], [0.439,0.754], [0.506,0.780], [0.591,0.790], [0.690,0.782], [0.734,0.739], [0.789,0.616], [0.802,0.553], [0.814,0.386], [0.818,0.209], [0.808,-0.059], [0.799,-0.253], [0.787,-0.441], [0.780,-0.614], [0.767,-0.807], [0.752,-0.952], [0.760,-1.127], [0.737,-1.292], [0.712,-1.438], [0.661,-1.505], [0.604,-1.531], [0.426,-1.533], [0.365,-1.508], [0.310,-1.439], [0.298,-1.296], [0.310,-1.143], [0.346,-0.955], [0.397,-0.844], [0.457,-0.733], [0.588,-0.715], [0.675,-0.731], [0.762,-0.748], [0.849,-0.764], [0.935,-0.780], [1.021,-0.779], [1.106,-0.779], [1.188,-0.786], ], - 'K' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.540,-0.627], [0.551,-0.494], [0.562,-0.360], [0.574,-0.227], [0.585,-0.094], [0.596,0.040], [0.580,0.158], [0.563,0.276], [0.547,0.393], [0.530,0.511], [0.514,0.629], [0.497,0.747], [0.442,0.744], [0.382,0.736], [0.317,0.679], [0.268,0.607], [0.223,0.532], [0.268,0.607], [0.317,0.679], [0.382,0.736], [0.442,0.744], [0.497,0.747], [0.514,0.629], [0.530,0.511], [0.547,0.393], [0.563,0.276], [0.580,0.158], [0.596,0.040], [0.689,0.087], [0.752,0.165], [0.815,0.242], [0.878,0.320], [0.941,0.397], [1.004,0.475], [1.067,0.553], [1.130,0.630], [1.149,0.740], [1.130,0.630], [1.067,0.553], [1.004,0.475], [0.941,0.397], [0.878,0.320], [0.815,0.242], [0.752,0.165], [0.689,0.087], [0.626,0.010], [0.675,-0.067], [0.725,-0.143], [0.775,-0.219], [0.825,-0.295], [0.875,-0.371], [0.925,-0.448], [0.974,-0.524], [1.024,-0.600], [1.074,-0.676], [1.124,-0.761], [1.220,-0.786], [1.299,-0.786], [1.363,-0.786], [1.442,-0.786], [1.526,-0.786], ], - 'L' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.323,-0.778], [0.370,-0.766], [0.406,-0.774], [0.433,-0.774], [0.460,-0.766], [0.520,-0.743], [0.558,-0.713], [0.629,-0.650], [0.681,-0.570], [0.717,-0.506], [0.723,-0.395], [0.739,-0.305], [0.748,-0.179], [0.751,-0.045], [0.743,0.148], [0.741,0.224], [0.757,0.263], [0.749,0.353], [0.776,0.537], [0.788,0.600], [0.824,0.711], [0.872,0.783], [0.894,0.827], [0.968,0.850], [1.027,0.795], [1.061,0.723], [1.082,0.596], [1.071,0.517], [1.050,0.464], [0.971,0.366], [0.940,0.343], [0.848,0.288], [0.808,0.275], [0.660,0.257], [0.624,0.259], [0.500,0.288], [0.386,0.343], [0.285,0.410], [0.386,0.343], [0.500,0.288], [0.624,0.259], [0.660,0.257], [0.808,0.275], [0.848,0.288], [0.940,0.343], [0.971,0.366], [1.050,0.464], [1.071,0.517], [1.082,0.596], [1.061,0.723], [1.027,0.795], [0.968,0.850], [0.894,0.827], [0.872,0.783], [0.824,0.711], [0.788,0.600], [0.776,0.537], [0.749,0.353], [0.757,0.263], [0.741,0.224], [0.743,0.148], [0.751,-0.045], [0.748,-0.179], [0.739,-0.305], [0.723,-0.395], [0.717,-0.506], [0.681,-0.570], [0.629,-0.650], [0.558,-0.713], [0.520,-0.743], [0.460,-0.766], [0.433,-0.774], [0.406,-0.774], [0.370,-0.766], [0.320,-0.701], [0.289,-0.650], [0.282,-0.583], [0.291,-0.519], [0.343,-0.465], [0.379,-0.442], [0.442,-0.438], [0.521,-0.442], [0.609,-0.496], [0.734,-0.616], [0.796,-0.687], [0.904,-0.756], [0.948,-0.786], [1.080,-0.786], [1.179,-0.786], [1.275,-0.786], [1.360,-0.786], ], - 'M' : [ [0.085,-0.786], [0.213,-0.786], [0.340,-0.786], [0.468,-0.786], [0.583,-0.736], [0.593,-0.622], [0.603,-0.507], [0.613,-0.393], [0.623,-0.278], [0.633,-0.164], [0.643,-0.049], [0.653,0.065], [0.663,0.180], [0.673,0.294], [0.683,0.409], [0.655,0.534], [0.628,0.634], [0.592,0.749], [0.500,0.795], [0.412,0.754], [0.321,0.685], [0.238,0.576], [0.321,0.685], [0.412,0.754], [0.500,0.795], [0.592,0.749], [0.628,0.634], [0.655,0.534], [0.683,0.409], [0.673,0.294], [0.663,0.180], [0.653,0.065], [0.643,-0.049], [0.633,-0.164], [0.623,-0.278], [0.613,-0.393], [0.603,-0.507], [0.593,-0.622], [0.583,-0.736], [0.593,-0.622], [0.603,-0.507], [0.613,-0.393], [0.623,-0.278], [0.633,-0.164], [0.643,-0.049], [0.653,0.065], [0.663,0.180], [0.673,0.294], [0.683,0.409], [0.727,0.575], [0.800,0.719], [0.921,0.793], [1.057,0.807], [1.122,0.730], [1.162,0.644], [1.188,0.569], [1.233,0.406], [1.223,0.292], [1.214,0.178], [1.205,0.063], [1.196,-0.051], [1.187,-0.166], [1.177,-0.280], [1.168,-0.394], [1.159,-0.509], [1.150,-0.623], [1.140,-0.737], [1.150,-0.623], [1.159,-0.509], [1.168,-0.394], [1.177,-0.280], [1.187,-0.166], [1.196,-0.051], [1.205,0.063], [1.214,0.178], [1.223,0.292], [1.233,0.406], [1.281,0.599], [1.354,0.743], [1.398,0.797], [1.480,0.835], [1.620,0.831], [1.673,0.767], [1.711,0.694], [1.737,0.619], [1.750,0.543], [1.747,0.420], [1.743,0.297], [1.740,0.174], [1.737,0.051], [1.733,-0.072], [1.730,-0.195], [1.726,-0.318], [1.723,-0.441], [1.719,-0.564], [1.716,-0.687], [1.815,-0.746], [1.921,-0.786], [2.001,-0.786], [2.085,-0.786], [2.186,-0.786], ], - 'N' : [ [0.128,-0.786], [0.255,-0.786], [0.425,-0.786], [0.568,-0.765], [0.577,-0.710], [0.580,-0.603], [0.584,-0.497], [0.587,-0.390], [0.590,-0.283], [0.593,-0.177], [0.597,-0.070], [0.600,0.037], [0.603,0.143], [0.607,0.250], [0.610,0.357], [0.582,0.537], [0.557,0.637], [0.528,0.747], [0.471,0.804], [0.406,0.800], [0.333,0.745], [0.282,0.665], [0.234,0.577], [0.282,0.665], [0.333,0.745], [0.406,0.800], [0.471,0.804], [0.528,0.747], [0.557,0.637], [0.582,0.537], [0.610,0.357], [0.607,0.250], [0.603,0.143], [0.600,0.037], [0.597,-0.070], [0.593,-0.177], [0.590,-0.283], [0.587,-0.390], [0.584,-0.497], [0.580,-0.603], [0.577,-0.710], [0.568,-0.765], [0.577,-0.710], [0.580,-0.603], [0.584,-0.497], [0.587,-0.390], [0.590,-0.283], [0.593,-0.177], [0.597,-0.070], [0.600,0.037], [0.603,0.143], [0.607,0.250], [0.610,0.357], [0.635,0.471], [0.659,0.604], [0.712,0.723], [0.759,0.795], [0.841,0.825], [0.947,0.826], [1.010,0.775], [1.078,0.692], [1.108,0.617], [1.130,0.465], [1.141,0.300], [1.141,0.199], [1.140,0.099], [1.139,-0.001], [1.138,-0.101], [1.137,-0.201], [1.136,-0.302], [1.136,-0.402], [1.135,-0.502], [1.134,-0.602], [1.133,-0.703], [1.197,-0.754], [1.234,-0.786], [1.306,-0.786], [1.355,-0.786], [1.420,-0.786], [1.505,-0.786], ], - 'O' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.565,-0.770], [0.621,-0.775], [0.714,-0.769], [0.806,-0.733], [0.867,-0.701], [0.912,-0.644], [0.959,-0.587], [1.028,-0.429], [1.061,-0.246], [1.067,-0.145], [1.065,0.024], [1.046,0.265], [1.037,0.379], [0.986,0.518], [0.918,0.668], [0.782,0.786], [0.714,0.786], [0.649,0.760], [0.572,0.699], [0.502,0.656], [0.435,0.572], [0.380,0.494], [0.332,0.378], [0.295,0.296], [0.271,0.169], [0.255,0.064], [0.255,-0.026], [0.255,-0.106], [0.266,-0.206], [0.307,-0.371], [0.340,-0.446], [0.373,-0.519], [0.417,-0.592], [0.451,-0.668], [0.509,-0.727], [0.565,-0.770], [0.621,-0.775], [0.714,-0.769], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.275,-0.786], [1.360,-0.786], [1.445,-0.786], ], - 'P' : [ [0.085,-0.786], [0.170,-0.786], [0.238,-0.786], [0.289,-0.786], [0.289,-0.641], [0.289,-0.495], [0.289,-0.349], [0.289,-0.204], [0.289,-0.058], [0.314,-0.055], [0.410,-0.085], [0.476,-0.099], [0.603,-0.071], [0.676,-0.039], [0.777,0.051], [0.800,0.075], [0.856,0.217], [0.862,0.248], [0.866,0.337], [0.862,0.388], [0.856,0.463], [0.829,0.525], [0.776,0.636], [0.749,0.673], [0.688,0.748], [0.655,0.772], [0.603,0.786], [0.561,0.786], [0.493,0.769], [0.439,0.737], [0.400,0.701], [0.354,0.651], [0.323,0.599], [0.289,0.525], [0.289,0.379], [0.289,0.234], [0.289,0.088], [0.289,-0.058], [0.289,-0.204], [0.289,-0.349], [0.289,-0.495], [0.289,-0.641], [0.289,-0.786], [0.374,-0.786], [0.459,-0.786], [0.544,-0.786], [0.629,-0.786], [0.714,-0.786], [0.799,-0.786], [0.884,-0.786], [0.969,-0.786], [1.020,-0.786], [1.105,-0.786], ], - 'Q' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.621,-0.786], [0.565,-0.770], [0.509,-0.727], [0.451,-0.668], [0.417,-0.592], [0.373,-0.519], [0.340,-0.446], [0.307,-0.371], [0.266,-0.206], [0.255,-0.106], [0.255,-0.026], [0.255,0.064], [0.271,0.169], [0.295,0.296], [0.332,0.378], [0.380,0.494], [0.435,0.572], [0.502,0.656], [0.572,0.710], [0.649,0.760], [0.714,0.786], [0.816,0.777], [0.918,0.668], [0.986,0.518], [1.037,0.379], [1.062,0.191], [1.065,0.024], [1.067,-0.145], [1.061,-0.246], [1.028,-0.429], [0.959,-0.587], [0.912,-0.644], [0.867,-0.701], [0.806,-0.733], [0.714,-0.769], [0.621,-0.786], [0.565,-0.770], [0.509,-0.727], [0.451,-0.668], [0.417,-0.592], [0.443,-0.531], [0.479,-0.481], [0.550,-0.430], [0.674,-0.430], [0.773,-0.472], [0.860,-0.532], [0.914,-0.595], [1.011,-0.667], [1.092,-0.732], [1.182,-0.786], [1.260,-0.786], [1.351,-0.786], ], - 'R' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.323,-0.786], [0.408,-0.786], [0.408,-0.640], [0.408,-0.494], [0.408,-0.348], [0.408,-0.201], [0.408,-0.055], [0.408,0.091], [0.408,0.237], [0.408,0.384], [0.408,0.530], [0.408,0.727], [0.480,0.744], [0.552,0.744], [0.648,0.744], [0.731,0.744], [0.816,0.744], [0.895,0.703], [0.966,0.616], [1.005,0.544], [1.026,0.494], [1.054,0.378], [1.051,0.276], [1.036,0.191], [0.998,0.132], [0.940,0.069], [0.850,0.004], [0.738,-0.016], [0.629,-0.030], [0.561,-0.034], [0.509,-0.037], [0.433,-0.032], [0.450,-0.091], [0.527,-0.191], [0.595,-0.319], [0.655,-0.400], [0.681,-0.437], [0.719,-0.487], [0.757,-0.536], [0.795,-0.585], [0.850,-0.650], [0.892,-0.710], [0.932,-0.769], [0.969,-0.803], [1.008,-0.820], [1.082,-0.829], [1.131,-0.820], [1.190,-0.786], [1.275,-0.786], ], - 'S' : [ [0.085,-0.786], [0.170,-0.786], [0.238,-0.761], [0.306,-0.718], [0.357,-0.676], [0.391,-0.599], [0.433,-0.497], [0.493,-0.327], [0.544,-0.191], [0.620,-0.064], [0.689,0.064], [0.790,0.154], [0.833,0.234], [0.876,0.335], [0.909,0.429], [0.919,0.520], [0.922,0.614], [0.905,0.690], [0.871,0.749], [0.825,0.777], [0.739,0.786], [0.654,0.777], [0.584,0.760], [0.549,0.734], [0.525,0.681], [0.514,0.605], [0.507,0.548], [0.509,0.463], [0.517,0.404], [0.544,0.306], [0.587,0.174], [0.689,0.064], [0.790,-0.021], [0.872,-0.190], [0.944,-0.302], [0.918,-0.440], [0.884,-0.506], [0.850,-0.574], [0.765,-0.684], [0.680,-0.748], [0.579,-0.761], [0.519,-0.766], [0.476,-0.774], [0.425,-0.774], [0.344,-0.766], [0.298,-0.718], [0.264,-0.650], [0.256,-0.583], [0.265,-0.519], [0.313,-0.465], [0.354,-0.442], [0.423,-0.429], [0.501,-0.429], [0.581,-0.442], [0.669,-0.496], [0.794,-0.616], [0.855,-0.687], [0.963,-0.756], [1.046,-0.803], [1.140,-0.837], [1.239,-0.829], [1.335,-0.786], ], - 'T' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.440,-0.786], [0.514,-0.786], [0.578,-0.769], [0.621,-0.750], [0.683,-0.702], [0.717,-0.659], [0.759,-0.567], [0.790,-0.489], [0.809,-0.361], [0.820,-0.229], [0.830,-0.097], [0.840,0.035], [0.851,0.168], [0.861,0.300], [0.871,0.432], [0.882,0.564], [0.882,0.697], [0.920,0.681], [0.986,0.659], [1.052,0.655], [1.123,0.659], [1.188,0.681], [1.275,0.718], [1.394,0.759], [1.275,0.718], [1.188,0.681], [1.123,0.659], [1.052,0.655], [0.986,0.659], [0.920,0.681], [0.882,0.697], [0.785,0.730], [0.731,0.747], [0.679,0.762], [0.595,0.769], [0.471,0.728], [0.340,0.652], [0.471,0.728], [0.595,0.769], [0.679,0.762], [0.731,0.747], [0.785,0.730], [0.882,0.697], [0.882,0.564], [0.871,0.432], [0.861,0.300], [0.851,0.168], [0.840,0.035], [0.830,-0.097], [0.820,-0.229], [0.809,-0.361], [0.790,-0.489], [0.579,-0.761], [0.519,-0.766], [0.476,-0.774], [0.425,-0.774], [0.344,-0.766], [0.298,-0.718], [0.264,-0.650], [0.256,-0.583], [0.265,-0.519], [0.313,-0.465], [0.354,-0.442], [0.423,-0.429], [0.501,-0.429], [0.581,-0.442], [0.669,-0.496], [0.794,-0.616], [0.855,-0.687], [0.963,-0.756], [1.046,-0.803], [1.140,-0.837], [1.239,-0.829], [1.335,-0.820], [1.419,-0.803], [1.504,-0.786], [1.589,-0.786], ], - 'U' : [ [0.085,-0.786], [0.170,-0.785], [0.255,-0.783], [0.340,-0.781], [0.421,-0.745], [0.502,-0.709], [0.549,-0.661], [0.521,-0.621], [0.492,-0.535], [0.487,-0.355], [0.503,-0.237], [0.518,-0.119], [0.534,-0.001], [0.549,0.117], [0.565,0.234], [0.581,0.352], [0.596,0.470], [0.612,0.588], [0.594,0.643], [0.539,0.730], [0.499,0.755], [0.403,0.729], [0.349,0.658], [0.289,0.554], [0.252,0.493], [0.195,0.440], [0.252,0.493], [0.289,0.554], [0.349,0.658], [0.403,0.729], [0.499,0.755], [0.539,0.730], [0.594,0.643], [0.612,0.588], [0.596,0.470], [0.581,0.352], [0.565,0.234], [0.549,0.117], [0.534,-0.001], [0.518,-0.119], [0.503,-0.237], [0.487,-0.355], [0.492,-0.535], [0.521,-0.621], [0.549,-0.661], [0.591,-0.715], [0.678,-0.759], [0.764,-0.770], [0.837,-0.738], [0.902,-0.687], [0.936,-0.651], [0.967,-0.594], [1.005,-0.551], [1.061,-0.494], [1.073,-0.316], [1.088,-0.195], [1.103,-0.073], [1.117,0.049], [1.132,0.170], [1.147,0.292], [1.162,0.413], [1.177,0.535], [1.192,0.657], [1.217,0.817], [1.192,0.657], [1.177,0.535], [1.162,0.413], [1.147,0.292], [1.132,0.170], [1.117,0.049], [1.103,-0.073], [1.088,-0.195], [1.073,-0.316], [1.066,-0.418], [1.061,-0.494], [1.073,-0.609], [1.096,-0.659], [1.126,-0.710], [1.202,-0.752], [1.275,-0.761], [1.357,-0.786], [1.442,-0.786], [1.530,-0.786], ], - 'V' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.778], [0.425,-0.769], [0.510,-0.744], [0.595,-0.718], [0.646,-0.659], [0.682,-0.590], [0.717,-0.650], [0.751,-0.689], [0.790,-0.735], [0.867,-0.786], [0.969,-0.761], [1.022,-0.716], [1.085,-0.571], [1.118,-0.425], [1.135,-0.300], [1.152,-0.175], [1.169,-0.049], [1.186,0.076], [1.202,0.202], [1.219,0.327], [1.236,0.452], [1.253,0.578], [1.270,0.703], [1.287,0.786], [1.343,0.744], [1.420,0.688], [1.486,0.674], [1.543,0.699], [1.615,0.735], [1.543,0.699], [1.486,0.674], [1.420,0.688], [1.343,0.744], [1.287,0.786], [1.270,0.703], [1.253,0.578], [1.236,0.452], [1.219,0.327], [1.202,0.202], [1.186,0.076], [1.169,-0.049], [1.152,-0.175], [1.135,-0.300], [1.118,-0.425], [1.085,-0.571], [1.022,-0.716], [0.969,-0.761], [0.867,-0.786], [0.790,-0.735], [0.751,-0.689], [0.717,-0.650], [0.682,-0.590], [0.642,-0.426], [0.642,-0.262], [0.642,-0.097], [0.642,0.067], [0.642,0.231], [0.642,0.395], [0.626,0.588], [0.592,0.664], [0.552,0.735], [0.505,0.786], [0.459,0.760], [0.414,0.718], [0.371,0.667], [0.323,0.621], [0.255,0.542], [0.323,0.621], [0.371,0.667], [0.414,0.718], [0.459,0.760], [0.505,0.786], [0.552,0.735], [0.592,0.664], [0.626,0.588], [0.642,0.395], [0.642,0.231], [0.642,0.067], [0.642,-0.097], [0.642,-0.262], [0.642,-0.426], [0.682,-0.590], [0.717,-0.650], [0.751,-0.689], [0.790,-0.735], [0.867,-0.786], [0.969,-0.761], [1.022,-0.716], [1.105,-0.752], [1.190,-0.769], [1.275,-0.786], [1.360,-0.786], [1.445,-0.786], [1.530,-0.786], [1.615,-0.786], [1.700,-0.786], [1.785,-0.786], ], - 'W' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.552,-0.739], [0.516,-0.647], [0.487,-0.569], [0.458,-0.430], [0.454,-0.354], [0.450,-0.252], [0.456,-0.096], [0.463,0.061], [0.469,0.218], [0.475,0.374], [0.481,0.531], [0.478,0.660], [0.459,0.724], [0.413,0.803], [0.357,0.775], [0.306,0.659], [0.238,0.531], [0.306,0.659], [0.357,0.775], [0.413,0.803], [0.459,0.724], [0.478,0.660], [0.481,0.531], [0.475,0.374], [0.469,0.218], [0.463,0.061], [0.456,-0.096], [0.450,-0.252], [0.454,-0.354], [0.458,-0.430], [0.487,-0.569], [0.516,-0.647], [0.552,-0.739], [0.599,-0.760], [0.652,-0.766], [0.726,-0.753], [0.788,-0.724], [0.856,-0.681], [0.912,-0.581], [0.949,-0.494], [0.987,-0.275], [0.990,-0.164], [0.993,-0.052], [0.996,0.060], [0.999,0.172], [1.002,0.283], [1.005,0.395], [1.008,0.507], [1.011,0.619], [1.014,0.730], [1.018,0.786], [1.014,0.730], [1.011,0.619], [1.008,0.507], [1.005,0.395], [1.002,0.283], [0.999,0.172], [0.996,0.060], [0.993,-0.052], [0.990,-0.164], [0.987,-0.275], [0.990,-0.543], [1.025,-0.644], [1.080,-0.695], [1.158,-0.761], [1.249,-0.761], [1.335,-0.718], [1.401,-0.672], [1.437,-0.622], [1.446,-0.474], [1.455,-0.326], [1.464,-0.179], [1.473,-0.031], [1.482,0.117], [1.491,0.265], [1.500,0.413], [1.509,0.561], [1.518,0.708], [1.527,0.786], [1.518,0.708], [1.509,0.561], [1.500,0.413], [1.491,0.265], [1.482,0.117], [1.473,-0.031], [1.464,-0.179], [1.455,-0.326], [1.446,-0.474], [1.437,-0.622], [1.514,-0.678], [1.602,-0.718], [1.688,-0.752], [1.774,-0.786], [1.861,-0.786], [1.945,-0.786], ], - 'X' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.321,-0.682], [0.388,-0.578], [0.454,-0.473], [0.520,-0.369], [0.586,-0.264], [0.653,-0.160], [0.719,-0.055], [0.785,0.049], [0.852,0.154], [0.918,0.258], [0.984,0.363], [1.050,0.467], [1.117,0.572], [1.183,0.676], [1.249,0.781], [1.183,0.676], [1.117,0.572], [1.050,0.467], [0.984,0.363], [0.918,0.258], [0.852,0.154], [0.781,0.144], [0.761,0.265], [0.741,0.387], [0.721,0.508], [0.701,0.629], [0.637,0.768], [0.512,0.730], [0.425,0.642], [0.370,0.577], [0.308,0.475], [0.370,0.577], [0.425,0.642], [0.512,0.730], [0.637,0.768], [0.701,0.629], [0.721,0.508], [0.741,0.387], [0.761,0.265], [0.781,0.144], [0.801,0.023], [0.821,-0.099], [0.841,-0.220], [0.861,-0.341], [0.881,-0.463], [0.901,-0.584], [0.947,-0.685], [0.984,-0.782], [1.037,-0.786], [1.036,-0.786], [1.117,-0.786], [1.214,-0.786], [1.275,-0.786], [1.360,-0.786], [1.445,-0.786], ], - 'Y' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.365,-0.701], [0.387,-0.581], [0.375,-0.466], [0.383,-0.340], [0.404,-0.134], [0.426,0.071], [0.447,0.276], [0.468,0.481], [0.473,0.634], [0.445,0.749], [0.410,0.786], [0.340,0.777], [0.255,0.752], [0.340,0.777], [0.410,0.786], [0.445,0.749], [0.473,0.634], [0.468,0.481], [0.447,0.276], [0.426,0.071], [0.404,-0.134], [0.383,-0.340], [0.375,-0.466], [0.387,-0.581], [0.423,-0.684], [0.467,-0.750], [0.521,-0.756], [0.573,-0.733], [0.628,-0.686], [0.685,-0.624], [0.731,-0.548], [0.790,-0.489], [0.866,-0.430], [0.886,-0.303], [0.906,-0.176], [0.927,-0.050], [0.947,0.077], [0.968,0.204], [0.988,0.331], [1.009,0.458], [1.029,0.585], [1.050,0.701], [1.070,0.786], [1.050,0.701], [1.029,0.585], [1.009,0.458], [0.988,0.331], [0.968,0.204], [0.947,0.077], [0.927,-0.050], [0.906,-0.176], [0.886,-0.303], [0.866,-0.430], [0.847,-0.571], [0.829,-0.712], [0.810,-0.852], [0.792,-0.993], [0.773,-1.134], [0.755,-1.275], [0.724,-1.403], [0.679,-1.484], [0.620,-1.509], [0.562,-1.522], [0.476,-1.534], [0.408,-1.484], [0.376,-1.419], [0.367,-1.306], [0.392,-1.217], [0.442,-1.109], [0.510,-0.999], [0.570,-0.891], [0.626,-0.833], [0.714,-0.786], [0.782,-0.786], [0.833,-0.786], [0.929,-0.786], [0.986,-0.786], [1.054,-0.786], [1.139,-0.786], [1.224,-0.786], ], - 'Z' : [ [0.085,-0.786], [0.170,-0.786], [0.245,-0.786], [0.323,-0.701], [0.395,-0.577], [0.488,-0.462], [0.626,-0.240], [0.699,-0.091], [0.750,0.051], [0.784,0.192], [0.797,0.370], [0.762,0.534], [0.748,0.571], [0.701,0.657], [0.628,0.747], [0.561,0.752], [0.446,0.715], [0.342,0.625], [0.314,0.592], [0.255,0.530], [0.314,0.592], [0.342,0.625], [0.446,0.715], [0.561,0.752], [0.628,0.747], [0.701,0.657], [0.748,0.571], [0.762,0.534], [0.797,0.370], [0.784,0.192], [0.750,0.051], [0.699,-0.091], [0.626,-0.240], [0.488,-0.462], [0.395,-0.577], [0.323,-0.701], [0.384,-0.684], [0.417,-0.665], [0.532,-0.661], [0.562,-0.686], [0.666,-0.950], [0.652,-1.118], [0.645,-1.167], [0.586,-1.385], [0.570,-1.429], [0.499,-1.570], [0.379,-1.580], [0.305,-1.560], [0.274,-1.523], [0.251,-1.475], [0.234,-1.358], [0.247,-1.211], [0.311,-1.087], [0.375,-0.970], [0.442,-0.871], [0.502,-0.799], [0.595,-0.761], [0.646,-0.769], [0.714,-0.786], [0.792,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], ], - 'a' : [ [0.085,-0.718], [0.146,-0.557], [0.146,-0.500], [0.153,-0.455], [0.180,-0.395], [0.204,-0.353], [0.219,-0.319], [0.246,-0.276], [0.272,-0.234], [0.298,-0.191], [0.333,-0.157], [0.379,-0.132], [0.432,-0.098], [0.527,-0.055], [0.629,-0.036], [0.679,-0.036], [0.697,-0.149], [0.689,-0.293], [0.680,-0.404], [0.663,-0.489], [0.654,-0.592], [0.646,-0.639], [0.561,-0.718], [0.501,-0.773], [0.425,-0.801], [0.357,-0.820], [0.279,-0.801], [0.230,-0.754], [0.213,-0.731], [0.184,-0.681], [0.151,-0.616], [0.146,-0.557], [0.146,-0.500], [0.153,-0.455], [0.180,-0.395], [0.204,-0.353], [0.219,-0.319], [0.246,-0.276], [0.272,-0.234], [0.298,-0.191], [0.333,-0.157], [0.379,-0.132], [0.432,-0.098], [0.527,-0.055], [0.629,-0.036], [0.679,-0.036], [0.697,-0.149], [0.689,-0.293], [0.680,-0.404], [0.663,-0.489], [0.654,-0.592], [0.646,-0.639], [0.678,-0.744], [0.729,-0.801], [0.781,-0.786], [0.850,-0.786], [0.935,-0.786], ], - 'b' : [ [0.043,-0.786], [0.085,-0.761], [0.128,-0.727], [0.170,-0.693], [0.199,-0.667], [0.227,-0.625], [0.256,-0.574], [0.285,-0.497], [0.313,-0.429], [0.342,-0.361], [0.371,-0.268], [0.399,-0.191], [0.428,-0.106], [0.457,-0.004], [0.485,0.064], [0.514,0.140], [0.543,0.241], [0.571,0.320], [0.587,0.399], [0.588,0.510], [0.572,0.602], [0.529,0.674], [0.473,0.743], [0.432,0.750], [0.397,0.739], [0.367,0.724], [0.343,0.686], [0.323,0.627], [0.318,0.497], [0.316,0.368], [0.315,0.238], [0.313,0.108], [0.316,-0.022], [0.318,-0.152], [0.320,-0.282], [0.321,-0.412], [0.323,-0.542], [0.333,-0.672], [0.352,-0.718], [0.381,-0.771], [0.412,-0.786], [0.463,-0.786], [0.500,-0.782], [0.537,-0.764], [0.564,-0.746], [0.590,-0.688], [0.604,-0.634], [0.622,-0.573], [0.636,-0.514], [0.655,-0.446], [0.662,-0.377], [0.670,-0.293], [0.672,-0.200], [0.674,-0.112], [0.743,-0.140], [0.790,-0.157], [0.842,-0.149], ], - 'c' : [ [0.034,-0.769], [0.051,-0.735], [0.076,-0.676], [0.097,-0.599], [0.113,-0.565], [0.136,-0.514], [0.163,-0.446], [0.210,-0.344], [0.246,-0.268], [0.272,-0.222], [0.296,-0.191], [0.329,-0.152], [0.360,-0.123], [0.396,-0.094], [0.442,-0.081], [0.485,-0.072], [0.529,-0.064], [0.595,-0.064], [0.646,-0.106], [0.680,-0.191], [0.646,-0.106], [0.595,-0.064], [0.529,-0.064], [0.485,-0.072], [0.442,-0.081], [0.396,-0.094], [0.360,-0.123], [0.329,-0.152], [0.296,-0.191], [0.272,-0.222], [0.246,-0.268], [0.199,-0.407], [0.199,-0.497], [0.202,-0.565], [0.220,-0.657], [0.246,-0.708], [0.263,-0.731], [0.279,-0.754], [0.306,-0.795], [0.355,-0.829], [0.446,-0.846], [0.561,-0.829], [0.637,-0.820], [0.697,-0.812], [0.765,-0.803], [0.850,-0.795], [0.935,-0.786], ], - 'd' : [ [0.085,-0.786], [0.136,-0.769], [0.181,-0.701], [0.238,-0.616], [0.279,-0.557], [0.282,-0.500], [0.289,-0.455], [0.298,-0.395], [0.313,-0.319], [0.333,-0.242], [0.357,-0.191], [0.425,-0.123], [0.469,-0.089], [0.515,-0.072], [0.629,-0.043], [0.697,-0.036], [0.782,-0.036], [0.697,-0.036], [0.629,-0.043], [0.515,-0.072], [0.469,-0.089], [0.425,-0.123], [0.357,-0.191], [0.333,-0.242], [0.313,-0.319], [0.298,-0.395], [0.289,-0.455], [0.282,-0.500], [0.279,-0.557], [0.287,-0.616], [0.320,-0.681], [0.366,-0.754], [0.415,-0.801], [0.459,-0.810], [0.510,-0.808], [0.561,-0.801], [0.637,-0.773], [0.697,-0.718], [0.799,-0.650], [0.867,-0.639], [0.867,-0.592], [0.867,-0.489], [0.867,-0.404], [0.867,-0.293], [0.867,-0.149], [0.867,0.064], [0.867,0.234], [0.867,0.404], [0.867,0.574], [0.867,0.744], [0.867,0.574], [0.867,0.404], [0.867,0.234], [0.867,0.064], [0.867,-0.149], [0.867,-0.293], [0.867,-0.404], [0.867,-0.489], [0.867,-0.592], [0.867,-0.639], [0.875,-0.701], [0.899,-0.744], [0.950,-0.801], [1.002,-0.824], [1.068,-0.815], [1.122,-0.812], [1.190,-0.786], ], - 'e' : [ [0.085,-0.786], [0.170,-0.786], [0.290,-0.744], [0.378,-0.693], [0.459,-0.659], [0.503,-0.616], [0.537,-0.548], [0.561,-0.497], [0.571,-0.446], [0.576,-0.404], [0.579,-0.336], [0.576,-0.276], [0.568,-0.229], [0.559,-0.191], [0.551,-0.160], [0.534,-0.106], [0.517,-0.072], [0.486,-0.047], [0.444,-0.030], [0.401,-0.021], [0.359,-0.030], [0.316,-0.047], [0.286,-0.072], [0.269,-0.106], [0.252,-0.160], [0.243,-0.191], [0.235,-0.229], [0.226,-0.276], [0.223,-0.336], [0.226,-0.404], [0.231,-0.446], [0.241,-0.497], [0.265,-0.548], [0.299,-0.616], [0.342,-0.659], [0.422,-0.701], [0.510,-0.744], [0.605,-0.761], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], ], - 'f' : [ [0.043,-0.786], [0.076,-0.779], [0.107,-0.773], [0.145,-0.744], [0.192,-0.710], [0.225,-0.684], [0.264,-0.667], [0.321,-0.642], [0.374,-0.592], [0.425,-0.548], [0.451,-0.446], [0.468,-0.361], [0.485,-0.276], [0.501,-0.191], [0.518,-0.106], [0.535,-0.038], [0.552,0.047], [0.565,0.131], [0.582,0.212], [0.605,0.299], [0.619,0.402], [0.632,0.506], [0.614,0.607], [0.578,0.667], [0.535,0.680], [0.485,0.684], [0.425,0.671], [0.374,0.652], [0.329,0.619], [0.298,0.531], [0.294,0.428], [0.292,0.299], [0.294,0.169], [0.296,-0.000], [0.296,-0.172], [0.296,-0.276], [0.298,-0.385], [0.297,-0.489], [0.296,-0.598], [0.295,-0.710], [0.295,-0.829], [0.292,-0.931], [0.289,-1.041], [0.286,-1.126], [0.281,-1.254], [0.281,-1.356], [0.279,-1.466], [0.272,-1.602], [0.323,-1.602], [0.374,-1.601], [0.423,-1.594], [0.474,-1.551], [0.510,-1.509], [0.542,-1.466], [0.550,-1.381], [0.542,-1.296], [0.533,-1.211], [0.522,-1.126], [0.508,-1.041], [0.491,-0.956], [0.468,-0.888], [0.442,-0.846], [0.383,-0.752], [0.420,-0.769], [0.468,-0.803], [0.510,-0.829], [0.567,-0.812], [0.639,-0.803], [0.723,-0.795], [0.807,-0.786], [0.892,-0.786], ], - 'g' : [ [0.033,-0.778], [0.067,-0.761], [0.117,-0.727], [0.145,-0.706], [0.204,-0.662], [0.238,-0.633], [0.284,-0.592], [0.317,-0.557], [0.350,-0.506], [0.384,-0.458], [0.400,-0.430], [0.434,-0.384], [0.467,-0.337], [0.500,-0.291], [0.527,-0.251], [0.559,-0.217], [0.601,-0.175], [0.633,-0.149], [0.678,-0.132], [0.729,-0.115], [0.780,-0.098], [0.831,-0.086], [0.883,-0.089], [0.901,-0.123], [0.898,-0.191], [0.894,-0.259], [0.891,-0.327], [0.887,-0.395], [0.884,-0.463], [0.881,-0.531], [0.877,-0.599], [0.874,-0.667], [0.870,-0.735], [0.816,-0.761], [0.763,-0.786], [0.678,-0.812], [0.610,-0.824], [0.527,-0.812], [0.457,-0.786], [0.400,-0.754], [0.355,-0.676], [0.334,-0.592], [0.317,-0.557], [0.350,-0.506], [0.384,-0.458], [0.400,-0.430], [0.434,-0.384], [0.467,-0.337], [0.500,-0.291], [0.527,-0.251], [0.559,-0.217], [0.601,-0.175], [0.633,-0.149], [0.678,-0.132], [0.729,-0.115], [0.780,-0.098], [0.831,-0.086], [0.883,-0.089], [0.901,-0.123], [0.898,-0.191], [0.894,-0.259], [0.891,-0.327], [0.887,-0.395], [0.884,-0.463], [0.881,-0.531], [0.877,-0.599], [0.874,-0.667], [0.870,-0.735], [0.867,-0.803], [0.864,-0.871], [0.860,-0.939], [0.857,-1.007], [0.853,-1.075], [0.850,-1.143], [0.847,-1.211], [0.843,-1.279], [0.840,-1.347], [0.836,-1.415], [0.833,-1.484], [0.830,-1.551], [0.826,-1.619], [0.765,-1.615], [0.697,-1.608], [0.646,-1.598], [0.595,-1.568], [0.544,-1.526], [0.493,-1.466], [0.459,-1.398], [0.442,-1.347], [0.425,-1.279], [0.433,-1.228], [0.459,-1.186], [0.500,-1.125], [0.530,-1.084], [0.567,-1.041], [0.627,-0.990], [0.695,-0.948], [0.746,-0.914], [0.800,-0.871], [0.873,-0.829], [0.949,-0.820], [1.037,-0.812], [1.105,-0.803], [1.190,-0.786], ], - 'h' : [ [0.046,-0.710], [0.072,-0.666], [0.110,-0.611], [0.134,-0.564], [0.169,-0.515], [0.197,-0.467], [0.221,-0.419], [0.250,-0.374], [0.277,-0.327], [0.303,-0.276], [0.326,-0.242], [0.349,-0.200], [0.383,-0.155], [0.432,-0.083], [0.483,-0.038], [0.508,0.013], [0.549,0.064], [0.575,0.131], [0.602,0.202], [0.617,0.249], [0.641,0.297], [0.651,0.370], [0.660,0.438], [0.662,0.523], [0.651,0.616], [0.641,0.693], [0.599,0.742], [0.542,0.769], [0.483,0.769], [0.406,0.738], [0.355,0.702], [0.321,0.636], [0.295,0.511], [0.295,0.425], [0.295,0.339], [0.295,0.227], [0.295,0.114], [0.295,0.001], [0.295,-0.111], [0.295,-0.224], [0.295,-0.336], [0.295,-0.449], [0.295,-0.561], [0.295,-0.674], [0.295,-0.786], [0.299,-0.674], [0.302,-0.561], [0.329,-0.514], [0.368,-0.447], [0.392,-0.386], [0.420,-0.307], [0.447,-0.255], [0.475,-0.185], [0.507,-0.149], [0.564,-0.132], [0.625,-0.123], [0.678,-0.132], [0.743,-0.166], [0.767,-0.229], [0.760,-0.307], [0.755,-0.375], [0.748,-0.453], [0.748,-0.533], [0.761,-0.623], [0.786,-0.717], [0.845,-0.766], [0.920,-0.794], [1.005,-0.786], ], - 'i' : [ [0.085,-0.791], [0.173,-0.803], [0.256,-0.811], [0.289,-0.765], [0.316,-0.712], [0.331,-0.635], [0.333,-0.550], [0.335,-0.508], [0.341,-0.431], [0.346,-0.372], [0.352,-0.287], [0.352,-0.202], [0.354,-0.143], [0.357,-0.032], [0.357,-0.143], [0.358,-0.202], [0.356,-0.287], [0.360,-0.372], [0.364,-0.432], [0.368,-0.508], [0.369,-0.551], [0.370,-0.636], [0.384,-0.712], [0.409,-0.765], [0.441,-0.811], [0.518,-0.829], [0.585,-0.795], [0.677,-0.786], ], - 'j' : [ [0.042,-0.761], [0.098,-0.734], [0.131,-0.693], [0.159,-0.658], [0.188,-0.613], [0.199,-0.589], [0.225,-0.548], [0.250,-0.516], [0.272,-0.468], [0.295,-0.420], [0.317,-0.360], [0.334,-0.299], [0.343,-0.264], [0.360,-0.195], [0.373,-0.100], [0.383,-0.049], [0.383,-0.099], [0.383,-0.167], [0.383,-0.276], [0.383,-0.395], [0.383,-0.513], [0.383,-0.632], [0.383,-0.751], [0.383,-0.869], [0.383,-0.988], [0.383,-1.107], [0.383,-1.225], [0.383,-1.344], [0.368,-1.405], [0.349,-1.466], [0.326,-1.514], [0.296,-1.530], [0.255,-1.534], [0.218,-1.518], [0.196,-1.496], [0.172,-1.406], [0.162,-1.296], [0.159,-1.211], [0.173,-1.126], [0.196,-1.053], [0.218,-1.005], [0.241,-0.957], [0.263,-0.909], [0.286,-0.861], [0.301,-0.837], [0.328,-0.808], [0.356,-0.780], [0.384,-0.753], [0.408,-0.742], [0.439,-0.734], [0.473,-0.733], [0.509,-0.750], [0.552,-0.767], [0.595,-0.786], ], - 'k' : [ [0.043,-0.744], [0.076,-0.701], [0.106,-0.659], [0.136,-0.616], [0.170,-0.548], [0.206,-0.500], [0.239,-0.453], [0.272,-0.407], [0.298,-0.384], [0.337,-0.305], [0.384,-0.226], [0.431,-0.147], [0.479,-0.069], [0.526,0.010], [0.555,0.056], [0.584,0.103], [0.605,0.149], [0.622,0.195], [0.659,0.261], [0.677,0.309], [0.695,0.356], [0.713,0.404], [0.732,0.451], [0.750,0.499], [0.765,0.565], [0.771,0.635], [0.737,0.676], [0.695,0.684], [0.654,0.684], [0.603,0.684], [0.552,0.676], [0.501,0.659], [0.451,0.612], [0.400,0.562], [0.357,0.466], [0.340,0.369], [0.340,0.273], [0.340,0.176], [0.340,0.079], [0.340,0.010], [0.340,-0.066], [0.340,-0.143], [0.340,-0.219], [0.340,-0.296], [0.340,-0.372], [0.340,-0.449], [0.340,-0.525], [0.340,-0.601], [0.340,-0.678], [0.340,-0.754], [0.340,-0.847], [0.340,-0.754], [0.340,-0.678], [0.340,-0.601], [0.340,-0.525], [0.340,-0.449], [0.354,-0.372], [0.397,-0.361], [0.465,-0.353], [0.533,-0.344], [0.618,-0.327], [0.686,-0.302], [0.754,-0.276], [0.797,-0.234], [0.822,-0.198], [0.812,-0.140], [0.788,-0.089], [0.758,-0.059], [0.720,-0.032], [0.652,-0.055], [0.601,-0.106], [0.516,-0.191], [0.465,-0.276], [0.431,-0.336], [0.383,-0.378], [0.414,-0.421], [0.455,-0.453], [0.489,-0.500], [0.522,-0.546], [0.554,-0.592], [0.577,-0.639], [0.591,-0.662], [0.622,-0.708], [0.655,-0.754], [0.688,-0.801], [0.729,-0.846], [0.771,-0.871], [0.814,-0.863], [0.856,-0.846], [0.899,-0.829], [0.941,-0.812], [0.971,-0.803], [1.011,-0.786], [1.065,-0.803], [1.105,-0.786], ], - 'l' : [ [0.060,-0.744], [0.097,-0.694], [0.124,-0.646], [0.145,-0.616], [0.171,-0.574], [0.194,-0.526], [0.224,-0.477], [0.255,-0.429], [0.289,-0.381], [0.306,-0.332], [0.340,-0.286], [0.377,-0.238], [0.403,-0.191], [0.435,-0.115], [0.459,-0.055], [0.483,0.013], [0.501,0.056], [0.510,0.095], [0.524,0.140], [0.534,0.190], [0.548,0.237], [0.554,0.284], [0.566,0.351], [0.578,0.404], [0.585,0.480], [0.594,0.566], [0.595,0.613], [0.585,0.682], [0.550,0.734], [0.515,0.771], [0.480,0.782], [0.451,0.786], [0.400,0.781], [0.347,0.767], [0.324,0.719], [0.315,0.672], [0.308,0.632], [0.304,0.574], [0.304,0.488], [0.304,0.401], [0.304,0.314], [0.304,0.227], [0.304,0.141], [0.304,0.054], [0.304,-0.033], [0.304,-0.119], [0.303,-0.206], [0.303,-0.293], [0.303,-0.380], [0.303,-0.466], [0.303,-0.553], [0.303,-0.640], [0.311,-0.702], [0.343,-0.752], [0.383,-0.778], [0.434,-0.784], [0.483,-0.807], [0.538,-0.821], [0.603,-0.803], [0.677,-0.795], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], ], - 'm' : [ [0.066,-0.744], [0.100,-0.708], [0.116,-0.685], [0.150,-0.639], [0.166,-0.615], [0.200,-0.569], [0.216,-0.546], [0.233,-0.523], [0.250,-0.500], [0.270,-0.463], [0.295,-0.412], [0.316,-0.384], [0.324,-0.361], [0.334,-0.337], [0.349,-0.314], [0.372,-0.276], [0.389,-0.251], [0.416,-0.222], [0.449,-0.175], [0.466,-0.152], [0.482,-0.129], [0.499,-0.106], [0.527,-0.081], [0.567,-0.069], [0.603,-0.055], [0.649,-0.059], [0.665,-0.083], [0.669,-0.103], [0.674,-0.154], [0.679,-0.205], [0.685,-0.256], [0.690,-0.307], [0.695,-0.358], [0.686,-0.402], [0.676,-0.447], [0.666,-0.491], [0.657,-0.535], [0.647,-0.579], [0.637,-0.624], [0.628,-0.668], [0.618,-0.712], [0.608,-0.756], [0.599,-0.801], [0.608,-0.756], [0.618,-0.712], [0.628,-0.668], [0.637,-0.624], [0.647,-0.579], [0.657,-0.535], [0.666,-0.491], [0.676,-0.447], [0.686,-0.402], [0.695,-0.358], [0.715,-0.314], [0.743,-0.276], [0.765,-0.245], [0.782,-0.222], [0.798,-0.198], [0.815,-0.175], [0.832,-0.152], [0.848,-0.129], [0.882,-0.089], [0.916,-0.064], [0.966,-0.044], [1.015,-0.036], [1.031,-0.059], [1.048,-0.083], [1.065,-0.106], [1.075,-0.143], [1.085,-0.180], [1.095,-0.217], [1.105,-0.254], [1.114,-0.291], [1.103,-0.340], [1.091,-0.388], [1.080,-0.437], [1.068,-0.486], [1.056,-0.534], [1.045,-0.583], [1.033,-0.632], [1.021,-0.680], [1.010,-0.729], [1.009,-0.777], [1.010,-0.729], [1.021,-0.680], [1.033,-0.632], [1.045,-0.583], [1.056,-0.534], [1.068,-0.486], [1.080,-0.437], [1.091,-0.388], [1.103,-0.340], [1.114,-0.291], [1.131,-0.268], [1.156,-0.234], [1.181,-0.198], [1.198,-0.175], [1.215,-0.140], [1.248,-0.106], [1.264,-0.083], [1.290,-0.059], [1.358,-0.038], [1.431,-0.059], [1.464,-0.106], [1.480,-0.129], [1.497,-0.175], [1.489,-0.224], [1.480,-0.272], [1.472,-0.320], [1.464,-0.369], [1.455,-0.417], [1.447,-0.466], [1.439,-0.514], [1.431,-0.562], [1.422,-0.611], [1.414,-0.659], [1.414,-0.708], [1.447,-0.754], [1.464,-0.777], [1.496,-0.803], [1.580,-0.812], [1.630,-0.812], [1.677,-0.799], [1.730,-0.795], [1.785,-0.786], ], - 'n' : [ [0.033,-0.786], [0.067,-0.786], [0.085,-0.744], [0.102,-0.701], [0.119,-0.625], [0.145,-0.531], [0.170,-0.446], [0.196,-0.361], [0.221,-0.234], [0.255,-0.106], [0.292,0.010], [0.332,0.064], [0.374,0.038], [0.400,-0.013], [0.414,-0.059], [0.423,-0.106], [0.431,-0.149], [0.435,-0.198], [0.430,-0.254], [0.430,-0.310], [0.430,-0.365], [0.430,-0.421], [0.430,-0.476], [0.430,-0.532], [0.430,-0.588], [0.430,-0.643], [0.430,-0.699], [0.430,-0.754], [0.430,-0.699], [0.430,-0.643], [0.430,-0.588], [0.430,-0.532], [0.430,-0.476], [0.430,-0.421], [0.430,-0.365], [0.430,-0.310], [0.430,-0.254], [0.459,-0.242], [0.485,-0.217], [0.508,-0.198], [0.525,-0.175], [0.542,-0.152], [0.558,-0.129], [0.587,-0.098], [0.620,-0.059], [0.656,-0.013], [0.691,0.010], [0.741,0.010], [0.774,-0.013], [0.791,-0.036], [0.808,-0.059], [0.816,-0.106], [0.825,-0.149], [0.825,-0.234], [0.825,-0.293], [0.825,-0.361], [0.825,-0.421], [0.825,-0.480], [0.825,-0.523], [0.825,-0.574], [0.825,-0.616], [0.825,-0.662], [0.825,-0.708], [0.833,-0.761], [0.865,-0.812], [0.924,-0.820], [0.967,-0.812], [1.024,-0.786], ], - 'o' : [ [0.085,-0.727], [0.134,-0.659], [0.162,-0.608], [0.187,-0.557], [0.204,-0.514], [0.214,-0.480], [0.238,-0.430], [0.256,-0.395], [0.267,-0.361], [0.289,-0.319], [0.314,-0.268], [0.331,-0.245], [0.346,-0.222], [0.372,-0.183], [0.397,-0.152], [0.414,-0.129], [0.431,-0.106], [0.447,-0.083], [0.482,-0.072], [0.525,-0.055], [0.584,-0.055], [0.627,-0.072], [0.647,-0.083], [0.669,-0.106], [0.685,-0.123], [0.697,-0.149], [0.714,-0.175], [0.720,-0.224], [0.719,-0.272], [0.724,-0.320], [0.723,-0.368], [0.716,-0.417], [0.711,-0.465], [0.702,-0.513], [0.689,-0.562], [0.671,-0.610], [0.654,-0.658], [0.643,-0.701], [0.620,-0.752], [0.595,-0.795], [0.552,-0.829], [0.510,-0.846], [0.459,-0.854], [0.397,-0.842], [0.372,-0.820], [0.347,-0.791], [0.314,-0.754], [0.298,-0.731], [0.281,-0.708], [0.264,-0.685], [0.253,-0.659], [0.236,-0.616], [0.219,-0.574], [0.207,-0.531], [0.214,-0.480], [0.238,-0.430], [0.256,-0.395], [0.267,-0.361], [0.289,-0.319], [0.314,-0.268], [0.331,-0.245], [0.346,-0.222], [0.372,-0.183], [0.397,-0.152], [0.414,-0.129], [0.431,-0.106], [0.447,-0.083], [0.482,-0.072], [0.524,-0.106], [0.544,-0.149], [0.570,-0.183], [0.595,-0.200], [0.629,-0.217], [0.663,-0.225], [0.697,-0.225], [0.731,-0.225], [0.765,-0.225], [0.799,-0.221], [0.833,-0.217], [0.867,-0.208], [0.901,-0.191], [0.935,-0.174], [0.969,-0.149], ], - 'p' : [ [0.069,-0.801], [0.130,-0.767], [0.181,-0.693], [0.211,-0.610], [0.232,-0.524], [0.253,-0.438], [0.274,-0.352], [0.291,-0.300], [0.316,-0.257], [0.337,-0.179], [0.364,-0.136], [0.372,-0.215], [0.370,-0.323], [0.368,-0.431], [0.367,-0.539], [0.365,-0.646], [0.363,-0.754], [0.361,-0.862], [0.359,-0.970], [0.357,-1.078], [0.355,-1.186], [0.353,-1.294], [0.352,-1.402], [0.350,-1.510], [0.352,-1.402], [0.353,-1.294], [0.355,-1.186], [0.357,-1.078], [0.359,-0.970], [0.361,-0.862], [0.363,-0.754], [0.365,-0.646], [0.367,-0.539], [0.368,-0.431], [0.370,-0.323], [0.372,-0.215], [0.374,-0.107], [0.364,-0.136], [0.407,-0.091], [0.438,-0.048], [0.478,-0.020], [0.510,-0.002], [0.534,0.007], [0.564,0.017], [0.610,0.010], [0.662,-0.011], [0.709,-0.077], [0.722,-0.104], [0.753,-0.170], [0.771,-0.282], [0.771,-0.357], [0.774,-0.469], [0.760,-0.538], [0.748,-0.616], [0.726,-0.654], [0.691,-0.694], [0.651,-0.714], [0.589,-0.754], [0.531,-0.747], [0.476,-0.744], [0.425,-0.727], [0.476,-0.744], [0.531,-0.747], [0.589,-0.754], [0.625,-0.748], [0.678,-0.763], [0.763,-0.777], [0.814,-0.783], [0.878,-0.803], [0.935,-0.803], [0.996,-0.795], [1.054,-0.786], ], - 'q' : [ [0.033,-0.778], [0.067,-0.761], [0.117,-0.727], [0.145,-0.706], [0.183,-0.662], [0.216,-0.615], [0.233,-0.592], [0.275,-0.548], [0.299,-0.506], [0.333,-0.458], [0.349,-0.430], [0.383,-0.384], [0.416,-0.337], [0.449,-0.291], [0.476,-0.251], [0.508,-0.217], [0.550,-0.175], [0.582,-0.149], [0.627,-0.132], [0.678,-0.115], [0.729,-0.098], [0.780,-0.086], [0.832,-0.089], [0.850,-0.123], [0.847,-0.191], [0.843,-0.259], [0.840,-0.327], [0.836,-0.395], [0.833,-0.463], [0.830,-0.531], [0.826,-0.599], [0.823,-0.667], [0.819,-0.735], [0.765,-0.761], [0.712,-0.786], [0.627,-0.812], [0.559,-0.824], [0.476,-0.812], [0.406,-0.786], [0.349,-0.754], [0.304,-0.676], [0.283,-0.592], [0.299,-0.506], [0.333,-0.458], [0.349,-0.430], [0.383,-0.384], [0.416,-0.337], [0.449,-0.291], [0.476,-0.251], [0.508,-0.217], [0.550,-0.175], [0.582,-0.149], [0.627,-0.132], [0.678,-0.115], [0.729,-0.098], [0.780,-0.086], [0.832,-0.089], [0.850,-0.123], [0.847,-0.191], [0.843,-0.259], [0.840,-0.327], [0.836,-0.395], [0.833,-0.463], [0.830,-0.531], [0.826,-0.599], [0.823,-0.667], [0.819,-0.735], [0.816,-0.803], [0.813,-0.871], [0.809,-0.939], [0.806,-1.007], [0.802,-1.075], [0.799,-1.143], [0.796,-1.211], [0.792,-1.279], [0.789,-1.347], [0.785,-1.415], [0.782,-1.484], [0.779,-1.551], [0.775,-1.619], [0.816,-1.615], [0.867,-1.608], [0.901,-1.598], [0.935,-1.568], [0.969,-1.526], [1.003,-1.466], [1.037,-1.398], [1.054,-1.347], [1.062,-1.279], [1.054,-1.228], [1.037,-1.186], [1.003,-1.125], [0.969,-1.084], [0.935,-1.041], [0.901,-0.990], [0.867,-0.948], [0.850,-0.914], [0.850,-0.854], [0.898,-0.829], [0.952,-0.812], [1.003,-0.795], [1.054,-0.786], [1.139,-0.786], [1.224,-0.786], ], - 'r' : [ [0.085,-0.786], [0.170,-0.752], [0.221,-0.701], [0.255,-0.659], [0.289,-0.616], [0.309,-0.531], [0.332,-0.446], [0.349,-0.353], [0.362,-0.293], [0.374,-0.234], [0.389,-0.166], [0.400,-0.106], [0.527,-0.106], [0.612,-0.106], [0.697,-0.106], [0.782,-0.106], [0.867,-0.106], [0.867,-0.149], [0.859,-0.234], [0.850,-0.319], [0.833,-0.404], [0.816,-0.489], [0.807,-0.574], [0.833,-0.659], [0.867,-0.701], [0.935,-0.744], [1.020,-0.769], [1.122,-0.786], [1.241,-0.786], ], - 's' : [ [0.066,-0.769], [0.134,-0.731], [0.168,-0.701], [0.200,-0.667], [0.255,-0.615], [0.313,-0.531], [0.383,-0.446], [0.417,-0.378], [0.442,-0.319], [0.451,-0.242], [0.451,-0.191], [0.425,-0.064], [0.510,-0.140], [0.561,-0.191], [0.612,-0.234], [0.653,-0.276], [0.697,-0.319], [0.731,-0.402], [0.748,-0.446], [0.756,-0.490], [0.765,-0.534], [0.756,-0.578], [0.739,-0.622], [0.714,-0.666], [0.680,-0.710], [0.632,-0.747], [0.567,-0.786], [0.517,-0.801], [0.468,-0.803], [0.417,-0.801], [0.374,-0.786], [0.306,-0.761], [0.238,-0.727], [0.306,-0.761], [0.374,-0.786], [0.417,-0.801], [0.468,-0.803], [0.517,-0.801], [0.567,-0.786], [0.632,-0.747], [0.678,-0.769], [0.720,-0.786], [0.763,-0.786], [0.805,-0.786], [0.850,-0.786], [0.935,-0.786], ], - 't' : [ [0.085,-0.786], [0.170,-0.786], [0.238,-0.786], [0.298,-0.786], [0.374,-0.786], [0.445,-0.786], [0.484,-0.759], [0.499,-0.605], [0.514,-0.452], [0.529,-0.299], [0.543,-0.146], [0.558,0.008], [0.573,0.161], [0.588,0.314], [0.552,0.314], [0.522,0.314], [0.467,0.314], [0.411,0.314], [0.340,0.314], [0.255,0.314], [0.170,0.314], [0.255,0.314], [0.340,0.314], [0.411,0.314], [0.467,0.314], [0.522,0.314], [0.552,0.314], [0.633,0.314], [0.688,0.314], [0.729,0.314], [0.784,0.314], [0.840,0.314], [0.895,0.314], [0.978,0.314], [1.062,0.314], [0.978,0.314], [0.895,0.314], [0.840,0.314], [0.784,0.314], [0.729,0.314], [0.688,0.314], [0.633,0.314], [0.588,0.314], [0.602,0.467], [0.617,0.621], [0.632,0.774], [0.632,0.621], [0.632,0.467], [0.632,0.314], [0.632,0.161], [0.632,0.008], [0.632,-0.146], [0.632,-0.299], [0.632,-0.452], [0.632,-0.605], [0.632,-0.759], [0.659,-0.805], [0.720,-0.816], [0.807,-0.799], [0.894,-0.791], [0.978,-0.786], [1.062,-0.786], [1.147,-0.786], [1.232,-0.786], ], - 'u' : [ [0.043,-0.761], [0.085,-0.744], [0.128,-0.727], [0.156,-0.710], [0.179,-0.690], [0.204,-0.646], [0.221,-0.602], [0.238,-0.557], [0.255,-0.506], [0.286,-0.491], [0.293,-0.442], [0.299,-0.392], [0.306,-0.343], [0.312,-0.294], [0.319,-0.245], [0.325,-0.195], [0.332,-0.146], [0.338,-0.097], [0.344,-0.048], [0.338,-0.097], [0.332,-0.146], [0.325,-0.195], [0.319,-0.245], [0.312,-0.294], [0.306,-0.343], [0.299,-0.392], [0.293,-0.442], [0.286,-0.491], [0.280,-0.540], [0.273,-0.589], [0.267,-0.639], [0.260,-0.688], [0.254,-0.737], [0.260,-0.786], [0.289,-0.803], [0.332,-0.812], [0.383,-0.803], [0.425,-0.795], [0.461,-0.778], [0.501,-0.761], [0.544,-0.744], [0.583,-0.727], [0.616,-0.710], [0.646,-0.684], [0.671,-0.650], [0.682,-0.605], [0.686,-0.558], [0.689,-0.511], [0.693,-0.464], [0.697,-0.416], [0.700,-0.369], [0.704,-0.322], [0.708,-0.275], [0.711,-0.228], [0.715,-0.180], [0.719,-0.133], [0.723,-0.074], [0.726,-0.023], [0.723,-0.074], [0.719,-0.133], [0.715,-0.180], [0.711,-0.228], [0.708,-0.275], [0.704,-0.322], [0.700,-0.369], [0.697,-0.416], [0.693,-0.464], [0.712,-0.529], [0.719,-0.582], [0.731,-0.633], [0.748,-0.684], [0.756,-0.735], [0.790,-0.786], [0.845,-0.803], [0.901,-0.803], [0.944,-0.795], [1.020,-0.786], ], - 'v' : [ [0.030,-0.784], [0.050,-0.735], [0.070,-0.687], [0.091,-0.639], [0.111,-0.591], [0.131,-0.543], [0.151,-0.494], [0.172,-0.431], [0.184,-0.375], [0.204,-0.327], [0.224,-0.279], [0.245,-0.231], [0.265,-0.182], [0.285,-0.134], [0.321,-0.085], [0.348,-0.060], [0.388,-0.046], [0.430,-0.054], [0.455,-0.076], [0.476,-0.097], [0.488,-0.134], [0.498,-0.176], [0.508,-0.212], [0.509,-0.244], [0.505,-0.280], [0.503,-0.321], [0.501,-0.363], [0.498,-0.404], [0.496,-0.446], [0.493,-0.487], [0.491,-0.528], [0.488,-0.570], [0.486,-0.611], [0.493,-0.657], [0.509,-0.707], [0.525,-0.749], [0.554,-0.790], [0.593,-0.814], [0.635,-0.793], [0.674,-0.766], [0.689,-0.723], [0.703,-0.680], [0.718,-0.637], [0.733,-0.594], [0.737,-0.547], [0.753,-0.502], [0.759,-0.450], [0.769,-0.408], [0.780,-0.331], [0.791,-0.255], [0.803,-0.179], [0.814,-0.102], [0.886,-0.110], [0.960,-0.130], [1.015,-0.143], [1.058,-0.149], ], - 'w' : [ [0.030,-0.781], [0.050,-0.754], [0.083,-0.708], [0.102,-0.684], [0.123,-0.659], [0.146,-0.611], [0.170,-0.564], [0.193,-0.516], [0.216,-0.468], [0.240,-0.420], [0.262,-0.361], [0.284,-0.290], [0.306,-0.219], [0.328,-0.148], [0.350,-0.077], [0.361,-0.041], [0.356,-0.126], [0.352,-0.210], [0.348,-0.294], [0.343,-0.379], [0.339,-0.463], [0.342,-0.517], [0.351,-0.602], [0.359,-0.670], [0.390,-0.738], [0.433,-0.783], [0.495,-0.799], [0.565,-0.776], [0.589,-0.728], [0.612,-0.680], [0.636,-0.632], [0.655,-0.585], [0.673,-0.537], [0.689,-0.490], [0.704,-0.442], [0.711,-0.358], [0.719,-0.274], [0.726,-0.190], [0.734,-0.105], [0.741,-0.064], [0.753,-0.120], [0.765,-0.219], [0.777,-0.317], [0.789,-0.416], [0.801,-0.515], [0.812,-0.614], [0.824,-0.712], [0.867,-0.780], [0.911,-0.786], [0.952,-0.775], [0.988,-0.723], [1.014,-0.682], [1.037,-0.634], [1.061,-0.587], [1.073,-0.530], [1.085,-0.448], [1.091,-0.403], [1.101,-0.314], [1.112,-0.224], [1.122,-0.135], [1.133,-0.064], [1.188,-0.072], [1.244,-0.089], [1.298,-0.106], [1.356,-0.149], ], - 'x' : [ [0.085,-0.786], [0.170,-0.786], [0.220,-0.721], [0.262,-0.667], [0.304,-0.614], [0.346,-0.560], [0.388,-0.506], [0.430,-0.452], [0.471,-0.398], [0.522,-0.337], [0.555,-0.291], [0.597,-0.237], [0.639,-0.183], [0.681,-0.129], [0.723,-0.075], [0.765,-0.021], [0.799,0.021], [0.765,-0.021], [0.723,-0.075], [0.681,-0.129], [0.639,-0.183], [0.597,-0.237], [0.555,-0.291], [0.522,-0.337], [0.445,-0.429], [0.417,-0.383], [0.380,-0.315], [0.343,-0.248], [0.306,-0.181], [0.269,-0.114], [0.232,-0.046], [0.196,0.021], [0.232,-0.046], [0.269,-0.114], [0.306,-0.181], [0.343,-0.248], [0.380,-0.315], [0.417,-0.383], [0.445,-0.429], [0.491,-0.517], [0.528,-0.585], [0.565,-0.652], [0.602,-0.719], [0.639,-0.786], [0.680,-0.824], [0.718,-0.830], [0.763,-0.846], [0.799,-0.842], [0.834,-0.837], [0.863,-0.820], [0.901,-0.808], [0.935,-0.795], [0.986,-0.786], ], - 'y' : [ [0.033,-0.778], [0.066,-0.760], [0.099,-0.739], [0.124,-0.720], [0.145,-0.684], [0.166,-0.648], [0.187,-0.612], [0.208,-0.576], [0.229,-0.540], [0.251,-0.504], [0.272,-0.468], [0.293,-0.431], [0.314,-0.395], [0.335,-0.359], [0.357,-0.323], [0.378,-0.287], [0.399,-0.251], [0.420,-0.215], [0.441,-0.179], [0.462,-0.143], [0.513,-0.123], [0.547,-0.123], [0.586,-0.138], [0.604,-0.161], [0.611,-0.198], [0.606,-0.241], [0.601,-0.279], [0.585,-0.358], [0.570,-0.437], [0.554,-0.515], [0.539,-0.594], [0.523,-0.672], [0.521,-0.735], [0.531,-0.788], [0.549,-0.811], [0.568,-0.834], [0.586,-0.857], [0.609,-0.878], [0.635,-0.895], [0.669,-0.902], [0.703,-0.902], [0.773,-0.893], [0.838,-0.857], [0.870,-0.823], [0.943,-0.745], [0.950,-0.674], [0.957,-0.603], [0.964,-0.533], [0.971,-0.462], [0.977,-0.391], [0.984,-0.320], [0.991,-0.249], [0.998,-0.179], [1.005,-0.132], [0.998,-0.179], [0.991,-0.249], [0.984,-0.320], [0.977,-0.391], [0.971,-0.462], [0.964,-0.533], [0.957,-0.603], [0.950,-0.674], [0.943,-0.745], [0.936,-0.816], [0.929,-0.887], [0.923,-0.957], [0.916,-1.028], [0.909,-1.099], [0.902,-1.170], [0.895,-1.241], [0.888,-1.311], [0.881,-1.382], [0.875,-1.453], [0.868,-1.524], [0.838,-1.571], [0.787,-1.584], [0.720,-1.593], [0.652,-1.601], [0.590,-1.593], [0.543,-1.576], [0.524,-1.553], [0.506,-1.530], [0.488,-1.507], [0.472,-1.476], [0.466,-1.438], [0.473,-1.387], [0.497,-1.348], [0.511,-1.314], [0.534,-1.275], [0.548,-1.241], [0.567,-1.205], [0.582,-1.181], [0.597,-1.158], [0.612,-1.134], [0.627,-1.111], [0.642,-1.087], [0.657,-1.064], [0.698,-1.038], [0.747,-1.012], [0.796,-0.986], [0.846,-0.959], [0.983,-0.897], [1.038,-0.858], [1.094,-0.827], [1.151,-0.809], [1.207,-0.791], [1.258,-0.786], ], - 'z' : [ [0.034,-0.752], [0.067,-0.708], [0.083,-0.685], [0.116,-0.639], [0.133,-0.615], [0.166,-0.569], [0.183,-0.546], [0.216,-0.500], [0.233,-0.476], [0.266,-0.430], [0.287,-0.395], [0.316,-0.353], [0.333,-0.327], [0.366,-0.285], [0.389,-0.251], [0.440,-0.191], [0.491,-0.123], [0.516,-0.083], [0.549,-0.047], [0.576,-0.030], [0.615,-0.036], [0.649,-0.059], [0.665,-0.083], [0.682,-0.106], [0.699,-0.129], [0.708,-0.191], [0.699,-0.245], [0.678,-0.319], [0.652,-0.386], [0.615,-0.453], [0.582,-0.500], [0.542,-0.574], [0.499,-0.639], [0.466,-0.685], [0.449,-0.708], [0.399,-0.777], [0.383,-0.801], [0.399,-0.777], [0.449,-0.708], [0.466,-0.685], [0.499,-0.639], [0.549,-0.639], [0.576,-0.667], [0.599,-0.708], [0.615,-0.731], [0.642,-0.769], [0.665,-0.824], [0.669,-0.847], [0.665,-0.870], [0.665,-0.916], [0.665,-0.963], [0.652,-1.084], [0.627,-1.169], [0.602,-1.243], [0.582,-1.287], [0.566,-1.310], [0.532,-1.380], [0.516,-1.403], [0.493,-1.432], [0.459,-1.495], [0.432,-1.519], [0.401,-1.534], [0.366,-1.519], [0.349,-1.495], [0.304,-1.441], [0.283,-1.403], [0.270,-1.356], [0.283,-1.310], [0.303,-1.267], [0.333,-1.218], [0.349,-1.194], [0.366,-1.171], [0.383,-1.148], [0.399,-1.125], [0.416,-1.102], [0.432,-1.079], [0.449,-1.055], [0.466,-1.032], [0.501,-1.002], [0.536,-0.965], [0.571,-0.931], [0.605,-0.897], [0.640,-0.871], [0.675,-0.846], [0.710,-0.829], [0.745,-0.812], [0.780,-0.803], [0.815,-0.791], [0.850,-0.786], [0.892,-0.778], [0.935,-0.778], [0.978,-0.786], ], - 'a*' : [ [0.068,-0.174], [0.136,-0.149], [0.204,-0.132], [0.272,-0.098], [0.340,-0.089], [0.432,-0.081], [0.527,-0.055], [0.629,-0.036], [0.679,-0.036], [0.697,-0.149], [0.689,-0.293], [0.680,-0.404], [0.663,-0.489], [0.654,-0.592], [0.646,-0.639], [0.561,-0.718], [0.501,-0.773], [0.425,-0.801], [0.357,-0.820], [0.279,-0.801], [0.230,-0.754], [0.213,-0.731], [0.184,-0.681], [0.151,-0.616], [0.146,-0.557], [0.146,-0.500], [0.153,-0.455], [0.180,-0.395], [0.204,-0.353], [0.219,-0.319], [0.246,-0.276], [0.272,-0.234], [0.298,-0.191], [0.333,-0.157], [0.379,-0.132], [0.432,-0.081], [0.527,-0.055], [0.629,-0.036], [0.679,-0.036], [0.697,-0.149], [0.689,-0.293], [0.680,-0.404], [0.663,-0.489], [0.654,-0.592], [0.646,-0.639], [0.678,-0.744], [0.729,-0.801], [0.781,-0.786], [0.850,-0.786], ], - 'b*' : [ [0.043,-0.157], [0.085,-0.166], [0.128,-0.157], [0.179,-0.157], [0.230,-0.162], [0.281,-0.157], [0.332,-0.140], [0.365,-0.115], [0.391,-0.064], [0.414,-0.004], [0.443,0.064], [0.472,0.140], [0.500,0.241], [0.529,0.320], [0.544,0.399], [0.546,0.510], [0.530,0.602], [0.487,0.674], [0.431,0.743], [0.390,0.750], [0.355,0.739], [0.324,0.724], [0.300,0.686], [0.281,0.627], [0.275,0.497], [0.274,0.368], [0.272,0.238], [0.270,0.108], [0.274,-0.022], [0.275,-0.152], [0.277,-0.282], [0.279,-0.412], [0.281,-0.542], [0.291,-0.672], [0.309,-0.718], [0.339,-0.771], [0.369,-0.786], [0.420,-0.786], [0.457,-0.782], [0.494,-0.764], [0.522,-0.746], [0.548,-0.688], [0.562,-0.634], [0.580,-0.573], [0.594,-0.514], [0.613,-0.446], [0.619,-0.377], [0.628,-0.293], [0.630,-0.200], [0.631,-0.112], [0.701,-0.140], [0.748,-0.157], [0.799,-0.149], ], - 'c*' : [ [0.085,-0.140], [0.175,-0.132], [0.243,-0.123], [0.311,-0.106], [0.367,-0.089], [0.413,-0.081], [0.456,-0.072], [0.500,-0.064], [0.566,-0.064], [0.617,-0.106], [0.651,-0.191], [0.617,-0.106], [0.566,-0.064], [0.500,-0.064], [0.456,-0.072], [0.413,-0.081], [0.367,-0.094], [0.331,-0.123], [0.300,-0.152], [0.267,-0.191], [0.243,-0.222], [0.217,-0.268], [0.170,-0.407], [0.170,-0.497], [0.173,-0.565], [0.191,-0.657], [0.217,-0.708], [0.234,-0.731], [0.251,-0.754], [0.277,-0.795], [0.326,-0.829], [0.417,-0.846], [0.532,-0.829], [0.609,-0.820], [0.668,-0.812], [0.736,-0.803], [0.821,-0.795], [0.906,-0.786], ], - 'd*' : [ [0.068,-0.157], [0.136,-0.166], [0.204,-0.157], [0.272,-0.140], [0.340,-0.123], [0.425,-0.123], [0.469,-0.089], [0.515,-0.072], [0.629,-0.043], [0.697,-0.036], [0.782,-0.036], [0.697,-0.036], [0.629,-0.043], [0.515,-0.072], [0.469,-0.089], [0.425,-0.123], [0.357,-0.191], [0.333,-0.242], [0.313,-0.319], [0.298,-0.395], [0.289,-0.455], [0.282,-0.500], [0.279,-0.557], [0.287,-0.616], [0.320,-0.681], [0.366,-0.754], [0.415,-0.801], [0.459,-0.810], [0.510,-0.808], [0.561,-0.801], [0.637,-0.773], [0.697,-0.718], [0.799,-0.650], [0.867,-0.639], [0.867,-0.592], [0.867,-0.489], [0.867,-0.404], [0.867,-0.293], [0.867,-0.149], [0.867,0.064], [0.867,0.234], [0.867,0.404], [0.867,0.574], [0.867,0.744], [0.867,0.574], [0.867,0.404], [0.867,0.234], [0.867,0.064], [0.867,-0.149], [0.867,-0.293], [0.867,-0.404], [0.867,-0.489], [0.867,-0.592], [0.867,-0.639], [0.875,-0.701], [0.899,-0.744], [0.950,-0.801], [1.002,-0.824], [1.068,-0.815], [1.122,-0.812], [1.190,-0.795], [1.275,-0.786], ], - 'e*' : [ [0.085,-0.149], [0.136,-0.162], [0.170,-0.174], [0.204,-0.191], [0.231,-0.208], [0.264,-0.242], [0.315,-0.276], [0.383,-0.327], [0.451,-0.344], [0.501,-0.336], [0.552,-0.268], [0.566,-0.229], [0.568,-0.191], [0.559,-0.160], [0.542,-0.106], [0.525,-0.072], [0.495,-0.047], [0.452,-0.030], [0.410,-0.021], [0.367,-0.030], [0.325,-0.047], [0.294,-0.072], [0.260,-0.106], [0.235,-0.149], [0.231,-0.208], [0.231,-0.268], [0.231,-0.327], [0.235,-0.404], [0.240,-0.446], [0.250,-0.497], [0.260,-0.548], [0.281,-0.616], [0.298,-0.667], [0.332,-0.701], [0.365,-0.735], [0.417,-0.761], [0.485,-0.769], [0.552,-0.778], [0.620,-0.786], [0.680,-0.786], [0.765,-0.786], ], - 'f*' : [ [0.043,-0.191], [0.076,-0.234], [0.111,-0.310], [0.145,-0.395], [0.179,-0.446], [0.213,-0.489], [0.247,-0.531], [0.281,-0.574], [0.321,-0.642], [0.374,-0.592], [0.425,-0.548], [0.451,-0.446], [0.468,-0.361], [0.485,-0.276], [0.501,-0.191], [0.518,-0.106], [0.535,-0.038], [0.552,0.047], [0.565,0.131], [0.582,0.212], [0.605,0.299], [0.619,0.402], [0.632,0.506], [0.614,0.607], [0.578,0.667], [0.535,0.680], [0.485,0.684], [0.425,0.671], [0.374,0.652], [0.329,0.619], [0.298,0.531], [0.294,0.428], [0.292,0.299], [0.294,0.169], [0.296,-0.000], [0.296,-0.172], [0.296,-0.276], [0.298,-0.385], [0.297,-0.489], [0.296,-0.598], [0.295,-0.710], [0.295,-0.829], [0.292,-0.931], [0.289,-1.041], [0.286,-1.126], [0.281,-1.254], [0.281,-1.356], [0.279,-1.466], [0.272,-1.602], [0.323,-1.602], [0.374,-1.601], [0.423,-1.594], [0.474,-1.551], [0.510,-1.509], [0.542,-1.466], [0.550,-1.381], [0.542,-1.296], [0.533,-1.211], [0.522,-1.126], [0.508,-1.041], [0.491,-0.956], [0.468,-0.888], [0.442,-0.846], [0.383,-0.752], [0.420,-0.769], [0.468,-0.803], [0.510,-0.829], [0.567,-0.812], [0.639,-0.803], [0.723,-0.795], [0.807,-0.786], ], - 'g*' : [ [0.068,-0.157], [0.136,-0.166], [0.204,-0.174], [0.272,-0.183], [0.340,-0.174], [0.391,-0.179], [0.448,-0.175], [0.480,-0.149], [0.525,-0.132], [0.576,-0.115], [0.627,-0.098], [0.678,-0.086], [0.730,-0.089], [0.748,-0.123], [0.745,-0.191], [0.741,-0.259], [0.738,-0.327], [0.734,-0.395], [0.731,-0.463], [0.728,-0.531], [0.724,-0.599], [0.721,-0.667], [0.717,-0.735], [0.663,-0.761], [0.610,-0.786], [0.525,-0.812], [0.457,-0.824], [0.374,-0.812], [0.304,-0.786], [0.247,-0.754], [0.202,-0.676], [0.181,-0.592], [0.177,-0.548], [0.197,-0.506], [0.231,-0.458], [0.247,-0.430], [0.281,-0.384], [0.314,-0.337], [0.347,-0.291], [0.374,-0.251], [0.406,-0.217], [0.448,-0.175], [0.480,-0.149], [0.525,-0.132], [0.576,-0.115], [0.627,-0.098], [0.678,-0.086], [0.730,-0.089], [0.748,-0.123], [0.745,-0.191], [0.741,-0.259], [0.738,-0.327], [0.734,-0.395], [0.731,-0.463], [0.728,-0.531], [0.724,-0.599], [0.721,-0.667], [0.717,-0.735], [0.714,-0.803], [0.711,-0.871], [0.707,-0.939], [0.704,-1.007], [0.700,-1.075], [0.697,-1.143], [0.694,-1.211], [0.690,-1.279], [0.687,-1.347], [0.683,-1.415], [0.680,-1.484], [0.677,-1.551], [0.673,-1.619], [0.612,-1.615], [0.544,-1.608], [0.493,-1.598], [0.442,-1.568], [0.391,-1.526], [0.340,-1.466], [0.306,-1.398], [0.289,-1.347], [0.272,-1.279], [0.281,-1.228], [0.306,-1.186], [0.347,-1.125], [0.377,-1.084], [0.414,-1.041], [0.474,-0.990], [0.542,-0.948], [0.593,-0.914], [0.647,-0.871], [0.720,-0.829], [0.796,-0.820], [0.884,-0.812], [0.969,-0.803], [1.054,-0.786], ], - 'h*' : [ [0.068,-0.174], [0.136,-0.200], [0.204,-0.217], [0.272,-0.225], [0.323,-0.217], [0.303,-0.276], [0.326,-0.242], [0.349,-0.200], [0.383,-0.155], [0.432,-0.083], [0.483,-0.038], [0.508,0.013], [0.549,0.064], [0.575,0.131], [0.602,0.202], [0.617,0.249], [0.641,0.297], [0.651,0.370], [0.660,0.438], [0.662,0.523], [0.651,0.616], [0.641,0.693], [0.599,0.742], [0.542,0.769], [0.483,0.769], [0.406,0.738], [0.355,0.702], [0.321,0.636], [0.295,0.511], [0.295,0.425], [0.295,0.339], [0.295,0.227], [0.295,0.114], [0.295,0.001], [0.295,-0.111], [0.295,-0.224], [0.295,-0.336], [0.295,-0.449], [0.295,-0.561], [0.295,-0.674], [0.295,-0.786], [0.299,-0.674], [0.302,-0.561], [0.329,-0.514], [0.368,-0.447], [0.392,-0.386], [0.420,-0.307], [0.447,-0.255], [0.475,-0.185], [0.507,-0.149], [0.564,-0.132], [0.625,-0.123], [0.678,-0.132], [0.743,-0.166], [0.767,-0.229], [0.760,-0.307], [0.755,-0.375], [0.748,-0.453], [0.748,-0.533], [0.761,-0.623], [0.786,-0.717], [0.845,-0.766], [0.920,-0.794], [1.005,-0.786], ], - 'i*' : [ [0.051,-0.166], [0.084,-0.167], [0.118,-0.160], [0.154,-0.143], [0.192,-0.084], [0.233,-0.026], [0.227,-0.136], [0.224,-0.195], [0.218,-0.280], [0.216,-0.365], [0.216,-0.425], [0.216,-0.501], [0.216,-0.544], [0.214,-0.629], [0.219,-0.706], [0.241,-0.759], [0.271,-0.806], [0.347,-0.827], [0.431,-0.803], ], - 'j*' : [ [0.034,-0.155], [0.061,-0.162], [0.095,-0.166], [0.129,-0.174], [0.163,-0.157], [0.197,-0.140], [0.231,-0.115], [0.265,-0.089], [0.299,-0.072], [0.316,-0.055], [0.333,-0.050], [0.357,-0.038], [0.383,-0.049], [0.383,-0.099], [0.383,-0.167], [0.383,-0.276], [0.383,-0.395], [0.383,-0.513], [0.383,-0.632], [0.383,-0.751], [0.383,-0.869], [0.383,-0.988], [0.383,-1.107], [0.383,-1.225], [0.383,-1.344], [0.368,-1.405], [0.349,-1.466], [0.326,-1.514], [0.296,-1.530], [0.255,-1.534], [0.218,-1.518], [0.196,-1.496], [0.172,-1.406], [0.162,-1.296], [0.159,-1.211], [0.173,-1.126], [0.196,-1.053], [0.218,-1.005], [0.241,-0.957], [0.263,-0.909], [0.286,-0.861], [0.301,-0.837], [0.328,-0.808], [0.356,-0.780], [0.384,-0.753], [0.408,-0.742], [0.439,-0.734], [0.473,-0.733], [0.509,-0.750], [0.552,-0.767], [0.595,-0.786], ], - 'k*' : [ [0.043,-0.166], [0.085,-0.191], [0.119,-0.208], [0.153,-0.251], [0.187,-0.276], [0.221,-0.276], [0.272,-0.259], [0.323,-0.234], [0.337,-0.305], [0.384,-0.226], [0.431,-0.147], [0.479,-0.069], [0.526,0.010], [0.555,0.056], [0.584,0.103], [0.605,0.149], [0.622,0.195], [0.659,0.261], [0.677,0.309], [0.695,0.356], [0.713,0.404], [0.732,0.451], [0.750,0.499], [0.765,0.565], [0.771,0.635], [0.737,0.676], [0.695,0.684], [0.654,0.684], [0.603,0.684], [0.552,0.676], [0.501,0.659], [0.451,0.612], [0.400,0.562], [0.357,0.466], [0.340,0.369], [0.340,0.273], [0.340,0.176], [0.340,0.079], [0.340,0.010], [0.340,-0.066], [0.340,-0.143], [0.340,-0.219], [0.340,-0.296], [0.340,-0.372], [0.340,-0.449], [0.340,-0.525], [0.340,-0.601], [0.340,-0.678], [0.340,-0.754], [0.340,-0.847], [0.340,-0.754], [0.340,-0.678], [0.340,-0.601], [0.340,-0.525], [0.340,-0.449], [0.354,-0.372], [0.397,-0.361], [0.465,-0.353], [0.533,-0.344], [0.618,-0.327], [0.686,-0.302], [0.754,-0.276], [0.797,-0.234], [0.822,-0.198], [0.812,-0.140], [0.788,-0.089], [0.758,-0.059], [0.720,-0.032], [0.652,-0.055], [0.601,-0.106], [0.516,-0.191], [0.465,-0.276], [0.431,-0.336], [0.383,-0.378], [0.414,-0.421], [0.455,-0.453], [0.489,-0.500], [0.522,-0.546], [0.554,-0.592], [0.577,-0.639], [0.591,-0.662], [0.622,-0.708], [0.655,-0.754], [0.688,-0.801], [0.729,-0.846], [0.771,-0.871], [0.814,-0.863], [0.856,-0.846], [0.899,-0.829], [0.941,-0.812], [0.971,-0.803], [1.011,-0.786], [1.065,-0.786], [1.105,-0.786], ], - 'l*' : [ [0.031,-0.157], [0.054,-0.174], [0.088,-0.191], [0.122,-0.234], [0.156,-0.276], [0.207,-0.302], [0.241,-0.319], [0.284,-0.327], [0.306,-0.332], [0.340,-0.286], [0.377,-0.238], [0.403,-0.191], [0.435,-0.115], [0.459,-0.055], [0.483,0.013], [0.501,0.056], [0.510,0.095], [0.524,0.140], [0.534,0.190], [0.548,0.237], [0.554,0.284], [0.566,0.351], [0.578,0.404], [0.585,0.480], [0.594,0.566], [0.595,0.613], [0.585,0.682], [0.550,0.734], [0.515,0.771], [0.480,0.782], [0.451,0.786], [0.400,0.781], [0.347,0.767], [0.324,0.719], [0.315,0.672], [0.308,0.632], [0.304,0.574], [0.304,0.488], [0.304,0.401], [0.304,0.314], [0.304,0.227], [0.304,0.141], [0.304,0.054], [0.304,-0.033], [0.304,-0.119], [0.303,-0.206], [0.303,-0.293], [0.303,-0.380], [0.303,-0.466], [0.303,-0.553], [0.303,-0.640], [0.311,-0.702], [0.343,-0.752], [0.383,-0.778], [0.434,-0.784], [0.483,-0.807], [0.538,-0.821], [0.603,-0.803], [0.677,-0.795], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], ], - 'm*' : [ [0.034,-0.149], [0.085,-0.140], [0.136,-0.140], [0.187,-0.132], [0.238,-0.123], [0.272,-0.106], [0.315,-0.072], [0.349,-0.055], [0.394,-0.059], [0.410,-0.083], [0.414,-0.103], [0.419,-0.154], [0.424,-0.205], [0.430,-0.256], [0.435,-0.307], [0.440,-0.358], [0.431,-0.402], [0.421,-0.447], [0.411,-0.491], [0.402,-0.535], [0.392,-0.579], [0.382,-0.624], [0.373,-0.668], [0.363,-0.712], [0.353,-0.756], [0.344,-0.801], [0.353,-0.756], [0.363,-0.712], [0.373,-0.668], [0.382,-0.624], [0.392,-0.579], [0.402,-0.535], [0.411,-0.491], [0.421,-0.447], [0.431,-0.402], [0.440,-0.358], [0.460,-0.314], [0.488,-0.276], [0.510,-0.245], [0.527,-0.222], [0.543,-0.198], [0.560,-0.175], [0.577,-0.152], [0.593,-0.129], [0.627,-0.089], [0.661,-0.064], [0.711,-0.044], [0.760,-0.036], [0.776,-0.059], [0.793,-0.083], [0.810,-0.106], [0.820,-0.143], [0.830,-0.180], [0.840,-0.217], [0.850,-0.254], [0.859,-0.291], [0.848,-0.340], [0.836,-0.388], [0.825,-0.437], [0.813,-0.486], [0.801,-0.534], [0.790,-0.583], [0.778,-0.632], [0.766,-0.680], [0.755,-0.729], [0.754,-0.777], [0.755,-0.729], [0.766,-0.680], [0.778,-0.632], [0.790,-0.583], [0.801,-0.534], [0.813,-0.486], [0.825,-0.437], [0.836,-0.388], [0.848,-0.340], [0.859,-0.291], [0.876,-0.268], [0.901,-0.234], [0.926,-0.198], [0.943,-0.175], [0.961,-0.140], [0.993,-0.106], [1.009,-0.083], [1.035,-0.059], [1.103,-0.038], [1.176,-0.059], [1.209,-0.106], [1.225,-0.129], [1.242,-0.175], [1.234,-0.224], [1.225,-0.272], [1.217,-0.320], [1.209,-0.369], [1.200,-0.417], [1.192,-0.466], [1.184,-0.514], [1.176,-0.562], [1.167,-0.611], [1.159,-0.659], [1.159,-0.708], [1.192,-0.754], [1.209,-0.777], [1.241,-0.803], [1.325,-0.812], [1.375,-0.812], [1.422,-0.803], [1.475,-0.799], [1.564,-0.795], [1.649,-0.786], ], - 'n*' : [ [0.051,-0.132], [0.102,-0.115], [0.153,-0.098], [0.204,-0.047], [0.238,-0.004], [0.264,0.021], [0.291,0.038], [0.332,0.064], [0.374,0.038], [0.400,-0.013], [0.414,-0.059], [0.423,-0.106], [0.431,-0.149], [0.435,-0.198], [0.430,-0.254], [0.430,-0.310], [0.430,-0.365], [0.430,-0.421], [0.430,-0.476], [0.430,-0.532], [0.430,-0.588], [0.430,-0.643], [0.430,-0.699], [0.430,-0.754], [0.430,-0.699], [0.430,-0.643], [0.430,-0.588], [0.430,-0.532], [0.430,-0.476], [0.430,-0.421], [0.430,-0.365], [0.430,-0.310], [0.430,-0.254], [0.459,-0.242], [0.485,-0.217], [0.508,-0.198], [0.525,-0.175], [0.542,-0.152], [0.558,-0.129], [0.587,-0.098], [0.620,-0.059], [0.656,-0.013], [0.691,0.010], [0.741,0.010], [0.774,-0.013], [0.791,-0.036], [0.808,-0.059], [0.816,-0.106], [0.825,-0.149], [0.825,-0.234], [0.825,-0.293], [0.825,-0.361], [0.825,-0.421], [0.825,-0.480], [0.825,-0.523], [0.825,-0.574], [0.825,-0.616], [0.825,-0.662], [0.825,-0.708], [0.833,-0.761], [0.865,-0.812], [0.924,-0.820], [0.967,-0.812], [1.024,-0.786], [1.088,-0.786], ], - 'o*' : [ [0.051,-0.170], [0.102,-0.174], [0.153,-0.166], [0.204,-0.157], [0.255,-0.149], [0.306,-0.140], [0.346,-0.152], [0.363,-0.129], [0.380,-0.106], [0.396,-0.083], [0.431,-0.072], [0.474,-0.055], [0.533,-0.055], [0.576,-0.072], [0.596,-0.083], [0.618,-0.106], [0.634,-0.123], [0.646,-0.149], [0.663,-0.175], [0.669,-0.224], [0.668,-0.272], [0.673,-0.320], [0.671,-0.368], [0.665,-0.417], [0.660,-0.465], [0.651,-0.513], [0.637,-0.562], [0.620,-0.610], [0.603,-0.658], [0.592,-0.701], [0.570,-0.752], [0.544,-0.795], [0.501,-0.829], [0.459,-0.846], [0.408,-0.854], [0.346,-0.842], [0.321,-0.820], [0.296,-0.791], [0.263,-0.754], [0.247,-0.731], [0.230,-0.708], [0.213,-0.685], [0.202,-0.659], [0.185,-0.616], [0.168,-0.574], [0.156,-0.531], [0.163,-0.480], [0.187,-0.430], [0.205,-0.395], [0.216,-0.361], [0.238,-0.319], [0.263,-0.268], [0.280,-0.245], [0.295,-0.222], [0.321,-0.183], [0.346,-0.152], [0.363,-0.129], [0.380,-0.106], [0.396,-0.083], [0.431,-0.072], [0.473,-0.106], [0.493,-0.149], [0.518,-0.183], [0.544,-0.200], [0.578,-0.217], [0.612,-0.225], [0.646,-0.225], [0.680,-0.225], [0.714,-0.225], [0.748,-0.221], [0.782,-0.217], [0.816,-0.208], [0.850,-0.191], [0.884,-0.174], [0.918,-0.149], ], - 'p*' : [ [0.043,-0.153], [0.085,-0.157], [0.136,-0.157], [0.187,-0.157], [0.238,-0.140], [0.279,-0.136], [0.287,-0.215], [0.285,-0.323], [0.283,-0.431], [0.282,-0.539], [0.280,-0.646], [0.278,-0.754], [0.276,-0.862], [0.274,-0.970], [0.272,-1.078], [0.270,-1.186], [0.268,-1.294], [0.267,-1.402], [0.265,-1.510], [0.267,-1.402], [0.268,-1.294], [0.270,-1.186], [0.272,-1.078], [0.274,-0.970], [0.276,-0.862], [0.278,-0.754], [0.280,-0.646], [0.282,-0.539], [0.283,-0.431], [0.285,-0.323], [0.287,-0.215], [0.289,-0.107], [0.279,-0.136], [0.322,-0.091], [0.353,-0.048], [0.393,-0.020], [0.425,-0.002], [0.449,0.007], [0.479,0.017], [0.525,0.010], [0.577,-0.011], [0.624,-0.077], [0.637,-0.104], [0.668,-0.170], [0.686,-0.282], [0.686,-0.357], [0.689,-0.469], [0.675,-0.538], [0.663,-0.616], [0.641,-0.654], [0.606,-0.694], [0.566,-0.714], [0.504,-0.754], [0.446,-0.747], [0.391,-0.744], [0.340,-0.727], [0.391,-0.744], [0.446,-0.747], [0.504,-0.754], [0.540,-0.748], [0.593,-0.763], [0.678,-0.777], [0.729,-0.783], [0.793,-0.803], [0.850,-0.803], [0.911,-0.795], [0.969,-0.786], ], - 'q*' : [ [0.051,-0.153], [0.102,-0.157], [0.153,-0.162], [0.204,-0.166], [0.255,-0.183], [0.306,-0.200], [0.357,-0.191], [0.408,-0.183], [0.459,-0.166], [0.514,-0.149], [0.559,-0.132], [0.610,-0.115], [0.661,-0.098], [0.712,-0.086], [0.764,-0.089], [0.782,-0.123], [0.779,-0.191], [0.775,-0.259], [0.772,-0.327], [0.768,-0.395], [0.765,-0.463], [0.762,-0.531], [0.758,-0.599], [0.755,-0.667], [0.751,-0.735], [0.697,-0.761], [0.644,-0.786], [0.559,-0.812], [0.491,-0.824], [0.408,-0.812], [0.338,-0.786], [0.281,-0.754], [0.236,-0.676], [0.215,-0.592], [0.207,-0.548], [0.231,-0.506], [0.265,-0.458], [0.281,-0.430], [0.315,-0.384], [0.348,-0.337], [0.381,-0.291], [0.408,-0.251], [0.440,-0.217], [0.482,-0.175], [0.514,-0.149], [0.559,-0.132], [0.610,-0.115], [0.661,-0.098], [0.712,-0.086], [0.764,-0.089], [0.782,-0.123], [0.779,-0.191], [0.775,-0.259], [0.772,-0.327], [0.768,-0.395], [0.765,-0.463], [0.762,-0.531], [0.758,-0.599], [0.755,-0.667], [0.751,-0.735], [0.748,-0.803], [0.745,-0.871], [0.741,-0.939], [0.738,-1.007], [0.734,-1.075], [0.731,-1.143], [0.728,-1.211], [0.724,-1.279], [0.721,-1.347], [0.717,-1.415], [0.714,-1.484], [0.711,-1.551], [0.707,-1.619], [0.748,-1.615], [0.799,-1.608], [0.833,-1.598], [0.867,-1.568], [0.901,-1.526], [0.935,-1.466], [0.969,-1.398], [0.986,-1.347], [0.995,-1.279], [0.986,-1.228], [0.969,-1.186], [0.935,-1.125], [0.901,-1.084], [0.867,-1.041], [0.833,-0.990], [0.799,-0.948], [0.782,-0.914], [0.782,-0.854], [0.830,-0.829], [0.884,-0.812], [0.935,-0.803], [0.986,-0.799], [1.020,-0.795], [1.105,-0.791], [1.207,-0.786], ], - 'r*' : [ [0.085,-0.174], [0.170,-0.183], [0.170,-0.064], [0.255,-0.064], [0.340,-0.064], [0.425,-0.064], [0.510,-0.064], [0.510,-0.149], [0.501,-0.234], [0.493,-0.319], [0.476,-0.404], [0.459,-0.489], [0.451,-0.574], [0.476,-0.659], [0.510,-0.701], [0.578,-0.744], [0.663,-0.769], [0.765,-0.786], ], - 's*' : [ [0.085,-0.149], [0.170,-0.157], [0.221,-0.174], [0.272,-0.200], [0.323,-0.234], [0.374,-0.234], [0.425,-0.225], [0.476,-0.217], [0.527,-0.200], [0.561,-0.191], [0.603,-0.166], [0.663,-0.145], [0.748,-0.119], [0.819,-0.106], [0.820,-0.174], [0.830,-0.222], [0.842,-0.289], [0.855,-0.353], [0.867,-0.402], [0.867,-0.446], [0.867,-0.490], [0.859,-0.534], [0.850,-0.578], [0.842,-0.622], [0.825,-0.666], [0.782,-0.710], [0.657,-0.769], [0.611,-0.757], [0.547,-0.735], [0.497,-0.684], [0.447,-0.616], [0.397,-0.531], [0.354,-0.446], [0.332,-0.361], [0.323,-0.276], [0.332,-0.361], [0.354,-0.446], [0.397,-0.531], [0.447,-0.616], [0.497,-0.684], [0.547,-0.735], [0.611,-0.757], [0.657,-0.769], [0.700,-0.786], [0.742,-0.795], [0.785,-0.803], [0.850,-0.812], [0.935,-0.803], [1.020,-0.795], [1.105,-0.786], ], - 't*' : [ [0.085,-0.191], [0.170,-0.234], [0.255,-0.276], [0.340,-0.259], [0.425,-0.191], [0.510,-0.106], [0.558,0.008], [0.573,0.161], [0.588,0.314], [0.552,0.314], [0.522,0.314], [0.467,0.314], [0.411,0.314], [0.340,0.314], [0.255,0.314], [0.170,0.314], [0.255,0.314], [0.340,0.314], [0.411,0.314], [0.467,0.314], [0.522,0.314], [0.552,0.314], [0.633,0.314], [0.688,0.314], [0.729,0.314], [0.784,0.314], [0.840,0.314], [0.895,0.314], [0.978,0.314], [1.062,0.314], [0.978,0.314], [0.895,0.314], [0.840,0.314], [0.784,0.314], [0.729,0.314], [0.688,0.314], [0.633,0.314], [0.588,0.314], [0.602,0.467], [0.617,0.621], [0.632,0.774], [0.632,0.621], [0.632,0.467], [0.632,0.314], [0.632,0.161], [0.632,0.008], [0.632,-0.146], [0.632,-0.299], [0.632,-0.452], [0.632,-0.605], [0.632,-0.759], [0.659,-0.805], [0.720,-0.816], [0.807,-0.799], [0.894,-0.791], [0.978,-0.786], [1.062,-0.786], [1.147,-0.786], [1.232,-0.786], ], - 'u*' : [ [0.043,-0.157], [0.085,-0.166], [0.128,-0.157], [0.162,-0.157], [0.196,-0.140], [0.230,-0.106], [0.272,-0.081], [0.306,-0.055], [0.344,-0.048], [0.338,-0.097], [0.332,-0.146], [0.325,-0.195], [0.319,-0.245], [0.312,-0.294], [0.306,-0.343], [0.299,-0.392], [0.293,-0.442], [0.286,-0.491], [0.280,-0.540], [0.273,-0.589], [0.267,-0.639], [0.260,-0.688], [0.254,-0.737], [0.260,-0.786], [0.289,-0.803], [0.332,-0.812], [0.383,-0.803], [0.425,-0.795], [0.461,-0.778], [0.501,-0.761], [0.544,-0.744], [0.583,-0.727], [0.616,-0.710], [0.646,-0.684], [0.671,-0.650], [0.682,-0.605], [0.686,-0.558], [0.689,-0.511], [0.693,-0.464], [0.697,-0.416], [0.700,-0.369], [0.704,-0.322], [0.708,-0.275], [0.711,-0.228], [0.715,-0.180], [0.719,-0.133], [0.723,-0.074], [0.726,-0.023], [0.723,-0.074], [0.719,-0.133], [0.715,-0.180], [0.711,-0.228], [0.708,-0.275], [0.704,-0.322], [0.700,-0.369], [0.697,-0.416], [0.693,-0.464], [0.712,-0.529], [0.719,-0.582], [0.731,-0.633], [0.748,-0.684], [0.756,-0.735], [0.790,-0.786], [0.845,-0.803], [0.901,-0.803], [0.944,-0.795], [1.020,-0.786], ], - 'v*' : [ [0.051,-0.157], [0.102,-0.140], [0.136,-0.123], [0.162,-0.098], [0.187,-0.081], [0.211,-0.055], [0.243,-0.054], [0.268,-0.076], [0.289,-0.097], [0.301,-0.134], [0.311,-0.176], [0.321,-0.212], [0.322,-0.244], [0.318,-0.280], [0.316,-0.321], [0.314,-0.363], [0.311,-0.404], [0.309,-0.446], [0.306,-0.487], [0.304,-0.528], [0.301,-0.570], [0.299,-0.611], [0.306,-0.657], [0.322,-0.707], [0.338,-0.749], [0.367,-0.790], [0.406,-0.814], [0.448,-0.793], [0.487,-0.766], [0.502,-0.723], [0.516,-0.680], [0.531,-0.637], [0.546,-0.594], [0.550,-0.547], [0.566,-0.502], [0.572,-0.450], [0.582,-0.408], [0.593,-0.331], [0.604,-0.255], [0.616,-0.179], [0.627,-0.102], [0.699,-0.110], [0.773,-0.130], [0.828,-0.143], [0.871,-0.149], ], - 'w*' : [ [0.051,-0.128], [0.102,-0.115], [0.153,-0.081], [0.187,-0.064], [0.225,-0.041], [0.220,-0.126], [0.216,-0.210], [0.212,-0.294], [0.207,-0.379], [0.203,-0.463], [0.206,-0.517], [0.215,-0.602], [0.223,-0.670], [0.254,-0.738], [0.297,-0.783], [0.359,-0.799], [0.429,-0.776], [0.453,-0.728], [0.476,-0.680], [0.500,-0.632], [0.519,-0.585], [0.537,-0.537], [0.553,-0.490], [0.568,-0.442], [0.575,-0.358], [0.583,-0.274], [0.590,-0.190], [0.598,-0.105], [0.605,-0.064], [0.617,-0.120], [0.629,-0.219], [0.641,-0.317], [0.653,-0.416], [0.665,-0.515], [0.676,-0.614], [0.688,-0.712], [0.731,-0.780], [0.775,-0.786], [0.816,-0.775], [0.852,-0.723], [0.878,-0.682], [0.901,-0.634], [0.925,-0.587], [0.937,-0.530], [0.949,-0.448], [0.955,-0.403], [0.965,-0.314], [0.976,-0.224], [0.986,-0.135], [0.997,-0.064], [1.052,-0.072], [1.108,-0.089], [1.162,-0.106], [1.220,-0.149], ], - 'x*' : [ [0.043,-0.106], [0.085,-0.064], [0.128,-0.004], [0.196,0.021], [0.232,-0.046], [0.269,-0.114], [0.306,-0.181], [0.343,-0.248], [0.380,-0.315], [0.417,-0.383], [0.445,-0.429], [0.430,-0.452], [0.388,-0.506], [0.346,-0.560], [0.304,-0.614], [0.262,-0.667], [0.220,-0.721], [0.170,-0.786], [0.220,-0.721], [0.262,-0.667], [0.304,-0.614], [0.346,-0.560], [0.388,-0.506], [0.430,-0.452], [0.471,-0.398], [0.522,-0.337], [0.555,-0.291], [0.597,-0.237], [0.639,-0.183], [0.681,-0.129], [0.723,-0.075], [0.765,-0.021], [0.799,0.021], [0.765,-0.021], [0.723,-0.075], [0.681,-0.129], [0.639,-0.183], [0.597,-0.237], [0.555,-0.291], [0.522,-0.337], [0.471,-0.398], [0.445,-0.429], [0.491,-0.517], [0.528,-0.585], [0.565,-0.652], [0.602,-0.719], [0.639,-0.786], [0.680,-0.824], [0.718,-0.830], [0.763,-0.846], [0.799,-0.842], [0.834,-0.837], [0.863,-0.820], [0.901,-0.808], [0.935,-0.795], [0.986,-0.786], ], - 'y*' : [ [0.043,-0.157], [0.085,-0.166], [0.128,-0.157], [0.162,-0.157], [0.196,-0.149], [0.230,-0.140], [0.264,-0.123], [0.306,-0.123], [0.340,-0.123], [0.379,-0.138], [0.397,-0.161], [0.405,-0.198], [0.399,-0.241], [0.394,-0.279], [0.378,-0.358], [0.363,-0.437], [0.347,-0.515], [0.332,-0.594], [0.317,-0.672], [0.315,-0.735], [0.325,-0.788], [0.343,-0.811], [0.361,-0.834], [0.379,-0.857], [0.402,-0.878], [0.428,-0.895], [0.462,-0.902], [0.496,-0.902], [0.566,-0.893], [0.632,-0.857], [0.663,-0.823], [0.737,-0.745], [0.743,-0.674], [0.750,-0.603], [0.757,-0.533], [0.764,-0.462], [0.771,-0.391], [0.778,-0.320], [0.785,-0.249], [0.791,-0.179], [0.799,-0.132], [0.791,-0.179], [0.785,-0.249], [0.778,-0.320], [0.771,-0.391], [0.764,-0.462], [0.757,-0.533], [0.750,-0.603], [0.743,-0.674], [0.737,-0.745], [0.730,-0.816], [0.723,-0.887], [0.716,-0.957], [0.709,-1.028], [0.702,-1.099], [0.695,-1.170], [0.689,-1.241], [0.682,-1.311], [0.675,-1.382], [0.668,-1.453], [0.661,-1.524], [0.631,-1.571], [0.580,-1.584], [0.513,-1.593], [0.446,-1.601], [0.383,-1.593], [0.336,-1.576], [0.318,-1.553], [0.300,-1.530], [0.281,-1.507], [0.265,-1.476], [0.260,-1.438], [0.267,-1.387], [0.291,-1.348], [0.304,-1.314], [0.327,-1.275], [0.342,-1.241], [0.360,-1.205], [0.375,-1.181], [0.390,-1.158], [0.405,-1.134], [0.420,-1.111], [0.435,-1.087], [0.450,-1.064], [0.491,-1.038], [0.541,-1.012], [0.590,-0.986], [0.639,-0.959], [0.777,-0.897], [0.832,-0.858], [0.888,-0.827], [0.944,-0.809], [1.001,-0.791], [1.052,-0.786], ], - 'z*' : [ [0.043,-0.157], [0.085,-0.166], [0.136,-0.174], [0.187,-0.174], [0.238,-0.174], [0.289,-0.174], [0.340,-0.157], [0.374,-0.140], [0.406,-0.115], [0.431,-0.083], [0.464,-0.047], [0.491,-0.030], [0.530,-0.036], [0.564,-0.059], [0.595,-0.083], [0.612,-0.106], [0.629,-0.149], [0.623,-0.191], [0.614,-0.245], [0.593,-0.319], [0.567,-0.386], [0.530,-0.453], [0.497,-0.500], [0.457,-0.574], [0.414,-0.639], [0.381,-0.685], [0.364,-0.708], [0.314,-0.777], [0.298,-0.801], [0.314,-0.777], [0.364,-0.708], [0.381,-0.685], [0.414,-0.639], [0.464,-0.639], [0.491,-0.667], [0.514,-0.708], [0.530,-0.731], [0.557,-0.769], [0.580,-0.824], [0.584,-0.847], [0.580,-0.870], [0.580,-0.916], [0.580,-0.963], [0.567,-1.084], [0.542,-1.169], [0.517,-1.243], [0.497,-1.287], [0.481,-1.310], [0.447,-1.380], [0.431,-1.403], [0.408,-1.432], [0.374,-1.495], [0.347,-1.519], [0.316,-1.534], [0.281,-1.519], [0.264,-1.495], [0.219,-1.441], [0.198,-1.403], [0.185,-1.356], [0.198,-1.310], [0.218,-1.267], [0.248,-1.218], [0.264,-1.194], [0.281,-1.171], [0.298,-1.148], [0.314,-1.125], [0.331,-1.102], [0.347,-1.079], [0.364,-1.055], [0.381,-1.032], [0.416,-1.002], [0.451,-0.965], [0.486,-0.931], [0.520,-0.897], [0.555,-0.871], [0.590,-0.846], [0.625,-0.829], [0.660,-0.812], [0.695,-0.803], [0.730,-0.791], [0.765,-0.786], [0.816,-0.778], [0.867,-0.778], [0.918,-0.786], ], - ',' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.357,-0.701], [0.391,-0.616], [0.459,-0.701], [0.476,-0.786], [0.493,-0.871], [0.493,-0.956], [0.459,-1.041], [0.425,-1.126], [0.357,-1.211], [0.255,-1.296], [0.357,-1.211], [0.425,-1.126], [0.459,-1.041], [0.493,-0.956], [0.493,-0.871], [0.476,-0.786], [0.459,-0.701], [0.391,-0.616], [0.459,-0.701], [0.476,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], ], - '?' : [ [0.085,-0.786], [0.170,-0.786], [0.272,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.786], [0.425,-0.701], [0.425,-0.616], [0.425,-0.531], [0.425,-0.446], [0.425,-0.361], [0.425,-0.276], [0.425,-0.191], [0.425,-0.064], [0.527,-0.038], [0.586,-0.021], [0.640,0.004], [0.697,0.080], [0.734,0.149], [0.749,0.252], [0.748,0.387], [0.741,0.516], [0.726,0.600], [0.712,0.659], [0.672,0.740], [0.641,0.777], [0.586,0.786], [0.537,0.794], [0.485,0.786], [0.412,0.744], [0.340,0.701], [0.213,0.616], [0.340,0.701], [0.412,0.744], [0.485,0.786], [0.537,0.794], [0.586,0.786], [0.641,0.777], [0.672,0.740], [0.712,0.659], [0.726,0.600], [0.741,0.516], [0.748,0.387], [0.749,0.252], [0.734,0.149], [0.697,0.080], [0.640,0.004], [0.586,-0.021], [0.527,-0.038], [0.425,-0.064], [0.425,-0.191], [0.425,-0.276], [0.425,-0.361], [0.425,-0.446], [0.425,-0.531], [0.425,-0.616], [0.425,-0.701], [0.425,-0.786], [0.612,-0.786], [0.561,-0.659], [0.425,-0.574], [0.289,-0.659], [0.238,-0.786], [0.289,-0.914], [0.425,-0.999], [0.561,-0.914], [0.612,-0.786], [0.425,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], ], - '&' : [ [0.085,-0.786], [0.170,-0.786], [0.238,-0.786], [0.344,-0.778], [0.425,-0.774], [0.501,-0.774], [0.630,-0.761], [0.731,-0.748], [0.816,-0.684], [0.901,-0.574], [0.969,-0.506], [1.020,-0.440], [1.105,-0.319], [1.207,-0.191], [1.105,-0.319], [1.020,-0.440], [0.969,-0.506], [0.901,-0.574], [0.816,-0.684], [0.731,-0.748], [0.630,-0.761], [0.501,-0.774], [0.425,-0.774], [0.344,-0.778], [0.298,-0.718], [0.272,-0.676], [0.255,-0.599], [0.247,-0.497], [0.255,-0.327], [0.306,-0.191], [0.408,-0.064], [0.493,0.004], [0.544,0.047], [0.663,0.089], [0.756,0.154], [0.799,0.234], [0.842,0.335], [0.875,0.429], [0.885,0.520], [0.888,0.614], [0.871,0.690], [0.837,0.749], [0.790,0.777], [0.706,0.786], [0.637,0.786], [0.570,0.777], [0.499,0.760], [0.464,0.734], [0.440,0.681], [0.429,0.605], [0.422,0.548], [0.424,0.463], [0.432,0.404], [0.459,0.306], [0.501,0.174], [0.578,0.064], [0.646,-0.106], [0.714,-0.276], [0.765,-0.446], [0.816,-0.616], [0.867,-0.786], [0.935,-0.829], [1.020,-0.829], [1.097,-0.803], [1.191,-0.786], [1.290,-0.786], [1.385,-0.786], [1.462,-0.786], ], - '$' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-1.041], [0.510,-0.786], [0.510,-0.531], [0.510,-0.276], [0.510,-0.021], [0.510,0.234], [0.510,0.489], [0.510,0.829], [0.544,0.829], [0.544,0.489], [0.544,0.234], [0.544,-0.021], [0.544,-0.276], [0.544,-0.531], [0.544,-0.786], [0.544,-1.041], [0.544,-0.786], [0.652,-0.786], [0.729,-0.778], [0.790,-0.733], [0.829,-0.664], [0.887,-0.560], [0.912,-0.429], [0.904,-0.334], [0.880,-0.267], [0.831,-0.191], [0.774,-0.140], [0.708,-0.140], [0.629,-0.140], [0.544,-0.140], [0.475,-0.140], [0.408,-0.132], [0.340,-0.098], [0.306,-0.072], [0.272,-0.030], [0.221,0.038], [0.187,0.115], [0.170,0.242], [0.187,0.341], [0.238,0.440], [0.289,0.497], [0.349,0.530], [0.425,0.548], [0.510,0.548], [0.592,0.548], [0.680,0.548], [0.765,0.548], [0.850,0.548], [0.765,0.548], [0.680,0.548], [0.592,0.548], [0.510,0.548], [0.425,0.548], [0.349,0.530], [0.289,0.497], [0.238,0.440], [0.187,0.341], [0.170,0.242], [0.187,0.115], [0.221,0.038], [0.272,-0.030], [0.306,-0.072], [0.340,-0.098], [0.408,-0.132], [0.475,-0.140], [0.544,-0.140], [0.629,-0.140], [0.708,-0.140], [0.774,-0.140], [0.831,-0.191], [0.880,-0.267], [0.904,-0.334], [0.912,-0.429], [0.887,-0.560], [0.829,-0.664], [0.790,-0.733], [0.729,-0.778], [0.652,-0.786], [0.510,-0.786], [0.425,-0.786], [0.340,-0.786], [0.255,-0.786], [0.170,-0.786], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], ], - '!' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-0.531], [0.510,-0.276], [0.510,-0.021], [0.510,0.234], [0.510,0.489], [0.510,0.786], [0.510,0.489], [0.510,0.234], [0.510,-0.021], [0.510,-0.276], [0.510,-0.531], [0.510,-0.786], [0.697,-0.786], [0.646,-0.659], [0.510,-0.574], [0.374,-0.659], [0.323,-0.786], [0.374,-0.914], [0.510,-0.999], [0.646,-0.914], [0.697,-0.786], [0.510,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], ], -} diff --git a/src/models/input_text/raysol_sanserif.js b/src/models/input_text/raysol_sanserif.js deleted file mode 100644 index 777f0a7a..00000000 --- a/src/models/input_text/raysol_sanserif.js +++ /dev/null @@ -1,96 +0,0 @@ -export let raysol_sanserif = { - ' ' : [ [0.000,-0.786], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - '0' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.544,-0.691], [0.629,-0.595], [0.680,-0.500], [0.723,-0.404], [0.765,-0.308], [0.799,-0.213], [0.833,-0.117], [0.840,-0.009], [0.833,0.117], [0.799,0.212], [0.765,0.308], [0.723,0.404], [0.680,0.499], [0.629,0.595], [0.544,0.690], [0.425,0.786], [0.306,0.690], [0.221,0.595], [0.170,0.499], [0.128,0.404], [0.085,0.308], [0.051,0.212], [0.017,0.117], [0.010,-0.009], [0.017,-0.117], [0.051,-0.213], [0.085,-0.308], [0.128,-0.404], [0.170,-0.500], [0.221,-0.595], [0.306,-0.691], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - '1' : [ [0.085,-0.786], [0.085,-0.629], [0.085,-0.472], [0.085,-0.315], [0.085,-0.157], [0.085,-0.000], [0.085,0.157], [0.085,0.314], [0.085,0.472], [0.085,0.629], [0.085,0.786], [0.085,0.629], [0.085,0.472], [0.085,0.314], [0.085,0.157], [0.085,-0.000], [0.085,-0.157], [0.085,-0.315], [0.085,-0.472], [0.085,-0.629], [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - '2' : [ [0.085,-0.786], [0.170,-0.786], [0.085,-0.786], [0.177,-0.599], [0.269,-0.412], [0.360,-0.225], [0.452,-0.038], [0.544,0.149], [0.612,0.276], [0.654,0.404], [0.663,0.531], [0.637,0.616], [0.587,0.701], [0.527,0.752], [0.451,0.782], [0.383,0.786], [0.315,0.782], [0.238,0.752], [0.179,0.701], [0.128,0.616], [0.085,0.531], [0.128,0.616], [0.179,0.701], [0.238,0.752], [0.315,0.782], [0.383,0.786], [0.451,0.782], [0.527,0.752], [0.587,0.701], [0.637,0.616], [0.663,0.531], [0.654,0.404], [0.612,0.276], [0.544,0.149], [0.452,-0.038], [0.360,-0.225], [0.269,-0.412], [0.177,-0.599], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.765,-0.786], [0.850,-0.574], [0.850,-0.786], [0.935,-0.786], [1.275,-0.786], ], - '3' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.340,-0.786], [0.408,-0.782], [0.485,-0.752], [0.544,-0.701], [0.595,-0.616], [0.620,-0.531], [0.612,-0.404], [0.570,-0.276], [0.476,-0.149], [0.340,0.064], [0.255,0.064], [0.340,0.064], [0.501,0.149], [0.570,0.276], [0.612,0.404], [0.620,0.531], [0.595,0.616], [0.544,0.701], [0.485,0.752], [0.408,0.782], [0.340,0.786], [0.272,0.782], [0.196,0.752], [0.136,0.701], [0.085,0.616], [0.043,0.531], [0.085,0.616], [0.136,0.701], [0.196,0.752], [0.272,0.782], [0.340,0.786], [0.408,0.782], [0.485,0.752], [0.544,0.701], [0.595,0.616], [0.620,0.531], [0.612,0.404], [0.570,0.276], [0.501,0.149], [0.340,0.064], [0.255,0.064], [0.340,0.064], [0.476,-0.149], [0.570,-0.276], [0.612,-0.404], [0.620,-0.531], [0.595,-0.616], [0.544,-0.701], [0.485,-0.752], [0.408,-0.782], [0.340,-0.786], [0.272,-0.782], [0.196,-0.752], [0.136,-0.701], [0.085,-0.616], [0.043,-0.531], [0.000,-0.438], [0.043,-0.531], [0.085,-0.616], [0.136,-0.701], [0.196,-0.752], [0.272,-0.782], [0.340,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - '4' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.595,-0.616], [0.595,-0.446], [0.595,-0.276], [0.595,-0.106], [0.595,-0.000], [0.510,-0.000], [0.425,-0.000], [0.340,-0.000], [0.255,-0.000], [0.170,-0.000], [0.068,-0.000], [0.085,0.064], [0.085,0.234], [0.085,0.404], [0.085,0.574], [0.085,0.744], [0.085,0.786], [0.085,0.744], [0.085,0.574], [0.085,0.404], [0.085,0.234], [0.085,0.064], [0.085,-0.000], [0.170,-0.000], [0.255,-0.000], [0.340,-0.000], [0.425,-0.000], [0.510,-0.000], [0.595,-0.000], [0.680,-0.000], [0.807,-0.000], [0.935,-0.000], [0.807,-0.000], [0.680,-0.000], [0.595,-0.000], [0.595,0.064], [0.595,0.234], [0.595,0.404], [0.595,0.574], [0.595,0.744], [0.595,0.786], [0.595,0.744], [0.595,0.574], [0.595,0.404], [0.595,0.234], [0.595,0.064], [0.595,-0.000], [0.595,-0.106], [0.595,-0.276], [0.595,-0.446], [0.595,-0.616], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - '5' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.744], [0.493,-0.740], [0.570,-0.710], [0.629,-0.659], [0.680,-0.574], [0.706,-0.489], [0.714,-0.361], [0.697,-0.191], [0.654,-0.064], [0.561,0.064], [0.425,0.174], [0.272,0.166], [0.136,0.140], [0.153,0.302], [0.170,0.463], [0.187,0.625], [0.204,0.786], [0.289,0.786], [0.374,0.786], [0.459,0.786], [0.544,0.786], [0.680,0.786], [0.799,0.786], [0.680,0.786], [0.544,0.786], [0.459,0.786], [0.374,0.786], [0.289,0.786], [0.204,0.786], [0.187,0.625], [0.170,0.463], [0.153,0.302], [0.136,0.140], [0.272,0.166], [0.425,0.174], [0.561,0.064], [0.654,-0.064], [0.697,-0.191], [0.714,-0.361], [0.706,-0.489], [0.680,-0.574], [0.629,-0.659], [0.570,-0.710], [0.493,-0.740], [0.425,-0.744], [0.357,-0.740], [0.281,-0.710], [0.221,-0.659], [0.170,-0.616], [0.128,-0.548], [0.076,-0.421], [0.128,-0.548], [0.170,-0.616], [0.221,-0.659], [0.281,-0.710], [0.357,-0.740], [0.425,-0.744], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - '6' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.357,-0.744], [0.425,-0.740], [0.501,-0.710], [0.561,-0.659], [0.612,-0.574], [0.637,-0.489], [0.629,-0.361], [0.587,-0.234], [0.510,-0.106], [0.442,-0.038], [0.357,-0.021], [0.272,-0.038], [0.442,-0.038], [0.357,-0.021], [0.272,-0.038], [0.204,-0.106], [0.128,-0.234], [0.085,-0.361], [0.112,-0.247], [0.139,-0.132], [0.167,-0.017], [0.194,0.098], [0.221,0.212], [0.248,0.327], [0.275,0.442], [0.303,0.557], [0.330,0.671], [0.357,0.786], [0.330,0.671], [0.303,0.557], [0.275,0.442], [0.248,0.327], [0.221,0.212], [0.194,0.098], [0.167,-0.017], [0.139,-0.132], [0.112,-0.247], [0.085,-0.361], [0.076,-0.489], [0.102,-0.574], [0.153,-0.659], [0.213,-0.710], [0.289,-0.740], [0.357,-0.744], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - '7' : [ [0.085,-0.786], [0.170,-0.786], [0.221,-0.629], [0.272,-0.472], [0.323,-0.315], [0.374,-0.157], [0.425,-0.000], [0.476,0.157], [0.527,0.314], [0.578,0.472], [0.629,0.629], [0.680,0.786], [0.606,0.786], [0.531,0.786], [0.457,0.786], [0.383,0.786], [0.308,0.786], [0.234,0.786], [0.159,0.786], [0.043,0.786], [0.159,0.786], [0.234,0.786], [0.308,0.786], [0.383,0.786], [0.457,0.786], [0.531,0.786], [0.606,0.786], [0.680,0.786], [0.629,0.629], [0.578,0.472], [0.527,0.314], [0.476,0.157], [0.425,-0.000], [0.374,-0.157], [0.323,-0.315], [0.272,-0.472], [0.221,-0.629], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [1.105,-0.786], ], - '8' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.340,-0.744], [0.408,-0.740], [0.485,-0.710], [0.544,-0.659], [0.595,-0.574], [0.620,-0.489], [0.612,-0.361], [0.570,-0.234], [0.493,-0.106], [0.425,0.021], [0.340,0.021], [0.255,0.021], [0.179,0.149], [0.111,0.276], [0.068,0.404], [0.060,0.531], [0.085,0.616], [0.136,0.701], [0.196,0.752], [0.272,0.782], [0.340,0.786], [0.408,0.782], [0.485,0.752], [0.544,0.701], [0.595,0.616], [0.620,0.531], [0.612,0.404], [0.570,0.276], [0.501,0.149], [0.425,0.021], [0.340,0.021], [0.255,0.021], [0.187,-0.106], [0.111,-0.234], [0.068,-0.361], [0.060,-0.489], [0.085,-0.574], [0.136,-0.659], [0.196,-0.710], [0.272,-0.740], [0.340,-0.744], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - '9' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.646,-0.786], [0.646,-0.616], [0.646,-0.446], [0.646,-0.276], [0.646,-0.106], [0.646,0.064], [0.646,0.234], [0.646,0.404], [0.595,0.276], [0.527,0.149], [0.365,0.064], [0.204,0.149], [0.136,0.276], [0.093,0.404], [0.085,0.531], [0.111,0.616], [0.162,0.701], [0.221,0.752], [0.298,0.782], [0.365,0.786], [0.433,0.782], [0.510,0.752], [0.570,0.701], [0.620,0.616], [0.646,0.531], [0.646,0.404], [0.646,0.234], [0.646,0.064], [0.646,-0.106], [0.646,-0.276], [0.646,-0.446], [0.646,-0.616], [0.646,-0.786], [0.680,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'A' : [ [0.085,-0.786], [0.128,-0.629], [0.170,-0.472], [0.213,-0.315], [0.255,-0.157], [0.298,-0.000], [0.340,0.157], [0.383,0.314], [0.425,0.472], [0.468,0.629], [0.510,0.786], [0.552,0.629], [0.595,0.472], [0.637,0.314], [0.680,0.157], [0.723,-0.000], [0.765,-0.157], [0.680,-0.157], [0.595,-0.157], [0.510,-0.157], [0.425,-0.157], [0.340,-0.157], [0.255,-0.157], [0.340,-0.157], [0.425,-0.157], [0.510,-0.157], [0.595,-0.157], [0.680,-0.157], [0.765,-0.157], [0.807,-0.315], [0.850,-0.472], [0.892,-0.629], [0.935,-0.786], [1.275,-0.786], ], - 'B' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.153,0.786], [0.221,0.786], [0.289,0.786], [0.357,0.786], [0.425,0.786], [0.459,0.777], [0.510,0.752], [0.561,0.701], [0.595,0.667], [0.629,0.616], [0.663,0.531], [0.697,0.446], [0.697,0.404], [0.663,0.319], [0.629,0.234], [0.595,0.183], [0.561,0.149], [0.510,0.098], [0.459,0.072], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.459,0.055], [0.510,0.030], [0.561,-0.021], [0.595,-0.055], [0.629,-0.106], [0.663,-0.191], [0.697,-0.276], [0.714,-0.361], [0.697,-0.446], [0.663,-0.531], [0.629,-0.616], [0.595,-0.667], [0.561,-0.701], [0.510,-0.752], [0.459,-0.778], [0.425,-0.786], [0.357,-0.786], [0.289,-0.786], [0.221,-0.786], [0.153,-0.786], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.561,-0.786], [0.646,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'C' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-0.744], [0.442,-0.740], [0.365,-0.710], [0.306,-0.659], [0.255,-0.574], [0.213,-0.489], [0.170,-0.395], [0.136,-0.276], [0.102,-0.132], [0.085,0.021], [0.102,0.174], [0.136,0.319], [0.170,0.438], [0.213,0.531], [0.255,0.616], [0.306,0.701], [0.365,0.752], [0.442,0.782], [0.510,0.786], [0.578,0.782], [0.654,0.752], [0.714,0.701], [0.765,0.616], [0.807,0.531], [0.765,0.616], [0.714,0.701], [0.654,0.752], [0.578,0.782], [0.510,0.786], [0.442,0.782], [0.365,0.752], [0.306,0.701], [0.255,0.616], [0.213,0.531], [0.170,0.438], [0.136,0.319], [0.102,0.174], [0.085,0.021], [0.102,-0.132], [0.136,-0.276], [0.170,-0.395], [0.213,-0.489], [0.255,-0.574], [0.306,-0.659], [0.365,-0.710], [0.442,-0.740], [0.510,-0.744], [0.578,-0.740], [0.654,-0.710], [0.714,-0.659], [0.765,-0.574], [0.807,-0.489], [0.765,-0.574], [0.714,-0.659], [0.654,-0.710], [0.578,-0.740], [0.510,-0.744], [0.510,-0.786], [0.425,-0.786], [0.374,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - 'D' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.408,-0.740], [0.485,-0.710], [0.544,-0.659], [0.595,-0.574], [0.637,-0.489], [0.680,-0.395], [0.714,-0.276], [0.748,-0.132], [0.765,0.021], [0.748,0.174], [0.714,0.319], [0.680,0.438], [0.637,0.531], [0.595,0.616], [0.544,0.701], [0.485,0.752], [0.408,0.782], [0.340,0.786], [0.272,0.786], [0.196,0.786], [0.136,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - 'E' : [ [0.085,-0.786], [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.493,0.064], [0.561,0.064], [0.629,0.064], [0.561,0.064], [0.493,0.064], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.153,0.786], [0.221,0.786], [0.289,0.786], [0.357,0.786], [0.425,0.786], [0.493,0.786], [0.561,0.786], [0.629,0.786], [0.629,0.701], [0.629,0.531], [0.629,0.701], [0.561,0.786], [0.493,0.786], [0.425,0.786], [0.357,0.786], [0.289,0.786], [0.221,0.786], [0.153,0.786], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.493,-0.786], [0.561,-0.786], [0.629,-0.701], [0.629,-0.531], [0.629,-0.701], [0.629,-0.786], [0.714,-0.786], [1.054,-0.786], ], - 'F' : [ [0.085,-0.786], [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.493,0.064], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.085,0.064], [0.085,0.786], [0.153,0.786], [0.221,0.786], [0.289,0.786], [0.357,0.786], [0.425,0.786], [0.493,0.786], [0.561,0.786], [0.629,0.786], [0.561,0.786], [0.493,0.786], [0.425,0.786], [0.357,0.786], [0.289,0.786], [0.221,0.786], [0.153,0.786], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.493,-0.786], [0.561,-0.786], [0.629,-0.786], [0.969,-0.786], ], - 'G' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.744], [0.493,-0.740], [0.570,-0.710], [0.629,-0.659], [0.680,-0.574], [0.723,-0.489], [0.765,-0.395], [0.799,-0.276], [0.833,-0.132], [0.850,0.021], [0.765,0.021], [0.680,0.021], [0.595,0.021], [0.510,0.021], [0.425,0.021], [0.510,0.021], [0.595,0.021], [0.680,0.021], [0.765,0.021], [0.850,0.021], [0.833,-0.132], [0.799,-0.276], [0.765,-0.395], [0.723,-0.489], [0.680,-0.574], [0.629,-0.659], [0.570,-0.710], [0.493,-0.740], [0.425,-0.744], [0.357,-0.740], [0.281,-0.710], [0.221,-0.659], [0.170,-0.574], [0.128,-0.489], [0.085,-0.395], [0.051,-0.276], [0.017,-0.132], [0.000,0.021], [0.017,0.174], [0.051,0.319], [0.085,0.438], [0.128,0.531], [0.170,0.616], [0.221,0.701], [0.281,0.752], [0.357,0.782], [0.425,0.786], [0.493,0.782], [0.570,0.752], [0.629,0.701], [0.680,0.616], [0.629,0.701], [0.570,0.752], [0.493,0.782], [0.425,0.786], [0.357,0.782], [0.281,0.752], [0.221,0.701], [0.170,0.616], [0.128,0.531], [0.085,0.438], [0.051,0.319], [0.017,0.174], [0.000,0.021], [0.017,-0.132], [0.051,-0.276], [0.085,-0.395], [0.128,-0.489], [0.170,-0.574], [0.221,-0.659], [0.281,-0.710], [0.357,-0.740], [0.425,-0.744], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.275,-0.786], ], - 'H' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.493,0.064], [0.561,0.064], [0.629,0.064], [0.697,0.064], [0.765,0.064], [0.765,0.149], [0.765,0.234], [0.765,0.319], [0.765,0.404], [0.765,0.489], [0.765,0.574], [0.765,0.659], [0.765,0.744], [0.765,0.786], [0.765,0.744], [0.765,0.659], [0.765,0.574], [0.765,0.489], [0.765,0.404], [0.765,0.319], [0.765,0.234], [0.765,0.149], [0.765,0.064], [0.697,0.064], [0.629,0.064], [0.561,0.064], [0.493,0.064], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.493,0.064], [0.561,0.064], [0.629,0.064], [0.697,0.064], [0.765,0.064], [0.765,-0.021], [0.765,-0.106], [0.765,-0.191], [0.765,-0.276], [0.765,-0.361], [0.765,-0.446], [0.765,-0.531], [0.765,-0.616], [0.765,-0.701], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - 'I' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.340,-0.701], [0.340,-0.616], [0.340,-0.531], [0.340,-0.446], [0.340,-0.361], [0.340,-0.276], [0.340,-0.191], [0.340,-0.106], [0.340,-0.021], [0.340,0.064], [0.340,0.149], [0.340,0.234], [0.340,0.319], [0.340,0.404], [0.340,0.489], [0.340,0.574], [0.340,0.659], [0.340,0.744], [0.340,0.786], [0.255,0.786], [0.170,0.786], [0.085,0.786], [0.170,0.786], [0.255,0.786], [0.340,0.786], [0.425,0.786], [0.510,0.786], [0.595,0.786], [0.510,0.786], [0.425,0.786], [0.340,0.744], [0.340,0.659], [0.340,0.574], [0.340,0.489], [0.340,0.404], [0.340,0.319], [0.340,0.234], [0.340,0.149], [0.340,0.064], [0.340,-0.021], [0.340,-0.106], [0.340,-0.191], [0.340,-0.276], [0.340,-0.361], [0.340,-0.446], [0.340,-0.531], [0.340,-0.616], [0.340,-0.701], [0.340,-0.786], [0.255,-0.701], [0.170,-0.701], [0.085,-0.701], [0.170,-0.701], [0.255,-0.701], [0.340,-0.701], [0.425,-0.701], [0.510,-0.701], [0.595,-0.701], [0.510,-0.701], [0.425,-0.701], [0.340,-0.701], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - 'J' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.391,-0.786], [0.425,-0.778], [0.476,-0.752], [0.527,-0.701], [0.561,-0.667], [0.595,-0.616], [0.629,-0.531], [0.663,-0.446], [0.680,-0.361], [0.680,-0.276], [0.680,-0.191], [0.680,-0.106], [0.680,-0.021], [0.680,0.064], [0.680,0.149], [0.680,0.234], [0.680,0.319], [0.680,0.404], [0.680,0.489], [0.680,0.574], [0.680,0.659], [0.680,0.744], [0.680,0.786], [0.680,0.744], [0.680,0.659], [0.680,0.574], [0.680,0.489], [0.680,0.404], [0.680,0.319], [0.680,0.234], [0.680,0.149], [0.680,0.064], [0.680,-0.021], [0.680,-0.106], [0.680,-0.191], [0.680,-0.276], [0.680,-0.361], [0.663,-0.446], [0.629,-0.531], [0.595,-0.616], [0.561,-0.667], [0.527,-0.701], [0.476,-0.752], [0.425,-0.778], [0.391,-0.786], [0.340,-0.786], [0.289,-0.786], [0.255,-0.778], [0.204,-0.752], [0.153,-0.701], [0.119,-0.667], [0.085,-0.616], [0.051,-0.531], [0.017,-0.446], [0.000,-0.361], [0.017,-0.446], [0.051,-0.531], [0.085,-0.616], [0.119,-0.667], [0.153,-0.701], [0.204,-0.752], [0.255,-0.778], [0.289,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'K' : [ [0.085,-0.786], [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.224,0.136], [0.279,0.208], [0.333,0.280], [0.388,0.353], [0.442,0.425], [0.496,0.497], [0.551,0.569], [0.605,0.642], [0.660,0.714], [0.714,0.786], [0.660,0.714], [0.605,0.642], [0.551,0.569], [0.496,0.497], [0.442,0.425], [0.388,0.353], [0.333,0.280], [0.279,0.208], [0.224,0.136], [0.170,0.064], [0.224,-0.021], [0.279,-0.106], [0.333,-0.191], [0.388,-0.276], [0.442,-0.361], [0.496,-0.446], [0.551,-0.531], [0.605,-0.616], [0.660,-0.701], [0.714,-0.786], [0.799,-0.786], [1.139,-0.786], ], - 'L' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.765,-0.574], [0.765,-0.446], [0.765,-0.574], [0.765,-0.701], [0.765,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - 'M' : [ [0.085,-0.786], [0.085,-0.786], [0.119,-0.629], [0.153,-0.472], [0.187,-0.315], [0.221,-0.157], [0.255,-0.000], [0.289,0.157], [0.323,0.314], [0.357,0.472], [0.391,0.629], [0.425,0.786], [0.459,0.629], [0.493,0.472], [0.527,0.314], [0.561,0.157], [0.595,-0.000], [0.629,-0.157], [0.663,-0.315], [0.697,-0.472], [0.731,-0.629], [0.765,-0.786], [0.799,-0.629], [0.833,-0.472], [0.867,-0.315], [0.901,-0.157], [0.935,-0.000], [0.969,0.157], [1.003,0.314], [1.037,0.472], [1.071,0.629], [1.105,0.786], [1.139,0.629], [1.173,0.472], [1.207,0.314], [1.241,0.157], [1.275,-0.000], [1.309,-0.157], [1.343,-0.315], [1.377,-0.472], [1.411,-0.629], [1.445,-0.786], [1.530,-0.786], [1.870,-0.786], ], - 'N' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.170,0.629], [0.255,0.472], [0.340,0.314], [0.425,0.157], [0.510,-0.000], [0.595,-0.157], [0.680,-0.315], [0.765,-0.472], [0.850,-0.629], [0.935,-0.786], [0.935,-0.701], [0.935,-0.616], [0.935,-0.531], [0.935,-0.446], [0.935,-0.361], [0.935,-0.276], [0.935,-0.191], [0.935,-0.106], [0.935,-0.021], [0.935,0.064], [0.935,0.149], [0.935,0.234], [0.935,0.319], [0.935,0.404], [0.935,0.489], [0.935,0.574], [0.935,0.659], [0.935,0.744], [0.935,0.786], [0.935,0.744], [0.935,0.659], [0.935,0.574], [0.935,0.489], [0.935,0.404], [0.935,0.319], [0.935,0.234], [0.935,0.149], [0.935,0.064], [0.935,-0.021], [0.935,-0.106], [0.935,-0.191], [0.935,-0.276], [0.935,-0.361], [0.935,-0.446], [0.935,-0.531], [0.935,-0.616], [0.935,-0.701], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - 'O' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-0.744], [0.578,-0.740], [0.654,-0.710], [0.714,-0.659], [0.765,-0.574], [0.807,-0.489], [0.850,-0.395], [0.884,-0.276], [0.918,-0.132], [0.935,0.021], [0.918,0.174], [0.884,0.319], [0.850,0.438], [0.807,0.531], [0.765,0.616], [0.714,0.701], [0.654,0.752], [0.578,0.782], [0.510,0.786], [0.442,0.782], [0.365,0.752], [0.306,0.701], [0.255,0.616], [0.213,0.531], [0.170,0.438], [0.136,0.319], [0.102,0.174], [0.085,0.021], [0.102,-0.132], [0.136,-0.276], [0.170,-0.395], [0.213,-0.489], [0.255,-0.574], [0.306,-0.659], [0.365,-0.710], [0.442,-0.740], [0.510,-0.744], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - 'P' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.459,0.072], [0.510,0.098], [0.561,0.149], [0.595,0.183], [0.629,0.234], [0.663,0.319], [0.697,0.404], [0.697,0.446], [0.663,0.531], [0.629,0.616], [0.595,0.667], [0.561,0.701], [0.510,0.752], [0.459,0.777], [0.425,0.786], [0.357,0.786], [0.289,0.786], [0.221,0.786], [0.153,0.786], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.493,-0.786], [0.561,-0.786], [0.629,-0.786], [0.697,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'Q' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-0.744], [0.578,-0.740], [0.654,-0.710], [0.714,-0.659], [0.765,-0.574], [0.807,-0.489], [0.850,-0.395], [0.884,-0.276], [0.918,-0.132], [0.935,0.021], [0.918,0.174], [0.884,0.319], [0.850,0.438], [0.807,0.531], [0.765,0.616], [0.714,0.701], [0.654,0.752], [0.578,0.782], [0.510,0.786], [0.442,0.782], [0.365,0.752], [0.306,0.701], [0.255,0.616], [0.213,0.531], [0.170,0.438], [0.136,0.319], [0.102,0.174], [0.085,0.021], [0.102,-0.132], [0.136,-0.276], [0.170,-0.395], [0.213,-0.489], [0.255,-0.574], [0.306,-0.659], [0.365,-0.710], [0.442,-0.740], [0.510,-0.744], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.799,-0.854], [0.833,-0.922], [0.867,-0.990], [0.765,-0.786], [0.765,-0.786], [0.867,-0.990], [0.833,-0.922], [0.799,-0.854], [0.765,-0.786], [0.731,-0.718], [0.697,-0.650], [0.663,-0.582], [0.629,-0.514], [0.595,-0.446], [0.629,-0.514], [0.663,-0.582], [0.697,-0.650], [0.731,-0.718], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - 'R' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.153,0.786], [0.221,0.786], [0.289,0.786], [0.357,0.786], [0.425,0.786], [0.459,0.777], [0.510,0.752], [0.561,0.701], [0.595,0.667], [0.629,0.616], [0.663,0.531], [0.697,0.446], [0.697,0.404], [0.663,0.319], [0.629,0.234], [0.595,0.183], [0.561,0.149], [0.510,0.098], [0.459,0.072], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.153,0.064], [0.085,0.064], [0.153,0.064], [0.221,0.064], [0.289,0.064], [0.357,0.064], [0.391,-0.021], [0.425,-0.106], [0.459,-0.191], [0.493,-0.276], [0.527,-0.361], [0.561,-0.446], [0.595,-0.531], [0.629,-0.616], [0.663,-0.701], [0.697,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'S' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.744], [0.493,-0.740], [0.570,-0.710], [0.629,-0.659], [0.680,-0.574], [0.706,-0.489], [0.697,-0.361], [0.654,-0.234], [0.561,-0.106], [0.425,0.021], [0.289,0.149], [0.196,0.276], [0.153,0.404], [0.145,0.531], [0.170,0.616], [0.221,0.701], [0.281,0.752], [0.357,0.782], [0.425,0.786], [0.493,0.782], [0.570,0.752], [0.629,0.701], [0.680,0.616], [0.723,0.531], [0.680,0.616], [0.629,0.701], [0.570,0.752], [0.493,0.782], [0.425,0.786], [0.357,0.782], [0.281,0.752], [0.221,0.701], [0.170,0.616], [0.145,0.531], [0.153,0.404], [0.196,0.276], [0.289,0.149], [0.425,0.021], [0.561,-0.106], [0.654,-0.234], [0.697,-0.361], [0.706,-0.489], [0.680,-0.574], [0.629,-0.659], [0.570,-0.710], [0.493,-0.740], [0.425,-0.744], [0.357,-0.740], [0.281,-0.710], [0.221,-0.659], [0.170,-0.574], [0.128,-0.489], [0.085,-0.395], [0.128,-0.489], [0.170,-0.574], [0.221,-0.659], [0.281,-0.710], [0.357,-0.740], [0.425,-0.744], [0.425,-0.786], [0.425,-0.744], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'T' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.595,-0.701], [0.595,-0.616], [0.595,-0.531], [0.595,-0.446], [0.595,-0.361], [0.595,-0.276], [0.595,-0.191], [0.595,-0.106], [0.595,-0.021], [0.595,0.064], [0.595,0.149], [0.595,0.234], [0.595,0.319], [0.595,0.404], [0.595,0.489], [0.595,0.574], [0.595,0.659], [0.595,0.744], [0.595,0.786], [0.510,0.786], [0.425,0.786], [0.340,0.786], [0.255,0.786], [0.170,0.786], [0.085,0.786], [0.170,0.786], [0.255,0.786], [0.340,0.786], [0.425,0.786], [0.510,0.786], [0.595,0.786], [0.680,0.786], [0.765,0.786], [0.850,0.786], [0.935,0.786], [1.020,0.786], [1.105,0.786], [1.020,0.786], [0.935,0.786], [0.850,0.786], [0.765,0.786], [0.680,0.786], [0.595,0.744], [0.595,0.659], [0.595,0.574], [0.595,0.489], [0.595,0.404], [0.595,0.319], [0.595,0.234], [0.595,0.149], [0.595,0.064], [0.595,-0.021], [0.595,-0.106], [0.595,-0.191], [0.595,-0.276], [0.595,-0.361], [0.595,-0.446], [0.595,-0.531], [0.595,-0.616], [0.595,-0.701], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.445,-0.786], ], - 'U' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.510,-0.744], [0.578,-0.740], [0.654,-0.710], [0.714,-0.659], [0.765,-0.574], [0.807,-0.489], [0.850,-0.395], [0.884,-0.276], [0.918,-0.132], [0.935,0.021], [0.935,0.106], [0.935,0.191], [0.935,0.276], [0.935,0.361], [0.935,0.446], [0.935,0.531], [0.935,0.616], [0.935,0.701], [0.935,0.786], [0.935,0.701], [0.935,0.616], [0.935,0.531], [0.935,0.446], [0.935,0.361], [0.935,0.276], [0.935,0.191], [0.935,0.106], [0.935,0.021], [0.918,-0.132], [0.884,-0.276], [0.850,-0.395], [0.807,-0.489], [0.765,-0.574], [0.714,-0.659], [0.654,-0.710], [0.578,-0.740], [0.510,-0.744], [0.442,-0.740], [0.365,-0.710], [0.306,-0.659], [0.255,-0.574], [0.213,-0.489], [0.170,-0.395], [0.136,-0.276], [0.102,-0.132], [0.085,0.021], [0.085,0.106], [0.085,0.191], [0.085,0.276], [0.085,0.361], [0.085,0.446], [0.085,0.531], [0.085,0.616], [0.085,0.701], [0.085,0.786], [0.085,0.701], [0.085,0.616], [0.085,0.531], [0.085,0.446], [0.085,0.361], [0.085,0.276], [0.085,0.191], [0.085,0.106], [0.085,0.021], [0.102,-0.132], [0.136,-0.276], [0.170,-0.395], [0.213,-0.489], [0.255,-0.574], [0.306,-0.659], [0.365,-0.710], [0.442,-0.740], [0.510,-0.744], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - 'V' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.646,-0.629], [0.697,-0.472], [0.748,-0.315], [0.799,-0.157], [0.850,-0.000], [0.901,0.157], [0.952,0.314], [1.003,0.472], [1.054,0.629], [1.105,0.786], [1.054,0.629], [1.003,0.472], [0.952,0.314], [0.901,0.157], [0.850,-0.000], [0.799,-0.157], [0.748,-0.315], [0.697,-0.472], [0.646,-0.629], [0.595,-0.786], [0.544,-0.629], [0.493,-0.472], [0.442,-0.315], [0.391,-0.157], [0.340,-0.000], [0.289,0.157], [0.238,0.314], [0.187,0.472], [0.136,0.629], [0.085,0.786], [0.136,0.629], [0.187,0.472], [0.238,0.314], [0.289,0.157], [0.340,-0.000], [0.391,-0.157], [0.442,-0.315], [0.493,-0.472], [0.544,-0.629], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.530,-0.786], ], - 'W' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.786], [0.391,-0.629], [0.357,-0.472], [0.323,-0.315], [0.289,-0.157], [0.255,-0.000], [0.221,0.157], [0.187,0.314], [0.153,0.472], [0.119,0.629], [0.085,0.786], [0.119,0.629], [0.153,0.472], [0.187,0.314], [0.221,0.157], [0.255,-0.000], [0.289,-0.157], [0.323,-0.315], [0.357,-0.472], [0.391,-0.629], [0.425,-0.786], [0.459,-0.629], [0.493,-0.472], [0.527,-0.315], [0.561,-0.157], [0.595,-0.000], [0.629,0.157], [0.663,0.314], [0.697,0.472], [0.731,0.629], [0.765,0.786], [0.799,0.629], [0.833,0.472], [0.867,0.314], [0.901,0.157], [0.935,-0.000], [0.969,-0.157], [1.003,-0.315], [1.037,-0.472], [1.071,-0.629], [1.105,-0.786], [1.139,-0.629], [1.173,-0.472], [1.207,-0.315], [1.241,-0.157], [1.275,-0.000], [1.309,0.157], [1.343,0.314], [1.377,0.472], [1.411,0.629], [1.445,0.786], [1.411,0.629], [1.377,0.472], [1.343,0.314], [1.309,0.157], [1.275,-0.000], [1.241,-0.157], [1.207,-0.315], [1.173,-0.472], [1.139,-0.629], [1.105,-0.786], [1.190,-0.786], [1.275,-0.786], [1.360,-0.786], [1.445,-0.786], [1.530,-0.786], [1.870,-0.786], ], - 'X' : [ [0.085,-0.786], [0.187,-0.629], [0.289,-0.472], [0.391,-0.315], [0.493,-0.157], [0.595,-0.000], [0.697,0.157], [0.799,0.314], [0.901,0.472], [1.003,0.629], [1.105,0.786], [1.003,0.629], [0.901,0.472], [0.799,0.314], [0.697,0.157], [0.595,-0.000], [0.493,0.157], [0.391,0.314], [0.289,0.472], [0.187,0.629], [0.085,0.786], [0.187,0.629], [0.289,0.472], [0.391,0.314], [0.493,0.157], [0.595,-0.000], [0.697,-0.157], [0.799,-0.315], [0.901,-0.472], [1.003,-0.629], [1.105,-0.786], [1.190,-0.786], [1.530,-0.786], ], - 'Y' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.595,-0.701], [0.595,-0.616], [0.595,-0.531], [0.595,-0.446], [0.595,-0.361], [0.595,-0.276], [0.595,-0.191], [0.595,-0.106], [0.595,-0.021], [0.595,-0.000], [0.697,0.157], [0.799,0.314], [0.901,0.472], [1.003,0.629], [1.105,0.786], [1.003,0.629], [0.901,0.472], [0.799,0.314], [0.697,0.157], [0.595,-0.000], [0.493,0.157], [0.391,0.314], [0.289,0.472], [0.187,0.629], [0.085,0.786], [0.187,0.629], [0.289,0.472], [0.391,0.314], [0.493,0.157], [0.595,-0.000], [0.595,-0.021], [0.595,-0.106], [0.595,-0.191], [0.595,-0.276], [0.595,-0.361], [0.595,-0.446], [0.595,-0.531], [0.595,-0.616], [0.595,-0.701], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.530,-0.786], ], - 'Z' : [ [0.085,-0.786], [0.187,-0.629], [0.289,-0.472], [0.391,-0.315], [0.493,-0.157], [0.595,-0.000], [0.697,0.157], [0.799,0.314], [0.901,0.472], [1.003,0.629], [1.105,0.786], [0.935,0.786], [0.765,0.786], [0.595,0.786], [0.425,0.786], [0.255,0.786], [0.085,0.786], [0.255,0.786], [0.425,0.786], [0.595,0.786], [0.765,0.786], [0.935,0.786], [1.105,0.786], [1.003,0.629], [0.901,0.472], [0.799,0.314], [0.697,0.157], [0.595,-0.000], [0.493,-0.157], [0.391,-0.315], [0.289,-0.472], [0.187,-0.629], [0.085,-0.769], [0.255,-0.769], [0.425,-0.769], [0.595,-0.769], [0.765,-0.769], [0.935,-0.769], [1.105,-0.769], [1.105,-0.786], [1.190,-0.786], [1.530,-0.786], ], - 'a' : [ [0.068,-0.786], [0.153,-0.786], [0.238,-0.786], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.646,-0.701], [0.646,-0.616], [0.646,-0.531], [0.646,-0.446], [0.646,-0.361], [0.646,-0.276], [0.646,-0.191], [0.646,-0.106], [0.646,-0.021], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.731,-0.786], [1.071,-0.786], ], - 'b' : [ [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.459,-0.778], [0.510,-0.752], [0.561,-0.701], [0.595,-0.667], [0.629,-0.616], [0.663,-0.531], [0.697,-0.446], [0.714,-0.361], [0.697,-0.276], [0.663,-0.191], [0.629,-0.106], [0.595,-0.055], [0.561,-0.021], [0.510,0.030], [0.459,0.055], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.153,0.064], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.786], [0.085,0.744], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.017,-0.786], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.425,-0.786], [0.561,-0.786], [0.646,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'c' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.374,-0.786], [0.340,-0.778], [0.289,-0.752], [0.238,-0.701], [0.204,-0.667], [0.170,-0.616], [0.136,-0.531], [0.102,-0.446], [0.085,-0.361], [0.102,-0.276], [0.136,-0.191], [0.170,-0.106], [0.204,-0.055], [0.238,-0.021], [0.289,0.030], [0.340,0.055], [0.374,0.064], [0.442,0.064], [0.510,0.064], [0.578,0.064], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.986,-0.786], ], - 'd' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.714,-0.786], [0.714,-0.701], [0.714,-0.616], [0.714,-0.531], [0.714,-0.446], [0.714,-0.361], [0.714,-0.276], [0.714,-0.191], [0.714,-0.106], [0.714,-0.021], [0.714,0.064], [0.714,0.149], [0.714,0.234], [0.714,0.319], [0.714,0.404], [0.714,0.489], [0.714,0.574], [0.714,0.659], [0.714,0.744], [0.714,0.786], [0.714,0.744], [0.714,0.659], [0.714,0.574], [0.714,0.489], [0.714,0.404], [0.714,0.319], [0.714,0.234], [0.714,0.149], [0.714,0.064], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.714,-0.786], [0.799,-0.786], [1.139,-0.786], ], - 'e' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.374,-0.786], [0.340,-0.778], [0.289,-0.752], [0.238,-0.701], [0.204,-0.667], [0.170,-0.616], [0.128,-0.531], [0.102,-0.446], [0.094,-0.361], [0.179,-0.361], [0.255,-0.361], [0.332,-0.361], [0.408,-0.361], [0.476,-0.361], [0.518,-0.361], [0.595,-0.361], [0.671,-0.361], [0.748,-0.361], [0.723,-0.276], [0.706,-0.191], [0.663,-0.106], [0.629,-0.055], [0.595,-0.021], [0.544,0.030], [0.493,0.055], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.128,-0.191], [0.102,-0.276], [0.102,-0.446], [0.128,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.714,-0.786], [0.816,-0.786], [1.156,-0.786], ], - 'f' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.701], [0.425,-0.616], [0.425,-0.531], [0.425,-0.446], [0.425,-0.361], [0.425,-0.276], [0.425,-0.191], [0.425,-0.106], [0.425,-0.021], [0.425,0.064], [0.510,0.064], [0.595,0.064], [0.680,0.064], [0.807,0.064], [0.680,0.064], [0.595,0.064], [0.510,0.064], [0.425,0.064], [0.340,0.064], [0.255,0.064], [0.170,0.064], [0.043,0.064], [0.170,0.064], [0.255,0.064], [0.340,0.064], [0.425,0.064], [0.425,0.149], [0.425,0.234], [0.425,0.319], [0.442,0.446], [0.468,0.531], [0.510,0.616], [0.544,0.667], [0.578,0.701], [0.629,0.752], [0.680,0.777], [0.714,0.786], [0.782,0.786], [0.850,0.786], [0.782,0.786], [0.714,0.786], [0.680,0.777], [0.629,0.752], [0.578,0.701], [0.544,0.667], [0.510,0.616], [0.468,0.531], [0.442,0.446], [0.425,0.319], [0.425,0.234], [0.425,0.149], [0.425,0.064], [0.425,-0.021], [0.425,-0.106], [0.425,-0.191], [0.425,-0.276], [0.425,-0.361], [0.425,-0.446], [0.425,-0.531], [0.425,-0.616], [0.425,-0.701], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.275,-0.786], ], - 'g' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.646,-0.871], [0.646,-0.956], [0.646,-1.041], [0.646,-1.126], [0.629,-1.254], [0.603,-1.339], [0.561,-1.424], [0.527,-1.475], [0.493,-1.509], [0.442,-1.560], [0.391,-1.585], [0.357,-1.594], [0.289,-1.594], [0.221,-1.594], [0.153,-1.594], [0.221,-1.594], [0.289,-1.594], [0.357,-1.594], [0.391,-1.585], [0.442,-1.560], [0.493,-1.509], [0.527,-1.475], [0.561,-1.424], [0.603,-1.339], [0.629,-1.254], [0.646,-1.126], [0.646,-1.041], [0.646,-0.956], [0.646,-0.871], [0.646,-0.786], [0.646,-0.701], [0.646,-0.616], [0.646,-0.531], [0.646,-0.446], [0.646,-0.361], [0.646,-0.276], [0.646,-0.191], [0.646,-0.106], [0.646,-0.021], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.714,-0.786], [1.054,-0.786], ], - 'h' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.744], [0.085,0.786], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.106], [0.102,-0.064], [0.153,-0.030], [0.238,0.021], [0.323,0.064], [0.425,0.064], [0.510,0.021], [0.595,-0.030], [0.646,-0.064], [0.663,-0.106], [0.663,-0.191], [0.663,-0.276], [0.663,-0.361], [0.663,-0.446], [0.663,-0.531], [0.663,-0.616], [0.663,-0.701], [0.663,-0.786], [0.748,-0.786], [1.088,-0.786], ], - 'i' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'j' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.493,-0.786], [0.493,-0.701], [0.493,-0.616], [0.493,-0.531], [0.493,-0.446], [0.493,-0.361], [0.493,-0.276], [0.493,-0.191], [0.493,-0.106], [0.493,-0.021], [0.493,0.064], [0.493,-0.021], [0.493,-0.106], [0.493,-0.191], [0.493,-0.276], [0.493,-0.361], [0.493,-0.446], [0.493,-0.531], [0.493,-0.616], [0.493,-0.701], [0.493,-0.786], [0.493,-0.871], [0.493,-0.956], [0.493,-1.041], [0.493,-1.126], [0.476,-1.254], [0.451,-1.339], [0.408,-1.424], [0.374,-1.475], [0.340,-1.509], [0.289,-1.560], [0.238,-1.585], [0.204,-1.594], [0.136,-1.594], [0.068,-1.594], [0.000,-1.594], [0.068,-1.594], [0.136,-1.594], [0.204,-1.594], [0.238,-1.585], [0.289,-1.560], [0.340,-1.509], [0.374,-1.475], [0.408,-1.424], [0.451,-1.339], [0.476,-1.254], [0.493,-1.126], [0.493,-1.041], [0.493,-0.956], [0.493,-0.871], [0.493,-0.786], [0.442,-0.786], [0.493,-0.786], [0.578,-0.786], [0.918,-0.786], ], - 'k' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.744], [0.085,0.786], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.184,-0.295], [0.283,-0.228], [0.383,-0.162], [0.482,-0.095], [0.581,-0.029], [0.680,0.038], [0.581,-0.029], [0.482,-0.095], [0.383,-0.162], [0.283,-0.228], [0.184,-0.295], [0.085,-0.361], [0.184,-0.432], [0.283,-0.503], [0.383,-0.574], [0.482,-0.645], [0.581,-0.716], [0.680,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'l' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,0.149], [0.085,0.234], [0.085,0.319], [0.085,0.404], [0.085,0.489], [0.085,0.574], [0.085,0.659], [0.085,0.744], [0.085,0.744], [0.085,0.786], [0.085,0.659], [0.085,0.574], [0.085,0.489], [0.085,0.404], [0.085,0.319], [0.085,0.234], [0.085,0.149], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'm' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.153,0.004], [0.255,0.030], [0.323,0.047], [0.391,0.047], [0.459,0.030], [0.561,0.004], [0.612,-0.021], [0.629,-0.106], [0.629,-0.191], [0.629,-0.276], [0.629,-0.361], [0.629,-0.446], [0.629,-0.531], [0.629,-0.616], [0.629,-0.701], [0.629,-0.808], [0.629,-0.701], [0.629,-0.616], [0.629,-0.531], [0.629,-0.446], [0.629,-0.361], [0.629,-0.276], [0.629,-0.191], [0.629,-0.106], [0.646,-0.021], [0.697,0.004], [0.799,0.030], [0.867,0.047], [0.935,0.047], [1.003,0.030], [1.105,0.004], [1.156,-0.021], [1.173,-0.106], [1.173,-0.191], [1.173,-0.276], [1.173,-0.361], [1.173,-0.446], [1.173,-0.531], [1.173,-0.616], [1.173,-0.701], [1.173,-0.786], [1.258,-0.786], [1.598,-0.786], ], - 'n' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.153,0.004], [0.255,0.030], [0.323,0.047], [0.391,0.047], [0.459,0.030], [0.561,0.004], [0.612,-0.021], [0.629,-0.106], [0.629,-0.191], [0.629,-0.276], [0.629,-0.361], [0.629,-0.446], [0.629,-0.531], [0.629,-0.616], [0.629,-0.701], [0.629,-0.786], [0.714,-0.786], [1.054,-0.786], ], - 'o' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.646,-0.786], [0.680,-0.778], [0.731,-0.752], [0.782,-0.701], [0.816,-0.667], [0.850,-0.616], [0.884,-0.531], [0.918,-0.446], [0.935,-0.361], [0.918,-0.276], [0.884,-0.191], [0.850,-0.106], [0.816,-0.055], [0.782,-0.021], [0.731,0.030], [0.680,0.055], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.360,-0.786], ], - 'p' : [ [0.085,-0.786], [0.085,-0.871], [0.085,-0.956], [0.085,-1.041], [0.085,-1.126], [0.085,-1.211], [0.085,-1.296], [0.085,-1.381], [0.085,-1.466], [0.085,-1.551], [0.085,-1.211], [0.085,-1.551], [0.085,-1.466], [0.085,-1.381], [0.085,-1.296], [0.085,-1.211], [0.085,-1.126], [0.085,-1.041], [0.085,-0.956], [0.085,-0.871], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.391,-0.778], [0.442,-0.752], [0.493,-0.701], [0.527,-0.667], [0.561,-0.616], [0.595,-0.531], [0.629,-0.446], [0.646,-0.361], [0.629,-0.276], [0.595,-0.191], [0.561,-0.106], [0.527,-0.055], [0.493,-0.021], [0.442,0.030], [0.391,0.055], [0.357,0.064], [0.289,0.064], [0.221,0.064], [0.153,0.064], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.153,-0.786], [0.221,-0.786], [0.289,-0.786], [0.357,-0.786], [0.493,-0.786], [0.578,-0.786], [0.663,-0.786], [0.731,-0.786], [1.071,-0.786], ], - 'q' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.646,-0.786], [0.646,-0.871], [0.646,-0.956], [0.646,-1.041], [0.646,-1.126], [0.663,-1.254], [0.689,-1.339], [0.731,-1.424], [0.765,-1.475], [0.799,-1.509], [0.850,-1.560], [0.901,-1.585], [0.935,-1.594], [1.003,-1.594], [1.071,-1.594], [1.139,-1.594], [1.071,-1.594], [1.003,-1.594], [0.935,-1.594], [0.901,-1.585], [0.850,-1.560], [0.799,-1.509], [0.765,-1.475], [0.731,-1.424], [0.689,-1.339], [0.663,-1.254], [0.646,-1.126], [0.646,-1.041], [0.646,-0.956], [0.646,-0.871], [0.646,-0.786], [0.646,-0.701], [0.646,-0.616], [0.646,-0.531], [0.646,-0.446], [0.646,-0.361], [0.646,-0.276], [0.646,-0.191], [0.646,-0.106], [0.646,-0.021], [0.646,0.064], [0.578,0.064], [0.510,0.064], [0.442,0.064], [0.374,0.064], [0.340,0.055], [0.289,0.030], [0.238,-0.021], [0.204,-0.055], [0.170,-0.106], [0.136,-0.191], [0.102,-0.276], [0.085,-0.361], [0.102,-0.446], [0.136,-0.531], [0.170,-0.616], [0.204,-0.667], [0.238,-0.701], [0.289,-0.752], [0.340,-0.778], [0.374,-0.786], [0.442,-0.786], [0.510,-0.786], [0.578,-0.786], [0.714,-0.786], [0.816,-0.786], [0.918,-0.786], [1.020,-0.786], [1.105,-0.786], [1.224,-0.786], [1.564,-0.786], ], - 'r' : [ [0.085,-0.786], [0.085,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,-0.021], [0.085,0.149], [0.085,0.191], [0.085,0.149], [0.085,-0.021], [0.153,0.004], [0.255,0.030], [0.323,0.055], [0.391,0.064], [0.459,0.055], [0.527,0.030], [0.595,-0.021], [0.527,0.030], [0.459,0.055], [0.391,0.064], [0.323,0.055], [0.255,0.030], [0.153,0.004], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.085,-0.701], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - 's' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.561,-0.786], [0.595,-0.778], [0.646,-0.752], [0.697,-0.701], [0.731,-0.667], [0.765,-0.616], [0.756,-0.565], [0.731,-0.531], [0.663,-0.489], [0.595,-0.446], [0.510,-0.404], [0.425,-0.361], [0.340,-0.319], [0.255,-0.276], [0.187,-0.234], [0.119,-0.191], [0.102,-0.115], [0.119,-0.055], [0.153,-0.021], [0.204,0.030], [0.255,0.055], [0.289,0.064], [0.357,0.064], [0.425,0.064], [0.493,0.064], [0.561,0.064], [0.595,0.055], [0.646,0.030], [0.697,-0.021], [0.731,-0.055], [0.697,-0.021], [0.646,0.030], [0.595,0.055], [0.561,0.064], [0.493,0.064], [0.425,0.064], [0.357,0.064], [0.289,0.064], [0.255,0.055], [0.204,0.030], [0.153,-0.021], [0.119,-0.055], [0.102,-0.115], [0.119,-0.191], [0.187,-0.234], [0.255,-0.276], [0.340,-0.319], [0.425,-0.361], [0.510,-0.404], [0.595,-0.446], [0.663,-0.489], [0.731,-0.531], [0.756,-0.565], [0.765,-0.616], [0.731,-0.667], [0.697,-0.701], [0.646,-0.752], [0.595,-0.778], [0.561,-0.786], [0.510,-0.786], [0.425,-0.786], [0.340,-0.786], [0.289,-0.786], [0.255,-0.778], [0.204,-0.752], [0.153,-0.701], [0.119,-0.667], [0.060,-0.616], [0.119,-0.667], [0.153,-0.701], [0.204,-0.752], [0.255,-0.778], [0.289,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [1.190,-0.786], ], - 't' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.374,-0.786], [0.374,-0.701], [0.374,-0.616], [0.374,-0.531], [0.374,-0.446], [0.374,-0.361], [0.374,-0.276], [0.374,-0.191], [0.374,-0.106], [0.374,-0.021], [0.374,0.064], [0.374,0.149], [0.374,0.234], [0.374,0.319], [0.374,0.361], [0.374,0.446], [0.306,0.446], [0.238,0.446], [0.170,0.446], [0.043,0.446], [0.170,0.446], [0.238,0.446], [0.306,0.446], [0.374,0.446], [0.442,0.446], [0.510,0.446], [0.578,0.446], [0.706,0.446], [0.578,0.446], [0.510,0.446], [0.442,0.446], [0.374,0.446], [0.374,0.531], [0.374,0.616], [0.374,0.701], [0.374,0.786], [0.374,0.701], [0.374,0.616], [0.374,0.531], [0.374,0.446], [0.374,0.361], [0.374,0.319], [0.374,0.234], [0.374,0.149], [0.374,0.064], [0.374,-0.021], [0.374,-0.106], [0.374,-0.191], [0.374,-0.276], [0.374,-0.361], [0.374,-0.446], [0.374,-0.531], [0.374,-0.616], [0.374,-0.701], [0.374,-0.786], [0.459,-0.786], [0.544,-0.786], [0.663,-0.786], [0.765,-0.786], [1.105,-0.786], ], - 'u' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.323,-0.769], [0.255,-0.752], [0.153,-0.727], [0.102,-0.701], [0.085,-0.616], [0.085,-0.531], [0.085,-0.446], [0.085,-0.361], [0.085,-0.276], [0.085,-0.191], [0.085,-0.106], [0.085,-0.021], [0.085,0.064], [0.085,-0.021], [0.085,-0.106], [0.085,-0.191], [0.085,-0.276], [0.085,-0.361], [0.085,-0.446], [0.085,-0.531], [0.085,-0.616], [0.102,-0.701], [0.153,-0.727], [0.255,-0.752], [0.323,-0.769], [0.391,-0.786], [0.459,-0.769], [0.527,-0.752], [0.629,-0.727], [0.680,-0.701], [0.697,-0.701], [0.697,-0.616], [0.697,-0.531], [0.697,-0.446], [0.697,-0.361], [0.697,-0.276], [0.697,-0.191], [0.697,-0.106], [0.697,-0.021], [0.697,0.064], [0.697,-0.021], [0.697,-0.106], [0.697,-0.191], [0.697,-0.276], [0.697,-0.361], [0.697,-0.446], [0.697,-0.531], [0.697,-0.616], [0.697,-0.701], [0.697,-0.786], [0.782,-0.786], [1.122,-0.786], ], - 'v' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.468,-0.786], [0.429,-0.701], [0.391,-0.616], [0.353,-0.531], [0.315,-0.446], [0.276,-0.361], [0.238,-0.276], [0.200,-0.191], [0.162,-0.106], [0.123,-0.021], [0.085,0.064], [0.123,-0.021], [0.162,-0.106], [0.200,-0.191], [0.238,-0.276], [0.276,-0.361], [0.315,-0.446], [0.353,-0.531], [0.391,-0.616], [0.429,-0.701], [0.468,-0.786], [0.506,-0.701], [0.544,-0.616], [0.582,-0.531], [0.620,-0.446], [0.659,-0.361], [0.697,-0.276], [0.735,-0.191], [0.773,-0.106], [0.812,-0.021], [0.850,0.064], [0.812,-0.021], [0.773,-0.106], [0.735,-0.191], [0.697,-0.276], [0.659,-0.361], [0.620,-0.446], [0.582,-0.531], [0.544,-0.616], [0.506,-0.701], [0.468,-0.786], [0.552,-0.786], [0.663,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.275,-0.786], ], - 'w' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.315,-0.701], [0.289,-0.616], [0.264,-0.531], [0.238,-0.446], [0.213,-0.361], [0.187,-0.276], [0.162,-0.191], [0.136,-0.106], [0.111,-0.021], [0.085,0.064], [0.111,-0.021], [0.136,-0.106], [0.162,-0.191], [0.187,-0.276], [0.213,-0.361], [0.238,-0.446], [0.264,-0.531], [0.289,-0.616], [0.315,-0.701], [0.340,-0.786], [0.365,-0.701], [0.391,-0.616], [0.417,-0.531], [0.442,-0.446], [0.468,-0.361], [0.493,-0.276], [0.518,-0.191], [0.544,-0.106], [0.570,-0.021], [0.595,0.064], [0.620,-0.021], [0.646,-0.106], [0.671,-0.191], [0.697,-0.276], [0.723,-0.361], [0.748,-0.446], [0.773,-0.531], [0.799,-0.616], [0.825,-0.701], [0.850,-0.786], [0.875,-0.701], [0.901,-0.616], [0.926,-0.531], [0.952,-0.446], [0.978,-0.361], [1.003,-0.276], [1.028,-0.191], [1.054,-0.106], [1.079,-0.021], [1.105,0.064], [1.079,-0.021], [1.054,-0.106], [1.028,-0.191], [1.003,-0.276], [0.978,-0.361], [0.952,-0.446], [0.926,-0.531], [0.901,-0.616], [0.875,-0.701], [0.850,-0.786], [0.935,-0.786], [1.020,-0.786], [1.105,-0.786], [1.190,-0.786], [1.530,-0.786], ], - 'x' : [ [0.076,-0.701], [0.153,-0.616], [0.230,-0.531], [0.306,-0.446], [0.383,-0.361], [0.459,-0.276], [0.535,-0.191], [0.612,-0.106], [0.689,-0.021], [0.765,0.064], [0.689,-0.021], [0.612,-0.106], [0.535,-0.191], [0.459,-0.276], [0.383,-0.361], [0.306,-0.276], [0.230,-0.191], [0.153,-0.106], [0.076,-0.021], [0.000,0.064], [0.076,-0.021], [0.153,-0.106], [0.230,-0.191], [0.306,-0.276], [0.383,-0.361], [0.459,-0.446], [0.535,-0.531], [0.612,-0.616], [0.689,-0.701], [0.765,-0.786], [1.105,-0.786], ], - 'y' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.468,-0.786], [0.429,-0.701], [0.391,-0.616], [0.353,-0.531], [0.315,-0.446], [0.276,-0.361], [0.238,-0.276], [0.200,-0.191], [0.162,-0.106], [0.123,-0.021], [0.085,0.064], [0.123,-0.021], [0.162,-0.106], [0.200,-0.191], [0.238,-0.276], [0.276,-0.361], [0.315,-0.446], [0.353,-0.531], [0.391,-0.616], [0.429,-0.701], [0.468,-0.786], [0.506,-0.701], [0.544,-0.616], [0.582,-0.531], [0.620,-0.446], [0.659,-0.361], [0.697,-0.276], [0.735,-0.191], [0.773,-0.106], [0.812,-0.021], [0.850,0.064], [0.812,-0.021], [0.773,-0.106], [0.735,-0.191], [0.697,-0.276], [0.659,-0.361], [0.620,-0.446], [0.582,-0.531], [0.544,-0.616], [0.506,-0.701], [0.468,-0.786], [0.429,-0.871], [0.391,-0.956], [0.353,-1.041], [0.315,-1.126], [0.276,-1.211], [0.238,-1.296], [0.200,-1.381], [0.238,-1.296], [0.276,-1.211], [0.315,-1.126], [0.353,-1.041], [0.391,-0.956], [0.429,-0.871], [0.468,-0.786], [0.552,-0.786], [0.637,-0.786], [0.723,-0.786], [0.807,-0.786], [0.935,-0.786], [1.275,-0.786], ], - 'z' : [ [0.085,-0.786], [0.162,-0.701], [0.238,-0.616], [0.315,-0.531], [0.391,-0.446], [0.468,-0.361], [0.544,-0.276], [0.620,-0.191], [0.697,-0.106], [0.773,-0.021], [0.850,0.064], [0.765,0.064], [0.680,0.064], [0.595,0.064], [0.510,0.064], [0.425,0.064], [0.340,0.064], [0.255,0.064], [0.170,0.064], [0.085,0.064], [0.170,0.064], [0.255,0.064], [0.340,0.064], [0.425,0.064], [0.510,0.064], [0.595,0.064], [0.680,0.064], [0.765,0.064], [0.850,0.064], [0.773,-0.021], [0.697,-0.106], [0.620,-0.191], [0.544,-0.276], [0.468,-0.361], [0.391,-0.446], [0.315,-0.531], [0.238,-0.616], [0.162,-0.701], [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [0.765,-0.786], [0.850,-0.786], [0.935,-0.786], [1.275,-0.786], ], - 'a*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'b*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'c*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'd*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'e*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'f*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'g*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'h*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'i*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'j*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'k*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'l*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'm*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'n*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'o*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'p*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'q*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'r*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 's*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 't*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'u*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'v*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'w*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'x*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'y*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - 'z*' : [ [0.085,-0.786], [0.170,-0.786], [0.510,-0.786], ], - ',' : [ [0.085,-0.786], [0.170,-0.786], [0.187,-0.701], [0.221,-0.616], [0.289,-0.701], [0.306,-0.786], [0.323,-0.871], [0.323,-0.956], [0.289,-1.041], [0.255,-1.126], [0.187,-1.211], [0.085,-1.296], [0.187,-1.211], [0.255,-1.126], [0.289,-1.041], [0.323,-0.956], [0.323,-0.871], [0.306,-0.786], [0.289,-0.701], [0.221,-0.616], [0.289,-0.701], [0.306,-0.786], [0.425,-0.786], [0.765,-0.786], ], - '?' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.340,-0.786], [0.425,-0.786], [0.425,-0.701], [0.425,-0.616], [0.425,-0.531], [0.425,-0.446], [0.425,-0.361], [0.425,-0.276], [0.425,-0.191], [0.425,-0.106], [0.425,-0.081], [0.452,-0.038], [0.476,0.004], [0.510,0.072], [0.544,0.149], [0.578,0.208], [0.612,0.276], [0.629,0.319], [0.646,0.361], [0.654,0.404], [0.660,0.472], [0.663,0.531], [0.654,0.574], [0.637,0.616], [0.620,0.659], [0.587,0.701], [0.561,0.735], [0.527,0.752], [0.485,0.773], [0.451,0.782], [0.417,0.786], [0.383,0.786], [0.340,0.783], [0.315,0.782], [0.272,0.769], [0.238,0.752], [0.204,0.731], [0.179,0.701], [0.150,0.659], [0.128,0.616], [0.102,0.574], [0.085,0.531], [0.102,0.574], [0.128,0.616], [0.150,0.659], [0.179,0.701], [0.204,0.731], [0.238,0.752], [0.272,0.769], [0.315,0.782], [0.340,0.783], [0.383,0.786], [0.417,0.786], [0.451,0.782], [0.485,0.773], [0.527,0.752], [0.561,0.735], [0.587,0.701], [0.620,0.659], [0.637,0.616], [0.654,0.574], [0.663,0.531], [0.660,0.472], [0.654,0.404], [0.646,0.361], [0.629,0.319], [0.612,0.276], [0.578,0.208], [0.544,0.149], [0.510,0.072], [0.476,0.004], [0.452,-0.038], [0.425,-0.081], [0.425,-0.106], [0.425,-0.149], [0.425,-0.191], [0.425,-0.234], [0.425,-0.276], [0.425,-0.319], [0.425,-0.361], [0.425,-0.404], [0.425,-0.446], [0.425,-0.489], [0.425,-0.531], [0.425,-0.574], [0.425,-0.616], [0.425,-0.659], [0.425,-0.701], [0.425,-0.744], [0.425,-0.786], [0.340,-0.786], [0.425,-0.786], [0.612,-0.786], [0.561,-0.659], [0.425,-0.574], [0.289,-0.659], [0.238,-0.786], [0.289,-0.914], [0.425,-0.999], [0.561,-0.914], [0.612,-0.786], [0.425,-0.786], [0.510,-0.786], [0.595,-0.786], [0.680,-0.786], [1.020,-0.786], ], - '&' : [ [0.085,-0.786], [0.174,-0.778], [0.255,-0.774], [0.332,-0.774], [0.460,-0.761], [0.561,-0.748], [0.646,-0.684], [0.731,-0.574], [0.799,-0.506], [0.850,-0.440], [0.935,-0.319], [1.037,-0.191], [0.935,-0.319], [0.850,-0.440], [0.799,-0.506], [0.731,-0.574], [0.646,-0.684], [0.561,-0.748], [0.460,-0.761], [0.332,-0.774], [0.255,-0.774], [0.174,-0.778], [0.128,-0.718], [0.102,-0.676], [0.085,-0.599], [0.076,-0.497], [0.085,-0.327], [0.136,-0.191], [0.238,-0.064], [0.323,0.004], [0.374,0.047], [0.493,0.089], [0.587,0.154], [0.629,0.234], [0.672,0.335], [0.706,0.429], [0.715,0.520], [0.718,0.614], [0.701,0.690], [0.667,0.749], [0.620,0.777], [0.535,0.786], [0.468,0.786], [0.400,0.777], [0.329,0.760], [0.294,0.734], [0.270,0.681], [0.259,0.605], [0.252,0.548], [0.254,0.463], [0.262,0.404], [0.289,0.306], [0.332,0.174], [0.408,0.064], [0.476,-0.106], [0.544,-0.276], [0.595,-0.446], [0.646,-0.616], [0.697,-0.786], [0.765,-0.829], [0.850,-0.829], [0.926,-0.803], [1.021,-0.786], [1.120,-0.786], [1.460,-0.786], ], - '$' : [ [0.102,-0.786], [0.221,-0.786], [0.306,-0.786], [0.391,-0.786], [0.476,-0.786], [0.476,-0.786], [0.476,-1.126], [0.476,-0.786], [0.476,-0.531], [0.476,-0.276], [0.476,-0.021], [0.476,0.234], [0.476,0.489], [0.476,0.829], [0.510,0.829], [0.510,0.489], [0.510,0.234], [0.510,-0.021], [0.510,-0.276], [0.510,-0.531], [0.510,-0.786], [0.510,-1.126], [0.510,-0.786], [0.476,-0.786], [0.476,-0.871], [0.595,-0.910], [0.671,-0.880], [0.731,-0.829], [0.782,-0.744], [0.807,-0.659], [0.799,-0.531], [0.756,-0.404], [0.663,-0.276], [0.476,-0.149], [0.289,-0.021], [0.196,0.106], [0.153,0.234], [0.145,0.361], [0.170,0.446], [0.221,0.531], [0.281,0.582], [0.357,0.612], [0.476,0.616], [0.595,0.612], [0.671,0.582], [0.731,0.531], [0.782,0.446], [0.825,0.361], [0.782,0.446], [0.731,0.531], [0.671,0.582], [0.595,0.612], [0.476,0.616], [0.357,0.612], [0.281,0.582], [0.221,0.531], [0.170,0.446], [0.145,0.361], [0.153,0.234], [0.196,0.106], [0.289,-0.021], [0.476,-0.149], [0.663,-0.276], [0.756,-0.404], [0.799,-0.531], [0.807,-0.659], [0.782,-0.744], [0.731,-0.829], [0.671,-0.880], [0.595,-0.910], [0.476,-0.914], [0.357,-0.910], [0.281,-0.880], [0.221,-0.829], [0.170,-0.744], [0.128,-0.659], [0.085,-0.565], [0.128,-0.659], [0.170,-0.744], [0.221,-0.829], [0.281,-0.880], [0.357,-0.910], [0.476,-0.914], [0.476,-0.786], [0.561,-0.786], [0.646,-0.786], [0.731,-0.786], [0.816,-0.786], [0.901,-0.786], [1.241,-0.786], ], - '!' : [ [0.085,-0.786], [0.170,-0.786], [0.255,-0.786], [0.255,-0.531], [0.255,-0.276], [0.255,-0.021], [0.255,0.234], [0.255,0.489], [0.255,0.786], [0.255,0.489], [0.255,0.234], [0.255,-0.021], [0.255,-0.276], [0.255,-0.531], [0.255,-0.786], [0.442,-0.786], [0.391,-0.659], [0.255,-0.574], [0.119,-0.659], [0.068,-0.786], [0.119,-0.914], [0.255,-0.999], [0.391,-0.914], [0.442,-0.786], [0.255,-0.786], [0.425,-0.786], [0.510,-0.786], [0.850,-0.786], ], -} diff --git a/src/models/lsystem/LSystem.js b/src/models/lsystem/LSystem.js deleted file mode 100644 index 35df20fd..00000000 --- a/src/models/lsystem/LSystem.js +++ /dev/null @@ -1,73 +0,0 @@ -import Shape, { shapeOptions } from '../Shape' -import { - lsystem, - lsystemPath, - onSubtypeChange, - onMinIterations, - onMaxIterations -} from '../../common/lindenmayer' -import { subtypes } from './subtypes' -import { resizeVertices } from '../../common/geometry' - -const options = { - ...shapeOptions, - ...{ - subtype: { - title: 'Type', - type: 'dropdown', - choices: Object.keys(subtypes), - onChange: (changes, attrs) => { - return onSubtypeChange(subtypes[changes.subtype], changes, attrs) - } - }, - iterations: { - title: 'Iterations', - min: (state) => { - return onMinIterations(subtypes[state.subtype], state) - }, - max: (state) => { - return onMaxIterations(subtypes[state.subtype], state) - } - }, - } -} - -export default class LSystem extends Shape { - constructor() { - super('Fractal Line Writer') - this.link = 'https://en.wikipedia.org/wiki/L-system' - this.linkText = 'L-systems on Wikipedia' - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'lsystem', - iterations: 3, - subtype: 'McWorter\'s Pentadendrite', - repeatEnabled: false - } - } - } - - getVertices(state) { - const shape = state.shape - const iterations = shape.iterations || 1 - - // generate our vertices using a set of l-system rules - let config = subtypes[shape.subtype] - config.iterations = iterations - config.side = 5 - - if (config.angle === undefined) { config.angle = Math.PI/2 } - - let curve = lsystemPath(lsystem(config), config) - const scale = 18.0 // to normalize starting size - return resizeVertices(curve, scale, scale) - } - - getOptions() { - return options - } -} diff --git a/src/models/lsystem/subtypes.js b/src/models/lsystem/subtypes.js deleted file mode 100644 index 2c79663a..00000000 --- a/src/models/lsystem/subtypes.js +++ /dev/null @@ -1,222 +0,0 @@ -// L-system instructions for space filling curves -export const subtypes = { - // http://mathforum.org/advanced/robertd/lsys2d.html - '32-segment': { - axiom: 'F+F+F+F', - draw: ['F'], - rules: { - F: '-F+F-F-F+F+FF-F+F+FF+F-F-FF+FF-FF+F+F-FF-F-F+FF-F-F+F+F-F+' - }, - startingAngle: Math.PI, - maxIterations: 2 - }, - // http://www.kevs3d.co.uk/dev/lsystems/ - 'Cog Triangle': { - axiom: 'W----W----W', - draw: ['F'], - rules: { - W: '+++X--F--ZFX+', - X: '---W++F++YFW-', - Y: '+ZFX--F--Z+++', - Z: '-YFW++F++Y---' - }, - angle: Math.PI/6, - minIterations: 1, - maxIterations: 8 - }, - // https://onlinemathtools.com/l-system-generator - 'Fractal Tree': { - axiom: 'F', - draw: ['F'], - rules: { - F: 'F[+FF][-FF]F[-F][+F]F', - }, - angle: Math.PI/5, - maxIterations: 5 - }, - // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ - 'Fractal Tree 2': { - axiom: 'F', - draw: ['F'], - rules: { - F: 'F[-F][+F]', - }, - angle: 10*Math.PI/72, - maxIterations: 9 - }, - // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ - 'Fractal Tree 3': { - axiom: 'X', - draw: ['F'], - rules: { - F: 'FF', - X: 'F+[-F-XF-X][+FF][--XF[+X]][++F-X]' - }, - angle: Math.PI/8, - maxIterations: 6 - }, - // https://www.vexlio.com/blog/drawing-simple-organics-with-l-systems/ - 'Fractal Tree 4': { - axiom: 'X', - draw: ['F'], - rules: { - F: 'FX[FX[+XF]]', - X: 'FF[+XZ++X-F[+ZX]][-X++F-X]', - Z: '[+F-X-F][++ZX]' - }, - angle: Math.PI/8, - maxIterations: 5 - }, - // http://algorithmicbotany.org/papers/abop/abop-ch1.pdf - 'Fractal Tree 5': { - axiom: 'X', - draw: ['F'], - rules: { - X: 'F[+X]F[-X]+X', - F: 'FF' - }, - angle: Math.PI/9, - maxIterations: 8 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Gosper (flowsnake)': { - axiom: 'A', - draw: ['A', 'B'], - rules: { - A: 'A-B--B+A++AA+B-', - B: '+A-BB--B-A++A+B' - }, - angle: Math.PI / 3, - maxIterations: 5 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Ice': { - axiom: 'F+F+F+F', - draw: ['F'], - rules: { - F: 'FF+F++F+F' - }, - startingAngle: Math.PI, - maxIterations: 6 - }, - // https://fronkonstin.com/2017/06/26/a-shiny-app-to-draw-curves-based-on-l-systems/ - 'Koch Cube 1': { - axiom: 'F-F-F-F', - draw: ['F'], - rules: { - F: 'FF-F-F-F-FF', - }, - maxIterations: 5 - }, - // http://algorithmicbotany.org/papers/abop/abop-ch1.pdf - 'Koch Cube 2': { - axiom: 'F-F-F-F', - draw: ['F'], - rules: { - F: 'FF-F+F-F-FF', - }, - maxIterations: 5 - }, - // https://onlinemathtools.com/l-system-generator - 'Koch Curve': { - axiom: 'F', - draw: ['F'], - rules: { - F: 'F+F--F+F' - }, - angle: 4*Math.PI/9, - startingAngle: Math.PI, - maxIterations: 7 - }, - // https://fronkonstin.com/2017/06/26/a-shiny-app-to-draw-curves-based-on-l-systems/ - 'Koch Flower': { - axiom: 'F-F-F-F', - draw: ['F'], - rules: { - F: 'FF-F-F-F-F-F+F', - }, - maxIterations: 4 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Koch Island': { - axiom: 'F+F+F+F', - draw: ['F'], - rules: { - F: 'F+F-F-FF+F+F-F' - }, - startingAngle: Math.PI, - maxIterations: 4 - }, - 'Koch Snowflake': { - axiom: 'F--F--F--', - draw: ['F'], - rules: { - F: 'F+F--F+F' - }, - angle: Math.PI / 3, - startingAngle: -Math.PI / 3, - maxIterations: 5 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'McWorter\'s Pentadendrite': { - axiom: 'F-F-F-F-F', - draw: ['F'], - rules: { - F: 'F-F-F++F+F-F', - }, - angle: 2*Math.PI/5, - maxIterations: 5 - }, - // https://onlinemathtools.com/l-system-generator - 'Penrose Tile': { - axiom: '[7]++[7]++[7]++[7]++[7]', - draw: ['6', '7', '8', '9'], - rules: { - 6: '8++9----7[-8----6]++', - 7: '+8--9[---6--7]+', - 8: '-6++7[+++8++9]-', - 9: '--8++++6[+9++++7]--7' - }, - angle: Math.PI/5, - maxIterations: 6 - }, - 'Plusses': { - axiom: 'XYXYXYX+XYXYXYX+XYXYXYX+XYXYXYX', - draw: ['F'], - rules: { - X: 'FX+FX+FXFY-FY-', - Y: '+FX+FXFY-FY-FY' - }, - maxIterations: 4 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Red Dragon': { - axiom: 'FA', - draw: ['F'], - rules: { - A: 'A+BF+', - B: '-FA-B' - }, - minIterations: 9, - maxIterations: 15, - startingAngle: Math.PI - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Sierpinski Triangle (arrowhead)': { - axiom: 'X', - draw: ['X', 'Y'], - rules: { - X: 'Y+X+Y', - Y: 'X-Y-X' - }, - angle: Math.PI / 3, - startingAngle: (i) => { - if (i % 2 === 0) { - return 0 - } else { - return -Math.PI/3 - } - }, - maxIterations: 8 - }, -} diff --git a/src/models/shapes.js b/src/models/shapes.js deleted file mode 100644 index 4d4f0402..00000000 --- a/src/models/shapes.js +++ /dev/null @@ -1,98 +0,0 @@ -import Circle from '../models/Circle' -import Epicycloid from '../models/Epicycloid' -import FileImport from '../models/FileImport' -import Fisheye from '../models/Fisheye' -import Warp from '../models/Warp' -import CirclePacker from '../models/circle_packer/CirclePacker' -import FractalSpirograph from '../models/fractal_spirograph/FractalSpirograph' -// import Freeform from '../models/Freeform' -import Heart from '../models/Heart' -import Hypocycloid from '../models/Hypocycloid' -import InputText from '../models/input_text/InputText' -import FancyText from '../models/FancyText' -import LSystem from '../models/lsystem/LSystem' -import Mask from '../models/Mask' -import Noise from '../models/Noise' -import NoiseWave from '../models/NoiseWave' -import Point from '../models/Point' -import Polygon from '../models/Polygon' -import Reuleaux from '../models/Reuleaux' -import Rose from '../models/Rose' -import SpaceFiller from '../models/space_filler/SpaceFiller' -import Star from '../models/Star' -import TessellationTwist from '../models/tessellation_twist/TessellationTwist' -import V1Engineering from '../models/v1_engineering/V1Engineering' -import Wiper from '../models/Wiper' - -/*---------------------------------------------- -Supported input shapes ------------------------------------------------*/ -export const registeredShapes = { - polygon: new Polygon(), - star: new Star(), - circle: new Circle(), - heart: new Heart(), - reuleaux: new Reuleaux(), - epicycloid: new Epicycloid(), - hypocycloid: new Hypocycloid(), - rose: new Rose(), - inputText: new InputText(), - fancy_text: new FancyText(), - v1Engineering: new V1Engineering(), - lsystem: new LSystem(), - fractal_spirograph: new FractalSpirograph(), - tessellation_twist: new TessellationTwist(), - point: new Point(), - // freeform: new Freeform(), - circle_packer: new CirclePacker(), - wiper: new Wiper(), - space_filler: new SpaceFiller(), - noise_wave: new NoiseWave(), - file_import: new FileImport(), - fisheye: new Fisheye(), - mask: new Mask(), - noise: new Noise(), - warp: new Warp() -} - -export const getShape = (layer) => { - return registeredShapes[layer.type] -} - -export const getShapeDefaults = () => { - return Object.keys(registeredShapes).map(id => { - const state = registeredShapes[id].getInitialState() - state.name = registeredShapes[id].name - state.id = id - return state - }) -} - -export const getShapeSelectOptions = (includeEffects=true) => { - const groupOptions = [] - const shapes = getShapeDefaults() - - for (const shape of shapes) { - const optionLabel = { value: shape.id, label: shape.name } - var found = false - - for (const group of groupOptions) { - if (group.label === shape.selectGroup) { - found = true - group.options.push(optionLabel) - } - } - if (!found) { - if (shape.selectGroup === 'import') { - // Users can't manually select this group. - continue - } else if (shape.selectGroup === 'effects' && !includeEffects) { - continue - } - const newOptions = [ optionLabel ] - groupOptions.push( { label: shape.selectGroup, options: newOptions } ) - } - } - - return groupOptions -} diff --git a/src/models/space_filler/SpaceFiller.js b/src/models/space_filler/SpaceFiller.js deleted file mode 100644 index 127b7dcc..00000000 --- a/src/models/space_filler/SpaceFiller.js +++ /dev/null @@ -1,91 +0,0 @@ -import Shape, { shapeOptions } from '../Shape' -import { - lsystem, - lsystemPath, - onSubtypeChange, - onMinIterations, - onMaxIterations -} from '../../common/lindenmayer' -import { resizeVertices } from '../../common/geometry' -import { subtypes } from './subtypes' - -const options = { - ...shapeOptions, - ...{ - fillerSubtype: { - title: 'Type', - type: 'dropdown', - choices: Object.keys(subtypes), - onChange: (changes, attrs) => { - return onSubtypeChange(subtypes[changes.fillerSubtype], changes, attrs) - } - }, - iterations: { - title: 'Iterations', - min: (state) => { - return onMinIterations(subtypes[state.fillerSubtype], state) - }, - max: (state) => { - return onMaxIterations(subtypes[state.fillerSubtype], state) - } - } - } -} - -export default class SpaceFiller extends Shape { - constructor() { - super('Space Filler') - this.linkText = 'Fractal charm: space filling curves' - this.link = 'https://www.youtube.com/watch?v=RU0wScIj36o' - } - - getInitialState() { - return { - ...super.getInitialState(), - ...{ - type: 'space_filler', - selectGroup: 'Erasers', - canTransform: false, - iterations: 6, - fillerSubtype: 'Hilbert', - repeatEnabled: false, - canChangeSize: false, - autosize: false, - usesMachine: true, - } - } - } - - getVertices(state) { - const machine = state.machine - const iterations = state.shape.iterations || 1 - - let sizeX, sizeY - if (machine.rectangular) { - sizeX = machine.maxX - machine.minX - sizeY = machine.maxY - machine.minY - } else { - sizeX = sizeY = machine.maxRadius * 2.0 - } - - // generate our vertices using a set of l-system rules - let config = subtypes[state.shape.fillerSubtype] - config.iterations = iterations - - if (config.side === undefined) { config.side = 5 } - if (config.angle === undefined) { config.angle = Math.PI/2 } - - let curve = lsystemPath(lsystem(config), config) - let scale = 1 - - if (config.iterationsGrow) { - scale = (typeof config.iterationsGrow === 'function') ? config.iterationsGrow(config) : config.iterationsGrow - } - - return resizeVertices(curve, sizeX*scale, sizeY*scale) - } - - getOptions() { - return options - } -} diff --git a/src/models/space_filler/subtypes.js b/src/models/space_filler/subtypes.js deleted file mode 100644 index 58870ff4..00000000 --- a/src/models/space_filler/subtypes.js +++ /dev/null @@ -1,76 +0,0 @@ -// L-system instructions for space filling curves -export const subtypes = { - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Gosper (flowsnake)': { - axiom: 'A', - draw: ['A', 'B'], - rules: { - A: 'A-B--B+A++AA+B-', - B: '+A-BB--B-A++A+B' - }, - angle: Math.PI / 3, - iterationsGrow: (config) => { - return config.iterations - }, - maxIterations: 6 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Hilbert': { - axiom: 'L', - draw: 'F', - rules: { - L: '+RF-LFL-FR+', - R: '-LF+RFR+FL-' - }, - startingAngle: Math.PI, - minIterations: 2 - }, - // http://mathforum.org/advanced/robertd/lsys2d.html - 'Hilbert 2': { - axiom: 'X', - draw: 'F', - rules: { - X: 'XFYFX+F+YFXFY-F-XFYFX', - Y: 'YFXFY-F-XFYFX+F+YFXFY' - }, - startingAngle: Math.PI, - maxIterations: 4 - }, - // https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve - 'Sierpinski': { - axiom: 'F--XF--F--XF', - draw: ['F', 'G'], - rules: { - X: 'XF+G+XF--F--XF+G+X' - }, - startingAngle: Math.PI/4, - angle: Math.PI/4, - maxIterations: 6 - }, - // https://onlinemathtools.com/l-system-generator - 'Penrose Tile': { - axiom: '[7]++[7]++[7]++[7]++[7]', - draw: ['6', '7', '8', '9'], - rules: { - 6: '8++9----7[-8----6]++', - 7: '+8--9[---6--7]+', - 8: '-6++7[+++8++9]-', - 9: '--8++++6[+9++++7]--7' - }, - angle: Math.PI/5, - maxIterations: 6, - iterationsGrow: (config) => { - return 1 + Math.max(1, 3/config.iterations) - } - }, - // https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve - 'Sierpinski Square': { - axiom: 'F+XF+F+XF', - draw: 'F', - rules: { - X: 'XF-F+F-XF+F+XF-F+F-X' - }, - startingAngle: Math.PI/4, - maxIterations: 6 - }, -} diff --git a/src/setupTests.js b/src/setupTests.js index 258693d1..936f7ec9 100644 --- a/src/setupTests.js +++ b/src/setupTests.js @@ -1,3 +1,3 @@ -import 'jest-canvas-mock' +import "jest-canvas-mock" -jest.mock('react-ga') +jest.mock("react-ga") diff --git a/vite.config.js b/vite.config.js index d506e088..2d66d659 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,30 +1,27 @@ import fs from 'fs/promises'; import { defineConfig } from 'vite' +import path from 'path' import react from '@vitejs/plugin-react' import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill' -import nodePolyfills from 'rollup-plugin-node-polyfills' +import { nodePolyfills } from 'vite-plugin-node-polyfills' export default defineConfig(() => ({ server: { port: 3000 }, - plugins: [react()], + plugins: [ + react(), + nodePolyfills(), + ], resolve: { alias: { - process: "rollup-plugin-node-polyfills/polyfills/process-es6", - timers: "rollup-plugin-node-polyfills/polyfills/timers", - stream: "rollup-plugin-node-polyfills/polyfills/stream", - events: "rollup-plugin-node-polyfills/polyfills/events", - util: "rollup-plugin-node-polyfills/polyfills/util", - buffer: "rollup-plugin-node-polyfills/polyfills/buffer-es6" + '@': path.resolve(__dirname, './src'), + "tinyqueue": path.join(__dirname, 'node_modules', 'tinyqueue', 'index.js') } }, build: { outDir: 'build', target: 'esnext', - rollupOptions: { - plugins: [nodePolyfills()], - } }, define: { "process.env": process.env ?? {}, @@ -39,7 +36,7 @@ export default defineConfig(() => ({ optimizeDeps: { esbuildOptions: { plugins: [ - NodeGlobalsPolyfillPlugin({ buffer: true }), + NodeGlobalsPolyfillPlugin({ buffer: false, process: true }), { name: "load-js-files-as-jsx", setup(build) {