From 3c922a3ff8fa58fcc4d2d35ce6fac9cd4dd4165c Mon Sep 17 00:00:00 2001 From: AlexNg Date: Sun, 26 May 2024 00:04:51 +0800 Subject: [PATCH 01/22] docs: Ported docs here from the other repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ref: https://github.com/python-thread/thread.ngjx.org/issues/59 Closes: #89 Signed-off-by: AlexNg Co-authored-by: Jun Xiang (カエデ) Co-authored-by: ShiroTohu Co-authored-by: dependabot[bot] --- docs/.eslintrc.json | 19 + docs/.gitignore | 36 + docs/LICENSE | 28 + docs/README.md | 3 + docs/next-sitemap.config.js | 6 + docs/next.config.js | 37 + docs/package-lock.json | 12370 ++++++++++++++++ docs/package.json | 37 + docs/postcss.config.js | 6 + docs/public/favicon-dark.ico | Bin 0 -> 23462 bytes docs/public/favicon-dark.png | Bin 0 -> 1306 bytes docs/public/favicon-dark.svg | 4 + docs/public/favicon.ico | Bin 0 -> 23462 bytes docs/public/favicon.png | Bin 0 -> 1936 bytes docs/public/favicon.svg | 4 + docs/public/pointing.jpg | Bin 0 -> 45650 bytes docs/public/socialcard-black.jpg | Bin 0 -> 445026 bytes docs/public/socialcard-white.jpg | Bin 0 -> 275453 bytes docs/src/components/typedata.tsx | 22 + docs/src/components/typewriter.tsx | 21 + docs/src/pages/404.mdx | 17 + docs/src/pages/_app.mdx | 6 + docs/src/pages/_meta.json | 45 + docs/src/pages/about.mdx | 61 + docs/src/pages/docs/_meta.json | 15 + docs/src/pages/docs/index.mdx | 163 + docs/src/pages/docs/latest/_meta.json | 9 + .../docs/latest/command-line-interface.mdx | 226 + .../docs/latest/concurrent-processing.mdx | 601 + docs/src/pages/docs/latest/configuration.mdx | 105 + docs/src/pages/docs/latest/exceptions.mdx | 140 + docs/src/pages/docs/latest/index.mdx | 29 + docs/src/pages/docs/latest/installation.mdx | 80 + docs/src/pages/docs/latest/thread-class.mdx | 604 + docs/src/pages/docs/v1/_meta.json | 9 + .../pages/docs/v1/command-line-interface.mdx | 226 + docs/src/pages/docs/v1/configuration.mdx | 105 + docs/src/pages/docs/v1/exceptions.mdx | 140 + docs/src/pages/docs/v1/index.mdx | 29 + docs/src/pages/docs/v1/installation.mdx | 80 + .../src/pages/docs/v1/parallel-processing.mdx | 636 + docs/src/pages/docs/v1/thread-class.mdx | 606 + docs/src/pages/index.mdx | 70 + docs/src/pages/learn/_meta.json | 15 + docs/src/pages/learn/cautions.mdx | 12 + docs/src/pages/learn/cautions/_meta.json | 3 + docs/src/pages/learn/cautions/parallelism.mdx | 47 + docs/src/pages/learn/cautions/type-safety.mdx | 89 + docs/src/pages/learn/examples.mdx | 12 + docs/src/pages/learn/examples/_meta.json | 4 + docs/src/pages/learn/examples/processing.mdx | 86 + docs/src/pages/learn/examples/threading.mdx | 76 + docs/src/pages/learn/index.mdx | 1 + docs/src/pages/learn/python_thread/_meta.json | 5 + docs/src/pages/learn/python_thread/index.mdx | 1 + docs/src/pages/learn/thread/_meta.json | 5 + docs/src/pages/learn/thread/index.mdx | 5 + docs/src/styles/globals.css | 21 + docs/src/types/environment.d.ts | 7 + docs/src/utils.tsx | 14 + docs/tailwind.config.ts | 21 + docs/theme.config.tsx | 98 + docs/tsconfig.json | 27 + 63 files changed, 17144 insertions(+) create mode 100644 docs/.eslintrc.json create mode 100644 docs/.gitignore create mode 100644 docs/LICENSE create mode 100644 docs/README.md create mode 100644 docs/next-sitemap.config.js create mode 100644 docs/next.config.js create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/postcss.config.js create mode 100644 docs/public/favicon-dark.ico create mode 100644 docs/public/favicon-dark.png create mode 100644 docs/public/favicon-dark.svg create mode 100644 docs/public/favicon.ico create mode 100644 docs/public/favicon.png create mode 100644 docs/public/favicon.svg create mode 100644 docs/public/pointing.jpg create mode 100644 docs/public/socialcard-black.jpg create mode 100644 docs/public/socialcard-white.jpg create mode 100644 docs/src/components/typedata.tsx create mode 100644 docs/src/components/typewriter.tsx create mode 100644 docs/src/pages/404.mdx create mode 100644 docs/src/pages/_app.mdx create mode 100644 docs/src/pages/_meta.json create mode 100644 docs/src/pages/about.mdx create mode 100644 docs/src/pages/docs/_meta.json create mode 100644 docs/src/pages/docs/index.mdx create mode 100644 docs/src/pages/docs/latest/_meta.json create mode 100644 docs/src/pages/docs/latest/command-line-interface.mdx create mode 100644 docs/src/pages/docs/latest/concurrent-processing.mdx create mode 100644 docs/src/pages/docs/latest/configuration.mdx create mode 100644 docs/src/pages/docs/latest/exceptions.mdx create mode 100644 docs/src/pages/docs/latest/index.mdx create mode 100644 docs/src/pages/docs/latest/installation.mdx create mode 100644 docs/src/pages/docs/latest/thread-class.mdx create mode 100644 docs/src/pages/docs/v1/_meta.json create mode 100644 docs/src/pages/docs/v1/command-line-interface.mdx create mode 100644 docs/src/pages/docs/v1/configuration.mdx create mode 100644 docs/src/pages/docs/v1/exceptions.mdx create mode 100644 docs/src/pages/docs/v1/index.mdx create mode 100644 docs/src/pages/docs/v1/installation.mdx create mode 100644 docs/src/pages/docs/v1/parallel-processing.mdx create mode 100644 docs/src/pages/docs/v1/thread-class.mdx create mode 100644 docs/src/pages/index.mdx create mode 100644 docs/src/pages/learn/_meta.json create mode 100644 docs/src/pages/learn/cautions.mdx create mode 100644 docs/src/pages/learn/cautions/_meta.json create mode 100644 docs/src/pages/learn/cautions/parallelism.mdx create mode 100644 docs/src/pages/learn/cautions/type-safety.mdx create mode 100644 docs/src/pages/learn/examples.mdx create mode 100644 docs/src/pages/learn/examples/_meta.json create mode 100644 docs/src/pages/learn/examples/processing.mdx create mode 100644 docs/src/pages/learn/examples/threading.mdx create mode 100644 docs/src/pages/learn/index.mdx create mode 100644 docs/src/pages/learn/python_thread/_meta.json create mode 100644 docs/src/pages/learn/python_thread/index.mdx create mode 100644 docs/src/pages/learn/thread/_meta.json create mode 100644 docs/src/pages/learn/thread/index.mdx create mode 100644 docs/src/styles/globals.css create mode 100644 docs/src/types/environment.d.ts create mode 100644 docs/src/utils.tsx create mode 100644 docs/tailwind.config.ts create mode 100644 docs/theme.config.tsx create mode 100644 docs/tsconfig.json diff --git a/docs/.eslintrc.json b/docs/.eslintrc.json new file mode 100644 index 0000000..f3c23a4 --- /dev/null +++ b/docs/.eslintrc.json @@ -0,0 +1,19 @@ +{ + "root": true, + "extends": [ + "next/core-web-vitals", + "plugin:mdx/recommended" + ], + "settings": { + "mdx/code-blocks": true + }, + "overrides": [ + { + "files": [ + "*.md", + "*.mdx" + ], + "parser": "eslint-mdx" + } + ] +} diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/docs/LICENSE b/docs/LICENSE new file mode 100644 index 0000000..afae473 --- /dev/null +++ b/docs/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2023, Jun Xiang + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..53a28e0 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# [Thread Documentation Website](https://thread.ngjx.org) + +Currently work in progress, please be patient! diff --git a/docs/next-sitemap.config.js b/docs/next-sitemap.config.js new file mode 100644 index 0000000..dbbddf5 --- /dev/null +++ b/docs/next-sitemap.config.js @@ -0,0 +1,6 @@ +/** @type {import('next-sitemap').IConfig} */ +module.exports = { + siteUrl: process.env.NODE_ENV === 'production' ? 'https://thread.ngjx.org' : 'http://localhost:3000', + generateRobotsTxt: true, // (optional) + // ...other options +} diff --git a/docs/next.config.js b/docs/next.config.js new file mode 100644 index 0000000..2a98deb --- /dev/null +++ b/docs/next.config.js @@ -0,0 +1,37 @@ +/** @type {import('nextra').withNextra} */ +const withNextra = require('nextra')({ + theme: 'nextra-theme-docs', + themeConfig: './theme.config.tsx', + defaultShowCopyCode: true, + latex: true, +}) + +/** @type {import('next').NextConfig} */ +const NextConfig = { + images: { + remotePatterns: [{ + protocol: 'https', + hostname: 'avatars.githubusercontent.com', + pathname: '/u/*' + }] + }, + redirects: async () => ([ + { + source: '/docs/v2:any?/:path*', + destination: '/docs/latest/:path*', + permanent: false + }, + { + source: '/docs/v:major.:minor.:patch/:path*', + destination: '/docs/v:major/:path*', + permanent: true + }, + { + source: '/github/v:major.:minor.:patch/:path*', + destination: 'https://github.com/python-thread/thread/releases/tag/v:major.:minor.:patch', + permanent: true + } + ]) +} + +module.exports = withNextra(NextConfig) diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 0000000..67de020 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,12370 @@ +{ + "name": "thread", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "thread", + "version": "0.1.0", + "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "next": "14.1.1", + "next-sitemap": "^4.2.3", + "nextra": "^2.13.2", + "nextra-theme-docs": "^2.13.2", + "react": "^18", + "react-dom": "^18", + "react-type-animation": "^3.2.0", + "tailwind-merge": "^2.2.1" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.0.4", + "eslint-mdx": "^3.1.5", + "eslint-plugin-mdx": "^3.1.5", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } + }, + "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/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, + "node_modules/@corex/deepmerge": { + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz", + "integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==" + }, + "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": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@headlessui/react": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.17.tgz", + "integrity": "sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==", + "dependencies": { + "client-only": "^0.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "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": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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/@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": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", + "dependencies": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@napi-rs/simple-git": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.9.tgz", + "integrity": "sha512-qKzDS0+VjMvVyU28px+C6zlD1HKy83NIdYzfMQWa/g/V1iG/Ic8uwrS2ihHfm7mp7X0PPrmINLiTTi6ieUIKfw==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/simple-git-android-arm-eabi": "0.1.9", + "@napi-rs/simple-git-android-arm64": "0.1.9", + "@napi-rs/simple-git-darwin-arm64": "0.1.9", + "@napi-rs/simple-git-darwin-x64": "0.1.9", + "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.9", + "@napi-rs/simple-git-linux-arm64-gnu": "0.1.9", + "@napi-rs/simple-git-linux-arm64-musl": "0.1.9", + "@napi-rs/simple-git-linux-x64-gnu": "0.1.9", + "@napi-rs/simple-git-linux-x64-musl": "0.1.9", + "@napi-rs/simple-git-win32-arm64-msvc": "0.1.9", + "@napi-rs/simple-git-win32-x64-msvc": "0.1.9" + } + }, + "node_modules/@napi-rs/simple-git-android-arm-eabi": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.9.tgz", + "integrity": "sha512-9D4JnfePMpgL4pg9aMUX7/TIWEUQ+Tgx8n3Pf8TNCMGjUbImJyYsDSLJzbcv9wH7srgn4GRjSizXFJHAPjzEug==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-android-arm64": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.9.tgz", + "integrity": "sha512-Krilsw0gPrrASZzudNEl9pdLuNbhoTK0j7pUbfB8FRifpPdFB/zouwuEm0aSnsDXN4ftGrmGG82kuiR/2MeoPg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-darwin-arm64": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.9.tgz", + "integrity": "sha512-H/F09nDgYjv4gcFrZBgdTKkZEepqt0KLYcCJuUADuxkKupmjLdecMhypXLk13AzvLW4UQI7NlLTLDXUFLyr2BA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-darwin-x64": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.9.tgz", + "integrity": "sha512-jBR2xS9nVPqmHv0TWz874W0m/d453MGrMeLjB+boK5IPPLhg3AWIZj0aN9jy2Je1BGVAa0w3INIQJtBBeB6kFA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.9.tgz", + "integrity": "sha512-3n0+VpO4YfZxndZ0sCvsHIvsazd+JmbSjrlTRBCnJeAU1/sfos3skNZtKGZksZhjvd+3o+/GFM8L7Xnv01yggA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-linux-arm64-gnu": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.9.tgz", + "integrity": "sha512-lIzf0KHU2SKC12vMrWwCtysG2Sdt31VHRPMUiz9lD9t3xwVn8qhFSTn5yDkTeG3rgX6o0p5EKalfQN5BXsJq2w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-linux-arm64-musl": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.9.tgz", + "integrity": "sha512-KQozUoNXrxrB8k741ncWXSiMbjl1AGBGfZV21PANzUM8wH4Yem2bg3kfglYS/QIx3udspsT35I9abu49n7D1/w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-linux-x64-gnu": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.9.tgz", + "integrity": "sha512-O/Niui5mnHPcK3iYC3ui8wgERtJWsQ3Y74W/09t0bL/3dgzGMl4oQt0qTj9dWCsnoGsIEYHPzwCBp/2vqYp/pw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-linux-x64-musl": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.9.tgz", + "integrity": "sha512-L9n+e8Wn3hKr3RsIdY8GaB+ry4xZ4BaGwyKExgoB8nDGQuRUY9oP6p0WA4hWfJvJnU1H6hvo36a5UFPReyBO7A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-win32-arm64-msvc": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.9.tgz", + "integrity": "sha512-Z6Ja/SZK+lMvRWaxj7wjnvSbAsGrH006sqZo8P8nxKUdZfkVvoCaAWr1r0cfkk2Z3aijLLtD+vKeXGlUPH6gGQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/simple-git-win32-x64-msvc": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.9.tgz", + "integrity": "sha512-VAZj1UvC+R2MjKOD3I/Y7dmQlHWAYy4omhReQJRpbCf+oGCBi9CWiIduGqeYEq723nLIKdxP7XjaO0wl1NnUww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/env": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.1.tgz", + "integrity": "sha512-7CnQyD5G8shHxQIIg3c7/pSeYFeMhsNbpU/bmvH7ZnDql7mNRgg8O2JZrhrc/soFnfBnKP4/xXNiiSIPn2w8gA==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz", + "integrity": "sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.1.tgz", + "integrity": "sha512-yDjSFKQKTIjyT7cFv+DqQfW5jsD+tVxXTckSe1KIouKk75t1qZmj/mV3wzdmFb0XHVGtyRjDMulfVG8uCKemOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.1.tgz", + "integrity": "sha512-KCQmBL0CmFmN8D64FHIZVD9I4ugQsDBBEJKiblXGgwn7wBCSe8N4Dx47sdzl4JAg39IkSN5NNrr8AniXLMb3aw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.1.tgz", + "integrity": "sha512-YDQfbWyW0JMKhJf/T4eyFr4b3tceTorQ5w2n7I0mNVTFOvu6CGEzfwT3RSAQGTi/FFMTFcuspPec/7dFHuP7Eg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.1.tgz", + "integrity": "sha512-fiuN/OG6sNGRN/bRFxRvV5LyzLB8gaL8cbDH5o3mEiVwfcMzyE5T//ilMmaTrnA8HLMS6hoz4cHOu6Qcp9vxgQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.1.tgz", + "integrity": "sha512-rv6AAdEXoezjbdfp3ouMuVqeLjE1Bin0AuE6qxE6V9g3Giz5/R3xpocHoAi7CufRR+lnkuUjRBn05SYJ83oKNQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.1.tgz", + "integrity": "sha512-YAZLGsaNeChSrpz/G7MxO3TIBLaMN8QWMr3X8bt6rCvKovwU7GqQlDu99WdvF33kI8ZahvcdbFsy4jAFzFX7og==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.1.tgz", + "integrity": "sha512-1L4mUYPBMvVDMZg1inUYyPvFSduot0g73hgfD9CODgbr4xiTYe0VOMTZzaRqYJYBA9mana0x4eaAaypmWo1r5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.1.tgz", + "integrity": "sha512-jvIE9tsuj9vpbbXlR5YxrghRfMuG0Qm/nZ/1KDHc+y6FpnZ/apsgh+G6t15vefU0zp3WSpTMIdXRUsNl/7RSuw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.1.tgz", + "integrity": "sha512-S6K6EHDU5+1KrBDLko7/c1MNy/Ya73pIAmvKeFwsF4RmBFJSO7/7YeD4FnZ4iBdzE69PpQ4sOMU9ORKeNuxe8A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "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==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "engines": { + "node": ">= 8" + } + }, + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/config": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.2.0.tgz", + "integrity": "sha512-YoEYZFg0hRSRP/Chmq+J4FvULFvji6SORUYWQc10FiJ+ReAnViXcDCENg6kM6dID04bAoKNUygrby798+gYBbQ==", + "dev": true, + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", + "dev": true, + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "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/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz", + "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@theguild/remark-mermaid": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@theguild/remark-mermaid/-/remark-mermaid-0.0.5.tgz", + "integrity": "sha512-e+ZIyJkEv9jabI4m7q29wZtZv+2iwPGsXJ2d46Zi7e+QcFudiyuqhLhHG/3gX3ZEB+hxTch+fpItyMS8jwbIcw==", + "dependencies": { + "mermaid": "^10.2.2", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@theguild/remark-npm2yarn": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@theguild/remark-npm2yarn/-/remark-npm2yarn-0.2.1.tgz", + "integrity": "sha512-jUTFWwDxtLEFtGZh/TW/w30ySaDJ8atKWH8dq2/IiQF61dPrGfETpl0WxD0VdBfuLOeU14/kop466oBSRO/5CA==", + "dependencies": { + "npm-to-yarn": "^2.1.0", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", + "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", + "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/is-empty": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", + "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/supports-color": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.14.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "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==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==" + }, + "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/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "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/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "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": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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": { + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" + } + }, + "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/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "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==", + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "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": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001617", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz", + "integrity": "sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==", + "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/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clipboardy": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.2.tgz", + "integrity": "sha512-16KrBOV7bHmHdxcQiCvfUFYVFyEah4FI8vYT1Fr7CGSA4G+xBWMEfUEQJS1hxeHGtI9ju1Bzs9uXSbj5HZKArw==", + "dependencies": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "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/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/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "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": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/cytoscape": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.0.tgz", + "integrity": "sha512-x7+BHQXN90Audv5xXvdOECmiKuZdeKeoqOmDuYoht4zDKSdObC0Z9AdJXFkXEQvXU8UndI6WnTz47TRI7duReg==", + "dependencies": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "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" + }, + "engines": { + "node": ">=12" + } + }, + "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": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "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": ">=12" + } + }, + "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": ">=12" + } + }, + "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" + }, + "engines": { + "node": ">=12" + } + }, + "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/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": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "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": { + "delaunator": "5" + }, + "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_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": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "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": { + "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": ">=12" + } + }, + "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==", + "engines": { + "node": ">= 10" + } + }, + "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": ">=12" + } + }, + "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": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "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": { + "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" + } + }, + "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": { + "d3-array": "2.5.0 - 3" + }, + "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" + } + }, + "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==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "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": ">=12" + } + }, + "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": ">=12" + } + }, + "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": ">=12" + } + }, + "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": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "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": { + "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" + } + }, + "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": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "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": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "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": ">=12" + } + }, + "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": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "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": ">=12" + } + }, + "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": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "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": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "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": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/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": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "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/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "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": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dompurify": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.614", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.614.tgz", + "integrity": "sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==", + "dev": true + }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "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.13.1", + "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.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "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/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "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": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.4.tgz", + "integrity": "sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.0.4", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-mdx": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.1.5.tgz", + "integrity": "sha512-ynztX0k7CQ3iDL7fDEIeg3g0O/d6QPv7IBI9fdYLhXp5fAp0fi8X22xF/D3+Pk0f90R27uwqa1clHpay6t0l8Q==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "espree": "^9.6.1", + "estree-util-visit": "^2.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.9.0", + "tslib": "^2.6.2", + "unified": "^11.0.4", + "unified-engine": "^11.2.0", + "unist-util-visit": "^5.0.0", + "uvu": "^0.5.6", + "vfile": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/eslint-mdx/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/eslint-mdx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/eslint-mdx/node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dev": true, + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-mdx/node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-mdx/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-mdx/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-mdx/node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "dev": true, + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-mdx/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/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": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/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-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-markdown": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", + "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eslint-plugin-markdown/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", + "integrity": "sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==", + "dev": true, + "dependencies": { + "eslint-mdx": "^3.1.5", + "eslint-plugin-markdown": "^3.0.1", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "tslib": "^2.6.2", + "unified": "^11.0.4", + "vfile": "^6.0.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/eslint-plugin-mdx/node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dev": true, + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-plugin-mdx/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/eslint-plugin-mdx/node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "dev": true, + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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": { + "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" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.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==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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": { + "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/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-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": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", + "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", + "dependencies": { + "is-plain-obj": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/execa/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/execa/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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/flexsearch": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", + "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" + }, + "node_modules/focus-visible": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", + "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" + }, + "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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz", + "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/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==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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/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/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hash-obj/-/hash-obj-4.0.0.tgz", + "integrity": "sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==", + "dependencies": { + "is-obj": "^3.0.0", + "sort-keys": "^5.0.0", + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hash-obj/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz", + "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^8.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", + "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-raw/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-raw/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz", + "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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.8.19" + } + }, + "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==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/intersection-observer": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz", + "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "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": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-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", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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": ">=4" + } + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-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": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", + "dev": true + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.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": ">=0.10.0" + } + }, + "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": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/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.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "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": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/is-weakmap": { + "version": "2.0.1", + "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/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": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "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/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "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": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/katex": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "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": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, + "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": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-plugin": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.2.tgz", + "integrity": "sha512-3KRkTvCOsyNrx4zvBl/+ZMqPdVyp26TIf6xkmfEGuGwCfNQ/HzhktwbJCxd1KJpzPbK42t/WVOL3cX+TDaMRuQ==", + "dev": true, + "dependencies": { + "@npmcli/config": "^8.0.0", + "import-meta-resolve": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "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/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/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/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/match-sorter": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz", + "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "remove-accents": "0.4.2" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", + "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", + "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", + "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", + "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", + "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", + "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-2.0.2.tgz", + "integrity": "sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mermaid": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.6.1.tgz", + "integrity": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A==", + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", + "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", + "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", + "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", + "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", + "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", + "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", + "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-2.1.2.tgz", + "integrity": "sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==", + "dependencies": { + "@types/katex": "^0.16.0", + "katex": "^0.16.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", + "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", + "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", + "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", + "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^2.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "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/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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/next": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/next/-/next-14.1.1.tgz", + "integrity": "sha512-McrGJqlGSHeaz2yTRPkEucxQKe5Zq7uPwyeHNmJaZNY4wx9E9QdxmTp310agFRoMuIYgQrCrT3petg13fSVOww==", + "dependencies": { + "@next/env": "14.1.1", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.1.1", + "@next/swc-darwin-x64": "14.1.1", + "@next/swc-linux-arm64-gnu": "14.1.1", + "@next/swc-linux-arm64-musl": "14.1.1", + "@next/swc-linux-x64-gnu": "14.1.1", + "@next/swc-linux-x64-musl": "14.1.1", + "@next/swc-win32-arm64-msvc": "14.1.1", + "@next/swc-win32-ia32-msvc": "14.1.1", + "@next/swc-win32-x64-msvc": "14.1.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-mdx-remote": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.4.1.tgz", + "integrity": "sha512-1BvyXaIou6xy3XoNF4yaMZUCb6vD2GTAa5ciOa6WoO+gAUTYsb1K4rI/HSC2ogAWLrb/7VSV52skz07vOzmqIQ==", + "dependencies": { + "@mdx-js/mdx": "^2.2.1", + "@mdx-js/react": "^2.2.1", + "vfile": "^5.3.0", + "vfile-matter": "^3.0.1" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "peerDependencies": { + "react": ">=16.x <=18.x", + "react-dom": ">=16.x <=18.x" + } + }, + "node_modules/next-seo": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-6.4.0.tgz", + "integrity": "sha512-XQFxkOL2hw0YE+P100HbI3EAvcludlHPxuzMgaIjKb7kPK0CvjGvLFjd9hszZFEDc5oiQkGFA8+cuWcnip7eYA==", + "peerDependencies": { + "next": "^8.1.1-canary.54 || >=9.0.0", + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/next-sitemap": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.2.3.tgz", + "integrity": "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==", + "funding": [ + { + "url": "https://github.com/iamvishnusankar/next-sitemap.git" + } + ], + "dependencies": { + "@corex/deepmerge": "^4.0.43", + "@next/env": "^13.4.3", + "fast-glob": "^3.2.12", + "minimist": "^1.2.8" + }, + "bin": { + "next-sitemap": "bin/next-sitemap.mjs", + "next-sitemap-cjs": "bin/next-sitemap.cjs" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "next": "*" + } + }, + "node_modules/next-sitemap/node_modules/@next/env": { + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", + "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" + }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "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" + } + }, + "node_modules/nextra": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.13.2.tgz", + "integrity": "sha512-pIgOSXNUqTz1laxV4ChFZOU7lzJAoDHHaBPj8L09PuxrLKqU1BU/iZtXAG6bQeKCx8EPdBsoXxEuENnL9QGnGA==", + "dependencies": { + "@headlessui/react": "^1.7.10", + "@mdx-js/mdx": "^2.3.0", + "@mdx-js/react": "^2.3.0", + "@napi-rs/simple-git": "^0.1.9", + "@theguild/remark-mermaid": "^0.0.5", + "@theguild/remark-npm2yarn": "^0.2.0", + "clsx": "^2.0.0", + "github-slugger": "^2.0.0", + "graceful-fs": "^4.2.11", + "gray-matter": "^4.0.3", + "katex": "^0.16.9", + "lodash.get": "^4.4.2", + "next-mdx-remote": "^4.2.1", + "p-limit": "^3.1.0", + "rehype-katex": "^7.0.0", + "rehype-pretty-code": "0.9.11", + "rehype-raw": "^7.0.0", + "remark-gfm": "^3.0.1", + "remark-math": "^5.1.1", + "remark-reading-time": "^2.0.1", + "shiki": "^0.14.3", + "slash": "^3.0.0", + "title": "^3.5.3", + "unist-util-remove": "^4.0.0", + "unist-util-visit": "^5.0.0", + "zod": "^3.22.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "next": ">=9.5.3", + "react": ">=16.13.1", + "react-dom": ">=16.13.1" + } + }, + "node_modules/nextra-theme-docs": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nextra-theme-docs/-/nextra-theme-docs-2.13.2.tgz", + "integrity": "sha512-yE4umXaImp1/kf/sFciPj2+EFrNSwd9Db26hi98sIIiujzGf3+9eUgAz45vF9CwBw50FSXxm1QGRcY+slQ4xQQ==", + "dependencies": { + "@headlessui/react": "^1.7.10", + "@popperjs/core": "^2.11.6", + "clsx": "^2.0.0", + "escape-string-regexp": "^5.0.0", + "flexsearch": "^0.7.31", + "focus-visible": "^5.2.0", + "git-url-parse": "^13.1.0", + "intersection-observer": "^0.12.2", + "match-sorter": "^6.3.1", + "next-seo": "^6.0.0", + "next-themes": "^0.2.1", + "scroll-into-view-if-needed": "^3.0.0", + "zod": "^3.22.3" + }, + "peerDependencies": { + "next": ">=9.5.3", + "nextra": "2.13.2", + "react": ">=16.13.1", + "react-dom": ">=16.13.1" + } + }, + "node_modules/nextra-theme-docs/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-to-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.1.0.tgz", + "integrity": "sha512-2C1IgJLdJngq1bSER7K7CGFszRr9s2rijEwvENPEgI0eK9xlD3tNwDc0UJnRj7FIT2aydWm72jB88uVswAhXHA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, + "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" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "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, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "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" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "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" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "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/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "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/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" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "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.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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" + } + }, + "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" + } + }, + "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-type-animation": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-type-animation/-/react-type-animation-3.2.0.tgz", + "integrity": "sha512-WXTe0i3rRNKjmggPvT5ntye1QBt0ATGbijeW6V3cQe2W0jaMABXXlPPEdtofnS9tM7wSRHchEvI9SUw+0kUohw==", + "peerDependencies": { + "prop-types": "^15.5.4", + "react": ">= 15.0.0", + "react-dom": ">= 15.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "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, + "dependencies": { + "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" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "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, + "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" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.0.tgz", + "integrity": "sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/rehype-katex/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/rehype-katex/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-pretty-code": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.9.11.tgz", + "integrity": "sha512-Eq90eCYXQJISktfRZ8PPtwc5SUyH6fJcxS8XOMnHPUQZBtC6RYo67gGlley9X2nR8vlniPj0/7oCDEYHKQa/oA==", + "dependencies": { + "@types/hast": "^2.0.0", + "hash-obj": "^4.0.0", + "parse-numeric-range": "^1.3.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "shiki": "*" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/rehype-raw/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/rehype-raw/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-5.1.1.tgz", + "integrity": "sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-math": "^2.0.0", + "micromark-extension-math": "^2.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-reading-time": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-2.0.1.tgz", + "integrity": "sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==", + "dependencies": { + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-value-to-estree": "^1.3.0", + "reading-time": "^1.3.0", + "unist-util-visit": "^3.1.0" + } + }, + "node_modules/remark-reading-time/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype/node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-stringify/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-stringify/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remark-stringify/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/remark-stringify/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-stringify/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-stringify/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-stringify/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-stringify/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.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==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "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==", + "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/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "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" + } + }, + "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==", + "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" + } + ] + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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" + } + }, + "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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "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" + } + }, + "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/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", + "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==", + "dependencies": { + "is-plain-obj": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "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" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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, + "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" + } + }, + "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, + "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" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.0.tgz", + "integrity": "sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tailwind-merge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.1.tgz", + "integrity": "sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==", + "dependencies": { + "@babel/runtime": "^7.23.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz", + "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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 + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/title": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/title/-/title-3.5.3.tgz", + "integrity": "sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==", + "dependencies": { + "arg": "1.0.0", + "chalk": "2.3.0", + "clipboardy": "1.2.2", + "titleize": "1.0.0" + }, + "bin": { + "title": "bin/title.js" + } + }, + "node_modules/title/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": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/title/node_modules/arg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-1.0.0.tgz", + "integrity": "sha512-Wk7TEzl1KqvTGs/uyhmHO/3XLd3t1UeU4IstvPXVzGPM522cTjqjNZ99esCkcL52sjqjo8e8CTBcWhkxvGzoAw==" + }, + "node_modules/title/node_modules/chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dependencies": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/title/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/title/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/title/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/title/node_modules/has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/title/node_modules/supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", + "dependencies": { + "has-flag": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/titleize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-1.0.0.tgz", + "integrity": "sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "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" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/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, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "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, + "dependencies": { + "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" + } + }, + "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, + "dependencies": { + "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" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.0.tgz", + "integrity": "sha512-H9wEDpBSM0cpEUuuYAOIiPzLCVN0pjASZZ6FFNzgzYS/HHzl9tArk/ereOMGtcF8m8vgjzw+HrU3YN7oenT7Ww==", + "dev": true, + "dependencies": { + "@types/concat-stream": "^2.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/node": "^20.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "glob": "^10.0.0", + "ignore": "^5.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "load-plugin": "^6.0.0", + "parse-json": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^8.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-reporter": "^8.0.0", + "vfile-statistics": "^3.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/unified-engine/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unified-engine/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unified-engine/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-engine/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unified-engine/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-inspect": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.0.0.tgz", + "integrity": "sha512-/3Wn/wU6/H6UEo4FoYUeo8KUePN8ERiZpQYFWYoihOsr1DoDuv80PeB0hobVZyYSvALa2e556bG1A1/AbwU4yg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-inspect/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", + "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", + "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-remove/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-remove/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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, + "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" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "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" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile-location/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-3.0.1.tgz", + "integrity": "sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==", + "dependencies": { + "@types/js-yaml": "^4.0.0", + "is-buffer": "^2.0.0", + "js-yaml": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile-message/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.0.tgz", + "integrity": "sha512-NfHyHdkCcy0BsXiLA3nId29TY7W7hgpc8nd8Soe3imATx5N4/+mkLYdMR+Y6Zvu6BXMMi0FZsD4FLCm1dN85Pg==", + "dev": true, + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^6.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-sort": "^4.0.0", + "vfile-statistics": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", + "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", + "dev": true, + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/vfile-sort/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", + "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", + "dev": true, + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/vfile-statistics/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "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.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "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" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..7fb1b69 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,37 @@ +{ + "name": "thread", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint . --report-unused-disable-directives --max-warnings 0 --ext .md,.mdx,.ts,.tsx,.js,.jsx", + "lint:fix": "eslint . --report-unused-disable-directives --max-warnings 0 --ext .md,.mdx,.ts,.tsx,.js,.jsx --fix", + "postbuild": "next-sitemap" + }, + "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "next": "14.1.1", + "next-sitemap": "^4.2.3", + "nextra": "^2.13.2", + "nextra-theme-docs": "^2.13.2", + "react": "^18", + "react-dom": "^18", + "react-type-animation": "^3.2.0", + "tailwind-merge": "^2.2.1" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.0.4", + "eslint-mdx": "^3.1.5", + "eslint-plugin-mdx": "^3.1.5", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } +} diff --git a/docs/postcss.config.js b/docs/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/docs/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/docs/public/favicon-dark.ico b/docs/public/favicon-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3029f20443cc1eef25b3bced04762e2ebcdc3cc GIT binary patch literal 23462 zcmeI2TdW;Z7{}LfQoCroOZDc`U2Wu)L{n6Pw$6)$~*ZOI%j6h?AeoGea-)@Z`S&5 z^PkB#YtK}v0sf7QDE=;0k8V_Ifl_J(U`jm>WL{)!y;93p#)u~TAJ2eiz%$?(@Cl3sZysv9 z80-h8bU4@xF320t)t=b1!FCV;Qx0)(H#o*MRuy*Cvl&c)=|nht7MxmUJ;a*}J_c#> z6^k3dK$*FV#G-~F@EdTEUopBL99JZl?L(aBT#|Ne-ex?{j#1??`Jc#9uQnY+xds%z z*7z<1e}OzA_xBEPa+MtET;x4q6)X4Hjo?1;leK0azQaVJUWVT$I~d2ifb{ma64uPA zUpTlIRNBkP_p@09`fCP{3psuYq+NgA%a&+AmywwF09#gzFOvgcJ!sno)^Vl1jNEb` znewWAt}LDnTBcEgewew3z--$;=@`3aLX1_WE$c^vn?Tn6y$_oUP2Ya#&YMoDy#45y<;eRGEc7rrIqL*P@m@CPRf91W5oIP=6aF(l=^~#lzcQLUl z>1Abc)xFj=;@tsUo?9mCjF&D?rx143n@Fu8h3W%bo_){qAUKTbGeIedkK*AdgEgE0rsK z{^ULvOt&u^(so&6Rb1&h$R~U7Lm)}|!j+Nx;e@0c^m^8aZzcDYu7iBie?Ls9S*H5U zmAu2SMSR(}-U^cTGV8K9((Cy5ohx!259Bx6?;uS| z=Za+V9bvln)L*kUsJX}*vF#gI#MZyFe?)hY(zqhoO0YL0>6KahnCryq3s=M)0S7W_ zwU>M5ih%RMlOSy${3q+Tm^`@X_>{^O@mzjO%lEBMfGvf&B9Qc?+knfvqN4A;OW}$d zPXI1GN#4;c2R*%KFz*9mrS&A1Bl(8ETYz(aGINNIZ%#;X z+}M7^%gq%&Ltqz3lRsFL^Qqf8<(T>0T;Zdit64qieQYmE%G=8vF`c=>HdjwdtBY8< zxWc}Yo|I8@CRfy{d(!vlX)>iJW#o0@ie#1cq>P$vu6CRD)Os2CG>stEz6IBV)bCtY z+)?apncOq5umEfWX+5dK`tzV~-?^-s<=d?(V;n37XMsKDLV_;)B-tnAe#YQ)LqfdU znVSh@%<4(+Vzb6PmwxNy%j(gXB+3iS7JkOyyEZXu_T)iKHUZ~*xGWCIDc@i6$Ojk? z_nMy=@@{5-j>LzteGruXjWo}>kpCHnniKa)dGgq{+{kSK1=Izfezdsh!yCfb_^D*~et1J;|kJv7xRNK<@LMUun;2H1?cm_NJo&nE*XTUSy8So5v20R0v0ndPE zz%$S<2KXitOFQ~j^Y7E;e-S(Yr2gh;*pV+zqN_$Yp@t*9qiX1lu09Y39E(i{vq16L zR`gkFIGC$OBfYNb!6`V)e7!XoG*ms-+XF$PH5luGy0bB^V!fjlH3Bsn*@sQl=%_}l zw@BNp#rimUYcSTOobiEJk4n{glQLCzzKz~W&|8KLaXMXli5Ya`1nBKHS~I< alX3D|gwQ&9jani9^9~S`zp?xe^}hi_SGLmt literal 0 HcmV?d00001 diff --git a/docs/public/favicon-dark.png b/docs/public/favicon-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..da50cfaf7cf8add833199d334ba8b7589a944f1d GIT binary patch literal 1306 zcmV+#1?BpQP)002t}1^@s6I8J)%00004b3#c}2nYxW zdU9{N&wlpGYm)44mNLqJSt^IZJ&cf^L zeDl0B^Ukcn^SfDgXXg1o-+yNR?_oX>!!QiPFbu;m48t%C!!QiPFpL?-#hwUUEFw3H z$VDPDE+Sux$ZO8I11cz*b;(Lft-KEJAw+a6u~FCJk?nXg1_a;OYdr4)~^m z?ilbSaB_;zUAO6-70sIBEnry#-Sstf_XD>9vr_sH+w^d*nGs+qa0&3f()a{5^9;DF zpxy((yzJ*+iuUJpooDy}580JFel75w()e${9aOm6z+(k<`hw$U0xtmnl;}5GNm0drTXTK|rACqTI%nE9B zn`ceU3hGqKvlM0p+TG+?Dzk!mtAJff;}iHNEs0r~?p)x0^gP=GTv1mfsaZkYYk+-9 zfqUx|Z^f*v_SES0XIEwg+N*&N6}{`L7H!R}K;v}c@+_HIfp%G* z{Y;e%>%y!+YZc||&E#ffx^sd1fP)2^8^UwDU!C{BIk#6tHi^h!$GS(Hb5D!N-35o2 zhrb**W@RiDk;OBly}ICUW8p8yg<1Hm>un;kPejh@SbGi7FCyCt4u4gpP!|Dz9q>a* zR<)8@_0*?YG))h&$klu`*OZ)MQ z*;yo7NaJ%UX8ZX~nr=TgHH)}~^B8^xzaY4-ky-eO=2qgK;&oL%Q<-Qjv#7QKH|+&! z6SMG7@sEn`2yiP9{q=%qPe;HfFEGp)bq8n`% za5i1#lG1d{tFTLf-HJ)ma!Juu&0;2UNohJiar+=Rwgh;I-ZNnEcXT^&UPax93u>*+ zjyd2)U`R1(7}!F}TvD3O?`Dnz_u%Iv+8zCjnp?E^?*xTC-_%AeRGCV^Lhb5eRxrRfz+&#hh@0-gX)N~HaI1*1L%E>EG`wCUT? zN1E-xxrud8Lw|+UZ7#)t->c4lxoi@@>0j^FQJn4q{Gxjzr~NDN5FO`Ir8|NjzE_IK zsE7 + + + diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..969f966ad79849ca72ee1fc3f4b5b283bd58a379 GIT binary patch literal 23462 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 + + + diff --git a/docs/public/pointing.jpg b/docs/public/pointing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c682c13e6f804724bd65c70d930cab5346139fef GIT binary patch literal 45650 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 literal 0 HcmV?d00001 diff --git a/docs/public/socialcard-white.jpg b/docs/public/socialcard-white.jpg new file mode 100644 index 0000000000000000000000000000000000000000..330e906f82c348817d42e7167428bbcb47a5b4d9 GIT binary patch literal 275453 zcmeFa4R{mfwl+LaAm9%HsuqQ2(6TLiqeew7&?Y0|CL&4%l!9mjR;`E{6tsUy2B;Vi zCDf_`feu=*AYi~E1=?mPEu;`2l+qSj+B8kmG)de1Co{>+#pJ#Qq0G+6PaXJ#(hymHFaXvtRoA z%?AdLh1j3Lqaf(Rk5+#&U-aCBMT=jbaO1v#pJnN*Ru0_0&A;sH1{!X>It0}{dYi}p z)mBTeN0t!KXL=){UPVSA5qyAHBAK{dW=jJ04mE&4)zL zbL{Q^Uw{6?p3X@`#z=Ye;LpR&^yosXg2f_ zlny<{-g**x9C`wJCejSegoX_nI&A2WVZ(+F<8X!zzhl%LcZ?Wu$2}vtca4g>XYAOx zd+xjMf%w0`4~$C~f8Tu*9+{BvaN=M8_SgI2M<0K5(&K-b^w&u@UStr5!?|Pl9kF-Z z5j*LD`yQC|U;c@lghme^^38B4X3#^>;L(F(Mh}WqL-Fj#H+XQ&4P+1eaE1>Z7BghT z;2RGw9>t!{o-t@}%&+pSJ|MKwDGoSxt)#}Q)r=D53?wg-}tDE&{QOPOS)CC2#mtRZ&+~j6odfbiI zjrzmTkfAZdI5+?9)X_KoXw2Z4p`5|P2FKjEH1-mP3?2R86Jut~8y5S}vXAdsoB!kC z%GxQed!Kyj=}$}v>z;e-RHO;ID~5gM=$O$E0v)MtJdyu9C+p?hedAuq{QTB~HMhC1 z|AZm8o(G-;td|840bC>64FDnlA^;+ymsEfVfCzwyOpsajy8$o+Fhq1b0EhsH0Ehs3 z1P3tc0XG0d63_-f8wR`~N|Xhz0bB#P25=3)s0T7ez@GqrijD^W5daYY5d-nDKVRz0 zB7tiF*8r{oTmy(r|7d*zj2bX%z^J1a1%L>E2!IHnu?!?ifHnZy5FHNyA^;))A_n3k z&{(4LB_K8dL;ys9hMs{HVhGqh)@K1=i2lF`3;_%gy+Qy)07L*p46K-->95}#fFXb( zfY{U@7=a;xA);3ZfCzvHfC!+&f`%T@(DTQkPJmGZMhzHs^y&x@0T2NY0XmxoGDg6k z0Dp>(2LKTO5daYb@i9t#2Ce~I1Golo4InlFu?dJxf1I8Uqy-=?M6Zqj5daYY5kPDj z$QS{C0{kgD9sooDL;yq##77`DMdwRk8y!FdKm^!EH?Tqs0o&-nHaf5&B5G0SKLD-) z3=zFl0z?2r07ML=4q(;j_Xc1HU zIs+mJh-7p;0EhsH0EiffkDxRgoiBl5r2r8C5nx#9zzQ)03@Zi0O2M?Xs70aw0JsJ) zMD$V#5CISY5HXNCfK{X48-OAH*9~zZ0?i|h<7`H5vqzhWH+B)s;c%+~c?3Sq$?Y)2 zzZ3X<`%4QCpVuF{)!I2vhHx|IvLdNW-{^C0^e9#i509YvvCOz)IxAUe!@k1i2E!uN z6~%Usg0K2UsL(78tc^fTSYWmEXq#0vrd@zt|GCh6-2i7I$`oeyOFsnXKeNj@Li1_D z`y+!3Z0G_4T}UVpzRj4}=usd)@DwHVZ+VQM`QeHyU++!6{MK9PTVH+s`#nD&-Td(2 z6)i6`<(2n6a_ZItW7>1K9!5QO@;2u;Nv}ts4aVm}ab?YJL#d%thR2Yy3d#8Q+>gSK zozi8epO_{j-$hO~8T}ux%DPFF*_3C{hGf~$i?DmHEM{>Rt&g@WKz)U1c z1e}4=R^zPjR!mYEBy*UB%ZXMKnNstyiTw<^7x@=`BL3p2ecLbBK5cq2_x#nL6B>6j zDXXg9xy@zvy^o3q7sjU9XI+UmJ>9$e!x^nn2ZL^NU*8FBQRhV+fG72v5*Pv)0{9aM zEb$;%_PYTv1TaK&JOGFQhyaNAL)!h{IK^%!(S&-pf?w7lQ$1m}`LnXKN%DQ(gfXbf zb@6~vMmKwf_E539ti@t+5DJa}hEvxt86*j}=e$oXBh%1v-Fz&h$k6FqEDryBPr=V1 zSBDGUn7)1Wg_JXsdRi_CHeX8L@mYP-w9*ujzF49w*x}SsH#!%W2wq`{>ulnBh2MFlY;V1!z_|} zs3Z?&ZMct$B6#xx+;+9b!eA%EYJ;xc!|f$x$IVtc1y^olN~r0nyqPucCDe?aaWuJk z*m&Os$-RF$|8)2>Ii7gJkS0hxr}!p{bwwSVTelItU*QW+y$EhI`yz_f**n%mf#a&0XXb3ME?#+EWgX zLB5DU2Qm$!#jC&7vu|~)mqykGk-}`W$mCs$)MQ7Xgb1{R#tnOnFal?+@wz-b1#hNE zy)kWujt&(D909nUV+dy$bY_{#;9N$`*@=qTFg~O+Ls)PsgZ8m6w^dLYTXJOWiqRz#r70yI#l5omhRhVV}0 zY6SAdMxeja6CCkD=~Y}DF1EE|D=B=OJ-xm?MJQeqfyA7UaHfQ)rB595R}dMrwJTS9 zX!I|f+=rVtAAiVyWK}$}TDs!X#jB52s_#B_Bnzj0DZMUvHl%DeBKmf@_>x>9^<*ne z-LRoL0>KQdJ1qZzDf6Lue#2U;iz)7M1w*o*f4WnVn7W0L52C{a>eV)Ry(BW0l;L~E zRGd@Q8#?B>n6X7?y~mDGj^WEL%g zf71p-nJsB5z1cMj^WcfMy^A4F7$T_9-U%y7|_(|_0HG7E?Iq{*ZRYG|A9ac z{5f^SyYm@&1R~zFljuG#)8uyfWqHMh_V;+a45pZlr4xzOe2;*~suY17g-Bzl@AVg$ zt)|W?diFzqXnL`*ka+a;_A|{VmIucxQl>OsOfiT3Zwp&P!7D-|X|~XOqs8tmR3z!H zBI+#+OV=;0jzEDVBPI?PT@eVMmr3@iU?ah#No2Epjk4^`shjoW2Oo>H&l&ULpgeK`+?IqsKo5pkQ`U}ce3 z>mm=q9VrngKLQj#Qapfn3gv(fPYAOaxbe*hvb;p4>2 zLtzP%?}$K0{MnAXi6+z?*TfQYm4q(dZ&(q={93CxfY3uC&^h#l>8;ch#_JOp7Y(nE zsd(i?)FHOqiIxRZb3bI>fWwN5Z{2Jqt{}VJZnom-_QvRSH7q?+ZdrlPzS+0z>MLEo zapWFRFldr0%lrzonI{zTPKni6)pfUrL5nFBy_ouKbyBZCSHN>3sby9A#vWIqPG5C? znfsx2)B7E@N94o~Yj+04`}NIXRzFBf=#vlTBn4$(;9*g~Ua`;^N4QsGv#h^`7s$ph zZ7@9TDcvELr+Y*DQ$LZRXsJ1uRybANUVm;yhBu2PUZXAT=+=bakdNsYJNyw9f%qH! z$PAYUEjW*Gmokb(f^E@8RBxU5{;d@$;@PYJ_V&;3|K0Y))7U9VnlS?_ZMJp?vSB{* zq^x`+GqIJlChI4PM%20Pj6gr)dn1rUO*wnBE*6}tn@;Yx$4^p9_;jqiuNtao=NfaU}!yaj9sUiaHzp0Zn z4`t&2{>!B$ai`}V4o#nXLno1r{S+Q4KBp)w@K6uHAK}ZG39P_yR7NS1YHrxo_Poi5 z@mu|@O=2kI6uQ1=^3FSXbJ9z{ET}#jzp!AWW_-ILZN=mjKFNL=a*$4L^eT2bc}~%x zS2iHN7wS8b%lo+Xew7KiE;RfkukG?>lbDCUvxAid?mn6FC5xud@5O5h4_DvZNST{{ z`F&xnI1bxhAkBTX=Lc10?1hX2;vWB+TkGll2<@w!`}Rz|mB0hp^1qjC2?mn%BN`Y2 z7$VxW0U`h*03!a-)zOy=0M`Jn0bJvMjBEUVscq-F3}M5ipnPeNAt-QF8b^L=QkGc&pS;};?HFNv}D#002mB|aARY{5(G7Z<3*3+}! z>}>c_^krT3lcuTyftfd{v(7S7dO{I*S&><*6)77jd14!(x?r((dnkO%*KGY;&GN6* z*PI7(n7I9REV0U#=9J=X1etFOmGv1y0TR<_M(v7B$utU$IWRv}DX`YH$SV zlG>l9a4Wj%%<96vh+4#rE)sY2@wInr(dT|edN|?DQccgF7d34!F72~ZN=ePARWTAxh&aCFtLUA{ow(qAX1efWe`a2+2-5|l=) z-p@RqO<=IQzJchw_=VCc@vgA2EGVgV(NipL1+q05J`by_yI@BG(oCH=UvP6LvqSz% z!M(p1U-&7!yzu)Ao9@Xx@RGr(gLnNYPtB>{16r;?%T@oH4GaMc5uLmML;yqpM1Z;7 z0|`B#w}9S8#{+N z$LnZS1e$?(u*)M$@w*~WInB*%82t3J&Q~9cKF(;$HTKf=t<9*K!x&4p-bz)2+>0a% zw^0)5S+Xz!am70SIvHK4kbDc(R}81wwqDF5EWW|M*g_!kwM*4YQc81oKxKt4$rj(4E263G%63k>_;d)iQ}Aw#tM(_Et(G!}F9L0j z>p-@!#Y9inWIOr_iM~o|4Qf9Z#cD`ll{QV0Atulnbn^a-js6GrTMIvIuD$YE1tvaP z_tnQ2ipvezOhU)XyQkjYYrQPo<`o|H(kR!4!v>>AP@vNh==`Pd6`wZ%n+&JIvK%Jk z3YvI6w1+403PfZU+Q9AxW;t+Byhoc&}SNpA1 zw#7xDndm$Q=aa_k?wyH!WUxp5clwUw+#_)BG%bFlkLKmx9TZ>3Uk*##uzWvX0YA#a zQ}et5%+j7j|NL1=FaotBRbkYxh^rGT&xeZK9w-8B_ZfW~5F0v!Der>q5oiI4rIM|N zZGL{f)gu(`^mwL(22mVeeBNuCU-@6`%J)bX_tqtrBrGJamnXWgB#UVxEY!N&ytx0>5dXj`+qY=#SgjvLJomn}FB`p!iqv}QX z*s4r2vC1V()U;E4v8K*Vr+bJTI(^tvh{o@@`!VA*;UhaA-0w`gl788%oa2@>oHxR~=u`)t>d_$pAOau)AOh@N0DBky zFv$1+_H6l|dacJ1XS;+E=#Vy3y-BFa&|E-aqoJqbjT3pRRFrX5ac=w*(?_V7y3mY< zyk71J?e>77wu0x}o69y9JK*9j|4wg!-}W@RV7exlZl#O`e(rZxk3xzYj82c1<+wih z5<0i?=lZ#YkD50BcDUtePH*OE=cA`r7=$GTxN2HZ-HOZ)@3$~gwKXJ(t#s3-j%g)zlg}5Bbq0o0}^X zZOMtR%F`P&fa5`j7IJwWG@>KDN{<1ruoF`Mt21d+vKJMa9pFw z?#tqyH96QKYCCj=<8s75W=tYHKGm$^irjfGBU4wS_fpmy1WkKD!nUP_B zH7NcKT`gPXR#-xsqMCR=g-bUvg&Bu;?rWWTr0Uqxtw;ZMKIb_pbr;FQHU`x7>>lLF z%_f^KOZJV7V(I9l7!ONKYq+K6JAj9KFL2DqUj<~`;}1e*Jm z?gE+627fMKD&5=?zj!a)B3%4~$UQY#bGdj)*6FePYUhYETuTkx#eea z6(V&=ahcUNxUM@(I&RkFbG&nQ{fcZ#TuhHQ<^-^ZH9MwDzbMqMqC`RA+S_~_eYw5k z;h&?D{HOzv@q_#hHsWiU{M2$8d%i8qV~VGs5$64?K#>a zw!T~7VqTzHv3!TepS_lvF@*1^U(t*1qVQ6oriXx&b-{9p@(^0o?Php0BT#L8{EFE( zTdM<8dbvN!li3d4yC~@|GAS3$qqGb3)$G33E+i0vc*+BpaF=g%|hO`h_VDjQiY4Rb!0PjRj2%+8$=Dy|nMDfiBE zmy5S~n5FO|7k>_qRAjkIy8;Ct{*XmGTdKXp%CEEqKI1mObf<$r=MoINbvC~nDPtM* zab{+yuuyo4nns|{@^H4~de$r4H$%%SqRJ6WO{X&ldaxeNQD$4fScSkg#oBh68Y``F zmNd<(WBK;g>TAmF0HvSExcCz1}s%7OB=0@06~OPQYzgZ z_aoWEN{Xb%+2Lv0ZGLV>NrxP6RbaiIiHzDpwf=-|8K*^h47U0QDzptpI!;?VS_Ay$ z?q#Rne5RyWxqAsNo*kN?SiRFsB>Axh1Ang^@!__ZPMIo%^VtuqRa;9v6=LVSY2m~U z65dN0cT5#K`K#XDOwUH@rt<{&)7FifAI$wFfX!G}_&148m`?@1PzE?AbxlZf zL#WVXk(6`|np;&XD0H%o+-&0ke=dAyy9{0H7NBva9JvBhIbd~Fqhst7KhmgXRl%*_ zB~?~u+qZ7222D-A9{g~Y1-);vE&iuuwnw4wtEX=FU0av$UG}FO`Tuq;D=NK-Ismy2 z$aO%j19BaZ>-?|fI#EG2>HtJo5Me=t1rZiRSP)@>MEb|?@$FkG0e|XWA%G!(A)=Q` zfCzvHfQW(Ap`S{CRRb6zno|Kp07L*pve7i9jyR zNyOxl#m@|CxPQE3*z^!oel&@|h;e+$n_hLwLZJ+Wd*hl))=;QGIZi6{&d?EsIDZ^_*?gBA> zB?4U};^)*%&#MTeD7PBn2RrUC#=bu?_#Lf4-cgYwLqipkM8X)<9YxbdynXA%_P@!# zD|hw(bDI;O+uR49^gr2p9358H*#3eikQFn<`|g!^XO+{Bc(t7Qo{_tpui#BPoM!d) zyWke0E&^rxeJ@wqmj^=_X^h#I&3PsB_*0{Ibs;rPc@>t-oMpsnv@P7DEc4-CjmA66 zU&+i{_Hf0OulFY3?#qz}uV{IpDerb)n0yjEsm}ty5dH7~h5&|$4k7>%01*HYVEN1| z2YEz)cJ=RWh)bHDEVOM^2SO*+Mj)yB<>wnu(sgW{e1o}CI^my8e##^U8 z8rPj1feb=7qs70(H!5rm<$cWNHSX2S2vjIH({l7)bPQd0F#BIlkK8XQP4LUNQD|-_ zVv0c9?8OZwfewYH1W`Fq|Jd{K4yU0wFpRA;fUn4Obfv79 zbN7vVCG+!J57yk~zWx)2+4&Xg2_e0EhsHh+a|wA^;-(9T71()0}EH zUWeaOOrV^*=qWb*MG}dtbNI8l8RfaiG^#bGCIS_84n_1o;?)M7^cXTqc-0$%>xJ8W zny=mEw3b(AbyM;@gDjKd%+9A!^(Tr34mwVFpfUnI;kGh*-H!}s+QktuF11^1k3e6f zIrot?Y@)c|FRQ#Sa(HOO zK^y+s@J1h99Qyh{RpNff{>TPTI^5w$(3;FklRYGICIV>%B_Th@ks83;pQWbJYT?>m zB15NlNRVr6DUwrF^PW4w*iE&bLev`)sM&7VFnB5TDz!Ac!sXQYghjnx5?knXQ>}1J z`xcqoQK~5c~PlxBrjou1vdY3WAhRyN8zD%9o*c}rh$E2X)(U(M5gwnGi z)x{uXz?=b@O6~Lt4bswU7P7pY+IV?3BX4X|%h2~U)%o2*kt0nt0qw-r+YCMCic-2H z{3?CgEpHXVAJecc0=+_XWoJ|A7B_vIa;i5*prsLr_p7YUCv_R!$vv8C{zi+{2X7VW zU2dcFRM4t1wjuscRiW02n_D*aRY}#@%uuNz6j!fEx}weZRN%2znG`YDgE^bCvoI!s z7&UKra2K);-q5P5R+W?sGq@>KKaF0xe>yC%C+#UH(2SMvlj1iia$OW%t|*W>y> zspZt$^e&+(47=m(xRg$^VY5j%u3eRC3FK08YzKp;sYcbiXTR1NQzueuiGm)7aZQ63<_Nb~-6TdyNy|f8kmPO_;$Ni(N-V#wI zQREjeGYLhnRY{PexPM2Eh|M^5NhmrSPVdIijUmnE5R+kWr<>sjl;L3DeH4Xv>Y1-+ z-l%YAo+Eh%^jsh;Xk`VQe6KfD@GK@FOi|?(=xYQ%9wxP#_4Wy<|D;cFam03$;<97|4ja6= z+RREaol%vUh(QtPs$#)qZWI1Hx-F2E!*qvpb)I{z&XDxbI*!jzVi5@WMK@LOw=nE9 z9%Tq3O_I=q|B|Df=Z38UZdHqeDNN(AAH-O6ZO@KAxMk=1#QW))U6NOQa#2?VnqqWm zGj}mkNm-qRl$E1Q0=Xf_$v}!HbCA(OuDVX438CY9rC&RY2sf6LDN@(4)%+Zt3o+=3 zS9ZPh_J4^>|I*m=AYt<;5-*VGa$4sk8TJtgF2!)3A>->bkw~@n+dO*u@USXyFl5CI*UW+7B?YI-e@_Y{ zDKQwWm?1^HfkRg;k(H~ke2*tlU$b-K&WS?>Q@RAH=$Xwyq=Ist+EhE@_8nR zbEwp95vaI8&wREl>*epFe4t-B?Yr+EGODqSEm>bOw5Rsm8PGKGSX@_zKK6#3^(jd@ zL!(=!Qx%{5-O`he`bBF0#ZAa^)fqhBE6mh~MLm4A#ZCynkt0ZFj_gpFS|`-RP$@$u zqPthmSxh8Ke`V^7GMQ6~g}2*7k~+cPvs9AZ;gpk1@%b%cV$fBUsONqn-w{wqGwPY7 zW9TI>k+us7!=q6A`SEQ>@N}j=&Fm4Nuv1zT!bSR^Oe?870>gH>;(4b(p$1*+ND4%t zM#Z)ud|3c52qj+dQN}#yI8%>5I|0p{970P*Mfm7(S^Aer zUqS5CGQzhWPib*bW&)RD=-}PiCae@8igK zFpWxvBb*t5>f~^MTsd#^svTo8+B7C{nR{l7AC(l@Tk&GJmeX1yGpk0iI4x_N2r zg;BV=`l|@^g7(`e5A8pAP1Bqo(w=9K3NP%6Kq}BN+mO%b{eHs{#m@@Pb@b&R#Vz=pP%Y)?&cE#Tj5Bv2dlL`sv~k*XS0fO| z9n)>x?!(k36Z0A=#;Sr_Xki=IGJ#bNOctsVv3pe=IdTj(cKgB_jo;tvjq)~apA`lqbTulnM~^l7n!+eoj_RSASAI@k<5 ztJA2eH4=?Ci@vk22l2^-nMEkR)zM=zn@w#gf~8r+AW|liy;8XseZ+aWuPb{Lw|iSa z-Keb%WnPa!<9fw=D6BXv*G8b(e${*TcgN@qD1Xb;RUuwe1Y*TTgnvj;9mtk(-*bl= zuc*{#h_~a~aP%tTp8?bJ+_sncKJ$5SQ%Nt197FCCW>mRYlDpA|a^dxk!3xw@p+vCG zME0}TH-1#G#Gt>{?ePY(v$IJu)?%@Ato{bwDDYnFmBTh;BC8xPBqT2rLU^Bt$tbHb zhh!**VO!iWbaCENDmfg}%dO`Ag5?FA)x1iRvc)4P_T&KIO>*M}#` z6B^wVyA8xlMxcaNk(0aL;qqtYQEReSvm9X-lA=9Yo!CuCIw=-EVXi`>In6=4`A~XeJ9aTLw{uaB`!m+vR;!A?2PE z5p09e$b*&P(3g9N%&90$^ybj5$=LQPJ)!DFHpJVO_W|xw1bTou zLl{xH(#v2LyW0~|6<6tvF2ONM-Z~+_9Vz}^v4G}!V`47;dRBhiuh|)JHVWhFnF6QB zCv$G><{4ABGH>Nkl@APOCKT%KS=map`Sjh$afaWDyeH>7jGUlcl5{!6@CD9&qDX(r z2v1@=dNt=_|F)RT zIIQ&t1zr)=6-{!a%K<( zM79s97O!^;`PUOISn6r7Cy=Am1r>$lXza=uC<2xK#5QP!C)3-y>)eX{e&_5gZfRX7 z@+I6^$x!!{m8wn|s*qoq1Ul7Vmcvz5b#B4^%mS~VNuW5G$CTz*6(-PGuo#~bcqx?m zeFVyvU-Qrsy4^r8p1DykE`l6lnNyp5BgoM7A|S*Id?;eF2m_eR!~b_*g8_G^vEO7 zotBU=wK_nC6rv)7uGt>Q8t-v=+|!36=SR1G%f!>w!k+NBF6>SC+ic3Y$!uliyJvGB zS0SU=OW)#w?arsB6NR@CP2WfCZ)h{#Q<^=URF zRo^4fR*~g+c(j9!UPFc~t~2hiavC*NhURX!KSasODXPZJ{yZ@I@j-RUYgkEYE1X6s zaJ63|tq#G(SCe#&o=ih4syiumO@wXDST{xnu#aV2=_yk22sg=WH6Le70P8$=%sww zyG5#L8f1uPL{s#k>BBfX@q~_Ctr$~bHLQZJRS0>)!>M_Hc3e`gu(S_4Zrd`1ziedC_=9oC^g(MpuG zwjzyCwWqM;jkNhz_G6H!G<)}u}u4$K?_*C;R%klTF_`_D5P=n&Ssy>k6rkz_^ zcEV)*g2nu*=}vc-3nc4tq?JP&(0T#RJ~oE4zX5_-{X(-Z^-bedGc#M@r^PLlv^Pua zsGQ!Hok!_7(PK2d8SeBtvpWLaqv-YLoaFJ4RB~oDw+&fxHgk9N&4!NL3(hkznHpwg zi&MtQ5$GJbayfl1BxU9icvu35MW2?H_?*;_ZZx1p0-L$>Z>R9}S#szwdf#Sd8eLr} zc>wKYv>QW<{%{8oZ-Y&7b+qI~>d|m&dk(})uxV8Y{~Vr#VM?ngc8ozcdf6LPZXLQW zdo-(!eJc|?73#ue#dnMhet&(WfnFaR6&5?Wd+1EPiJ*)gSnA-4)FmG7l+U@XRa;+} zLVOmpO(n|wQVC3lS0x@ zk6#>77C^{WNvs>yT^d2*Q`&OriCiM3)>E*@_M~@NojaIe9}4eRCv2n^Skz%P=Ta{SoK*8 zAK}=%LDiK94G@|X=yKSNM@mi3Qywo2chGa}V@unqneALc@uSN=#cHuwZ~S)1%F8!@ zGxwWZ>pG)c6gU)u*C4%UGde#QfqH0$$2Op4bY8q7JRVM!S9;_M1u`p)+VCOdT|5PQ zL0CC^`Clkz;C8#|;$4j`5oonMy*C0K%vBr=#$61^4BI<7Dys+La!04gWY4){UWCs_ zAmOPXA1i7xb@{^-oo0Z=hsZ1k9e?_yqdv?wwbdA^H5N)`Mso=? z?Wc+y{B4xHpZJc#^C_tl-^u+~dG7c-GY6JClxTK|HHH#xYt3HVr@eZ?HLcyOV z_PZK>n!QF#suR9|wy4zX&GKVUKelQI?;9qTPN?cazCb^qlN;Mp#QWQFR9oFkx;<`+ z$#QmjJc6Tr&fZ&m8RdryToLF&BYepfb2t1wC->;Tq=zX%x=5IB@=4D~kIQ-3C;_YJ zpenultk%ed5k8~W>x(}60bhZ$K-MRorFO?MqAuzh#r_@F#r0Y7x9xiIA{CEQ(-D_E zP}LHWoEdKPrcFw&Jk)2A|0F8iCT#sDb7%(rxn_Nv7mAL5w>bg)B`_flOo#&$;=qJB zFd^>WWkMWS)S_p-f|TID2_m{u1LcTong?dKvpW<@^*{gA*VS^TqEY2q)gg#LiV*B# zDY@i7q2$}b+%T;`UJI9Ak}2(B0Sp^-I>{Ed@FdHLevSX&c7!O3#QwkBLRA(XkDg7` z;`_q**R){-os<7*3%wcXC@@N{(8e>2^>d~?_Q!vftvZwNv8YAjWOtw3Dbqxt$(GhF zeHrsVKT=s7%&-~Bne0}B9vRvb-_UEQ!#&E=ET>?JPt#Pv3sF2c>foMnfuEBJYcO`G zY&qKz5(*{S(*Jl*TjtM*lC2bu5;o=HFAf0lkp5 z%Q@_1AIa#~RH6>p{c3C(_~Dczqbd8ypjxt+NJC#{3(5rVlBlGeC0V>@*$pgkLOa^+ zoHzR>KlMZO9_G3yoasg#i%r-#yKttRhdsjf5alL$BM?#9iPTr#7qAjZK70?og5Ar- z4o{JzW>taD_?-ut(`*we(%>B!%s-b@y$;D`nKiF2`M6KDSEkxcFEPnQrfh}yI~UEs z3H27LoJvt{L3+l=HAkQ=;wpssUXVcvGip9X&!nNA5ky7=x~x0EiZSQOks3nZth#Dk zO>xVadIEkUBsr9wBa|F~`GYLsR-7f~zcs2iN?Je5>XSW&EMs|MqKVz3Gly5gz*9P= z<7PfW4xy$*AX|C^TGc62rc&?NQu}zPBC!YSBhdXh(|n2sWR}N+Sl|z6QI&3$98IXIv4*_d zcN9rI3j!I3WvV@NrTt+>BHmxazQ+nUu<`}`1H~A*Du6dsz^NhbrE+276*;^kr=k@} zZ0Qhnx;^d*T>g_uBVtSY_hF4^;uTNG4-s9?IyF6*#O`e0Ag{BK~Q`y^H}{Njq31is}`6JSoCWKGjO96+@&-YcQ8W zF{Nf!3`K2VmX5A1W+l9ngz>eox5rRSIY(RELdg|vQc+7gYR$^dmCb-1oQfyddb`WT z<3Zd}$RysRrB@L3kb8a7YkA$$_2za3S`#Y0Qh|B#1xB;O<#}{a+aS0{P)^6XP?iRF z73=gS`9Yr(LGHJBWa66XrU3j1(pcKxZ`9{}m9HWn8dEj3)Jrt zstugWYhr(KF5)-yd&Mfh1Xt|zp_{th0rWUBR`s!avaY#1p@#MA4eV92;)c&2{x6FV z2v2)IfqaF27ApS&=I^w!T1aqBb_60@y0-NNraj0}(IuG{BeuD<2hCE)~SL-YH|oyHllZHn?fq3x>M*Z4vDsL7*wUQcn8&5+C`zV_xs*- zy)=+aJ?G2C8n+kWp;WD7w`1?xg9f%Pf$TU`RVSy({DHUu1V4!G@@Mg zeRt#A{L=hxmxnA&ORRTQ48b#x<*ng%@bj6Oq;=?{bP=O5`LQ$Tae1reL5rR3a8o31 zMq}(Qw~Gw|-Q}_qPxVT^a|S3)K`#j>UbA$weSwCOYu1j{WOnRs%pZ)4xs7honi2dN zR*D#|_G&IZr#}{EJu{}Sn=C4{{`uSZ#|A7g81$wE1_SH$SpXOUxJLA#V1NjK2!M#_ z0jK~G01^Mbh^V-isbdFk1mt4Z5{L08uDZkwr=Eq-(WY*AJ6(uujX?YNJl7|1G=|hw zY^py$gq|aiqy~X8&XQA3^NfoN6})Fv{BhLAHc#`;5Z>=VW(2bc8ODuucwK?JT>)a8sbkOs zBZtozGI*@*x}pJnH3I#G(n{W^5K#0lVwBw69rm)hxDA(( zJWXnmMV8m?3g*ZsG7^~2Mfl?%_zXfDoBJunukc|}19DDiV9UU@RC%f1L>b`x_NN(% z^oyktNU|66`&E58bLB$(BauBkgA$qu6TkHAjH~0T}vqAAGOol6fC2qzR!{O@hT@$rq#Pb zx;lYmpI=&}kS=w*xGi0XyAVQS&3QGba?4%5)_$Ax-u(W8N=xQ+JyQ#>g%jE+{JUV% zHRPT!!#RRw=tF3+PFBHt3FAvPXyIx?B zOkku+HxD-G=^3^`e1#5wCs(*Jpwx#8tSp~B8#>EF#*bsfreh)x)%rSGrDL}x@D9D* z2OV>r-5(P0c$i43)YLiLJe~EAhWR4HAa3x*JZJC z10zgJd;!+U)+g+X+aeS`pFMc^^RTJ%th<6Se(kwYu2)$tj$lr?4pU+qtIQoE*Rj1x zVwWMH3a@ZT=J;f28O?T=APp%pk*d_7uc`?Ns?m$=J~Z+f>-QO6!ECa!%UVOFhVQKF zVn^1{MxTT~{;~k&>-06Mj+7Z}XF}@p@RyP!#yTPYRFHxX$x;~U#XyXS>B_ChsH(HW zhN>!ku)G|v9`uNPy-_=X%;v(QW+y_hE^m7$r9m%}g%L>Y6|@@Avq6$=FVPw^)SWjs zhb0o<7Af{T40$4`=`jBXUEKt{?L zL!N^c|3Xi$q43Qqv#^W}9KRqvgvDXi#M;YI+u+(fWjk2~Z@IJ*LoX?cJX(90oeh*x zD-`7iWVp)Cc29K{zWt4C4NR7x_MLf8maqIohN7irnJN`G=gMgIvq|0J^@jxt5xZlt zCVt51;fU@4=NkHZ+;wy|yQhN<%5@5)F+~QsdF~zrzAmEQ8stt4F|VMQ*B-ohr^t^s z89K5lDW4sUw9oFBt$RFID83*xjAq9w5d=}djzbyAYQ=K7&2Q8Se^V3(;R_y8=tB6K zlU%*S$GTmu%RQXi%kD7y^|K%$ATn7Ib+p#uqY-l!8De(Y6Rvr+uiRPhV4gJ?ET0cz zj&X;5IU^3A{sz65;hqUe+BGF@GIsh{al1^i)-4xelFwZ(w|@;Mw5Ch7wsor_9wvn0 zWxX`tJVZ)r?umC!3DJ=D^#Bhb_BdFA8!_tD%Yl!4w0(0c)TFF@}F z=)C~F7ohiI);~ZHwN!%UhG@nUWt_ePkVpJ?&Ld9Jj)1CG=nExbb;5Qc4OhE2CZ04P zk^3e96%#7ld)2W3*V`)s1F)*GzvhW#RJgHR}K1DO;rWHsUS!XhtI;uq)jx=DO&j`%czZPy2tTP858$VKqhchLt< ze0rPeVdY(l+6c5BTSC3;3d`gii#+L)qEI1X=R$m+E2EGkE1kka)Vi~(n#@%M`b#X! z9+x;#lV5W5#+(*ecpD>e3s(2{w)B_Y+4hOsob*-%f|%1G%w)aVYWRs>VRW%Xak9QM zS76qg!YSqDTz1yvh8S77Y%XJC*uIo~6Z&4Szey&lS0?J9e>mBz8XSGsS;m;cMs~OR zB0@4h#8IARCsHK0c;sn9V}36$U1u=pYX)=netpicWPa2~G6!)k3>yh~YEKD;8-<;y zni8*)iLb42O2y}VVVQPcz~pv$d2>3#M@&o6ANK#+KUCsh#)3O^L@hBiC^o_y;f3Km z8-jEdYLp(`-W*COE^9V-8@Z{fwL{pU&FkHW?uaT}uMINrYvB*rHiV$zIL6Mnjcx3o z`_cct=NoQ!QUlwcBVF4Q5;wyygrsM^E^m+$E7`602L571t=Ctb%)<1?-aD2&={7o5 z|Gv$rzM6lzn>A+=^&&MQEOMgK(oU6FeOYm^dm^TGt%+&wU^ipEreJ9t4`LvmBsmRzCO4Ns>_4K&H`@3mwhMFKqhV8*}sFuTgm)ITGPBM~=CVWaw zFZu&ZZaHC@OqDY>>iSbWgmE3d0ZY{Dbd3ScMNUl{J4}JQh;3d_Z|NyxJ9e%WI5m4o z0^5iEOefak6(Qq7digD~mzi1R%=&O!;!;|pqNQu-KfnExb+_i2kx1OGk^0CvT zP&h>8Fn3eM=&sfVZkw)ste2PABi_4wD*jiv=el#|*}hFV{eC(sj0RRw&xJIl)iO;n zCD{|2&4x4*oqRF^1%#X$C$Y96(S^A2v znr(V{;hTkD*|tWR@$V7nND}){Jvy2(5Xg%mxP}m_3c5%JnXK1aSdUNPZt#awRwDn*RcZD>~86>KepJzRQC_K@ph7Ew{``exK8@d*IhZc3itePvj#2j`K zHzXjFGZ5xt)n1Rsl~B_Kk=$6^Zi^me7!^pO4mj4WZZF$~o{N7F6>rWauTob0GjdymM0m8ja`I=MCtxiJ-+ zYcJfjGFO(5_Ft8W1KnaBHG-NQ40DvqW}b7*Tq#!LBUAxQ=o=Mf)ddmga0Gfs zbAa9Z;|R*le!j{joG@L1RC##DOpG0dt_#Y&+%lMXLc8 zxZS79<%*dEDr6XHcbyAbOMiJFX}8&S$nh8g&jkCJAn_hNdBg&n0N zwp@Sejreb)j5zq#7w*5@z7uZO$kTrUcoHxKsAc~9)-t0%JK*jh?g2!A?`a)~XJB;) zt9x`j0EhsH0EiffkAOe*djl{8Fa%Hu`U4{{1TaMO3IPxS5CIU87o9i)u_-EN05Jl@ z2oNJcjK~A>>Y3ez@Gqr0{m&f8vtzpv;icEAW4jl2LKTO5daZ@HUQcHXhYK< z+yL+=z@Gqrie4Q7A^;))B9Z}Z0JI_64FDnlA^;-(kU@ie08yGNh!G%0fEWQ{#Q!m| zsflk+x{iDz-ye|Fgse?iY#U|Fs6sGHjv|%)!aq_?mX{-ZY?HeqBdvQsaF zlXP~Wf~OJH3wRl|UPaR0e6y*uMmS-o;la;i=~+A4w#>eDHeTN(INyVWiMZfp4B;Xh z`T>o(6p8i1GS3EDDmj)-a=8~*H9BJ0;cyo-KQMHzlipgMtEdZ2Bds=M6up#MJ>KxY5Qxv0r=Q3uiE>Y`@BMV%LQ@LzjUpdx5&g=dEo zx`gPWP_U%g`PrC!JRPWIboisZR=p+;0}p`58|tfaAPNY>yKs(e-Tm=|V}fvbHZ5&z|w z#s0B@pWk}<|A(HGGnV?8S{O21m3&5*`ZT*Kq?l5P>N%tn$v1b(%F&BlxP{U#9fGP} zG=3seVQxihsJJGC6zME-alKovMdNBaQcIgsQdG+I%)~+ePkZkk-$cFjjRuQGw_<=k ziknLYELwd~Bcc{;I)fXfut6fSwOrf{iW=Nr0volrWClccsR%=<8Y?3iq@p3QQ&V`&gJe;(b#_@iz5HP4$*)7_gO|BWX&`RscV*0Bm-u-XI zY+AAJa(GKpy_iN?)fJVf8F~D!ski)fK(^>JM2DSKl!^};6o)vmoPy=&LUg)4&3qMx za02gCro+$qJ431%_O~?)I(`e2|67$Yz~S9X?FL939yoM z9xeJF*fr^hZ~-VNo#k@6iG(f@hrWy;X=kGhuT9NQcdQNsVdXe_oBX!te(UeyL~fSQ zLT`vAmGx}&+duUO=(YkEjGStvkP8(g%%FPhCOdR_R#*Oq15!G(v zPD;=&jE;)LQDCbpW}`~ zy*mVbHy~T&dRbX%VbGUvY>Td2iu>n~dqT!NzNg_7xQZzFMMM@ei1f)QKRvn@WtJRAJWMk(* zR!yKw5q*uD(<#)(5*x^POOL!Ym?HXD(%NsZlHO<3Ksoh%CVqnwM*xw#N%t5}dSiN* z$!aguCif{tukDi+If_w|A3k3NflCak~thtT>0T3a?H^Jle>+nU0PHasmP6}f=9YyTxCK~)UTG?8@&UvgGl1G zM7mx4^GZ?P$fG2k)5VgTlnLF?0w^)K5kX2r=!;!#qviyrQA=9rJpqf^A2TLeeI@Nc z@$d*(Pp>GCAdd%;>P#nO+Bf#^J%vh8Z~;w4eoIUjiSZu-!Iq5XXMP?M?8qCCjU?|C z$UJN@8#@~_CRlxre!b5bVC2m#xr4#k1f1eMWDGd&EBJ()-G&_+D`QlkUI-f=q@ERd)(fyd4qbyWK4CxHaH0uDnpfyB^>4> zkPenibp%CKX=`s}6jT7@JVMZzgQFK=r6(*+th^p=VinbFYAuT7+Gs6wIx~}|?}FdB zZN3Q4E#Nh8&i`#S6Im!67?6#Ik43=U&>pj-UI!?10Z~O@qY*u9xydUa8J;?sV}!e8 zVQ|KwA&uQnk$2n!vN#L4VI|oR%b$2sU!^%~K8dPoEp^;G^-YkVbCLeKs)AlAu3@mmT(1#VIWErswLy$ zQ&GoNk#JI$!mv4wD6@NM&Tb-#G8I$Y?w%^Hno*4Q8^!ZL%(f*+-XPB3`mKwus>wfcnSz_ci;8r736B5 z!6B4UaE#0Fs}7^)umfw%J<9N85X!*6Vrb|WvFRzUx8*g}giF?b!UDpGxz-oWsTA!B zZK<`I$zqr+R6E8s;(>0vE87CpZT`rn5X(bs+BM{TgZ)J1X#%=R!DxaV!E?>FYG#a} z0n#pae}jTJCU4cg2ed%!k*plcu83-@yzFX9QM%l2J+JpT#@_yNbYHZj#qqj0#+c+W zU|T{KMZFr;6h=9t1M$$AT*?M7-Wii) zN^S!BQJJ`xMeU>KjX$3(D3;^Z}_0E0b;@;q7MZghVqr>hc??FGM-wPPiwM$_8ml0^&9Uv3SucUfIvV11b zaf51PNIW3F`?(_g`iy>uYAI_f4|qMq9-<8%kS&X?42Y|m8RQXh)-~t|O8EGfh5Z&M zYig>HUu5-l6@mpdr|t}ds0eWO5-VcjgHtB=rM&;j$^tocAi3%VL}>}IX%6JC;v_-e zg*sHomOjCOD5e*o#Poj3p_o#79zbH!$orphfp${9_(H&vi_=mea^4DnKD7L5J;#KaN*9Y}h`~UtTCo@bVC{*SLmeAnjfbL(FaJXQyUntxPyS zYUXpd7MUyxEA7zG=|pb8s3dWq;~NK9MfQ3M{F_h&PhQwv%*{3;ZlRo;BM=dMFP+JP zP?pp}2_n@EeUZhfjR1c&HN0kP93KD*?N#p$=CAOrF@N8L0J<~c2inLrEOM$JA)KAY zbkw0OR2Fw6r5?=O=ecbcLvqAVeh}`}fI^EjCpx|ymxji9j7V({jF_bZ5 z0O~`1+UN^hlG7L;aJz+^np&qPqCE&92(mUVl*#7iQ&fZ|+L4S9)Ts&IcOMY2!B%Ux z!>1^8C!HHDui^AI4})sbYN85V?)t}3J@okP3SsghY;@cNom1zsm;23?mJU`?=7Y&x zceudob_1O@`6Z529i}xGpLj2&!bnAJ^%jcLd5z;hAXn&%J3!=t?jHe@YQ$u>GFh1> zvU}H3a+PXJFRe8SO_Y&Nu@IY5(pN%mci$N~H}lb9iqb>+g+p{_Gct}GkLJ-CK_dn@ zZ(>wf(Np9Y(*cjOh4|vrlk9e&*!3`SS~g!?Qf$WhM#bl%uCXpqWu0Z8{re<(GoWbRaH;V8mfgfp_w|Z&~x!4tb=T zqBnLSpFzixtlTOui0Z;P-y7L{WqRU>Kp-NTkN(L}L9W>rPAS^}Ju9sBvK}b#iB-+XS-yX!vdR7m;o>KhitZfPh>@MLWA9%%R{f z$trkb)-;0_@1n7Bjg%#^w8=+{<}p1HwsJP0aP)?aw(2`}r47j5A&(oe*(`p=BCxkZ zif*lERjogko$BG+t|*97JJ1S4HIp?|6@TIpTa!Y(mEG7%i>FDvpPB4WQ(VJ z0FE^YLt3MYiY)(EOnU?NkIZ@IRL!Yh2=lZ2Yiv@p5}Fral;i<%6QbgG(}bcS7`)RO ztgv@JvvhE>)VP9rO>ENY24v#`Ua{VOX#QaBb~`~OQTmps&ZTN0-^~{Dogo8kW|5s8 z&^Dv4i4oe;kGYveo$pO5I`;B*ow?QH4Wt0VpNVRa$K`(6Tzs^S>XJtn z49LE4kjR0cwt7HT6x^jlPhbI6gVJw{-pXSc7vz}<}cSvfZL66e}bl8C;vkz?wS?_nuzBeA7NU|rnSe61&0S@o8XP~9&U*NISyll ziKs=tN;TIsy4FAng|?e}KDDMMc85YHzWV$8|9RCo86AtxGAgLJPGVng(h$Sf*Z*zA&T zVsq+FdpGa+;+dq<)ZS&$rqhh$Wj5Ai(Un+RgBDpN8&-8rV0D+W2$c%*c#0;+ z@p+=*_vB7)zOg-IJXJhWC1l_KOZ_)S409lSU?s*=z7UPf zXOM{y@;#lcG37@g)np)=sf!ur$sqQHG1pY59aiKp+-pB5tm>Z;(>190FIU~PfjyIOe~>B-UbXaB6G z9I6h@GWDwxcju5x!|RAUQAzUq=zEB^LugS2(@ z=ApY=etTL*I+{8BQI`K!M_QztE8Scv?n!a)CN&v~2T}s~f5#A2OGup=bQnp?fXs|H zjH3`g`D)MWgA}{8somjpv?A||<h^v8!;Qs0m|)JCtgR;RW3xVU9PbR`aPIDg@6l z80N2hOWpIk!C(Ejgf)uD+h{YEP}7|n7Lyu;Tw7D`L(tVQegSj^S0jnEf5qTkt^7As zEso7b#-aozYEOguIyW}1N^Wx-@JIO~$E3tCPksK#n7d1A%dOnT=teHbMGJ{7pt)^h z&8GE&N>SJspki60My-2VU>A*hXH9($S(BQp7 ziq+#Tswx(+=+-jrON;~Zk>HOedvhv`+Hr1{ue3OH`Bh*Hc?V*nM>MYTBUN^b&zVf?2Abo6Q+JRDsO6n|)S<+5aY($&L*0 zdSU;Z0h!kH!W%=S9{)0zR3GzS1JiC+QSM-s_Dm&8e6%_crJ>8Na^`d73K6+2DR9?D zIw@K-3A`cM7Ia?nb${O*SbJJG7{JY=!9efar?n1eQyn=0wX%4f*czaf(2PE_<`SjU zS)02;ln~$R&~*T4*Vvv7&Rm0g>b!k-Mw=SNe*SUr!RG-S;)M}Nf2!W&>=v{NZKo1G zy&x1EF@mQNOouT4#;ss^Y`UItybd+}2yIOjZ%6xA{W953rN1R@7V=h0UPN(xKz65P zLl{3~z=HY%2EB&JJ=FjzK#q_E24ns?)VWk34w!n95yBjD{~^PEs{K`f)mI45*Tojc6`yj3MWQ5^+x~gY=Q6KL6UN zsQCii_gHx?Bkxxr_PLAh;0F)SF46u3H?c_a#yG9p;j)+m12kN?cy$v?niHMC=#H`@Rs7Z_w`I3?ZxeHNX?k&h~6 zjPLRU!hY2LX-wWHk9utst3A~PLEYZdD3Mze1!JU&O`}Cjq1#IIbR;n`)pha{Buj|I z%;&fgYGVhj(AXxkmR)YI)8pw>FT&F^p&F<2;ExNgW_+ySKjaEL#*OszAyjk4K&E;! zGg*t`Tol{K&L(P@zkyDHa{@>A)*s0C zdA&_>hTP%_tM&?D+PBW9RHAd-U?$fTp?yb?+@G(l%|>@o(`ePTq^3(Vl>@ zI!hj9L4H<}inQX69HRyGBX&Y7G*1A4EqHbUSreKRu6>J;oC+^M{jpaDbThhV5HD--zV zqJ^2Hnyx;73>0jEyt-WSuf zC$^&acg7>&Y(Y!h}fy#U3L6Y>{wItfb1+kYe051)K?!( z;}rdxBbLILqO_kV!M1U*7Q`VR1tm20@ot;#(nMI9I^+3%vuoVngL0bit=Iyd=oyf` zAYgk8b0~5}2cF+e@nnJhJcIf|%G42~*JwKa9%Hjh(FQ+-_d>2paQ-N(=cU2;yjx-O zTm2`+9)1Bgr<KWZ>8rl!19yQ=;=AiCWXiO2hl4xD697RNn*|byL@qv`Q>aYj58H_~9Uv#C$6Nxc1TCmi>k8I z(00Qjd~6B|!;}C01Ki1{aHUn!o7X!0ZWqoSKhckJ|r?PI)Mu^fY)Ai#@SLC5simNQ5}{ESz_9FNus zKZ>cQ2HeN%zXQ`K^R*X|Lq4cLAznc>RNGgijQpM4X|5Hu$H3wutvs;1LG>=IvQo~=tkNd@wI5v~$v=1d5P?ZR%cjkX~3qXJ2Z zrJiLA=oiA|etw$)O+CvdnQQx? z2ydL#fmDyq9wPvL9878@njBP9NN~K-lNixz3DQT*sPBe$Hur`ZI&=NHP`qpQh~g_m zuQ>|cAXXV?^h0T_2pDosi5kd^lA3xKNYpKi4aaxPG^n?}wYjQToWWIM@~D|h?%>HO z&Mu@QHB_)(aWzD>0>bOQdUPhvaJP0I%Q4 z%@a%@@s!(Idg*lR&PKmdE+}RMH6{MPmg%Y|#ChP3smT2vib#(5%fjwKG$tng_Z+m_EfJ|OFpcYxBN&;K8d>%B3z-I-WS zC4ztsd3Z&B4~?xgj5eT2=YtMF7wRyL{k}6*qq_}bPYw2#UQ3DqXL^yL|f~6_uesW4VrX0ujSo$>e?& zsN?c^ZIK1p0bWVhjeQfGRiu35ljncFNq7I*(;91d#}-P=I2#2}_eBiEmOctr+SAIb zvodqygu36Qj5G?|Od+w8FNkOlTQbV}9Hn#?glNrHdrereb3pdoMy687Zi%DsCWa0! z-UKyGY=-iXPqj0e!v1PUF^86h&tMv>H?9bsjn&37MSr0<%TuJiw6)AJm&HqZpi~-p ziMC$KhV{kPj%-_zLIwCBvwreDo=?G9UwGVE)?@|GNFFd?ni|^DZb&I2GS-Iz(cAF6 zKSu&$QnAy3q*l{KB$Re8oNX&<>BNN&gN;^90pHa}d}VSeX( zf>9!YYfIPeP13Sj`))0$!ft~@oWI|kdIR|!LyXGpi0U*IrNO*Pmds{3xgt{G{rrS> z8E`lVQjBo6%klNl7n$^)jW3F?LVN!oKSTM+Z(rd*>0#aB&kc|K?K_g*-f-g#Mil8j z4OvApgk*>eDMm;!B2&s5LvA1$LNdhgcpxF-e~O5W-$iik<(P3=Co6s#Ou-;8!y0%L zIo0fBctgq#>|ywsKxgDtHqjMxXg?(uGuV87F`N1`TVjjmR8$C9Qb<=Y74&`V7rf5H z3GRDW9;^O4kInJ6IGufgAUK^(gZ^QHYiY2Q&zuJOMMu5mJ&>X~>_2R|&f?|Z>}_H- zE1>o@O5Ih>FUR1~RULEpBTdPAVFxk_EsmyL5sM?*6BUZm9w-e??g|DSNSfIe8m$Jy zm;Ljn;?9k9{|gA@HejEtbI*m@$~hPDv`y4?6V?B^bjEF1mve9iEFF504!uZ+UZg`W zzls@1G2+ZWIrAz7%OR^shL8*~oHIy>kPsmu;wFcZ(&vyjNQRIMA+2v83XGB=Bts0( z5E3FJL`aDEhrY`oXOLV&at+BfB-i*)6a5%Q+@)wFMI$L1Nzq7(M!$}TZuutz5{bG= zSz{S2hhW#?!PQ_- z0{@e4SZEo%xVFai&En}#cgDv?z4z2thujlis-38rwBMNNn#m9I!z+k`%n;UffxjZm z0gHU+w2GRpP=GJm*okQbMf@lFPzon@h*OO#-1v9UmmwaR$+szw1Z{hXKw#tu@y_B! zKdF~2zxvi|?`YrZyU(}t>A%#KZ`#pm%nt0jFsS`IwA6AymJ4CV1wsqODsEWPQPi%> z2dh~vRgAGnSp`J$F1~c!AH6}2wIDa3X+C6vwNH<%VOBZBHEd-Y{G$O;ZLdqEe!l#| z3x8ep%@=t^>WV8f`hNex_3wRU%cr^e-ba-wS#uqm9WSu43tR(dL~&CPPTCfL?qUt< ziVDM;QE`c;PDf8Y($WTjJ$_ILZPc7+cqhfHjkeI+@T#+0T8>6Au+qCx1ZsU3B0N?q zXuLpJt;`yt!A|-w@D!>p$uM7>9Ki$0?RO*>(-U6IDDLV!UXznL9o~LC`tix>Z$EkM zy{Epe*2HV!nYjO|cJFVOxP5Cr=RYK9d{BZf&W9l#hQ)nURK#jSa6*k@tDb(lPuI=? zDFDuX1x~GEki^CSFZY3sn1W-EvtzcHV@YMc;vRhA-6d1qpIy3?J;hf^Sl)Z;sf?QC zFWra*du*LW!>m4=T*#6AK#=&DJ0Nx-i5-Sj#CP2>M#NM=C%X~_n>KOk>}GnA19J2* zTByk%&cbyiE$wPvUGYbtkUkf#*|_-C8`Y`tlUy&x9xZ*$@zl=7m=gHK);6Ic17ia5?&y&?C> zqm#PgyDjEwY_EW{hAex6B39yJ%R*qC^jDc#tIn(QO1^#PiOjd3a=n#Uek>Cso7VHI9|1*$H_wW@I zl~@zX${ev*d?^i&AlBrQ5iHF?zD;L~dqU`*5C-J)f&>yYUkxa=HRs2sa;d3X&ONAJ zJl}m;r+-twu&A5y-CI;^U$*p#-v*8Av1`~`tQBcN3Bud1hUXG#r>y7DwF9!}e_8Db z_BN&t$nu~}quvpl&#mjT>%cBgx5wQLrxz5V4rIy+HQBjgH+Fma2j6`C^^%Ei`0a1b zHLbQEXk4+Nt}NZKB<0(Liv44M`zNo+8;l4h?CYXf(?!Pd2*0*NZpvr0=Jq>8W%^Vi z;PBVQt`TeTpWxPr0c;2#(F1OFcPumW3$;xc$8SP<{4+mXyuIy?ygcT|p6EMoPoGr8MwYlexxA_66NoKZ!iKeUoIlD{I#wthdLUfQuF1-ZACN7A zea1$xm=mn9KGGM6^7hzNE~RZY_9gITRhK{CUc;0ls=(#GIlV+)47nI$R`nqWhHq0M zW;Puxlzhce^V3|gFurTqhw-y~`jKI;|J~)2N+-T|@(9OjHd~vDzU-MK-21^`EE`-t z8r}TMYIPq?_M3#OSv)?)%dT?cdeYX6Af5J_j&-7b<$&zpP>~_!-MTJJp9Mi*%&@ig z2PnQxyTh&+!C$M-V04R)?>~ChuZo9MPanf|7l>ugEWCH~+NQJd0jl~#ug4Dk>EPh5 z!@=D>+42DyxU0Wx?H`bRV7myEV&g)DmeF-*=^}xte)=`AYTCFthBd)QVzJW!hCtd- zgtXU$cno?X1?$S1{M7VotNyHf=+Jl5pCI&a_09B~?*2>L(Y!*J@tJ@FiMQ0VF2-MvceyS`w6ug+hOzKG>_<@9U!8q@kPpqQ{RqWC(+0)&jA)i9nxn6^Uq zPhTIaj_evtL|0PX1)R72ajdQABoMHTel*E?>+5A-C5P@1YxCtto{J*ou@D^e@w~&7}0`2MnIwfC-*m^k@7*_-Psi~n}H z@-O<*mM5EoYh8uq!0%_=wP!G#46a)pCV|`Y;NE}o-Cl(w-CSw_B7|CVpI^0-HRT6{ z89h>5AHobn-TbUlyZ8K}OpXhvj){d>ZqXutBEeTb&Int`x>5&`*pVZtp z5~xL#+RE)es&S&3d>-s=htt!wipG**$YkAoVZgpN|3=L`Im=5=yNKMKZfrLTf^d1s~JHZisLx za5^lPcjNJd>5rB~!ARWu{S(XIergBtb=jYPY+3NxN#FKz5T9&c@GXmfd(XQ)F?oYX za~RmxEoi$D#LaLU;5dG7R+n7CPL0mvv1;T8VJ4884O&*yUR#K*NYN&SanmLdhGkm_ z7iNBa3pV4a&oqzkf-k-B&Z}QFy!3ENNl^i!`crh6|4-+YoW0Yyh9~w3E3O*>FRbqo zv}s4pDnzzsqwwq$hd0?we;JGYOgmmdp5@-bYM#u@F}5j@oi(A~JKHC`+bS+=wlw3d zbG1_yfk*$;llXl7j-DAF+xM>wbF4THh^FULM!AF#A|esc}oCE zBpNL95^XgX@U-<)(Ran{TpIH1>i+tocA}?mwC%vPr)GZmr&`;+mBmH7ibvtS9uIkn%)KjRFw{;rEc)Anq)*w@M66_oYjI`y-v1~GHbKXH)%FcT){Ak>{ z;`h_ODi4HQn~ILqGs~gRGu+ul{`I#v##N3JA0tk{oBa{vDj)PGrU;6=ge&x=)@zum z)J{(nQ;`-iC6QkuMj|N=*_iL;IbRHZf@N=>^}p@({%y~mt44gW|E(jdLwO@mnwrQKIH|;>V1cap~JPkG+?5EMZfj zZxYS?b(r4{yI{`^yBu~g;W z?lg~Qlv{1q(8Q4_T!c5FSuogm}oxwwnm%c}*xRj5;JDHgvzFjYJ8(GJLZ+yT`1z85ZpYr}rd z6gJ>lQDSvW#LvOKpi_lysPTwMcQ2du&4-qEs;L<*m$g5+_nRLh^i|s*d^`QY`jlDj zrhcAYjp62gd_8DrW&u^5qamOD^nh$9l~X+Cm^}Nq@j@48?MF=A4DvFY+E8inYjb^> z1hmoX+K~8o=78*poOPV8A0g4yCJWKUn$9p5NZ#B}1!9nDy+KAbagHx^bo7z&n|^rb z`a8%t<@{4cO@^N)-q*AJ8`tJ_lrgcS-7V~aF0c?K*w=v$WA1$7O*|F94y8ilf?^(B zRKb(gVjBNGD7Df*2com7K{S`g)&bR`Cg(Mx!~i7AF49HF1UIio@_{PgN?t5xQ(L>o z56CjkBT!(LI5Ae6`*P00b(4~fO0?>kKH`O~rcFm**nhunYqlLRJdIo*nXRc8^F1C$ zb6(J{q>#uOeT=U>g-(KIM3ZW<7YjV%LfHrEIAK{WRLx=i1ZgP;t?m_6jD;T(9IA}+ zCKl+$K{i{HYuyV2GFNssO+bwloLBZ8^fCY!|L0E<4+9Y^cZp$*a|f9(pCx32odqB)95JH zV{sJtSXDy`IWjBDKq~OwU>FB&4?~3w&!=Qq{7Et8Hlq%##@+-iW%Xn`=%?-%=Gfgi zr-2S1v?xg3NKVB=lj769et20)yt>-_QHq8AywN`H;Pa2htL^c1SzWEz2!xGi8hMAx zja{Y}Z9{*+0%?~s>VXt5w@=Y?MczV8^AqLhxH6Y8&4;}d$u?T7y+Nf`0~TyQA}e$A zxeEtme_)`OKtKMC%pCMkcQjL2&_W3tn|p#0QIp`|PAe`R?!@jsTU>Lm?LNBb^|7(O zQAfH<(%c8HUfnvgNayFr;O&Z1YfTUKr|32Xf!maDBJB*W#14P3h2AeGt|3d6OH(^2 zq(=$br{zb@0MvVh1wQg6w#3u`6CpS;mnZ>BNSpwtlb4=-X2eX+z|W<{0huY9)@X#{ z8+&7%P;^*rM9uLYkB6(0DPy~ydh5x8c;!nMPQ7`k{9@aq^RZ)0OEkdZ$4>AggV7a`h_A`Zhm?#V)fM zEe@n9qR0!PsxrGL-tF{9m~8tt{^K~JdfauJ1JZ%%+AqSrWYnHp-s0?yGC8>nn4zKO z8RQOB>$>yfi78tn#E*3kR@jJx#`razwh8CHZM<;LQJdAS{C!cvUf!~`jJ6n`r+$@>60tjV$9bYHFND#4RAr-BDD7mAGjfQm7uO z12_I2))CO`brCqu>Ujxt4;&*Vt;#WA`r<%l49I?8j3EWbX=b&CbxK z0ofx=y1gL^1|s?n*~&ocp6!@9+{W!I{Kg@lk*;n_`ue4>@7VI(ODENTzJJ$#b?2%W z`?TsLE7fPwIgTZ-@9IwnK>(04dedeUKGDAgt@g zo@12$lPOAnY7LZ7W3}3veeiaJ9M7BWrC`l~%y~V-m3s|H97l~hu?udcLSVc7rVvn^ zO9k4%=nT7+soI@_Ib$#X{KqAaCKM$WDL=w)D_BfCUqr=cUw-{Y*xPLy92A5{L}Pe~ zjViCPxi+u~Uc&~LdUVmcQ%WR5oNS!aD0Z@z#Pd+XCA2U~8|FBB#UDU;-g;N>EN(@= z{TNzKS+r+ajC2GIa-e+3>zBpoj}7xCw-?VFkd-lEni@ zR`#ZO^8;_)uhtT=(9+=Fhc=ZX(OHNEjgt$$9)i>A-q&u@F5}ADvxLWum6SzuG{-m+ z*lK|bdOr(jw5@5|EIL7lDbrXLQKVgFi8^>+FOUWw(M<&@8b%))yH1XW5-WQ`&-cu9 zB@*8vWh;z_-~8c+*uhs`U$r%x{b<=s!-hp<9o)(PA!c0R%ocT3jMbf!A}W=2=r@Mh z6z`}2o!RAF2EULsHHo`GD#-Ol?In)>7?)CFYi5y&T$xP~uoCY2Y2P3EE@@K{@qqF@ z(_@c>tC9|0=3UvT$};NPaYY#0 z)^%TG`m0SBo+?VjAH48=v)`nz+V{gBGrxP<>+)TFEBgb@)ZdPJEufVQl+fb5Vj(qw zf3o91ta-3wbz=3pi6ejeKZoUskEaT|9adHaR8MF1VP`VI^dbtxL#xR>m5xulZ+G0- z(AJ2Jw}83JA!A}YhZc5)7#N$->|q47yd!nnZfv3rXfBf_MvS`CHz131^T_6~op5)B zSzF0fMSVqHT=mKcjQ*7si6>Mvw+m(O)2L6ZCVE2)XmC6)#u_TI z9Up&i%i8Fxk-~;m#P|2MY(I8A@?oJ%2WGe0vyZFAD)w~n43Y?<#nO;ms5~T&0As#& z(2EMB=65Zk{v4KmeLyzGf{-5J%ZN6$Is(u%Ak!UGK-$u3CMydK%$8S{p!f0GQsabP z$V>!PUsB?3H5en|Jy8}&trFWJckz}7zDn*~wCd#*YwK}O&;04eoew^?s_+6-Hinx` zes4?w4p11?2(Q(}uJEb3wJ_myi<^L`{b+em`FL`pzh4hkSUj=p6!K*jX)qR{+YD+X z@pOnPSxAYyETYo*j$cs_v2PAo$^(|P5}yS&tAOAzt!qFss>Q|3rcobF{Jq<8{f6eO zZPLBTMXmb4rKRo%-dg+o{_I%D*L_{Q!A$@&8ohCW-ODS2xT>I2U4bPLhsS*4liel$ zSM@3cD| zFlI1v{xFg24pg=w3Fpx{UT2^pw+ypB4n;nyr8QAa4XZgH6?8pCiMCG8putNUJswN? z6)ecuF9OrKvI7Z6Ce546S*3Ur&l|hx>Beif^}c@Az=M;mb{jUOx`brl_9*_bih& zU=s`#=tI!AaK?FMLe(AK1DKuHZP!Oju*jK9zT%}L@0CAe|sdTOi=4sJDK z`5jyQnCjRv&1YDfrQ}rmElvBaX!R@pDgUzL z?>BGwmp}V2QM`_j-rk@EBttkQLrCrRArMH0kPIQ^C#l{3U$EW&-!W0&uIonTvxWTI z6eB{57z=hMUwRe0s5UCKB}73r)OJY&3ckAw^L~49edw^~#F?wcZO-$n4?flM>9PE+ zkEW~d`Ao(^kNvVWuJ5Z#g=9>Bg zx_#D(#h{j*PdukYk>_b8?0{6zN>Ft|sOIXI*L-pl*W z?)y4yvuo3J+y2SB8u~DA4wuFJ?a3%fKK7=H^1trUNLt%N_>l}D8RDk93lIo}7@jya^ga`={H{;_FUy>dcl?*YQI7*0+5FsH#(n`9SDo08uItMKv z8Dc0fN`{aOF+4*^h>#E=A>wAnl$M?kd4psK$q-W4Z748GhL8*~JVQu`kPsmuLTX4$ zN4%sXUeXaS>G->J{9QW!{@p*ifkYA|k|>cxi6lxSQ6h;FN&Ls`D2-i)vZG`O$q>V7 zf`kYO5fUP#2O@4#XQ_~s3d!N|KthCs2ni84Bt|7UG9y7Pt8itKMhL?Ll=^3NQM}m zDkVfnh>#F*lR8LQW5^pMLr8{@2601yQ8I*Nh~XJRLWG0}2@%qaTAEQyGiqr@EzPK< z8TJ1dPfFZK;zklTlDLt?jU;X)aU+QvN!&={M$-8`>HOZ`Eg+4XrE&96c_bM^GQ{vY zQ9^`-2ni9=+Ju|E6RDFZbrOfi0|^llA|yoIjE_TnNqYWCGQ@D=C?P^ZgoFs`iMX4o za-{S`ob*JTbfkY+QW(0BTthO%@Kh-wLPCUuh?~?w${Iu7AQ?h3gw%c<3XGB={ { + return ( + + ) +} diff --git a/docs/src/pages/404.mdx b/docs/src/pages/404.mdx new file mode 100644 index 0000000..bfd8e3a --- /dev/null +++ b/docs/src/pages/404.mdx @@ -0,0 +1,17 @@ +--- +title: '404: Page Not Found' +--- + +import Link from 'next/link' +import { NotFoundPage } from 'nextra-theme-docs' + + + +
+ # Page Not Found + + Go back home + + +
+ diff --git a/docs/src/pages/_app.mdx b/docs/src/pages/_app.mdx new file mode 100644 index 0000000..54d3a00 --- /dev/null +++ b/docs/src/pages/_app.mdx @@ -0,0 +1,6 @@ +import '@/styles/globals.css' + +export default function App({ Component, pageProps }) { + return +} + diff --git a/docs/src/pages/_meta.json b/docs/src/pages/_meta.json new file mode 100644 index 0000000..5a13022 --- /dev/null +++ b/docs/src/pages/_meta.json @@ -0,0 +1,45 @@ +{ + "*": { + "type": "page" + }, + "index": { + "title": "thread", + "display": "hidden", + "theme": { + "layout": "full", + "timestamp": false + } + }, + "docs": { + "title": "Documentation", + "type": "menu", + "items": { + "latest-release": { + "title": "2.0.2 Latest Release", + "href": "/docs/latest" + }, + "v1-release": { + "title": "1.1.1 Release", + "href": "/docs/v1" + }, + "all-releases": { + "title": "All Releases", + "href": "/docs" + } + } + }, + "learn": { + "title": "Learn" + }, + "about": { + "title": "About", + "theme": { + "timestamp": false + } + }, + "404": { + "theme": { + "timestamp": false + } + } +} diff --git a/docs/src/pages/about.mdx b/docs/src/pages/about.mdx new file mode 100644 index 0000000..6b3e079 --- /dev/null +++ b/docs/src/pages/about.mdx @@ -0,0 +1,61 @@ +import Link from 'next/link' +import Image from 'next/image' +import { Callout } from 'nextra/components' + + +export function Balanced({ children, className = '', ...props }) {return ( +
+ {children} +
+)} + +export function Profile({ href, imgLink, role }) {return ( +
+ + {href} + + {role} +
+)} + + +
+ + # About Thread + + + Thread is a *simple*, *performant* and *type-safe* Python threading library that is lightweight and easy to use. + Thread strives to be ✨**YOUR** threading library of choice✨. + + + + + ## The Team + +
+ + + +
+ +
+ Check out the full list of contributors on [GitHub](https://github.com/python-thread/thread/graphs/contributors). +
+ + + + ### Contributing + + We welcome contributions, please see our [Contributing Guide](https://github.com/python-thread/thread/blob/main/.github/CONTRIBUTING.md) for more details. + + ### License + + Thread is licensed under the [BSD 3-Clause "New" or "Revised" License](https://github.com/python-thread/thread/blob/main/LICENSE.txt). + +
+ diff --git a/docs/src/pages/docs/_meta.json b/docs/src/pages/docs/_meta.json new file mode 100644 index 0000000..7f829db --- /dev/null +++ b/docs/src/pages/docs/_meta.json @@ -0,0 +1,15 @@ +{ + "*": { + "type": "page" + }, + "index": { + "title": "Documentation", + "display": "hidden", + "theme": { + "layout": "full", + "timestamp": false + } + }, + "latest": "v2.0.2 Latest", + "v1": "v1.1.1" +} diff --git a/docs/src/pages/docs/index.mdx b/docs/src/pages/docs/index.mdx new file mode 100644 index 0000000..8948c1a --- /dev/null +++ b/docs/src/pages/docs/index.mdx @@ -0,0 +1,163 @@ +import Link from 'next/link' +import { ExternalLinkIcon } from '@radix-ui/react-icons' + +import { cn } from '@utils' + + +export const linkVariant = { + default: cn('bg-neutral-100 dark:bg-neutral-800 hover:bg-neutral-200 dark:hover:bg-neutral-700 border border-neutral-300 dark:border-neutral-700'), +} + +export function VersionLink({ variant='default', className, href, ...props }) {return ( + +)} + +export const statusVariant = { + latest: cn('bg-blue-200 dark:bg-blue-700/50'), + stable: cn('bg-green-200 dark:bg-green-800/50'), + beta: cn('bg-yellow-200 dark:bg-yellow-500/50'), + dev: cn('bg-purple-200 dark:bg-purple-700/50') +} +export function StatusBadge({ children, variant='beta', className }) {return {children}} +export function Text({ children, className }) {return

{children}

} + + +
+ + # Releases + + This is a list of all the available releases. + +
+ +
+ + Latest v2.0.2 +
+ This is the latest ***stable*** release. +
+ latest + stable +
+
+ +
+ + v1.1.1 +
+ This is the last ***stable*** v1.1.1 release. +
+ stable +
+
+
+ +
+ +
+ +
+

Development

+

Now

+
+ dev + + +
+

Release v2.0.2

+

25 May 2024

+
+ stable + + +
+

Release v2.0.1

+

28 April 2024

+
+ stable + + +
+

Release v2.0.0

+

21 April 2024

+
+ stable + + +
+

Release v1.1.1

+

17 March 2024

+
+ stable + + +
+

Release v1.1.0

+

17 March 2024

+
+ stable + + +
+

Release v1.0.1

+

12 March 2024

+
+ stable + + +
+

Release v1.0.0

+

9 March 2024

+
+ stable + + +
+

Release v0.1.3

+

10 December 2023

+
+ stable + + +
+

Release v0.1.2

+

16 November 2023

+
+ stable + + +
+

Release v0.1.1

+

14 November 2023

+
+ stable + + +
+

Release v0.1.0

+

14 November 2023

+
+ stable + + +
+

Release v0.0.1

+

14 November 2023

+
+ stable + +
+ +
+ diff --git a/docs/src/pages/docs/latest/_meta.json b/docs/src/pages/docs/latest/_meta.json new file mode 100644 index 0000000..0e07b0b --- /dev/null +++ b/docs/src/pages/docs/latest/_meta.json @@ -0,0 +1,9 @@ +{ + "index": "Introduction", + "installation": "Installation", + "configuration": "Configuration", + "thread-class": "Thread Class", + "concurrent-processing": "Concurrent Processing", + "exceptions": "Exceptions", + "command-line-interface": "Command Line Interface" +} diff --git a/docs/src/pages/docs/latest/command-line-interface.mdx b/docs/src/pages/docs/latest/command-line-interface.mdx new file mode 100644 index 0000000..65a4904 --- /dev/null +++ b/docs/src/pages/docs/latest/command-line-interface.mdx @@ -0,0 +1,226 @@ +import { Callout, Tabs, Steps } from 'nextra/components' + + + + + This documentation is still in development. + Please report any issues [here](https://github.com/python-thread/thread.ngjx.org/issues). + + + + +# CLI Documentation + +Commands Line Interface (CLI) Documentation. + + + +## Installation + + + +### Prerequisites + +* Python 3.9+ + + + +### Installing + +#### Published Release + +We recommend using a packaging manager like `pip` or `poetry`. + + + + ```sh + pip install thread-cli + ``` + + + + ```sh + pipx install thread-cli + ``` + + + + ```sh + poetry add thread-cli + # OR + poetry install thread-cli + ``` + + + + +#### Building From Source +```sh +# Clone this repository +git clone https://github.com/python-thread/thread-cli + +# Install the upstream package +pip install -e . +``` + +#### Development + +```sh +# Clone this repository +git clone https://github.com/python-thread/thread-cli + +# Install poetry +pip install poetry + +# Install dependencies +poetry install +``` + + + +### Running the CLI + +Open your terminal and run: +```sh +thread +``` + + + + + +## Getting started + +Try running the help command! +```sh +thread -h/--help +``` + + + +## Log levels + +Thread CLI uses the [python logging library.](https://docs.python.org/3/library/logging.html) + +| Name | Level | +| :-----: | :---: | +| NOTSET | 0 | +| DEBUG | 10 | +| INFO | 20 | +| WARN | 30 | +| ERROR | 40 | +| CRITICAL | 50 | + + + +## Commands + +List of commands + + + +### Documentation (thread docs) + +```sh +thread docs +``` +Ran with no arguments and options, this command will attempt to open your browser to this MD file! +If unable, will instead print out the link. + + + +### Help (thread help) + +```sh +thread help +``` +Ran with no arguments and options, this command will attempt to open your browser to the issue tracker! +If unable, will instead print out the link. + + + + +### Report (thread report) + +```sh +thread report +``` +Ran with no arguments and options, this command will attempt to open your browser to this MD file! +If unable, will instead print out the link. + + + + +### Configuration (thread config ...) + +```sh +thread config +``` +Coming soon. + + + +### Parallel Processing (thread process ...) + +```sh +thread process +``` +Invokes the [ParallelProcessing](/docs/parallel-processing#importing-the-class) class. + +#### Examples + + + + Say you wanted to generate a list of the square of every number from 0 to 999. + ```sh + thread process 'lambda x: x**2' '[ i for i in range(1000) ]' + ``` + + This is functionally equivalent to: + ```py + import thread + + # Start processing + worker = thread.ParallelProcessing( + function = lambda x: x**2, + dataset = [ i for i in range(1000) ] + ) + worker.start() + worker.join() + + # Write output to "./output.json" + with open('./output.json', 'w') as output: + output.write(worker.results) + ``` + + + + Say you have a `csv` file at `./dirty_data.csv` and want to parse every line into a `clean` function in `./clean_data.py`. + ```sh + thread process 'clean_data:clean' './dirty_data.csv' + ``` + + This is functionally equivalent to: + ```py + import thread + from .clean_data import clean + + # Read files + with open('./dataset.csv', 'r') as dataset: + data = dataset.readlines() + + # Starts processing + worker = thread.ParallelProcessing( + function = clean, + dataset = data, + ) + worker.start() + worker.join() + + # Writes to "output.json" + with open('./output.json', 'w') as output: + output.write(worker.results) + ``` + + + diff --git a/docs/src/pages/docs/latest/concurrent-processing.mdx b/docs/src/pages/docs/latest/concurrent-processing.mdx new file mode 100644 index 0000000..6fa34e7 --- /dev/null +++ b/docs/src/pages/docs/latest/concurrent-processing.mdx @@ -0,0 +1,601 @@ +import { cn } from '@utils' +import { Callout, Steps, Tabs } from 'nextra/components' +import { CheckIcon, Cross2Icon, DotFilledIcon } from '@radix-ui/react-icons' +import { Statuses, ThreadStatuses, ThreadExceptions } from '@components/typedata' + + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + +export function TabbedData({ type, keys = [] }) {return ( + + {keys.map((key, i) => ( + {type === 'status' ? ThreadStatuses[key] : ThreadExceptions[key]} + ))} + +)} + +export function Text({ children, className, ...props }) {return ( +

+ {children} +

+)} + + + +# Concurrent Processing Documentation + +Documentation for `thread.ConcurrentProcessing`. + + + +## Why Concurrent Processing? + +Concurrent Processing is used to speed up the data processing of large datasets by splitting workflow into multiple threads. + +Traditionally, this is achieved with a for loop. +```py +my_dataset = [] # Large dataset +def my_data_processor(Data_In) -> Data_Out: + ... + +processed_data = [] +for data in my_dataset: + processed_data = my_data_processor(data) + +print(processed_data) # Processed data +``` + +While this is simple and decent enough for a small dataset, this is not ideal for large datasets, especially when runtime matters. +By using `thread.ConcurrentProcessing` we can split the large dataset into multiple chunks and process each chunk simultaneously. + + + Concurrent Processing is not True Parallel. + Learn more [here](/learn/cautions/parallelism). + + + + +## How It Works + + + + ### Determine Thread Count + + The number of threads used is determined by the following formula: + ```py + thread_count = min(max_threads, len(dataset)) + ``` + + This ensures that the number of threads used will always be less than or equal to the length of the dataset, + which prevents redundant threads to be initialized for small datasets. + + ### Chunking + + The dataset is split as evenly as possible into chunks, preserving the order of data. + Chunks follow the structure: + ```py + chunks = [[1, 2, 3, ...], [50, 51, 52, ...], ...] + ``` + + Let $N$ be the length of the dataset + and let $M$ be the number of threads. + + The individual chunk lengths decrease down the chunk list. + The length of each chunk will can be either $\lfloor{N/M + 0.5}\rfloor + 1$ or $N/M$. + + + The chunks generated are generators, meaning they will not take up much memory. + + + + + + +## Importing the class + +```py +import thread +thread.ConcurrentProcessing + +from thread import ConcurrentProcessing +``` + + + +## Quick Start + +There are main 2 ways of initializing a concurrent processing object. + +### On-Demand +You can create a simple process by initializing `thread.ConcurrentProcessing` and passing the `function` and `dataset`. +```py +def my_data_processor(Data_In) -> Data_Out: ... + +# Recommended way +my_processor = ConcurrentProcessing( + function = my_data_processor, + dataset = [i in range(0, n)] +) + +# OR +# Not the recommended way +my_processor = ConcurrentProcessing(my_data_processor, [i in range(0, n)]) +``` + +It can be ran by invoking the `start()` method +```py +my_processor.start() +``` + +### Decorated Function +You can decorate a function with `thread.processor` which uses `thread.ConcurrentProcessing`. +When the decorated function is invoked, it will automatically be ran in a new thread each time and return a `thread.ConcurrentProcessing` object. + +A decorated function's signature is overwritten, replacing the first argument to require a sequence of the `Data_In` type. + +```python +import thread + +@thread.processor +def my_target(Data_In, arg1, arg2, *, arg3: bool = False) -> Data_Out: ... + +dataset: Sequence[type[Data_In]] +worker = my_target(dataset, arg1, arg2, arg3 = True) # thread.ConcurrentProcessing() +``` + + + Did you know? + + Decorators can take in keyword arguments that change the behavior of the thread. + ```py + import thread + + @thread.processor(name = 'my_thread', suppress_errors = True) + def my_target(): ... + ``` + + See the full list of arguments [here](#initialization) + + + + +### Compatibility +Data processing is usually achieved with external libraries like `pandas`. +However, there is no native support for dataset objects without both of the **\_\_len\_\_()** and **\_\_getitem\_\_()** methods. + +#### This is primarily because: +* The `__len__()` method is used to determine the length of the dataset using the `len(dataset)` method. +* The `__getitem__()` method is used to access the dataset using the `dataset[index]` method. + +This is also why `thread.ConcurrentProcessing` does not support `Generator` objects or `Iterator` objects out of the box. + +#### Work-around + +We now non-natively support all most dataset types. + +We stopped explicitly supporting the `Sequence` type and instead now use `Protocol`s to check if `__len__()` or `__getitem__()` are implemented. +We also added context-specific optional/required `_length` and `_get_value` arguments when initializing `thread.ConcurrentProcessing`. + +You can find out more about the valid __length_ and _get_value_ arguments [here](#optional). + +##### Mapping + Has `__len__` and `__getitem__` + Does not have `__len__` and `__getitem__` + Does not have `__len__` and has `__getitem__` + Has `__len__` and does not have `__getitem__` + +
+ **_length** Required + **_get_value** Required +
+ +##### Example +Now you do not have to pre-convert the dataset to a supported dataset type. + +```py +from thread import ConcurrentProcessing + +myDataFrame: ... + +process = ConcurrentProcessing( + function = lambda x: x + 1, + dataset = myDataFrame, + _length = myDataFrame.getLength(), + _get_value = lambda d, i: d.getIndex(i) +) +``` + + + Static type checking will reflect the whether `_length` and `_get_value` are required or optional depending on the dataset type. + + + + +## Initialization + +This will cover the required and optional arguments initializing a concurrent process. + +### Required + + + + + function + (Data_In, *args, **kwargs) -> Data_Out + + + + This should be a function that takes in a data from the `dataset` with/without overloads and returns Data_Out. + + Arguments and keyword arguments excluding the first argument parsed to the `function` can be parsed through `args` and `kwargs`. + `Data_Out` will be written to the generated thread's `Thread._returned_value` and can be accessed via `ConcurrentProcessing.results` or `ConcurrentProcessing.get_return_values()`. + + `function` can be parsed as the first argument to `ConcurrentProcessing.__init__()`, although it is recommended to use only keyword arguments. + ```py + import thread + + thread.ConcurrentProcessing(lambda x: x + 1, []) + thread.ConcurrentProcessing(function = lambda x: x + 1, dataset = []) + ``` + + + Best Practices + + While you can use a lambda function, it is best to use a normal function for your LSP/Linter to infer types. + ```py + from thread import ConcurrentProcessing + + worker = ConcurrentProcessing(function = lambda x: x + 1, dataset = [1, 2, 3]) + worker.start() + worker.join() + + worker.results # This will be inferred as Unknown by your LSP/Linter + ``` + ```py + from thread import ConcurrentProcessing + + def my_target(x: int) -> int: + return x + 1 + + worker = ConcurrentProcessing(function = my_target, dataset = [1, 2, 3]) + worker.start() + worker.join() + + worker.results # This will be inferred as a list[int] + ``` + + + + + + + + dataset + Dataset[Data_In] + + + + This should be an interable sequence of data parsed as the first argument to `function`. + + + This can be of any type if you pass the according `_length` and `_get_value` arguments. See [here](#compatibility) for more details. + + + ```py + import thread + + def my_function(x: int) -> int: + ... + + thread.ConcurrentProcessing(function = my_function, dataset = [1, 2, 3]) + thread.ConcurrentProcessing(function = my_function, dataset = ('hi')) # This will be highlighted by your LSP/Linter + ``` + + + + +### Optional + + + + max_threads + int + (default: 8) + + + + This is the maximum number of threads that will be created by `thread.ConcurrentProcessing`. + + + This value is not always the number of threads created. See [here](#determine-thread-count) for more details. + + + + + + + + _get_value + (Dataset, int) -> Data_Out + (default: None) + + + + This can be a **required** argument depending on the `dataset` type. See [here](#compatibility) for more details. + + This is invoked every time a value is retrieved from the dataset. + ```py + from thread import ConcurrentProcessing + + dataset: MyDatasetType = ... + + ConcurrentProcessing( + function = my_function, + dataset = dataset, + _get_value = lambda d, index: d[index], + ) + + ConcurrentProcessing( + function = my_function, + dataset = dataset, + _get_value = lambda d, index: d.getIndex(index), + ) + ``` + + + + + + + _length + int | (Dataset) -> Data_In + (default: dataset.__len__) + + + + This can be a **required** argument depending on the `dataset` type. See [here](#compatibility) for more details. + + This is the length of the dataset that will be processed by `thread.ConcurrentProcessing`. + + This is invoked only once when `thread.ConcurrentProcessing` is initialized. + ```py + from thread import ConcurrentProcessing + + dataset: MyDatasetType = ... + + ConcurrentProcessing( + function = my_function, + dataset = dataset, + _length = 5, + ) + + def get_length(dataset: MyDatasetType) -> int: ... + ConcurrentProcessing( + function = my_function, + dataset = dataset, + _length = get_length, + ) + ``` + + + + + + + *args / **kwargs + (default: None) + Any / Mapping[str, Any] + + + + These overloads are parsed to `thread.Thread.__init__()`, then `threading.Thread.__init__()`. + + + If kwargs contain an argument named `args`, then it will automatically be removed from kwargs and joined with `ConcurrentProcessing.__init__().args`. + + + See [`thread.Thread` documentation](/docs/thread-class#optional) for more details.
+ See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. +
+
+ + + +## Properties + +### Attributes + +These are attributes of `thread.ConcurrentProcessing` class. + + + + + results + List[Data_Out] + + + + This is a list of the data that was returned by the `function` in `thread.ConcurrentProcessing`. + + + + + + + + + + status + thread.ThreadStatus + + + + This is the current status of the thread. + + + These Are The Possible Values + + + + + + + +### Methods + +These are methods of `thread.ConcurrentProcessing` class. + + + + + start + () -> None + + + + This starts the processing. + + Simply invoke `ConcurrentProcessing.start()` on a ConcurrentProcessing object. + ```py + import thread + + worker = thread.ConcurrentProcessing(function = my_func, dataset = [1, 2, 3]) + worker.start() + ``` + + + Exceptions Raised + + + + + + + + + is_alive + () -> bool + + + + This indicates whether the threads are still alive. + + Simply invoke `ConcurrentProcessing.is_alive()` on a ConcurrentProcessing object. + ```py + import thread + + worker = thread.ConcurrentProcessing(function = my_func, dataset = [1, 2, 3]) + worker.is_alive() + ``` + + + Exceptions Raised + + + + + + + + + get_return_values + () -> List[Data_Out] + + + + This halts the current thread execution until the processing completes and returns the value returned by `function`. + + Simply invoke `ConcurrentProcessing.get_return_values()` on a thread object. + ```py + import thread + + worker = thread.ConcurrentProcessing(function = my_func, dataset = [1, 2, 3]) + worker.get_return_values() + ``` + + + Exceptions Raised + + + + + + + + + + join + (timeout: float = None) -> None + + + + This halts the current thread execution until the `ConcurrentProcessing` completes or exceeds the timeout. + A None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `ConcurrentProcessing.join()` on a ConcurrentProcessing object. + ```py + import thread + worker = thread.ConcurrentProcessing(function = my_func, dataset = [1, 2, 3]) + worker.join(5) + worker.join() + ``` + + + Exceptions Raised + + + + + + + + + kill + (yielding: bool = False, timeout: float = 5) -> bool + + + + This schedules the threads to be killed. + + If yielding is True, it halts the current thread execution until the threads are killed or the timeout is exceeded. + Similar to `ConcurrentProcessing.join()`, a None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `ConcurrentProcessing.kill()` on a ConcurrentProcessing object. + ```py + import thread + + worker = thread.ConcurrentProcessing(function = my_func, dataset = [1, 2, 3]) + worker.kill(True, 10) + worker.kill(False) + worker.kill() + ``` + + + Exceptions Raised + + + + + This only schedules the threads to be killed, and does not immediately kill the threads. + + Meaning that if `function` has a long `time.wait()` call, it will only be killed after it moves onto the next line. + + + + diff --git a/docs/src/pages/docs/latest/configuration.mdx b/docs/src/pages/docs/latest/configuration.mdx new file mode 100644 index 0000000..cd2bd43 --- /dev/null +++ b/docs/src/pages/docs/latest/configuration.mdx @@ -0,0 +1,105 @@ +import { cn } from '@utils' +import { Callout } from 'nextra/components' + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + + + +# Configuration + +Documentation for configuration options. + + + +## Importing Settings + +This is how you import the settings. + +```py +from thread import Settings +``` + + +## Configuration Options + + + + + + GRACEFUL_EXIT_ENABLED + bool + (default: True) + + + + Graceful exit schedules non-daemonized threads to be killed with `Thread.kill()` when the program receives a `SIGINT` or `SIGTERM`. + + Simply invoke `Settings.set_graceful_exit(enabled)` to enable/disable graceful exit. + ```py + from thread import Settings + + Settings.get_graceful_exit(True) + Settings.get_graceful_exit(False) + ``` + + + This will only affect threads created from `thread.Thread`. + + + + + + + + VERBOSITY + VerbosityLevel + (default: 'normal') + + + + Adjust what is printed to the terminal. + + This feature is only available in `thread ^v1.0.1` + + + Simply invoke `Setting.set_verbosity(level)` to set the verbosity level. + ```py + from thread import Settings + + Settings.set_verbosity(1) + Settings.set_verbosity('normal') + ``` + + `Settings.VERBOSITY` can be compared against strings and integers and other `Verbosity` objects. + ```py + from thread.utils.config import Verbosity, Settings + + # Mapping + Verbosity(0) == Verbosity('quiet') + Verbosity(1) == Verbosity('normal') + Verbosity(2) == Verbosity('verbose') + + # Comparison + Verbosity(0) < 1 # True + Verbosity(1) < 'verbose' # True + Verbosity(2) == 'verbose' # True + ``` + + + diff --git a/docs/src/pages/docs/latest/exceptions.mdx b/docs/src/pages/docs/latest/exceptions.mdx new file mode 100644 index 0000000..1c5d83a --- /dev/null +++ b/docs/src/pages/docs/latest/exceptions.mdx @@ -0,0 +1,140 @@ +import { Callout } from 'nextra/components' + + + +# Exceptions + + Exceptions from Python's `threading` module are not included. For information please refer to Python's + [errors and exceptions page](https://docs.python.org/3/tutorial/errors.html). + + +Don't have the thread library? [See here](./installation) for installing thread + + + +### Suppressing Exceptions +When initializing a thread, you can parse a `suppress_errors` boolean. When a +exception is raised it is stored in the `Thread._errors` attribute. By default this +is set to false. + +For ignoring exceptions see [here](#ignoring-exceptions). + +```py +from thread import Thread + +def bad_function(): + raise RuntimeError('>:cc') + +# Suppress exceptions +thread1 = Thread( + target = bad_function, + suppress_errors = True +) +thread1.start() +thread1.join() +print(thread1._errors) # list[RuntimeError('>:cc')] +``` + + + +### Ignoring Exceptions +When initializing a thread, you can parse a `ignore_errors` sequence. When a exception is +raised it will not be stored within `Thread._errors` or raised. By default this is set as an empty +tuple. + +For suppressing exceptions see [here](#suppressing-exceptions). + +```py +from thread import Thread + +def bad_function(): + raise RuntimeError('>:cc') + +# Ignore error +thread2 = Thread( + target = bad_function, + ignore_errors = [RuntimeError] +) +thread2.start() +thread2.join() +print(thread2._errors) # list[] +``` + + + +### Suppressing and Ignoring Errors +It should be noted that these arguments are not exclusive of each other; you can both suppress and ignore errors. + +```py +# Non-ignored error with suppressing +thread4 = Thread( + target = bad_function, + ignore_errors = [ValueError], + suppress_errors = True +) +thread4.start() +thread4.join() +print(thread4._errors) # list[RuntimeError(':<<')] +``` + + + +## Exceptions + +The list of exceptions that can be thrown accompanied by common ways to resolve the error. + + + +### ThreadErrorBase + +This is the base exception class that all exceptions inherit from. + + + +### ThreadStillRunningError + +This exception is raised when you attempt to invoke a method that requires the thread to not be running, but the thread is currently running. +> You can wait for the thread to terminate with [**Thread.join()**](.thread-class#methods) before invoking the method
+> You can check if the thread is running with [**Thread.is_alive()**](thread-class#methods) before invoking the method + + + +### ThreadNotRunningError + +This exception is raised when you attempt to invoke a method that requires the thread to be running, but the thread is currently not running. +This is raised when you attempt to invoke a method which requires the thread to be running, but isn't +> You can run the thread with [**Thread.start()**](thread-class#methods) before invoking the method + + + +### ThreadNotInitializedError + +This exception is raised when you attempt to invoke a method that requires the thread to initialized, but the thread is not initialized. +> You can initialize and start the thread with [**Thread.start()**](thread-class#methods) before invoking the method + + + +### HookRuntimeError + +This is raised when hooks raise an exception. + +This exception conforms to the rules given when a thread is ran with suppressed or ignored arguments. + +Example traceback +```text +HookRuntimeError: Encountered runtime errors in hooks + +1. my_function +>>>>>>>>>> +/usr/home/proj/main.py:50 +ZeroDivisionError: +<<<<<<<<<< + +2. my_otherfunction +>>>>>>>>>> +ImportError: +<<<<<<<<<< +``` + + +[See here](./thread-class) for how to using the `thread.Thread` class! diff --git a/docs/src/pages/docs/latest/index.mdx b/docs/src/pages/docs/latest/index.mdx new file mode 100644 index 0000000..cdb6683 --- /dev/null +++ b/docs/src/pages/docs/latest/index.mdx @@ -0,0 +1,29 @@ +import { LightningBoltIcon, ExclamationTriangleIcon, GearIcon, MixIcon, CodeIcon } from '@radix-ui/react-icons' +import { Cards, Card } from 'nextra/components' + + + +# Introduction + +This is `thread`, a Python library which extends Python's built-in `threading` library. + + + +## Thread v2.0.2 + +You are viewing the documentation for the `v2.0.2` release.
+This is the most recent stable release of `thread`. + + + +## Quick Start + + + } /> + } /> + } /> + } /> + } /> + } /> + + diff --git a/docs/src/pages/docs/latest/installation.mdx b/docs/src/pages/docs/latest/installation.mdx new file mode 100644 index 0000000..5c3b929 --- /dev/null +++ b/docs/src/pages/docs/latest/installation.mdx @@ -0,0 +1,80 @@ +import { Tabs, Steps } from 'nextra/components' + + + +# Getting started with thread + +Thanks for using thread! I hope you find it useful for your projects. +Here's to you get started. + + + + +### Prerequisites + +* Python 3.9+ + + + +### Installing + +#### Published Release + +We recommend using a packaging manager like `pip` or `poetry`. + + + + ```sh + pip install thread + ``` + + + + ```sh + pipx install thread + ``` + + + + ```sh + poetry add thread + # OR + poetry install thread + ``` + + + + +#### Building From Source +```sh +# Clone this repository +git clone https://github.com/python-thread/thread + +# Install the upstream package +pip install -e . +``` + +#### Development + +```sh +# Clone this repository +git clone https://github.com/python-thread/thread + +# Install poetry +pip install poetry + +# Install dependencies +poetry install +``` + + + +### Importing thread + +Import thread into your .py file +```py +import thread +``` + + + diff --git a/docs/src/pages/docs/latest/thread-class.mdx b/docs/src/pages/docs/latest/thread-class.mdx new file mode 100644 index 0000000..8c38d79 --- /dev/null +++ b/docs/src/pages/docs/latest/thread-class.mdx @@ -0,0 +1,604 @@ +import { cn } from '@utils' +import { Tabs, Callout } from 'nextra/components' +import { Statuses, ThreadStatuses, ThreadExceptions } from '@components/typedata' + + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + +export function TabbedData({ type, keys = [] }) {return ( + + {keys.map((key, i) => ( + {type === 'status' ? ThreadStatuses[key] : ThreadExceptions[key]} + ))} + +)} + + + +# Thread Class Documentation + +Documentation for `thread.Thread`. + + +## Importing the class + +Here are some ways of importing the `Thread` class. + +```python +import thread +thread.Thread + +from thread import Thread +``` + + + +## Quick Start + +There are main 2 ways of initializing a thread. + +### On-Demand +You can create a simple thread by initializing `thread.Thread` and passing the `target` function. +```python +def my_target(): ... + +# Recommended way +my_thread = Thread( + target = my_target +) + +# OR +# Not the recommended way +my_thread = Thread(my_target) +``` + +A thread can be ran by invoking the `start()` method +```py +my_thread.start() +``` + +### Decoratored Function +You can decorate a function with `thread.threaded` which uses `thread.Thread`. +When the decorated function is invoked, it will automatically be ran in a new thread each time and return a `thread.Thread` object. + +```python +import thread + +@thread.threaded +def my_target(): ... + +worker = my_target() # thread.Thread() +``` + + + Did you know? + + Decorators can take in keyword arguments that change the behavior of the thread. + ```py + import thread + + @thread.threaded(name = 'my_thread', suppress_errors = True) + def my_target(): ... + ``` + + See the full list of arguments [here](#initialization) + + + + + +## Initialization + +This will cover the required and optional arguments initializing a thread. + +### Required + + + + + target + (*args, **kwargs) -> Data_Out + + + + This should be a function which takes in any arguments and returns anything. + + Any arguments and keyword arguments parsed to the `target` function can be parsed through `args` and `kwargs`. + `Data_Out` will be written to `Thread._returned_value` and can be accessed via `Thread.result` or `Thread.get_return_value()`. + + `target` can be parsed as the first argument to `Thread.__init__()`, although it is recommended to use only keyword arguments. + ```py + import thread + + thread.Thread(lambda x: x + 1) + thread.Thread(target = lambda x: x + 1) + ``` + + + Best Practices + + While you can use a lambda function, it is best to use a normal function for your LSP/Linter to infer types. + ```py + from thread import Thread + + worker = Thread(target = lambda x: x + 1) + worker.start() + worker.join() + + worker.result # This will be inferred as Unknown by your LSP/Linter + ``` + ```py + from thread import Thread + + def my_target(x: int) -> int: + return x + 1 + + worker = Thread(target = my_target) + worker.start() + worker.join() + + worker.result # This will be inferred as int + ``` + + + + + +### Optional + + + + + args + Sequence[Data_In] + (default: ()) + + + + This should be an iterable sequence of arguments parsed to the `target` function. + + For example: + ```py + import thread + + thread.Thread(target = my_target, args = ('foo', 'bar')) + thread.Thread(target = my_target, args = ['foo', 'bar']) + ``` + + + Args used in `Thread.__init__()` cannot offer static type checking. [Learn More](/learn/cautions/type-safety) + + + + + + + + kwargs + Mapping[str, Data_In] + (default: {}) + + + + This should be a mapping of kwargs passed to the `target` function. + + For example: + ```py + import thread + + thread.Thread(target = my_target, kwargs = {'foo': 'bar'}) + thread.Thread(target = my_target, kwargs = dict(foo = 'bar')) + ``` + + + Kwargs used in `Thread.__init__()` cannot offer static type checking. [Learn More](/learn/cautions/type-safety) + + + + + + + + ignore_errors + Sequence[type[Exception]] + (default: ()) + + + + This should be an iterable sequence of all types of exceptions to ignore. + Ignored errors are not propagated or logged to `Thread.errors`. + + The `Exception` class can be parsed to ignore all exceptions. + + For example: + ```py + import thread + + # This ignores all exceptions + # thread.errors = [] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, ignore_errors = (Exception,)) + + # This propagates the exception + # thread.errors = [RuntimeError] + # thread is killed + thread.Thread(target = raiseRuntimeError, ignore_errors = [TypeError]) + + # This ignores RuntimeError + # thread.errors = [] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, ignore_errors = [RuntimeError]) + ``` + + + Ignored exceptions may cause unintended skipped code execution. + ```py + import thread + + def my_target(): + print('Before raise') + raise Exception('oh no!') + print('After raise') + + thread.Thread(target = my_target, ignore_errors = (Exception,)) + thread.start() + + # > Before raise + # Program End + ``` + + + + + + + + suppress_errors + bool + (default: False) + + + + This should be a boolean indicating whether non-ignored exceptions will be propagated. + + + Non-ignored exceptions will be logged to `Thread.errors` without propagating. + + + ```py + import thread + + # Thread.errors = [RuntimeError] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, suppress_errors = True) + ``` + + + + + + + name + str + (default: None) + + + + This should be a string name of the thread. + + **_By default, a unique name is constructed of the form "Thread-N" where N is a small decimal number, or "Thread-N (target)" where "target" is target.\_\_name\_\_ if the target argument is specified._** + ~ Python threading docs. + + ```py + import thread + + thread.Thread(target = my_target, name = 'my_thread') + ``` + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + + + daemon + bool + (default: False) + + + + This should be a boolean indicating whether the thread should be a daemon thread. + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + + + *args / **kwargs + (default: None) + Any / Mapping[str, Any] + + + + These overloads are parsed to `threading.Thread.__init__()` + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + +## Properties + +### Attributes + +These are attributes of `thread.Thread` class. + + + + + result + Data_Out + + + + This is what is returned from the target function. + + + Exceptions Raised + + + + + + + + + status + thread.ThreadStatus + + + + This is the current status of the thread. + + + These Are The Possible Values + + + + + + + + + errors + List[Exception] + + + + This is the list of errors raised by the thread. + + Only non-ignored errors are logged to this list. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.errors + ``` + + + + + + + hooks + List[(Data_Out) -> Any | None] + + + + This is the list of hooks added to the thread. + + Hooks will be executed in the same order as they are added to the list. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.hooks + ``` + + + + + +### Methods + +These are methods of `thread.Thread` class. + + + + + start + () -> None + + + + This starts the thread. + + Simply invoke `Thread.start()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.start() + ``` + + + Exceptions Raised + + + + + + + + + is_alive + () -> bool + + + + This indicates whether the thread is still alive. + + Simply invoke `Thread.is_alive()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.is_alive() + ``` + + + Exceptions Raised + + + + + + + + + add_hook + ((Data_Out) -> Any | None) -> None + + + + This adds a hook to the thread. + + Hooks are invoked in the worker thread after the thread successfully completes, passing `Data_Out` as the first argument. + If a hook errors, the exception is recorded to `Thread.errors`, and is only propagated in the main thread when `Thread.join()`, `Thread.get_return_value()` or `Thread.result` is invoked. + + Simply invoke `Thread.add_hook(hook)` on a thread object. + ```py + import thread + + worker = thread.Thread(target = lambda x: x+1, args = (2,)) + worker.add_hook(lambda x: print(f'Worker Hook: {x}') + worker.start() + + # > Worker Hook: 3 + # Program ends + ``` + + + Exceptions Raised + + + + + + + + + get_return_value + () -> Data_Out + + + + This halts the current thread execution until the thread completes and returns the value returned by the target function. + + Simply invoke `Thread.get_return_value()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.get_return_value() + ``` + + + Exceptions Raised + + + + + + + + + join + (timeout: float = None) -> None + + + + This halts the current thread execution until the thread completes or exceeds the timeout. + A None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `Thread.join()` on a thread object. + ```py + import thread + worker = thread.Thread(target = my_target) + worker.join(5) + worker.join() + ``` + + + Exceptions Raised + + + + + + + + + kill + (yielding: bool = False, timeout: float = 5) -> bool + + + + This schedules the thread to be killed. + + If yielding is True, it halts the current thread execution until the thread is killed or the timeout is exceeded. + Similar to `Thread.join()`, a None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `Thread.kill()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.kill(True, 10) + worker.kill(False) + worker.kill() + ``` + + + Exceptions Raised + + + + + This only schedules the thread to be killed, and does not immediately kill the thread. + + Meaning that if your `target` has a long `time.wait()` call, it will only be killed after it moves onto the next line. + + + + diff --git a/docs/src/pages/docs/v1/_meta.json b/docs/src/pages/docs/v1/_meta.json new file mode 100644 index 0000000..b45327b --- /dev/null +++ b/docs/src/pages/docs/v1/_meta.json @@ -0,0 +1,9 @@ +{ + "index": "Introduction", + "installation": "Installation", + "configuration": "Configuration", + "thread-class": "Thread Class", + "parallel-processing": "Parallel Processing", + "exceptions": "Exceptions", + "command-line-interface": "Command Line Interface" +} diff --git a/docs/src/pages/docs/v1/command-line-interface.mdx b/docs/src/pages/docs/v1/command-line-interface.mdx new file mode 100644 index 0000000..65a4904 --- /dev/null +++ b/docs/src/pages/docs/v1/command-line-interface.mdx @@ -0,0 +1,226 @@ +import { Callout, Tabs, Steps } from 'nextra/components' + + + + + This documentation is still in development. + Please report any issues [here](https://github.com/python-thread/thread.ngjx.org/issues). + + + + +# CLI Documentation + +Commands Line Interface (CLI) Documentation. + + + +## Installation + + + +### Prerequisites + +* Python 3.9+ + + + +### Installing + +#### Published Release + +We recommend using a packaging manager like `pip` or `poetry`. + + + + ```sh + pip install thread-cli + ``` + + + + ```sh + pipx install thread-cli + ``` + + + + ```sh + poetry add thread-cli + # OR + poetry install thread-cli + ``` + + + + +#### Building From Source +```sh +# Clone this repository +git clone https://github.com/python-thread/thread-cli + +# Install the upstream package +pip install -e . +``` + +#### Development + +```sh +# Clone this repository +git clone https://github.com/python-thread/thread-cli + +# Install poetry +pip install poetry + +# Install dependencies +poetry install +``` + + + +### Running the CLI + +Open your terminal and run: +```sh +thread +``` + + + + + +## Getting started + +Try running the help command! +```sh +thread -h/--help +``` + + + +## Log levels + +Thread CLI uses the [python logging library.](https://docs.python.org/3/library/logging.html) + +| Name | Level | +| :-----: | :---: | +| NOTSET | 0 | +| DEBUG | 10 | +| INFO | 20 | +| WARN | 30 | +| ERROR | 40 | +| CRITICAL | 50 | + + + +## Commands + +List of commands + + + +### Documentation (thread docs) + +```sh +thread docs +``` +Ran with no arguments and options, this command will attempt to open your browser to this MD file! +If unable, will instead print out the link. + + + +### Help (thread help) + +```sh +thread help +``` +Ran with no arguments and options, this command will attempt to open your browser to the issue tracker! +If unable, will instead print out the link. + + + + +### Report (thread report) + +```sh +thread report +``` +Ran with no arguments and options, this command will attempt to open your browser to this MD file! +If unable, will instead print out the link. + + + + +### Configuration (thread config ...) + +```sh +thread config +``` +Coming soon. + + + +### Parallel Processing (thread process ...) + +```sh +thread process +``` +Invokes the [ParallelProcessing](/docs/parallel-processing#importing-the-class) class. + +#### Examples + + + + Say you wanted to generate a list of the square of every number from 0 to 999. + ```sh + thread process 'lambda x: x**2' '[ i for i in range(1000) ]' + ``` + + This is functionally equivalent to: + ```py + import thread + + # Start processing + worker = thread.ParallelProcessing( + function = lambda x: x**2, + dataset = [ i for i in range(1000) ] + ) + worker.start() + worker.join() + + # Write output to "./output.json" + with open('./output.json', 'w') as output: + output.write(worker.results) + ``` + + + + Say you have a `csv` file at `./dirty_data.csv` and want to parse every line into a `clean` function in `./clean_data.py`. + ```sh + thread process 'clean_data:clean' './dirty_data.csv' + ``` + + This is functionally equivalent to: + ```py + import thread + from .clean_data import clean + + # Read files + with open('./dataset.csv', 'r') as dataset: + data = dataset.readlines() + + # Starts processing + worker = thread.ParallelProcessing( + function = clean, + dataset = data, + ) + worker.start() + worker.join() + + # Writes to "output.json" + with open('./output.json', 'w') as output: + output.write(worker.results) + ``` + + + diff --git a/docs/src/pages/docs/v1/configuration.mdx b/docs/src/pages/docs/v1/configuration.mdx new file mode 100644 index 0000000..cd2bd43 --- /dev/null +++ b/docs/src/pages/docs/v1/configuration.mdx @@ -0,0 +1,105 @@ +import { cn } from '@utils' +import { Callout } from 'nextra/components' + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + + + +# Configuration + +Documentation for configuration options. + + + +## Importing Settings + +This is how you import the settings. + +```py +from thread import Settings +``` + + +## Configuration Options + + + + + + GRACEFUL_EXIT_ENABLED + bool + (default: True) + + + + Graceful exit schedules non-daemonized threads to be killed with `Thread.kill()` when the program receives a `SIGINT` or `SIGTERM`. + + Simply invoke `Settings.set_graceful_exit(enabled)` to enable/disable graceful exit. + ```py + from thread import Settings + + Settings.get_graceful_exit(True) + Settings.get_graceful_exit(False) + ``` + + + This will only affect threads created from `thread.Thread`. + + + + + + + + VERBOSITY + VerbosityLevel + (default: 'normal') + + + + Adjust what is printed to the terminal. + + This feature is only available in `thread ^v1.0.1` + + + Simply invoke `Setting.set_verbosity(level)` to set the verbosity level. + ```py + from thread import Settings + + Settings.set_verbosity(1) + Settings.set_verbosity('normal') + ``` + + `Settings.VERBOSITY` can be compared against strings and integers and other `Verbosity` objects. + ```py + from thread.utils.config import Verbosity, Settings + + # Mapping + Verbosity(0) == Verbosity('quiet') + Verbosity(1) == Verbosity('normal') + Verbosity(2) == Verbosity('verbose') + + # Comparison + Verbosity(0) < 1 # True + Verbosity(1) < 'verbose' # True + Verbosity(2) == 'verbose' # True + ``` + + + diff --git a/docs/src/pages/docs/v1/exceptions.mdx b/docs/src/pages/docs/v1/exceptions.mdx new file mode 100644 index 0000000..1c5d83a --- /dev/null +++ b/docs/src/pages/docs/v1/exceptions.mdx @@ -0,0 +1,140 @@ +import { Callout } from 'nextra/components' + + + +# Exceptions + + Exceptions from Python's `threading` module are not included. For information please refer to Python's + [errors and exceptions page](https://docs.python.org/3/tutorial/errors.html). + + +Don't have the thread library? [See here](./installation) for installing thread + + + +### Suppressing Exceptions +When initializing a thread, you can parse a `suppress_errors` boolean. When a +exception is raised it is stored in the `Thread._errors` attribute. By default this +is set to false. + +For ignoring exceptions see [here](#ignoring-exceptions). + +```py +from thread import Thread + +def bad_function(): + raise RuntimeError('>:cc') + +# Suppress exceptions +thread1 = Thread( + target = bad_function, + suppress_errors = True +) +thread1.start() +thread1.join() +print(thread1._errors) # list[RuntimeError('>:cc')] +``` + + + +### Ignoring Exceptions +When initializing a thread, you can parse a `ignore_errors` sequence. When a exception is +raised it will not be stored within `Thread._errors` or raised. By default this is set as an empty +tuple. + +For suppressing exceptions see [here](#suppressing-exceptions). + +```py +from thread import Thread + +def bad_function(): + raise RuntimeError('>:cc') + +# Ignore error +thread2 = Thread( + target = bad_function, + ignore_errors = [RuntimeError] +) +thread2.start() +thread2.join() +print(thread2._errors) # list[] +``` + + + +### Suppressing and Ignoring Errors +It should be noted that these arguments are not exclusive of each other; you can both suppress and ignore errors. + +```py +# Non-ignored error with suppressing +thread4 = Thread( + target = bad_function, + ignore_errors = [ValueError], + suppress_errors = True +) +thread4.start() +thread4.join() +print(thread4._errors) # list[RuntimeError(':<<')] +``` + + + +## Exceptions + +The list of exceptions that can be thrown accompanied by common ways to resolve the error. + + + +### ThreadErrorBase + +This is the base exception class that all exceptions inherit from. + + + +### ThreadStillRunningError + +This exception is raised when you attempt to invoke a method that requires the thread to not be running, but the thread is currently running. +> You can wait for the thread to terminate with [**Thread.join()**](.thread-class#methods) before invoking the method
+> You can check if the thread is running with [**Thread.is_alive()**](thread-class#methods) before invoking the method + + + +### ThreadNotRunningError + +This exception is raised when you attempt to invoke a method that requires the thread to be running, but the thread is currently not running. +This is raised when you attempt to invoke a method which requires the thread to be running, but isn't +> You can run the thread with [**Thread.start()**](thread-class#methods) before invoking the method + + + +### ThreadNotInitializedError + +This exception is raised when you attempt to invoke a method that requires the thread to initialized, but the thread is not initialized. +> You can initialize and start the thread with [**Thread.start()**](thread-class#methods) before invoking the method + + + +### HookRuntimeError + +This is raised when hooks raise an exception. + +This exception conforms to the rules given when a thread is ran with suppressed or ignored arguments. + +Example traceback +```text +HookRuntimeError: Encountered runtime errors in hooks + +1. my_function +>>>>>>>>>> +/usr/home/proj/main.py:50 +ZeroDivisionError: +<<<<<<<<<< + +2. my_otherfunction +>>>>>>>>>> +ImportError: +<<<<<<<<<< +``` + + +[See here](./thread-class) for how to using the `thread.Thread` class! diff --git a/docs/src/pages/docs/v1/index.mdx b/docs/src/pages/docs/v1/index.mdx new file mode 100644 index 0000000..63b7a0d --- /dev/null +++ b/docs/src/pages/docs/v1/index.mdx @@ -0,0 +1,29 @@ +import { LightningBoltIcon, ExclamationTriangleIcon, GearIcon, MixIcon, CodeIcon } from '@radix-ui/react-icons' +import { Cards, Card } from 'nextra/components' + + + +# Introduction + +This is `thread`, a Python library which extends Python's built-in `threading` library. + + + +## Thread v1.1.1 + +You are viewing the documentation for the `v1.1.1` release.
+This is the most recent stable release of `thread`. + + + +## Quick Start + + + } /> + } /> + } /> + } /> + } /> + } /> + + diff --git a/docs/src/pages/docs/v1/installation.mdx b/docs/src/pages/docs/v1/installation.mdx new file mode 100644 index 0000000..5c3b929 --- /dev/null +++ b/docs/src/pages/docs/v1/installation.mdx @@ -0,0 +1,80 @@ +import { Tabs, Steps } from 'nextra/components' + + + +# Getting started with thread + +Thanks for using thread! I hope you find it useful for your projects. +Here's to you get started. + + + + +### Prerequisites + +* Python 3.9+ + + + +### Installing + +#### Published Release + +We recommend using a packaging manager like `pip` or `poetry`. + + + + ```sh + pip install thread + ``` + + + + ```sh + pipx install thread + ``` + + + + ```sh + poetry add thread + # OR + poetry install thread + ``` + + + + +#### Building From Source +```sh +# Clone this repository +git clone https://github.com/python-thread/thread + +# Install the upstream package +pip install -e . +``` + +#### Development + +```sh +# Clone this repository +git clone https://github.com/python-thread/thread + +# Install poetry +pip install poetry + +# Install dependencies +poetry install +``` + + + +### Importing thread + +Import thread into your .py file +```py +import thread +``` + + + diff --git a/docs/src/pages/docs/v1/parallel-processing.mdx b/docs/src/pages/docs/v1/parallel-processing.mdx new file mode 100644 index 0000000..5681daf --- /dev/null +++ b/docs/src/pages/docs/v1/parallel-processing.mdx @@ -0,0 +1,636 @@ +import { cn } from '@utils' +import { Callout, Steps, Tabs } from 'nextra/components' +import { CheckIcon, Cross2Icon, DotFilledIcon } from '@radix-ui/react-icons' +import { Statuses, ThreadStatuses, ThreadExceptions } from '@components/typedata' + + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + +export function TabbedData({ type, keys = [] }) {return ( + + {keys.map((key, i) => ( + {type === 'status' ? ThreadStatuses[key] : ThreadExceptions[key]} + ))} + +)} + +export function Text({ children, className, ...props }) {return ( +

+ {children} +

+)} + + + +# Parallel Processing Documentation + +Documentation for `thread.ParallelProcessing`. + + + +## Why Parallel Processing? + +Parallel Processing is used to speed up the data processing of large datasets by splitting workflow into multiple threads. + +Traditionally, this is achieved with a for loop. +```py +my_dataset = [] # Large dataset +def my_data_processor(Data_In) -> Data_Out: + ... + +processed_data = [] +for data in my_dataset: + processed_data = my_data_processor(data) + +print(processed_data) # Processed data +``` + +While this is simple and decent enough for a small dataset, this is not ideal for large datasets, especially when runtime matters. +By using `thread.ParallelProcessing` we can split the large dataset into multiple chunks and process each chunk simultaneously. + + + Parallel Processing is not True Parallel. + Learn more [here](/learn/cautions/parallelism). + + + + +## How It Works + + + + ### Determine Thread Count + + The number of threads used is determined by the following formula: + ```py + thread_count = min(max_threads, len(dataset)) + ``` + + This ensures that the number of threads used will always be less than or equal to the length of the dataset, + which prevents redundant threads to be initialized for small datasets. + + ### Chunking + + The dataset is split as evenly as possible into chunks, preserving the order of data. + Chunks follow the structure: + ```py + chunks = [[1, 2, 3, ...], [50, 51, 52, ...], ...] + ``` + + Let $N$ be the length of the dataset + and let $M$ be the number of threads. + + The individual chunk lengths decrease down the chunk list. + The length of each chunk will can be either $\lfloor{N/M + 0.5}\rfloor + 1$ or $N/M$. + + + The chunks generated are not generators, meaning they will exist alongside `dataset` and take up memory. + This will change to more memory-efficient generators in `v1.0.1`. + + + + + + +## Importing the class + +```py +import thread +thread.ParallelProcessing + +from thread import ParallelProcessing +``` + + + +## Quick Start + +There are main 2 ways of initializing a parallel processing object. + +### On-Demand +You can create a simple process by initializing `thread.ParallelProcessing` and passing the `function` and `dataset`. +```py +def my_data_processor(Data_In) -> Data_Out: ... + +# Recommended way +my_processor = ParallelProcessing( + function = my_data_processor, + dataset = [i in range(0, n)] +) + +# OR +# Not the recommended way +my_processor = ParallelProcessing(my_data_processor, [i in range(0, n)]) +``` + +It can be ran by invoking the `start()` method +```py +my_processor.start() +``` + +### Decorated Function +You can decorate a function with `thread.processor` which uses `thread.ParallelProcessing`. +When the decorated function is invoked, it will automatically be ran in a new thread each time and return a `thread.ParallelProcessing` object. + +A decorated function's signature is overwritten, replacing the first argument to require a sequence of the `Data_In` type. + +```python +import thread + +@thread.processor +def my_target(Data_In, arg1, arg2, *, arg3: bool = False) -> Data_Out: ... + +dataset: Sequence[type[Data_In]] +worker = my_target(dataset, arg1, arg2, arg3 = True) # thread.ParallelProcessing() +``` + + + Did you know? + + Decorators can take in keyword arguments that change the behavior of the thread. + ```py + import thread + + @thread.processor(name = 'my_thread', suppress_errors = True) + def my_target(): ... + ``` + + See the full list of arguments [here](#initialization) + + + + +### Compatibility +Data processing is usually achieved with external libraries like `pandas`. +However, there is no native support for dataset objects without both of the **\_\_len\_\_()** and **\_\_getitem\_\_()** methods. + +#### This is primarily because: +* The `__len__()` method is used to determine the length of the dataset using the `len(dataset)` method. +* The `__getitem__()` method is used to access the dataset using the `dataset[index]` method. + +This is also why `thread.ParallelProcessing` does not support `Generator` objects or `Iterator` objects. + +#### Work-arounds +The following outlines how you may use `thread.ParallelProcessing` with these libraries. + + + + + thread v1.0.1 and below + + + + We recommend first converting the dataset to a supported dataset type like a `list` or `tuple` before using `thread.ParallelProcessing`. + ```py + from thread import ParallelProcessing + + myDataFrame: ... + + compatibleDataset = [ ... ] # Convert to a supported dataset type + + process = ParallelProcessing(function = lambda x: x + 1, dataset = compatibleDataset) + ``` + + + + + + + thread v1.1.0 and above + + + + We now non-natively support all most dataset types. + + We stopped explicitly supporting the `Sequence` type and instead now use `Protocol`s to check if `__len__()` or `__getitem__()` are implemented. + We also added context-specific optional/required `_length` and `_get_value` arguments when initializing `thread.ParallelProcessing`. + + You can find out more about the valid __length_ and _get_value_ arguments [here](#optional). + + ##### Mapping + Has `__len__` and `__getitem__` + Does not have `__len__` and `__getitem__` + Does not have `__len__` and has `__getitem__` + Has `__len__` and does not have `__getitem__` + +
+ **_length** Required + **_get_value** Required +
+ + ##### Example + Now you do not have to pre-convert the dataset to a supported dataset type. + + ```py + from thread import ParallelProcessing + + myDataFrame: ... + + process = ParallelProcessing( + function = lambda x: x + 1, + dataset = myDataFrame, + _length = myDataFrame.getLength(), + _get_value = lambda d, i: d.getIndex(i) + ) + ``` + + + Static type checking will reflect the whether `_length` and `_get_value` are required or optional depending on the dataset type. + +
+
+ + + +## Initialization + +This will cover the required and optional arguments initializing a parallel process. + +### Required + + + + + function + (Data_In, *args, **kwargs) -> Data_Out + + + + This should be a function that takes in a data from the `dataset` with/without overloads and returns Data_Out. + + Arguments and keyword arguments excluding the first argument parsed to the `function` can be parsed through `args` and `kwargs`. + `Data_Out` will be written to the generated thread's `Thread._returned_value` and can be accessed via `ParallelProcessing.results` or `ParallelProcessing.get_return_values()`. + + `function` can be parsed as the first argument to `ParallelProcessing.__init__()`, although it is recommended to use only keyword arguments. + ```py + import thread + + thread.ParallelProcessing(lambda x: x + 1, []) + thread.ParallelProcessing(function = lambda x: x + 1, dataset = []) + ``` + + + Best Practices + + While you can use a lambda function, it is best to use a normal function for your LSP/Linter to infer types. + ```py + from thread import ParallelProcessing + + worker = ParallelProcessing(function = lambda x: x + 1, dataset = [1, 2, 3]) + worker.start() + worker.join() + + worker.results # This will be inferred as Unknown by your LSP/Linter + ``` + ```py + from thread import ParallelProcessing + + def my_target(x: int) -> int: + return x + 1 + + worker = ParallelProcessing(function = my_target, dataset = [1, 2, 3]) + worker.start() + worker.join() + + worker.results # This will be inferred as a list[int] + ``` + + + + + + + + dataset + Dataset[Data_In] + + + + This should be an interable sequence of data parsed as the first argument to `function`. + + + This can be of any type if you pass the according `_length` and `_get_value` arguments in **v1.1.0+**. See [here](#compatibility) for more details. + + + ```py + import thread + + def my_function(x: int) -> int: + ... + + thread.ParallelProcessing(function = my_function, dataset = [1, 2, 3]) + thread.ParallelProcessing(function = my_function, dataset = ('hi')) # This will be highlighted by your LSP/Linter + ``` + + + + +### Optional + + + + max_threads + int + (default: 8) + + + + This is the maximum number of threads that will be created by `thread.ParallelProcessing`. + + + This value is not always the number of threads created. See [here](#determine-thread-count) for more details. + + + + + + + + _get_value + (Dataset, int) -> Data_Out + (default: None) + + + + This is only available in v1.1.0+ + This can be a **required** argument depending on the `dataset` type. See [here](#compatibility) for more details. + + This is invoked every time a value is retrieved from the dataset. + ```py + from thread import ParallelProcessing + + dataset: MyDatasetType = ... + + ParallelProcessing( + function = my_function, + dataset = dataset, + _get_value = lambda d, index: d[index], + ) + + ParallelProcessing( + function = my_function, + dataset = dataset, + _get_value = lambda d, index: d.getIndex(index), + ) + ``` + + + + + + + _length + int | (Dataset) -> Data_In + (default: dataset.__len__) + + + + This is only available in v1.1.0+ + This can be a **required** argument depending on the `dataset` type. See [here](#compatibility) for more details. + + This is the length of the dataset that will be processed by `thread.ParallelProcessing`. + + This is invoked only once when `thread.ParallelProcessing` is initialized. + ```py + from thread import ParallelProcessing + + dataset: MyDatasetType = ... + + ParallelProcessing( + function = my_function, + dataset = dataset, + _length = 5, + ) + + def get_length(dataset: MyDatasetType) -> int: ... + ParallelProcessing( + function = my_function, + dataset = dataset, + _length = get_length, + ) + ``` + + + + + + + *args / **kwargs + (default: None) + Any / Mapping[str, Any] + + + + These overloads are parsed to `thread.Thread.__init__()`, then `threading.Thread.__init__()`. + + + If kwargs contain an argument named `args`, then it will automatically be removed from kwargs and joined with `ParallelProcessing.__init__().args`. + + + See [`thread.Thread` documentation](/docs/thread-class#optional) for more details.
+ See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. +
+
+ + + +## Properties + +### Attributes + +These are attributes of `thread.ParallelProcessing` class. + + + + + results + List[Data_Out] + + + + This is a list of the data that was returned by the `function` in `thread.ParallelProcessing`. + + + + + + + + + + status + thread.ThreadStatus + + + + This is the current status of the thread. + + + These Are The Possible Values + + + + + + + +### Methods + +These are methods of `thread.ParallelProcessing` class. + + + + + start + () -> None + + + + This starts the processing. + + Simply invoke `ParallelProcessing.start()` on a ParallelProcessing object. + ```py + import thread + + worker = thread.ParallelProcessing(function = my_func, dataset = [1, 2, 3]) + worker.start() + ``` + + + Exceptions Raised + + + + + + + + + is_alive + () -> bool + + + + This indicates whether the threads are still alive. + + Simply invoke `ParallelProcessing.is_alive()` on a ParallelProcessing object. + ```py + import thread + + worker = thread.ParallelProcessing(function = my_func, dataset = [1, 2, 3]) + worker.is_alive() + ``` + + + Exceptions Raised + + + + + + + + + get_return_values + () -> List[Data_Out] + + + + This halts the current thread execution until the processing completes and returns the value returned by `function`. + + Simply invoke `ParallelProcessing.get_return_values()` on a thread object. + ```py + import thread + + worker = thread.ParallelProcessing(function = my_func, dataset = [1, 2, 3]) + worker.get_return_values() + ``` + + + Exceptions Raised + + + + + + + + + + join + (timeout: float = None) -> bool + + + + This halts the current thread execution until the `ParallelProcessing` completes or exceeds the timeout. + + A None value for timeout will have the same effect as passing `float("inf")` as a timeout. + The boolean returned by `ParallelProcessing.join()` is `True` if the threads complete within the timeout and `False` if otherwise. + + Simply invoke `ParallelProcessing.join()` on a ParallelProcessing object. + ```py + import thread + worker = thread.ParallelProcessing(function = my_func, dataset = [1, 2, 3]) + worker.join(5) + worker.join() + ``` + + + Exceptions Raised + + + + + + + + + kill + (yielding: bool = False, timeout: float = 5) -> bool + + + + This schedules the threads to be killed. + + If yielding is True, it halts the current thread execution until the threads are killed or the timeout is exceeded. + Similar to `ParallelProcessing.join()`, a None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `ParallelProcessing.kill()` on a ParallelProcessing object. + ```py + import thread + + worker = thread.ParallelProcessing(function = my_func, dataset = [1, 2, 3]) + worker.kill(True, 10) + worker.kill(False) + worker.kill() + ``` + + + Exceptions Raised + + + + + This only schedules the threads to be killed, and does not immediately kill the threads. + + Meaning that if `function` has a long `time.wait()` call, it will only be killed after it moves onto the next line. + + + + diff --git a/docs/src/pages/docs/v1/thread-class.mdx b/docs/src/pages/docs/v1/thread-class.mdx new file mode 100644 index 0000000..159fbd0 --- /dev/null +++ b/docs/src/pages/docs/v1/thread-class.mdx @@ -0,0 +1,606 @@ +import { cn } from '@utils' +import { Tabs, Callout } from 'nextra/components' +import { Statuses, ThreadStatuses, ThreadExceptions } from '@components/typedata' + + +export function ArgumentWrapper({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentBody({ children, className, ...props }) {return ( +
+ {children} +
+)} + +export function ArgumentExtra({ children, className, ...props }) {return ( + + {children} + +)} + +export function TabbedData({ type, keys = [] }) {return ( + + {keys.map((key, i) => ( + {type === 'status' ? ThreadStatuses[key] : ThreadExceptions[key]} + ))} + +)} + + + +# Thread Class Documentation + +Documentation for `thread.Thread`. + + +## Importing the class + +Here are some ways of importing the `Thread` class. + +```python +import thread +thread.Thread + +from thread import Thread +``` + + + +## Quick Start + +There are main 2 ways of initializing a thread. + +### On-Demand +You can create a simple thread by initializing `thread.Thread` and passing the `target` function. +```python +def my_target(): ... + +# Recommended way +my_thread = Thread( + target = my_target +) + +# OR +# Not the recommended way +my_thread = Thread(my_target) +``` + +A thread can be ran by invoking the `start()` method +```py +my_thread.start() +``` + +### Decoratored Function +You can decorate a function with `thread.threaded` which uses `thread.Thread`. +When the decorated function is invoked, it will automatically be ran in a new thread each time and return a `thread.Thread` object. + +```python +import thread + +@thread.threaded +def my_target(): ... + +worker = my_target() # thread.Thread() +``` + + + Did you know? + + Decorators can take in keyword arguments that change the behavior of the thread. + ```py + import thread + + @thread.threaded(name = 'my_thread', suppress_errors = True) + def my_target(): ... + ``` + + See the full list of arguments [here](#initialization) + + + + + +## Initialization + +This will cover the required and optional arguments initializing a thread. + +### Required + + + + + target + (*args, **kwargs) -> Data_Out + + + + This should be a function which takes in any arguments and returns anything. + + Any arguments and keyword arguments parsed to the `target` function can be parsed through `args` and `kwargs`. + `Data_Out` will be written to `Thread._returned_value` and can be accessed via `Thread.result` or `Thread.get_return_value()`. + + `target` can be parsed as the first argument to `Thread.__init__()`, although it is recommended to use only keyword arguments. + ```py + import thread + + thread.Thread(lambda x: x + 1) + thread.Thread(target = lambda x: x + 1) + ``` + + + Best Practices + + While you can use a lambda function, it is best to use a normal function for your LSP/Linter to infer types. + ```py + from thread import Thread + + worker = Thread(target = lambda x: x + 1) + worker.start() + worker.join() + + worker.result # This will be inferred as Unknown by your LSP/Linter + ``` + ```py + from thread import Thread + + def my_target(x: int) -> int: + return x + 1 + + worker = Thread(target = my_target) + worker.start() + worker.join() + + worker.result # This will be inferred as int + ``` + + + + + +### Optional + + + + + args + Sequence[Data_In] + (default: ()) + + + + This should be an iterable sequence of arguments parsed to the `target` function. + + For example: + ```py + import thread + + thread.Thread(target = my_target, args = ('foo', 'bar')) + thread.Thread(target = my_target, args = ['foo', 'bar']) + ``` + + + Args used in `Thread.__init__()` cannot offer static type checking. [Learn More](/learn/cautions/type-safety) + + + + + + + + kwargs + Mapping[str, Data_In] + (default: {}) + + + + This should be a mapping of kwargs passed to the `target` function. + + For example: + ```py + import thread + + thread.Thread(target = my_target, kwargs = {'foo': 'bar'}) + thread.Thread(target = my_target, kwargs = dict(foo = 'bar')) + ``` + + + Kwargs used in `Thread.__init__()` cannot offer static type checking. [Learn More](/learn/cautions/type-safety) + + + + + + + + ignore_errors + Sequence[type[Exception]] + (default: ()) + + + + This should be an iterable sequence of all types of exceptions to ignore. + Ignored errors are not propagated or logged to `Thread.errors`. + + The `Exception` class can be parsed to ignore all exceptions. + + For example: + ```py + import thread + + # This ignores all exceptions + # thread.errors = [] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, ignore_errors = (Exception,)) + + # This propagates the exception + # thread.errors = [RuntimeError] + # thread is killed + thread.Thread(target = raiseRuntimeError, ignore_errors = [TypeError]) + + # This ignores RuntimeError + # thread.errors = [] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, ignore_errors = [RuntimeError]) + ``` + + + Ignored exceptions may cause unintended skipped code execution. + ```py + import thread + + def my_target(): + print('Before raise') + raise Exception('oh no!') + print('After raise') + + thread.Thread(target = my_target, ignore_errors = (Exception,)) + thread.start() + + # > Before raise + # Program End + ``` + + + + + + + + suppress_errors + bool + (default: False) + + + + This should be a boolean indicating whether non-ignored exceptions will be propagated. + + + Non-ignored exceptions will be logged to `Thread.errors` without propagating. + + + ```py + import thread + + # Thread.errors = [RuntimeError] + # hooks begin execution + thread.Thread(target = raiseRuntimeError, suppress_errors = True) + ``` + + + + + + + name + str + (default: None) + + + + This should be a string name of the thread. + + **_By default, a unique name is constructed of the form "Thread-N" where N is a small decimal number, or "Thread-N (target)" where "target" is target.\_\_name\_\_ if the target argument is specified._** + ~ Python threading docs. + + ```py + import thread + + thread.Thread(target = my_target, name = 'my_thread') + ``` + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + + + daemon + bool + (default: False) + + + + This should be a boolean indicating whether the thread should be a daemon thread. + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + + + *args / **kwargs + (default: None) + Any / Mapping[str, Any] + + + + These overloads are parsed to `threading.Thread.__init__()` + + See [`threading` documentation](https://docs.python.org/3/library/threading.html#threading.Thread) for more details. + + + + + +## Properties + +### Attributes + +These are attributes of `thread.Thread` class. + + + + + result + Data_Out + + + + This is what is returned from the target function. + + + Exceptions Raised + + + + + + + + + status + thread.ThreadStatus + + + + This is the current status of the thread. + + + These Are The Possible Values + + + + + + + + + errors + List[Exception] + + + + This is the list of errors raised by the thread. + + Only non-ignored errors are logged to this list. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.errors + ``` + + + + + + + hooks + List[(Data_Out) -> Any | None] + + + + This is the list of hooks added to the thread. + + Hooks will be executed in the same order as they are added to the list. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.hooks + ``` + + + + + +### Methods + +These are methods of `thread.Thread` class. + + + + + start + () -> None + + + + This starts the thread. + + Simply invoke `Thread.start()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.start() + ``` + + + Exceptions Raised + + + + + + + + + is_alive + () -> bool + + + + This indicates whether the thread is still alive. + + Simply invoke `Thread.is_alive()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.is_alive() + ``` + + + Exceptions Raised + + + + + + + + + add_hook + ((Data_Out) -> Any | None) -> None + + + + This adds a hook to the thread. + + Hooks are invoked in the worker thread after the thread successfully completes, passing `Data_Out` as the first argument. + If a hook errors, the exception is recorded to `Thread.errors`, and is only propagated in the main thread when `Thread.join()`, `Thread.get_return_value()` or `Thread.result` is invoked. + + Simply invoke `Thread.add_hook(hook)` on a thread object. + ```py + import thread + + worker = thread.Thread(target = lambda x: x+1, args = (2,)) + worker.add_hook(lambda x: print(f'Worker Hook: {x}') + worker.start() + + # > Worker Hook: 3 + # Program ends + ``` + + + Exceptions Raised + + + + + + + + + get_return_value + () -> Data_Out + + + + This halts the current thread execution until the thread completes and returns the value returned by the target function. + + Simply invoke `Thread.get_return_value()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.get_return_value() + ``` + + + Exceptions Raised + + + + + + + + + join + (timeout: float = None) -> bool + + + + This halts the current thread execution until the thread completes or exceeds the timeout. + + A None value for timeout will have the same effect as passing `float("inf")` as a timeout. + The boolean returned by `Thread.join()` is `True` if the thread completed within the timeout and `False` if otherwise. + + Simply invoke `Thread.join()` on a thread object. + ```py + import thread + worker = thread.Thread(target = my_target) + worker.join(5) + worker.join() + ``` + + + Exceptions Raised + + + + + + + + + kill + (yielding: bool = False, timeout: float = 5) -> bool + + + + This schedules the thread to be killed. + + If yielding is True, it halts the current thread execution until the thread is killed or the timeout is exceeded. + Similar to `Thread.join()`, a None value for timeout will have the same effect as passing `float("inf")` as a timeout. + + Simply invoke `Thread.kill()` on a thread object. + ```py + import thread + + worker = thread.Thread(target = my_target) + worker.kill(True, 10) + worker.kill(False) + worker.kill() + ``` + + + Exceptions Raised + + + + + This only schedules the thread to be killed, and does not immediately kill the thread. + + Meaning that if your `target` has a long `time.wait()` call, it will only be killed after it moves onto the next line. + + + + diff --git a/docs/src/pages/index.mdx b/docs/src/pages/index.mdx new file mode 100644 index 0000000..ea55409 --- /dev/null +++ b/docs/src/pages/index.mdx @@ -0,0 +1,70 @@ +--- +title: Thread v2.0.2 +--- + +import Link from 'next/link' + +import { ChevronDownIcon, ArrowRightIcon } from '@radix-ui/react-icons' +import { PackageManager } from '@components/typewriter' + + + +export function SmoothScroll({ scrollTo, children, ...props }) {return ( + +)} + +export function Feature({ title, description, version = false, href = false, ...props }) {return ( +
+ { version ?

{version}

:
} +

{title}

+

{description}

+ {href && ( + + Read More + + + )} +
+)} + + + + +
+ + {/* Section 1 */} +
+
+

Thread - v2.0.2

+
+ + Get Started + +
+ + + +
+ + + {/* Section 2 */} +
+
+

Features

+
+ + +
+
+
+ +
+ diff --git a/docs/src/pages/learn/_meta.json b/docs/src/pages/learn/_meta.json new file mode 100644 index 0000000..75ec243 --- /dev/null +++ b/docs/src/pages/learn/_meta.json @@ -0,0 +1,15 @@ +{ + "index": { + "title": "Introduction" + }, + "examples": "", + "python_thread": { + "title": "Learn Python Threading" + }, + "thread": { + "title": "Learn Thread" + }, + "cautions": { + "title": "Cautions" + } +} diff --git a/docs/src/pages/learn/cautions.mdx b/docs/src/pages/learn/cautions.mdx new file mode 100644 index 0000000..f601487 --- /dev/null +++ b/docs/src/pages/learn/cautions.mdx @@ -0,0 +1,12 @@ +import { LightningBoltIcon, GridIcon } from '@radix-ui/react-icons' +import { Card, Cards } from 'nextra/components' + +# Cautions + +These are some what should be considered when using **thread**. + + + } /> + } /> + + diff --git a/docs/src/pages/learn/cautions/_meta.json b/docs/src/pages/learn/cautions/_meta.json new file mode 100644 index 0000000..8a766fa --- /dev/null +++ b/docs/src/pages/learn/cautions/_meta.json @@ -0,0 +1,3 @@ +{ + "type-safety": "Type Safety" +} diff --git a/docs/src/pages/learn/cautions/parallelism.mdx b/docs/src/pages/learn/cautions/parallelism.mdx new file mode 100644 index 0000000..9d410f0 --- /dev/null +++ b/docs/src/pages/learn/cautions/parallelism.mdx @@ -0,0 +1,47 @@ +import { Callout } from 'nextra/components' + +# Parallelism + + + This is a Python intended default behaviour. + + +### The Scope + +At present, this affects everything in **thread**. + +### Why Is This So? + +This is due to Python's **GIL** (Global Interpreter Lock). +At present, we only extend the featureset for the built-in `threading` library which means we are limited and bound by the **GIL**. + +Check out this video by [Tech With Tim](https://www.youtube.com/@TechWithTim) for a more in-depth explanation: + +
+