From 5bdd704e444b9156524f8a7dd2cf55534bd4fcfb Mon Sep 17 00:00:00 2001 From: Mark Redeman Date: Fri, 29 Aug 2025 12:16:16 +0200 Subject: [PATCH 01/75] Initial UI setup for Geti Inspect Mainly based on the UI files and architecture from [Geti Tune](https://github.com/open-edge-platform/training_extensions/tree/develop/ui) --- app/ui/.dockerignore | 10 + app/ui/.editorconfig | 30 + app/ui/.gitignore | 25 + app/ui/.nvmrc | 1 + app/ui/.prettierignore | 7 + app/ui/.prettierrc | 34 + app/ui/Dockerfile | 68 + app/ui/README.md | 41 + app/ui/eslint.config.js | 71 + app/ui/nginx.conf | 29 + app/ui/package-lock.json | 16726 ++++++++++++++++ app/ui/package.json | 100 + app/ui/playwright.config.ts | 49 + app/ui/public/mockServiceWorker.js | 336 + app/ui/rsbuild.config.ts | 45 + app/ui/src/api/client.ts | 10 + app/ui/src/api/openapi-spec.d.ts | 2503 +++ app/ui/src/api/openapi-spec.json | 1739 ++ app/ui/src/api/utils.ts | 29 + app/ui/src/assets/background.png | Bin 0 -> 187450 bytes app/ui/src/assets/graph.svg | 52 + app/ui/src/assets/icons/build-icon.svg | 6 + app/ui/src/assets/icons/camera-off.svg | 6 + app/ui/src/assets/icons/camera.svg | 5 + .../icons/double-chevron-right-icon.svg | 4 + app/ui/src/assets/icons/error-icon.svg | 5 + .../src/assets/icons/folder-arrow-right.svg | 3 + app/ui/src/assets/icons/genicam.svg | 6 + app/ui/src/assets/icons/images-folder.svg | 9 + app/ui/src/assets/icons/ip-camera.svg | 9 + app/ui/src/assets/icons/live-feed-icon.svg | 4 + app/ui/src/assets/icons/mqtt.svg | 10 + app/ui/src/assets/icons/ros.svg | 18 + app/ui/src/assets/icons/success-icon.svg | 4 + app/ui/src/assets/icons/three-dots-circle.svg | 3 + app/ui/src/assets/icons/video-file.svg | 9 + app/ui/src/assets/icons/webcam.svg | 9 + app/ui/src/assets/icons/webhook.svg | 3 + .../src/assets/mocked-project-thumbnail.png | Bin 0 -> 41833 bytes .../src/components/error-page/error-page.tsx | 68 + .../notification/notification.component.tsx | 63 + .../notification/notification.module.scss | 35 + .../radio-disclosure-group.module.scss | 24 + .../radio-disclosure-group.tsx | 59 + app/ui/src/components/stream/stream.tsx | 120 + .../web-rtc-connection-provider.test.tsx | 134 + .../stream/web-rtc-connection-provider.tsx | 91 + .../components/stream/web-rtc-connection.ts | 257 + .../src/components/zoom/use-container-size.ts | 27 + app/ui/src/components/zoom/zoom-transform.tsx | 77 + app/ui/src/components/zoom/zoom.module.scss | 17 + app/ui/src/components/zoom/zoom.test.tsx | 32 + app/ui/src/components/zoom/zoom.tsx | 38 + app/ui/src/env.d.ts | 7 + app/ui/src/features/inference/aside.tsx | 55 + .../features/inference/inference.module.scss | 22 + .../features/inference/source/source-form.tsx | 295 + .../inference/source/source-modal.tsx | 28 + .../inference/stream/stream-container.tsx | 55 + .../src/features/inference/stream/stream.tsx | 118 + app/ui/src/features/inference/toolbar.tsx | 88 + app/ui/src/global.d.ts | 17 + app/ui/src/index.css | 72 + app/ui/src/index.tsx | 31 + app/ui/src/layout.tsx | 64 + app/ui/src/msw-browser-setup.ts | 26 + app/ui/src/msw-node-setup.ts | 6 + app/ui/src/providers.tsx | 54 + app/ui/src/router.tsx | 45 + app/ui/src/routes/inference/inference.tsx | 27 + app/ui/src/routes/utils.ts | 6 + app/ui/src/setup-tests.ts | 33 + app/ui/tests/fixtures.ts | 32 + app/ui/tests/main.spec.ts | 8 + app/ui/tsconfig.json | 7 + app/ui/vitest.config.ts | 29 + docs/source/geti-inspect/ui-architecture.md | 100 + 77 files changed, 24285 insertions(+) create mode 100644 app/ui/.dockerignore create mode 100644 app/ui/.editorconfig create mode 100644 app/ui/.gitignore create mode 100644 app/ui/.nvmrc create mode 100644 app/ui/.prettierignore create mode 100644 app/ui/.prettierrc create mode 100644 app/ui/Dockerfile create mode 100644 app/ui/README.md create mode 100644 app/ui/eslint.config.js create mode 100644 app/ui/nginx.conf create mode 100644 app/ui/package-lock.json create mode 100644 app/ui/package.json create mode 100644 app/ui/playwright.config.ts create mode 100644 app/ui/public/mockServiceWorker.js create mode 100644 app/ui/rsbuild.config.ts create mode 100644 app/ui/src/api/client.ts create mode 100644 app/ui/src/api/openapi-spec.d.ts create mode 100644 app/ui/src/api/openapi-spec.json create mode 100644 app/ui/src/api/utils.ts create mode 100644 app/ui/src/assets/background.png create mode 100644 app/ui/src/assets/graph.svg create mode 100644 app/ui/src/assets/icons/build-icon.svg create mode 100644 app/ui/src/assets/icons/camera-off.svg create mode 100644 app/ui/src/assets/icons/camera.svg create mode 100644 app/ui/src/assets/icons/double-chevron-right-icon.svg create mode 100644 app/ui/src/assets/icons/error-icon.svg create mode 100644 app/ui/src/assets/icons/folder-arrow-right.svg create mode 100644 app/ui/src/assets/icons/genicam.svg create mode 100644 app/ui/src/assets/icons/images-folder.svg create mode 100644 app/ui/src/assets/icons/ip-camera.svg create mode 100644 app/ui/src/assets/icons/live-feed-icon.svg create mode 100644 app/ui/src/assets/icons/mqtt.svg create mode 100644 app/ui/src/assets/icons/ros.svg create mode 100644 app/ui/src/assets/icons/success-icon.svg create mode 100644 app/ui/src/assets/icons/three-dots-circle.svg create mode 100644 app/ui/src/assets/icons/video-file.svg create mode 100644 app/ui/src/assets/icons/webcam.svg create mode 100644 app/ui/src/assets/icons/webhook.svg create mode 100644 app/ui/src/assets/mocked-project-thumbnail.png create mode 100644 app/ui/src/components/error-page/error-page.tsx create mode 100644 app/ui/src/components/notification/notification.component.tsx create mode 100644 app/ui/src/components/notification/notification.module.scss create mode 100644 app/ui/src/components/radio-disclosure-group/radio-disclosure-group.module.scss create mode 100644 app/ui/src/components/radio-disclosure-group/radio-disclosure-group.tsx create mode 100644 app/ui/src/components/stream/stream.tsx create mode 100644 app/ui/src/components/stream/web-rtc-connection-provider.test.tsx create mode 100644 app/ui/src/components/stream/web-rtc-connection-provider.tsx create mode 100644 app/ui/src/components/stream/web-rtc-connection.ts create mode 100644 app/ui/src/components/zoom/use-container-size.ts create mode 100755 app/ui/src/components/zoom/zoom-transform.tsx create mode 100644 app/ui/src/components/zoom/zoom.module.scss create mode 100644 app/ui/src/components/zoom/zoom.test.tsx create mode 100755 app/ui/src/components/zoom/zoom.tsx create mode 100644 app/ui/src/env.d.ts create mode 100644 app/ui/src/features/inference/aside.tsx create mode 100644 app/ui/src/features/inference/inference.module.scss create mode 100644 app/ui/src/features/inference/source/source-form.tsx create mode 100644 app/ui/src/features/inference/source/source-modal.tsx create mode 100644 app/ui/src/features/inference/stream/stream-container.tsx create mode 100644 app/ui/src/features/inference/stream/stream.tsx create mode 100644 app/ui/src/features/inference/toolbar.tsx create mode 100644 app/ui/src/global.d.ts create mode 100644 app/ui/src/index.css create mode 100644 app/ui/src/index.tsx create mode 100644 app/ui/src/layout.tsx create mode 100644 app/ui/src/msw-browser-setup.ts create mode 100644 app/ui/src/msw-node-setup.ts create mode 100644 app/ui/src/providers.tsx create mode 100644 app/ui/src/router.tsx create mode 100644 app/ui/src/routes/inference/inference.tsx create mode 100644 app/ui/src/routes/utils.ts create mode 100644 app/ui/src/setup-tests.ts create mode 100644 app/ui/tests/fixtures.ts create mode 100644 app/ui/tests/main.spec.ts create mode 100644 app/ui/tsconfig.json create mode 100644 app/ui/vitest.config.ts create mode 100644 docs/source/geti-inspect/ui-architecture.md diff --git a/app/ui/.dockerignore b/app/ui/.dockerignore new file mode 100644 index 0000000000..df449a4c94 --- /dev/null +++ b/app/ui/.dockerignore @@ -0,0 +1,10 @@ +* +!src +!packages +!package.json +!package-lock.json +!eslint.config.js +!.prettierrc +!tsconfig.json +!rsbuild.config.ts +!nginx.conf diff --git a/app/ui/.editorconfig b/app/ui/.editorconfig new file mode 100644 index 0000000000..0f338fb924 --- /dev/null +++ b/app/ui/.editorconfig @@ -0,0 +1,30 @@ +# https://editorconfig.org +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +[*.json] +indent_size = 4 + +[*.ts] +indent_size = 4 + +[*.tsx] +indent_size = 4 + +[*.md] +# double whitespace at end of line +# denotes a line break in Markdown +trim_trailing_whitespace = false + +[*.yml] +indent_size = 2 + +[Makefile] +indent_style = tab; diff --git a/app/ui/.gitignore b/app/ui/.gitignore new file mode 100644 index 0000000000..92b3333504 --- /dev/null +++ b/app/ui/.gitignore @@ -0,0 +1,25 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# Profile +.rspack-profile-*/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea + +# We clone our geti packages during the npm install phase +packages/ + +# Playwright +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/app/ui/.nvmrc b/app/ui/.nvmrc new file mode 100644 index 0000000000..dc864a052c --- /dev/null +++ b/app/ui/.nvmrc @@ -0,0 +1 @@ +v24.2.0 diff --git a/app/ui/.prettierignore b/app/ui/.prettierignore new file mode 100644 index 0000000000..875b02b788 --- /dev/null +++ b/app/ui/.prettierignore @@ -0,0 +1,7 @@ +# Lock files +package-lock.json + +# Tauri +src-tauri/bin +src-tauri/target +src-tauri/gen \ No newline at end of file diff --git a/app/ui/.prettierrc b/app/ui/.prettierrc new file mode 100644 index 0000000000..cbcc0e3f35 --- /dev/null +++ b/app/ui/.prettierrc @@ -0,0 +1,34 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "bracketSameLine": false, + "jsxSingleQuote": true, + "printWidth": 120, + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 4, + "useTabs": false, + "endOfLine": "auto", + "trailingComma": "es5", + "plugins": ["@ianvs/prettier-plugin-sort-imports"], + "importOrder": [ + "", + "^react$", + "", + "BUILTIN_MODULES>", + "", + "", + "", + "^(?!.*[.]*css$)[./].*$", + "", + ".*css$" + ], + "importOrderTypeScriptVersion": "5.7.2", + "importOrderCaseSensitive": false +} diff --git a/app/ui/Dockerfile b/app/ui/Dockerfile new file mode 100644 index 0000000000..f6626e103b --- /dev/null +++ b/app/ui/Dockerfile @@ -0,0 +1,68 @@ +# syntax=docker/dockerfile:1.7 + +############# +# build_rest_api_specs +############# +FROM node:24-alpine3.22@sha256:7aaba6b13a55a1d78411a1162c1994428ed039c6bbef7b1d9859c25ada1d7cc5 AS build_rest_api_specs + +WORKDIR /home/app/web_ui/ + +COPY --link ./package.json . +COPY --link --from=openapi_spec /openapi.json /home/app/web_ui/src/api/openapi-spec.json +RUN npm run build:api + +############# +# geti_ui_packages +############# +FROM node:24-alpine3.22@sha256:7aaba6b13a55a1d78411a1162c1994428ed039c6bbef7b1d9859c25ada1d7cc5 AS geti_ui_packags + +WORKDIR /home/app/web_ui/ +RUN apk add git +COPY --link package.json ./ +RUN npm run clone-geti-ui-packages + +############# +# web_ui_deps +############# +FROM node:24-alpine3.22@sha256:7aaba6b13a55a1d78411a1162c1994428ed039c6bbef7b1d9859c25ada1d7cc5 AS base_web_ui + +WORKDIR /home/app/web_ui/ + +COPY --link package.json ./ +COPY --link package-lock.json ./ +COPY --from=geti_ui_packags /home/app/web_ui/packages/ /home/app/web_ui/packages/ +RUN npm ci --audit=false --ignore-scripts + +COPY --link ./eslint.config.js ./ +COPY --link ./.prettierrc ./ +COPY --link ./tsconfig.json ./ +COPY --link ./rsbuild.config.ts ./ +COPY --link src/ src/ + +ARG PUBLIC_API_BASE_URL="" +ENV PUBLIC_API_BASE_URL ${PUBLIC_API_BASE_URL} + +############# +# dev +############# +FROM base_web_ui as dev + +CMD npm run dev + +############# +# web_ui build +############# +FROM base_web_ui as web_ui +RUN npm run build + +####### +# Nginx +####### +FROM nginx:1.27-alpine3.21@sha256:65645c7bb6a0661892a8b03b89d0743208a18dd2f3f17a54ef4b76fb8e2f2a10 AS nginx + +COPY ./nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=web_ui /home/app/web_ui/dist/ /usr/share/nginx/html + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/app/ui/README.md b/app/ui/README.md new file mode 100644 index 0000000000..2a1212e51d --- /dev/null +++ b/app/ui/README.md @@ -0,0 +1,41 @@ +# Geti Inspect + +## Setup + +Install the dependencies: + +```bash +npm install +``` + +## Get started + +Start the dev server: + +```bash +npm run start +``` + +Build the app for production: + +```bash +npm run build +``` + +Preview the production build locally: + +```bash +npm run preview +``` + +## Testing + +Use the following commands to test your changes. + +``` +npm run format +npm run lint +npm run type-check +npm run test:unit +npm run test:component +``` diff --git a/app/ui/eslint.config.js b/app/ui/eslint.config.js new file mode 100644 index 0000000000..47067aa4c6 --- /dev/null +++ b/app/ui/eslint.config.js @@ -0,0 +1,71 @@ +// Copyright (C) 2022-2025 Intel Corporation +// LIMITED EDGE SOFTWARE DISTRIBUTION LICENSE + +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import sharedEslintConfig from '@geti/config/lint'; + +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); +const compat = new FlatCompat({ + baseDirectory: dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: [...sharedEslintConfig[0].ignores, 'src/api/openapi-spec.d.ts'], + }, + ...sharedEslintConfig, + { + rules: { + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['@react-spectrum'], + message: 'Use component from the @geti/ui folder instead.', + }, + { + group: ['@react-types/*'], + message: 'Use type from the @geti/ui folder instead.', + }, + { + group: ['@spectrum-icons'], + message: 'Use icons from the @geti/ui/icons folder instead.', + }, + ], + }, + ], + 'header/header': 'off', + }, + }, + ...compat.extends('plugin:playwright/playwright-test').map((config) => ({ + ...config, + files: ['tests/features/**/*.ts', 'tests/utils/**/*.ts', 'tests/fixtures/**/*.ts', 'tests/e2e/**/*.ts'], + })), + { + files: ['tests/features/**/*.ts', 'tests/utils/**/*.ts', 'tests/fixtures/**/*.ts', 'tests/e2e/**/*.ts'], + + rules: { + 'playwright/no-wait-for-selector': ['off'], + 'playwright/no-conditional-expect': ['off'], + 'playwright/no-standalone-expect': ['off'], + 'playwright/missing-playwright-await': ['warn'], + 'playwright/valid-expect': ['warn'], + 'playwright/no-useless-not': ['warn'], + 'playwright/no-page-pause': ['warn'], + 'playwright/prefer-to-have-length': ['warn'], + 'playwright/no-conditional-in-test': ['off'], + 'playwright/expect-expect': ['off'], + 'playwright/no-skipped-test': ['off'], + 'playwright/no-wait-for-timeout': ['off'], + 'playwright/no-nested-step': ['off'], + }, + }, +]; diff --git a/app/ui/nginx.conf b/app/ui/nginx.conf new file mode 100644 index 0000000000..616a7c6a43 --- /dev/null +++ b/app/ui/nginx.conf @@ -0,0 +1,29 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + # Enable gzip compression for faster loading + gzip on; + gzip_types text/plain text/css application/json application/javascript; + + location / { + # Redirect to index.html if file not found + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + expires 1y; + add_header Cache-Control "public, max-age=31536000"; + try_files $uri =404; + } + + # Don't cache HTML files + location ~* \.html$ { + expires -1; + add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; + } +} diff --git a/app/ui/package-lock.json b/app/ui/package-lock.json new file mode 100644 index 0000000000..3956a25f6d --- /dev/null +++ b/app/ui/package-lock.json @@ -0,0 +1,16726 @@ +{ + "name": "@geti/tune-ui", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@geti/tune-ui", + "version": "1.0.0", + "hasInstallScript": true, + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@adobe/react-spectrum": "^3.41.0", + "@geti/config": "*", + "@geti/ui": "*", + "@tanstack/react-query": "^5.80.10", + "clsx": "^2.1.1", + "lodash-es": "^4.17.21", + "openapi-fetch": "^0.14.0", + "openapi-react-query": "^0.5.0", + "react": "^18.3.1", + "react-aria-components": "^1.8.0", + "react-dom": "^18.3.1", + "react-error-boundary": "^3.1.4", + "react-router": "^6.30.1", + "react-router-dom": "^6.30.1", + "recharts": "^2.15.3", + "sonner": "^2.0.6", + "static-path": "^0.0.4", + "uuid": "^11.1.0" + }, + "devDependencies": { + "@eslint/compat": "^1.2.8", + "@eslint/js": "^9.25.1", + "@ianvs/prettier-plugin-sort-imports": "^4.4.2", + "@msw/playwright": "^0.4.2", + "@mswjs/source": "^0.4.1", + "@playwright/test": "^1.54.1", + "@rsbuild/core": "^1.3.14", + "@rsbuild/plugin-react": "^1.3.0", + "@rsbuild/plugin-sass": "^1.3.1", + "@rsbuild/plugin-svgr": "^1.2.0", + "@tanstack/eslint-plugin-query": "^5.78.0", + "@testing-library/jest-dom": "^6.6.4", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@types/lodash-es": "^4.17.12", + "@types/node": "^24.0.15", + "@types/react": "^18.3.20", + "@types/react-dom": "^18.3.5", + "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@vitejs/plugin-react": "^4.7.0", + "babel-preset-react-app": "^10.1.0", + "eslint": "^9.25.1", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-playwright": "^2.2.0", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "identity-obj-proxy": "^3.0.0", + "jsdom": "^26.1.0", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "openapi-msw": "^1.2.0", + "openapi-typescript": "^7.8.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.31.1", + "vite": "^7.0.6", + "vite-plugin-svgr": "^4.3.0", + "vitest": "^3.2.4" + }, + "engines": { + "node": "v24.2.0", + "npm": "11.3.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", + "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@adobe/react-spectrum": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.43.0.tgz", + "integrity": "sha512-QeFxyUK60M26Nz2WhsNGZ5kRWT3tcrC/WWCASS8UFDI+Oy1P7+o35hNKBGJpeWFwBE/1+8B7G0rAk3+gapYAZg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/string": "^3.2.7", + "@react-aria/collections": "3.0.0-rc.4", + "@react-aria/i18n": "^3.12.11", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-spectrum/accordion": "^3.0.9", + "@react-spectrum/actionbar": "^3.6.10", + "@react-spectrum/actiongroup": "^3.11.0", + "@react-spectrum/avatar": "^3.0.24", + "@react-spectrum/badge": "^3.1.26", + "@react-spectrum/breadcrumbs": "^3.9.20", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/buttongroup": "^3.6.24", + "@react-spectrum/calendar": "^3.7.4", + "@react-spectrum/checkbox": "^3.10.0", + "@react-spectrum/color": "^3.1.0", + "@react-spectrum/combobox": "^3.16.0", + "@react-spectrum/contextualhelp": "^3.6.24", + "@react-spectrum/datepicker": "^3.14.4", + "@react-spectrum/dialog": "^3.9.0", + "@react-spectrum/divider": "^3.5.25", + "@react-spectrum/dnd": "^3.5.8", + "@react-spectrum/dropzone": "^3.0.14", + "@react-spectrum/filetrigger": "^3.0.14", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/icon": "^3.8.7", + "@react-spectrum/illustratedmessage": "^3.5.12", + "@react-spectrum/image": "^3.6.0", + "@react-spectrum/inlinealert": "^3.2.18", + "@react-spectrum/labeledvalue": "^3.2.5", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/link": "^3.6.20", + "@react-spectrum/list": "^3.10.4", + "@react-spectrum/listbox": "^3.15.4", + "@react-spectrum/menu": "^3.22.4", + "@react-spectrum/meter": "^3.5.12", + "@react-spectrum/numberfield": "^3.10.0", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/picker": "^3.16.0", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/provider": "^3.10.8", + "@react-spectrum/radio": "^3.7.19", + "@react-spectrum/searchfield": "^3.8.19", + "@react-spectrum/slider": "^3.8.0", + "@react-spectrum/statuslight": "^3.5.24", + "@react-spectrum/switch": "^3.6.4", + "@react-spectrum/table": "^3.17.4", + "@react-spectrum/tabs": "^3.8.23", + "@react-spectrum/tag": "^3.3.3", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/textfield": "^3.14.0", + "@react-spectrum/theme-dark": "^3.5.20", + "@react-spectrum/theme-default": "^3.5.20", + "@react-spectrum/theme-light": "^3.4.20", + "@react-spectrum/toast": "^3.1.0", + "@react-spectrum/tooltip": "^3.7.8", + "@react-spectrum/tree": "^3.1.4", + "@react-spectrum/view": "^3.6.21", + "@react-spectrum/well": "^3.4.25", + "@react-stately/collections": "^3.12.6", + "@react-stately/data": "^3.13.2", + "@react-types/shared": "^3.31.0", + "client-only": "^0.0.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@adobe/react-spectrum-ui": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-ui/-/react-spectrum-ui-1.2.1.tgz", + "integrity": "sha512-wcrbEE2O/9WnEn6avBnaVRRx88S5PLFsPLr4wffzlbMfXeQsy+RMQwaJd3cbzrn18/j04Isit7f7Emfn0dhrJA==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@adobe/react-spectrum-workflow": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-workflow/-/react-spectrum-workflow-2.3.5.tgz", + "integrity": "sha512-b53VIPwPWKb/T5gzE3qs+QlGP5gVrw/LnWV3xMksDU+CRl3rzOKUwxIGiZO8ICyYh1WiyqY4myGlPU/nAynBUg==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", + "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", + "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", + "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", + "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz", + "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz", + "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.3", + "@babel/plugin-transform-parameters": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", + "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", + "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", + "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", + "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.5.2.tgz", + "integrity": "sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cookie": "^0.7.2" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "statuses": "^2.0.1" + } + }, + "node_modules/@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, + "node_modules/@bundled-es-modules/tough-cookie/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", + "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.2.tgz", + "integrity": "sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@faker-js/faker": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", + "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", + "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", + "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/icu-skeleton-parser": "1.8.14", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", + "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@geti/config": { + "resolved": "packages/config", + "link": true + }, + "node_modules/@geti/ui": { + "resolved": "packages/ui", + "link": true + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@ianvs/prettier-plugin-sort-imports": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.4.2.tgz", + "integrity": "sha512-KkVFy3TLh0OFzimbZglMmORi+vL/i2OFhEs5M07R9w0IwWAGpsNNyE4CY/2u0YoMF5bawKC2+8/fUH60nnNtjw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "semver": "^7.5.2" + }, + "peerDependencies": { + "@vue/compiler-sfc": "2.7.x || 3.x", + "prettier": "2 || 3 || ^4.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", + "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.15", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz", + "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/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, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@internationalized/date": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz", + "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.8.tgz", + "integrity": "sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.4.tgz", + "integrity": "sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.7.tgz", + "integrity": "sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@module-federation/error-codes": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.14.0.tgz", + "integrity": "sha512-GGk+EoeSACJikZZyShnLshtq9E2eCrDWbRiB4QAFXCX4oYmGgFfzXlx59vMNwqTKPJWxkEGnPYacJMcr2YYjag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.14.0.tgz", + "integrity": "sha512-kR3cyHw/Y64SEa7mh4CHXOEQYY32LKLK75kJOmBroLNLO7/W01hMNAvGBYTedS7hWpVuefPk1aFZioy3q2VLdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.14.0", + "@module-federation/runtime-core": "0.14.0", + "@module-federation/sdk": "0.14.0" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.14.0.tgz", + "integrity": "sha512-fGE1Ro55zIFDp/CxQuRhKQ1pJvG7P0qvRm2N+4i8z++2bgDjcxnCKUqDJ8lLD+JfJQvUJf0tuSsJPgevzueD4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.14.0", + "@module-federation/sdk": "0.14.0" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.14.0.tgz", + "integrity": "sha512-y/YN0c2DKsLETE+4EEbmYWjqF9G6ZwgZoDIPkaQ9p0pQu0V4YxzWfQagFFxR0RigYGuhJKmSU/rtNoHq+qF8jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.14.0", + "@module-federation/webpack-bundler-runtime": "0.14.0" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.14.0.tgz", + "integrity": "sha512-lg/OWRsh18hsyTCamOOhEX546vbDiA2O4OggTxxH2wTGr156N6DdELGQlYIKfRdU/0StgtQS81Goc0BgDZlx9A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.14.0.tgz", + "integrity": "sha512-POWS6cKBicAAQ3DNY5X7XEUSfOfUsRaBNxbuwEfSGlrkTE9UcWheO06QP2ndHi8tHQuUKcIHi2navhPkJ+k5xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.14.0", + "@module-federation/sdk": "0.14.0" + } + }, + "node_modules/@msw/playwright": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@msw/playwright/-/playwright-0.4.2.tgz", + "integrity": "sha512-xJnHJBkxCF+wcusYAFTDTW1kiD+WVsuYMSxcqvaAbe/mhy73oxkcqUbsiqZsKPdNrXIQQtkCyX5vSP5ZaPUHdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mswjs/interceptors": "^0.39.2", + "outvariant": "^1.4.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "msw": "^2.10.3" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.39.3", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.3.tgz", + "integrity": "sha512-9bw/wBL7pblsnOCIqvn1788S9o4h+cC5HWXg0Xhh0dOzsZ53IyfmBM+FYqpDDPbm0xjCqEqvCITloF3Dm4TXRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mswjs/source": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@mswjs/source/-/source-0.4.1.tgz", + "integrity": "sha512-sUaUz5OaMgsFm9KERnIP/bZY/6kLb1DJS9qPPw28oAndaESZCjr7Fmob7wYUluTokQDBTQeY2bXrUQ9FK/6fxQ==", + "dev": true, + "dependencies": { + "@stoplight/json": "^3.21.7", + "@types/har-format": "^1.2.16", + "@yellow-ticket/seed-json-schema": "^0.1.6", + "openapi-types": "^12.1.3", + "outvariant": "^1.4.3", + "yaml": "^2.8.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "msw": "^2.10.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@playwright/test": { + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.1.tgz", + "integrity": "sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.54.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-aria/actiongroup": { + "version": "3.7.19", + "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.19.tgz", + "integrity": "sha512-COg6b3JmopjKpDMQGZYsGf1zrG65eM1H6CC/nM7yOAqnJTtT1ywii6iQ1b/aJlXplW/9DCu47bagfDSU4+Nj0w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/list": "^3.12.4", + "@react-types/actiongroup": "^3.4.19", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/autocomplete": { + "version": "3.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@react-aria/autocomplete/-/autocomplete-3.0.0-beta.6.tgz", + "integrity": "sha512-/i0Y1nJNSDk5k49tlApYfFCylZO597KQSMy4AbG60W6VNUw51QrmY9bzO3zdGAEVdPSuMys/72KwvV6LOpllyQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/combobox": "^3.13.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/listbox": "^3.14.7", + "@react-aria/searchfield": "^3.8.7", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/autocomplete": "3.0.0-beta.3", + "@react-stately/combobox": "^3.11.0", + "@react-types/autocomplete": "3.0.0-alpha.33", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.27.tgz", + "integrity": "sha512-fuXD9nvBaBVZO0Z6EntBlxQD621/2Ldcxz76jFjc4V/jNOq/6BIVQRtpnAYYrSTiW3ZV2IoAyxRWNxQU22hOow==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/link": "^3.8.4", + "@react-aria/utils": "^3.30.0", + "@react-types/breadcrumbs": "^3.7.15", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/button": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.14.0.tgz", + "integrity": "sha512-we6z+2GpZO8lGD6EPmYH2S87kLCpU14D2E3tD2vES+SS2sZM2qcm2dUGpeo4+gZqBToLWKEBAGCSlkWEtgS19A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/toolbar": "3.0.0-beta.19", + "@react-aria/utils": "^3.30.0", + "@react-stately/toggle": "^3.9.0", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.9.0.tgz", + "integrity": "sha512-YxHLqL/LZrgwYGKzlQ96Fgt6gC+Q1L8k56sD51jJAtiD+YtT/pKJfK1zjZ3rtHtPTDYzosJ8vFgOmZNpnKQpXQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/calendar": "^3.8.3", + "@react-types/button": "^3.13.0", + "@react-types/calendar": "^3.7.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.16.0.tgz", + "integrity": "sha512-XPaMz1/iVBG6EbJOPYlNtvr+q4f0axJeoIvyzWW3ciIdDSX/3jYuFg/sv/b3OQQl389cbQ/WUBQyWre/uXWVEg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.1.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/toggle": "^3.12.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/checkbox": "^3.7.0", + "@react-stately/form": "^3.2.0", + "@react-stately/toggle": "^3.9.0", + "@react-types/checkbox": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/collections": { + "version": "3.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-rc.4.tgz", + "integrity": "sha512-efcQW/Kly5ebS2kWrVRBD7yEl3b0FdQE/dDL/87skVMW0Vh6AtUgCShZfcOcGAIqvG7m6QItdUHwAilDA61riQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.1.0.tgz", + "integrity": "sha512-95qcCmz5Ss6o1Z4Z7X3pEEQxoUA83qGNQkpjOvobcHbNWKfhvOAsUzdBleOx2NpyBzY16OAnhWR7PJZwR4AqiA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/numberfield": "^3.12.0", + "@react-aria/slider": "^3.8.0", + "@react-aria/spinbutton": "^3.6.17", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-stately/color": "^3.9.0", + "@react-stately/form": "^3.2.0", + "@react-types/color": "^3.1.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.13.0.tgz", + "integrity": "sha512-eBa8aWcL3Ar/BvgSaqYDmNQP70LPZ7us2myM31QQt2YDRptqGHd44wzXCts9SaDVIeMVy+AEY2NkuxrVE6yNrw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/listbox": "^3.14.7", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/menu": "^3.19.0", + "@react-aria/overlays": "^3.28.0", + "@react-aria/selection": "^3.25.0", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/combobox": "^3.11.0", + "@react-stately/form": "^3.2.0", + "@react-types/button": "^3.13.0", + "@react-types/combobox": "^3.13.7", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.15.0.tgz", + "integrity": "sha512-AONeLj7sMKz4JmzCu4bhsqwcNFXCSWoaBhi4wOJO9+WYmxudn5mSI9ez8NMCVn+s5kcYpyvzrrAFf/DvQ4UDgw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@internationalized/number": "^3.6.4", + "@internationalized/string": "^3.2.7", + "@react-aria/focus": "^3.21.0", + "@react-aria/form": "^3.1.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/spinbutton": "^3.6.17", + "@react-aria/utils": "^3.30.0", + "@react-stately/datepicker": "^3.15.0", + "@react-stately/form": "^3.2.0", + "@react-types/button": "^3.13.0", + "@react-types/calendar": "^3.7.3", + "@react-types/datepicker": "^3.13.0", + "@react-types/dialog": "^3.5.20", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.28", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.28.tgz", + "integrity": "sha512-S9dgdFBQc9LbhyBiHwGPSATwtvsIl6h+UnxDJ4oKBSse+wxdAyshbZv2tyO5RFbe3k73SAgU7yKocfg7YyRM0A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-types/dialog": "^3.5.20", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/disclosure": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@react-aria/disclosure/-/disclosure-3.0.7.tgz", + "integrity": "sha512-g17smH+5v7B6JijzN20rIRUmE2N8owYK/4blR6tIyS+oLIHr+Crkt1ErNoUWynibj2/4gDd9KGrKyzwB4vxK9g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-stately/disclosure": "^3.0.6", + "@react-types/button": "^3.13.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/dnd": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.11.0.tgz", + "integrity": "sha512-jr47o7Fy55eYjSKWqRyuWKPnynpgC4cE9YXnYg5xa+1woRefIF2IyteOxgSHeX16+6ef2UDSsvC61T3gS6NWxQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/string": "^3.2.7", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/dnd": "^3.6.1", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.0.tgz", + "integrity": "sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/form": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.1.0.tgz", + "integrity": "sha512-aDAOZafrn0V8e09mDAtCvc+JnpnkFM9X8cbI5+fdXsXAA+JxO+3uRRfnJHBlIL0iLc4C4OVWxBxWToV95pg1KA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/form": "^3.2.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.3.tgz", + "integrity": "sha512-O4Ius5tJqKcMGfQT6IXD4MnEOeq6f/59nKmfCLTXMREFac/oxafqanUx3zrEVYbaqLOjEmONcd8S61ptQM6aPg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/grid": "^3.11.4", + "@react-stately/selection": "^3.20.4", + "@react-types/checkbox": "^3.10.0", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/gridlist": { + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.13.3.tgz", + "integrity": "sha512-U2x/1MpdrAgK/vay2s2nVSko4WysajlMS+L8c18HE/ig2to+C8tCPWH2UuK4jTQWrK5x/PxTH+/yvtytljnIuQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/grid": "^3.14.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/list": "^3.12.4", + "@react-stately/tree": "^3.9.1", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.12.11", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.11.tgz", + "integrity": "sha512-1mxUinHbGJ6nJ/uSl62dl48vdZfWTBZePNF/wWQy98gR0qNFXLeusd7CsEmJT1971CR5i/WNYUo1ezNlIJnu6A==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@internationalized/message": "^3.1.8", + "@internationalized/number": "^3.6.4", + "@internationalized/string": "^3.2.7", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.25.4", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.4.tgz", + "integrity": "sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-stately/flags": "^3.1.2", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.20", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.20.tgz", + "integrity": "sha512-Hw7OsC2GBnjptyW1lC1+SNoSIZA0eIh02QnNDr1XX2S+BPfn958NxoI7sJIstO/TUpQVNqdjEN/NI6+cyuJE6g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/landmark": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.5.tgz", + "integrity": "sha512-klUgRGQyTv5qWFQ0EMMLBOLa87qSTGjWoiMvytL9EgJCACkn/OzNMPbqVSkMADvadDyWCMWFYWvfweLxl3T5yw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/link": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.8.4.tgz", + "integrity": "sha512-7cPRGIo7x6ZZv1dhp2xGjqLR1snazSQgl7tThrBDL5E8f6Yr7SVpxOOK5/EBmfpFkhkmmXEO/Fgo/GPJdc6Vmw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-types/link": "^3.6.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.14.7", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.14.7.tgz", + "integrity": "sha512-U5a+AIDblaeQTIA1MDFUaYIKoPwPNAuY7SwkuA5Z7ClDOeQJkiyExmAoKcUXwUkrLULQcbOPKr401q38IL3T7Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/list": "^3.12.4", + "@react-types/listbox": "^3.7.2", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.4.tgz", + "integrity": "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.19.0.tgz", + "integrity": "sha512-VLUGbZedKJvK2OFWEpa86GPIaj9QcWox/R9JXmNk6nyrAz/V46OBQENdliV26PEdBZgzrVxGvmkjaH7ZsN/32Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/menu": "^3.9.6", + "@react-stately/selection": "^3.20.4", + "@react-stately/tree": "^3.9.1", + "@react-types/button": "^3.13.0", + "@react-types/menu": "^3.10.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/meter": { + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.25.tgz", + "integrity": "sha512-6IqOnwuEt8z6UDy8Ru3ZZRZIUiELD0N3Wi/udMfR8gz4oznutvnRCMpRXkVVaVLYQfRglybu2/Lxfe+rq8WiRg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/progress": "^3.4.25", + "@react-types/meter": "^3.4.11", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/numberfield": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.12.0.tgz", + "integrity": "sha512-JkgkjYsZ9lN5m3//X3buOKVrA/QJEeeXJ+5T5r6AmF29YdIhD1Plf5AEOWoRpZWQ25chH7FI/Orsf4h3/SLOpg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/spinbutton": "^3.6.17", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/form": "^3.2.0", + "@react-stately/numberfield": "^3.10.0", + "@react-types/button": "^3.13.0", + "@react-types/numberfield": "^3.8.13", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.28.0.tgz", + "integrity": "sha512-qaHahAXTmxXULgg2/UfWEIwfgdKsn27XYryXAWWDu2CAZTcbI+5mGwYrQZSDWraM6v5PUUepzOVvm7hjTqiMFw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-stately/overlays": "^3.6.18", + "@react-types/button": "^3.13.0", + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.25.tgz", + "integrity": "sha512-KD9Gow+Ip6ZCBdsarR+Hby3c4d99I6L95Ruf7tbCh4ut9i9Dbr+x99OwhpAbT0g549cOyeIqxutPkT+JuzrRuA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/label": "^3.7.20", + "@react-aria/utils": "^3.30.0", + "@react-types/progress": "^3.5.14", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.12.0.tgz", + "integrity": "sha512-//0zZUuHtbm6uZR9+sNRNzVcQpjJKjZj57bDD0lMNj3NZp/Tkw+zXIFy6j1adv3JMe6iYkzEgaB7YRDD1Fe/ZA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/form": "^3.1.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/utils": "^3.30.0", + "@react-stately/radio": "^3.11.0", + "@react-types/radio": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/searchfield": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.8.7.tgz", + "integrity": "sha512-15jfALRyz5EAA5tvIELVfUlqTFdk8oG442OiS3Xq/jJij8uKRzwUdnL57EVTFYyg+VMLp/t5wX+obXYcRG+kdQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/searchfield": "^3.5.14", + "@react-types/button": "^3.13.0", + "@react-types/searchfield": "^3.6.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/select": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.16.0.tgz", + "integrity": "sha512-UkiLSxMOKWW24qnhZdOObkFLpauvmu0T6wuPXbdQgwlis/UeLzDamPAWc6loRFJgHCpJftaaaWVQG3ks4NX7ew==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.1.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/listbox": "^3.14.7", + "@react-aria/menu": "^3.19.0", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-stately/select": "^3.7.0", + "@react-types/button": "^3.13.0", + "@react-types/select": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.25.0.tgz", + "integrity": "sha512-Q3U0Ya0PTP/TR0a2g+7YEbFVLphiWthmEkHyvOx9HsKSjE8w9wXY3C14DZWKskB/BBrXKJuOWxBDa0xhC83S+A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/selection": "^3.20.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/separator": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.11.tgz", + "integrity": "sha512-WwYEb7Wga4YQvlEwbzlVcVkfByullcORKtIe30pmh1YkTRRVJhbRPaE/mwcSMufbfjSYdtDavxmF+WY7Tdb9/A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.8.0.tgz", + "integrity": "sha512-D7Sa7q21cV3gBid7frjoYw6924qYqNdJn2oai1BEemHSuwQatRlm1o2j+fnPTy9sYZfNOqXYnv5YjEn0o1T+Gw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/utils": "^3.30.0", + "@react-stately/slider": "^3.7.0", + "@react-types/shared": "^3.31.0", + "@react-types/slider": "^3.8.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.6.17", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.17.tgz", + "integrity": "sha512-gdGc3kkqpvFUd9XsrhPwQHMrG2TY0LVuGGgjvaZwF/ONm9FMz393ogCM0P484HsjU50hClO+yiRRgNjdwDIzPQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.30.0", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", + "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.6.tgz", + "integrity": "sha512-C+Od8hZNZCf3thgtZnZKzHl5b/63Q9xf+Pw6ugLA1qaKazwp46x1EwUVVqVhfAeVhmag++eHs8Lol5ZwQEinjQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/toggle": "^3.12.0", + "@react-stately/toggle": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@react-types/switch": "^3.5.13", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/table": { + "version": "3.17.6", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.6.tgz", + "integrity": "sha512-PSEaeKOIazVEaykeTLudPbDLytJgOPLZJalS/xXY0/KL+Gi0Olchmz4tvS0WBe87ChmlVi6GQqU+stk23aZVWg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/grid": "^3.14.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-stately/collections": "^3.12.6", + "@react-stately/flags": "^3.1.2", + "@react-stately/table": "^3.14.4", + "@react-types/checkbox": "^3.10.0", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@react-types/table": "^3.13.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.10.6.tgz", + "integrity": "sha512-L8MaE7+bu6ByDOUxNPpMMYxdHULhKUfBoXdsSsXqb1z3QxdFW2zovfag0dvpyVWB6ALghX2T0PlTUNqaKA5tGw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/tabs": "^3.8.4", + "@react-types/shared": "^3.31.0", + "@react-types/tabs": "^3.3.17", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tag": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.7.0.tgz", + "integrity": "sha512-nU0Sl7u82RBn8XLNyrjkXhtw+xbJD9fyjesmDu7zeOq78e4eunKW7OZ/9+t+Lyu5wW+B7vKvetIgkdXKPQm3MA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/gridlist": "^3.13.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/list": "^3.12.4", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.18.0.tgz", + "integrity": "sha512-kCwbyDHi2tRaD/OjagA3m3q2mMZUPeXY7hRqhDxpl2MwyIdd+/PQOJLM8tZr5+m2zvBx+ffOcjZMGTMwMtoV5w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.1.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/utils": "^3.30.0", + "@react-stately/form": "^3.2.0", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@react-types/textfield": "^3.12.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toast": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.6.tgz", + "integrity": "sha512-PoCLWoZzdHIMYY0zIU3WYsHAHPS52sN1gzGRJ+cr5zogU8wwg8lwFZCvs/yql0IhQLsO930zcCXWeL/NsCMrlA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/landmark": "^3.0.5", + "@react-aria/utils": "^3.30.0", + "@react-stately/toast": "^3.1.2", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.12.0.tgz", + "integrity": "sha512-JfcrF8xUEa2CbbUXp+WQiTBVwSM/dm21v5kueQlksvLfXG6DGE8/zjM6tJFErrFypAasc1JXyrI4dspLOWCfRA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/toggle": "^3.9.0", + "@react-types/checkbox": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toolbar": { + "version": "3.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.19.tgz", + "integrity": "sha512-G4sgtOUTUUJHznXlpKcY64SxD2gKOqIQXZXjWTVcY/Q5hAjl8gbTt5XIED22GmeIgd/tVl6+lddGj6ESze4vSg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.8.6", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.8.6.tgz", + "integrity": "sha512-lW/PegiswGLlCP0CM4FH2kbIrEe4Li2SoklzIRh4nXZtiLIexswoE5/5af7PMtoMAl31or6fHZleVLzZD4VcfA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/tooltip": "^3.5.6", + "@react-types/shared": "^3.31.0", + "@react-types/tooltip": "^3.4.19", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tree": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.1.2.tgz", + "integrity": "sha512-duyAoxSIzgIEP1UvCivx8uY7GZxo8nhfSsHW77GO+UMgwBjWkrvHnYQXBYbLq1GLqLxuDN+U7SFe8Az7+HcbOg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/gridlist": "^3.13.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-stately/tree": "^3.9.1", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.30.0.tgz", + "integrity": "sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.10", + "@react-stately/flags": "^3.1.2", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/virtualizer": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.1.8.tgz", + "integrity": "sha512-dwaJuqjtpVKTaWJS+PEe+tymqVzOjY8cZLvmSDC4uUizHOUh+O/NvoKWtwSQnB4/GxIEvdgLxYTTvVTf8jdKgw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.26", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.26.tgz", + "integrity": "sha512-Lz36lTVaQbv5Kn74sPv0l9SnLQ5XHKCoq2zilP14Eb4QixDIqR7Ovj43m+6wi9pynf29jtOb/8D/9jrTjbmmgw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/accordion": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/accordion/-/accordion-3.0.9.tgz", + "integrity": "sha512-Qg3dSkAHrJoTR7Q0Fk5+FrLhPzcOszfDXf6S2o0z7MU3BCVUVupwl6kF0gOiY/atGyPWKFLEE0Lq/iZcEl4doQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/actionbar": { + "version": "3.6.10", + "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.6.10.tgz", + "integrity": "sha512-6HM5OK9DYscx0rUTEHsrOJwAokuJ8jtsvJ1UPEYobghGf80Ubp9j5yw4fvk170Vrv3yJK2TFyQfzJNwJoZFpoA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/actiongroup": "^3.11.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-types/actionbar": "^3.1.17", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/actiongroup": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.11.0.tgz", + "integrity": "sha512-YcWtK6JNOHnwIFoKhbfrLNxlxmbdGpYl8ureQMXWy7W3pR2P/udpouKPp53Hv3DNwai7YqYKvIGPESSRY2cVRA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/actiongroup": "^3.7.19", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/menu": "^3.22.4", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/tooltip": "^3.7.8", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/list": "^3.12.4", + "@react-types/actiongroup": "^3.4.19", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@spectrum-icons/workflow": "^4.2.23", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.2.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/avatar": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.24.tgz", + "integrity": "sha512-vFbqcX7nuonrqAb0085xxAfCh7Hhv2Rw3fNAh6CysmXGBnWfZPC6Dwkeb/hZADuXFcdrwvKe2JlckorU6tYTEQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/avatar": "^3.0.17", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.2.1", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/badge": { + "version": "3.1.26", + "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.26.tgz", + "integrity": "sha512-9+tuUb4j1c/odvY5T18iVOjbTln1BJtYnWvkLxpJX5lyXODN8sOvoMcf94y88mNBiDRFOCQ3t7wYFQB922aqbg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-types/badge": "^3.1.19", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/breadcrumbs": { + "version": "3.9.20", + "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.20.tgz", + "integrity": "sha512-u2WKIDHOe5vEey+oo4oF/MzFcMIaXE/aW/8EVdpfzbY3PuXdPr542vorwqOm1SMfTpJZtXP1G/e9PlwW+O5z/w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/breadcrumbs": "^3.5.27", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/menu": "^3.22.4", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-types/breadcrumbs": "^3.7.15", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/button": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.17.0.tgz", + "integrity": "sha512-u4BNFYHJiSE4V7qHZnqK3okhZ/Vi60O+P6xVOD08+f+xd+afsaI3M6fOmC8WtlGYoJ88dAOTIkMEGW+4dXQMjQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/toggle": "^3.9.0", + "@react-types/button": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/buttongroup": { + "version": "3.6.24", + "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.24.tgz", + "integrity": "sha512-ndxOHDBoWF2ksktfMGbTH29j23hRKKZ4ppPY1e4dIVoEA7tzk8PIlPsXqIEVTVrSFZkhzBdE+kl+YSnx5GF0jQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/buttongroup": "^3.3.19", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/calendar": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.7.4.tgz", + "integrity": "sha512-HRHxgIV3b2ei0LLK/GUwrkGwWwKvad1qXUXiyn5/pzpv7SJSe4DoH0iKEFiBKRkz94Lc1msXm4vz+i0WqJguaw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-aria/calendar": "^3.9.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/calendar": "^3.8.3", + "@react-types/button": "^3.13.0", + "@react-types/calendar": "^3.7.3", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/checkbox": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.10.0.tgz", + "integrity": "sha512-aUGISgXLbtNzi+CQOYs/IU2PRYxS+w8kgB/qhbF8FSACTW2IzBwMoSE5GpNPKIOvPf3aJfAlI3sqep3/ODxpEQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/checkbox": "^3.16.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/interactions": "^3.25.4", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/checkbox": "^3.7.0", + "@react-stately/toggle": "^3.9.0", + "@react-types/checkbox": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/color/-/color-3.1.0.tgz", + "integrity": "sha512-qxDWECaWuQNVgmHQO65w2kXHxFu3a+Yxze1VWSM5UKTW1ePzKMq1A20q9nhP1rXDtkOPdxBFEtkzjy7FRgIOsg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/color": "^3.1.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/dialog": "^3.9.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/picker": "^3.16.0", + "@react-spectrum/textfield": "^3.14.0", + "@react-spectrum/utils": "^3.12.7", + "@react-spectrum/view": "^3.6.21", + "@react-stately/color": "^3.9.0", + "@react-types/color": "^3.1.0", + "@react-types/shared": "^3.31.0", + "@react-types/textfield": "^3.12.4", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/combobox": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.16.0.tgz", + "integrity": "sha512-JvOr3t6mF93RKk9obVKUcz4wAJmaqOcHQeVlv6Zq0SdUYLwmqf1KJBwvzaQXJEtcRlNhNQAGUXfJco2s2Gg1pQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/combobox": "^3.13.0", + "@react-aria/dialog": "^3.5.28", + "@react-aria/focus": "^3.21.0", + "@react-aria/form": "^3.1.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/listbox": "^3.15.4", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/textfield": "^3.14.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/combobox": "^3.11.0", + "@react-types/button": "^3.13.0", + "@react-types/combobox": "^3.13.7", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/contextualhelp": { + "version": "3.6.24", + "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.24.tgz", + "integrity": "sha512-8mbjyunpsrg14g6BmPvjxPrgzbPEF0Vh57TdPWrFowsi+6YRALV2+EId4XLgbrn7mHPwnsp0JiAxyhfSqf5eOg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/dialog": "^3.9.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/contextualhelp": "^3.2.20", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/workflow": "^4.2.23", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/datepicker": { + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.14.4.tgz", + "integrity": "sha512-k0rh+cpvAtP6PGaCdYEKu4jtp7P69KfDeIG9fWZ3VaOictzHVhBNroSCYfMJwirYMIdNZyu6b+K3HY0PiWKlCw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-aria/datepicker": "^3.15.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/calendar": "^3.7.4", + "@react-spectrum/dialog": "^3.9.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/utils": "^3.12.7", + "@react-spectrum/view": "^3.6.21", + "@react-stately/datepicker": "^3.15.0", + "@react-types/datepicker": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@spectrum-icons/workflow": "^4.2.23", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/dialog": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.9.0.tgz", + "integrity": "sha512-0GAYjMlc0weB6Fqu/kXIpM8SvT2Gd5RKwxG3N7uwvBbeHymHG+WyiFawK6Nay+FozXtYE3akdGKfZ517m7+Vbg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/dialog": "^3.5.28", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/buttongroup": "^3.6.24", + "@react-spectrum/divider": "^3.5.25", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-spectrum/view": "^3.6.21", + "@react-stately/overlays": "^3.6.18", + "@react-types/button": "^3.13.0", + "@react-types/dialog": "^3.5.20", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/divider": { + "version": "3.5.25", + "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.25.tgz", + "integrity": "sha512-LRpMJRJqh56IZ/IaCQgB8VZ0LZPypV/LL9y87I6uo5EOnlB6Hx2SVGQctjYXkGKQJJezpYNsZUr3LDr2eX9sog==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/separator": "^3.4.11", + "@react-spectrum/utils": "^3.12.7", + "@react-types/divider": "^3.3.19", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/dnd": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.5.8.tgz", + "integrity": "sha512-1NTQOYYlXHCxKct3daLPHyPGt9b89TqnTDkHzsE3d44R24UfiaXuvGycdjEBUOCjYhDguPE/nenkZSi0Rl0lEA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/dnd": "^3.11.0", + "@react-stately/dnd": "^3.6.1", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/dropzone": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@react-spectrum/dropzone/-/dropzone-3.0.14.tgz", + "integrity": "sha512-JKSooSawzNlSVVQJ97WQJf5zNM1zn5r+UYewCFwlwv9dhukR46saZjBMrJuDgCUIsjLA10bn0gCuomw5PIhTyw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/filetrigger": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@react-spectrum/filetrigger/-/filetrigger-3.0.14.tgz", + "integrity": "sha512-HHBBUd8W7ksDfYGcaomFwViyjgwkk1uaMZsJy28LAYy9FpOcgQ1CkN9TENQbRRU5WC5dpZkhGy/UV61+5nNkjA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/form": { + "version": "3.7.17", + "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.17.tgz", + "integrity": "sha512-vXaHe2tVE2C9Yjj+n6L9ki79Dgin3W0sDZSO2QXngbT3EpsM8DBaDuPdGT/RyRcv9FFk0fgACE+ddqJw4F0JDA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/form": "^3.2.0", + "@react-types/form": "^3.7.14", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/icon": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.8.7.tgz", + "integrity": "sha512-nEUelI/Mr0qeUBaPY/qHG/r6SuSoHDOrNnjiIABUFxFC8odxdkVyP1UlJbDTLatFJXDweD70UiUfx9IE14HmjA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/illustratedmessage": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.5.12.tgz", + "integrity": "sha512-jWomZrw1S3juvUbT0l1WgFlm5FRw6uSbl1Fzg4SbGvTI0TM81WG7FVMte6UZZ80Uvr9jAqk2OqMt1KxHNfaYmw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/utils": "^3.12.7", + "@react-types/illustratedmessage": "^3.3.19", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/image": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.6.0.tgz", + "integrity": "sha512-O2FRZKs3u8nUmNScwyzTRT0d32dgfwM7DGXQKKhR9Ftr3Roxa53awhv506nEWpddOCjEqOXe6TdbhWWoEV34pw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/image": "^3.5.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/inlinealert": { + "version": "3.2.18", + "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.18.tgz", + "integrity": "sha512-o4npo4QPeBaRvCOTbro99vLLtIyQ9POHn6ilxwaVQO+GIWNLU7QNxWYTxADqwvLVUC9LQ/tByo0b/kzEs5+4fg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/label": { + "version": "3.16.17", + "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.17.tgz", + "integrity": "sha512-Ir/knX+kDwsp+DhKEzOiwCVIYdeBKSKnPanb24wYDSwQVXpTa4cN/w6mAbIOTQF0Nwvrzs1zRNY1Sk4ajsP+Jw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/utils": "^3.12.7", + "@react-types/label": "^3.9.13", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/labeledvalue": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.2.5.tgz", + "integrity": "sha512-7+6p13QpdDFWVWhmS2576XTbXsMKdZmvVDQ2Hxk0OSihtXfctrzYcGJi0baocykshXb5Vha5V+ok8VvBrSTBPg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-aria/i18n": "^3.12.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/layout": { + "version": "3.6.17", + "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.17.tgz", + "integrity": "sha512-lj1KxFTr8N5K2ZPx0gFuBzzwQAgfMCE1v1eARVJza8W9IcyKtFK8BKK28g3Kf+x9UgbDw6/+T7+cqw6lHR/gFw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/layout": "^3.3.25", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/link": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.20.tgz", + "integrity": "sha512-540HYKLUQLiA7tv1Yf0uuqUr4jm6v37t4ApVdPMNbP/33gjsDUIQJoCWMz6EsXMwbEW0jOaRFbGd+o/11Js5EQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/link": "^3.8.4", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/link": "^3.6.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/list": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.10.4.tgz", + "integrity": "sha512-cD5Xcv7o+BZ4NlGDOthXMXUlzMksRKdRGS9DSZG80s/AJk0MSvv+RvFvEZVzoKAIZaeDqK4F0qQTaPH2zNVKLA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/gridlist": "^3.13.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/selection": "^3.25.0", + "@react-aria/utils": "^3.30.0", + "@react-aria/virtualizer": "^4.1.8", + "@react-aria/visually-hidden": "^3.8.26", + "@react-spectrum/checkbox": "^3.10.0", + "@react-spectrum/dnd": "^3.5.8", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/layout": "^4.4.0", + "@react-stately/list": "^3.12.4", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.2.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/listbox": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.15.4.tgz", + "integrity": "sha512-KsjDbs77VvUJwBCihUuwq91IBD40blCbkHxbxHnUUt0qutvqtZ/ZEqSQXsk0JHf1ILugldjEvloq2rwZluuTKQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/listbox": "^3.14.7", + "@react-aria/utils": "^3.30.0", + "@react-aria/virtualizer": "^4.1.8", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/layout": "^4.4.0", + "@react-stately/list": "^3.12.4", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/listbox": "^3.7.2", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.2.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/menu": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.22.4.tgz", + "integrity": "sha512-cdFsVXElGKC99x7GAJ9ZQXk4w1q/QSKZEemZ7YHkPGGwyH9kOdEbWW3Ln4bZtpdlTD7AxdXNx8Fdl5kzVRJOxg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/menu": "^3.19.0", + "@react-aria/overlays": "^3.28.0", + "@react-aria/separator": "^3.4.11", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/menu": "^3.9.6", + "@react-stately/overlays": "^3.6.18", + "@react-stately/tree": "^3.9.1", + "@react-types/menu": "^3.10.3", + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@spectrum-icons/workflow": "^4.2.23", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/meter": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.5.12.tgz", + "integrity": "sha512-sCiHG5gL1VUb4O/kRbKje/e011AAOTT3B2cZnvra81sjiLgGO9Joy9X73aVFuxiIE1DkQLhs6gZVnMdzkPGlCQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/meter": "^3.4.25", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/utils": "^3.12.7", + "@react-types/meter": "^3.4.11", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/numberfield": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.10.0.tgz", + "integrity": "sha512-FznB/al2TuJpV3+EUw02OY/dsE+5DIm3bmMY0hHTZRaCuJBqSgNtCWayexKFH1s1dseaA9NUgkOeAmphHzMVPA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/numberfield": "^3.12.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/textfield": "^3.14.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/numberfield": "^3.10.0", + "@react-types/button": "^3.13.0", + "@react-types/numberfield": "^3.8.13", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@spectrum-icons/workflow": "^4.2.23", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/overlays": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.8.0.tgz", + "integrity": "sha512-l1YzcNKVcMOL/81E2MFLJMoYsippnenoTcomtEEGaSpVbyLHhr9EVqvE0TY6X5Eo3qpwuLOetwD1I0PI4fMTmg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.25.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/overlays": "^3.6.18", + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/picker": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.16.0.tgz", + "integrity": "sha512-i4ycmniHWE4oboTKujE5pWkipkRZI5dZFdfMu+M4JJe+L6kXsyt3bTTMontCUsivAJb+61ZdIg9prGanF15yWg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/select": "^3.16.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/listbox": "^3.15.4", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/select": "^3.7.0", + "@react-types/select": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.1.4", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/progress": { + "version": "3.7.18", + "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.18.tgz", + "integrity": "sha512-DH4yJaN5MTaZC16HR9zVK+yDrVEMI013DgD8EjsbCDrgeAEizKNgGhV1hoCubpmAkUqPVTHUkwj6OeXQrl/0lg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/progress": "^3.4.25", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/progress": "^3.5.14", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/provider": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.10.8.tgz", + "integrity": "sha512-Cr8A0cy2TB4bSVNne9sfUcFYzsp4RikNRHhEyiIF6s6QFMtp0SEFRIX3eW8fP+8vfIHhEC23MvNFK2PPkcabUg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/overlays": "^3.28.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/provider": "^3.8.11", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/radio": { + "version": "3.7.19", + "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.19.tgz", + "integrity": "sha512-5EwEklUottyZpkQWoFrAFNzsKq39DbQAgqnfggX31pfEwgpKjcSqrTe5mCqnxEj6oRx+df8iNJUHa2HIEZDIRg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/radio": "^3.12.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/radio": "^3.11.0", + "@react-types/radio": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/searchfield": { + "version": "3.8.19", + "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.19.tgz", + "integrity": "sha512-sbQM+u1hJqZy2Z6rpGTVq97uHjuz/CYaBZz7vbebuZHcEDWQXaez4THtDuWMbzyIqRtTLXzFy2ob+e6QKpCbMA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/searchfield": "^3.8.7", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/textfield": "^3.14.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/searchfield": "^3.5.14", + "@react-types/searchfield": "^3.6.4", + "@react-types/textfield": "^3.12.4", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/slider": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.8.0.tgz", + "integrity": "sha512-r38xOpOgzYfAo8BHhT8TCC69/hbz1bD2hfyjMdfD/7DL1gIJuTQm6NzbOQQjHEAV7fgndcePZpYKe6C7miWVMA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/slider": "^3.8.0", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/slider": "^3.7.0", + "@react-types/shared": "^3.31.0", + "@react-types/slider": "^3.8.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/statuslight": { + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.24.tgz", + "integrity": "sha512-79crKDVBzU3RVcFPnzyW06OZkOGKyt/kr2cPW/epcDy1bYsbwQwf8vjT1KvklJA+j1UwiDXC3caS7ni16HEyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@react-types/statuslight": "^3.3.19", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/switch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.6.4.tgz", + "integrity": "sha512-VCYRhtQSmSN+kcKy3l2C2hARs85TKwZph71IFpJQXhA0jNKMfrKEAcGiRJHVdukjjbUFfoIxn3udQkj+fZ0zuQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/switch": "^3.7.6", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/toggle": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@react-types/switch": "^3.5.13", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/table": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.17.4.tgz", + "integrity": "sha512-HW+hUXYKnAerUw3yZCWo7cM48hoEGfnUs4oByKa3Zw80t4KFV/cuF5wfExrmfZkvBRfPyhm4pdyLgq+QvSyZ+A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/selection": "^3.25.0", + "@react-aria/table": "^3.17.6", + "@react-aria/utils": "^3.30.0", + "@react-aria/virtualizer": "^4.1.8", + "@react-aria/visually-hidden": "^3.8.26", + "@react-spectrum/checkbox": "^3.10.0", + "@react-spectrum/dnd": "^3.5.8", + "@react-spectrum/layout": "^3.6.17", + "@react-spectrum/menu": "^3.22.4", + "@react-spectrum/progress": "^3.7.18", + "@react-spectrum/tooltip": "^3.7.8", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/flags": "^3.1.2", + "@react-stately/layout": "^4.4.0", + "@react-stately/table": "^3.14.4", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@react-types/table": "^3.13.2", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/tabs": { + "version": "3.8.23", + "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.23.tgz", + "integrity": "sha512-6ku35hJ5wPIJxSI/ZgSV8gD1RTowNkUzOkGEigFiEVXugWgfexvGS3L+fjbyNVg00aYTk74ngM3Fr8m2a1TH/g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/tabs": "^3.10.6", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/picker": "^3.16.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/list": "^3.12.4", + "@react-stately/tabs": "^3.8.4", + "@react-types/select": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@react-types/tabs": "^3.3.17", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/tag": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.3.3.tgz", + "integrity": "sha512-iYyey0dl3L18kxehRxWPp9Ro0Kmhg/PA+uQpsk/INBMrHMLIFM3+Fievi0qwtxvPVrYRDOLLZdvJUPz2SebiqA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/selection": "^3.25.0", + "@react-aria/tag": "^3.7.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/collections": "^3.12.6", + "@react-stately/list": "^3.12.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/text": { + "version": "3.5.18", + "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.18.tgz", + "integrity": "sha512-E458th9u9QSJTbhjwDQp4GUqnQIKxA612XK+RxxVmSi4904f7/2fsVGR65lrNKKRs5iCgUZZlr0RATPj8FFPFQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@react-types/text": "^3.3.19", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/textfield": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.14.0.tgz", + "integrity": "sha512-aIAQy/o7gDIeRLbDdKnDHyod22U3uXqLZhzKwKPTTb326zP5wOzmGSJ2NfgcSP8DQB69T1eWoniTlTmB+biDLw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/textfield": "^3.18.0", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/form": "^3.7.17", + "@react-spectrum/label": "^3.16.17", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@react-types/textfield": "^3.12.4", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/theme-dark": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-dark/-/theme-dark-3.5.20.tgz", + "integrity": "sha512-kMDfTSTYXsF33K4iiTylDRcQgR5uwsOowVOu+ODZ4edBYgK1JFEo6TkKspvEwCZSDBbYRX0Sw1GaxGYs83OjzA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/provider": "^3.8.11", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/theme-default": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-default/-/theme-default-3.5.20.tgz", + "integrity": "sha512-O19RMdTWJ9Y8JNtl6hOlGslD/o8AkNSO+O8hRbe7vnHW0m3rGyFh0MZIXfpKH3BNcc/8tF7jxh5GbjhjpcUZ8A==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/provider": "^3.8.11", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/theme-light": { + "version": "3.4.20", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-light/-/theme-light-3.4.20.tgz", + "integrity": "sha512-2Dtd8xRrNpShVJ3UKm86NuDNaFpcW805bZkAHrnR9LxKs75qFoiD0xgoulT/msk5RNkuwDOhBBYyt5vENR974A==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/provider": "^3.8.11", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/toast": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-spectrum/toast/-/toast-3.1.0.tgz", + "integrity": "sha512-Vd1wdQw/lYNs+9ADSoaIdBhYhI1pzzuBn0LsrFdisppPp6YMYPFpcjlOiADeHyOj778t3aQFYu07zWHQmHQklw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/overlays": "^3.28.0", + "@react-aria/toast": "^3.0.6", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/button": "^3.17.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/toast": "^3.1.2", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/tooltip": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.7.8.tgz", + "integrity": "sha512-UJJOXuzK6MZLeVMJLDVyS8q2BijmL31HtJ0zDWtntNxZClcobz/Lqogkcv2JU6CktXUfZXvIa2CcyaUhYL7t0Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.0", + "@react-aria/overlays": "^3.28.0", + "@react-aria/tooltip": "^3.8.6", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/overlays": "^5.8.0", + "@react-spectrum/utils": "^3.12.7", + "@react-stately/tooltip": "^3.5.6", + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@react-types/tooltip": "^3.4.19", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/tree": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@react-spectrum/tree/-/tree-3.1.4.tgz", + "integrity": "sha512-mV+zLbIFr/I4opSLhbcUk+7Y2tPL6W9oDvhk9K7RGj+JAfl3a7894su1D71VLiHNGS00zniYmvqTpNB7iUX1bw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/button": "^3.14.0", + "@react-aria/i18n": "^3.12.11", + "@react-aria/tree": "^3.1.2", + "@react-aria/utils": "^3.30.0", + "@react-spectrum/checkbox": "^3.10.0", + "@react-spectrum/text": "^3.5.18", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@spectrum-icons/ui": "^3.6.18", + "@swc/helpers": "^0.5.0", + "react-aria-components": "^1.11.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/utils": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.12.7.tgz", + "integrity": "sha512-OMbK9xtIU28hc6jZpOQ34Zr+a98r46QwsU0eTjgN0WNEY7SOPgWMyNbBW9qpSxGgMMT61BBuNjhX1FyOvccRvg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.11", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/view": { + "version": "3.6.21", + "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.21.tgz", + "integrity": "sha512-TV9hOugWv7NdDwm3ni2LPu0LIxXpnEoVfCXKtoR105CjDJPl6MNTdN6riebEGte9Lzuw87ROhcfGIvSfdq0OtA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@react-types/view": "^3.4.19", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-spectrum/well": { + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.25.tgz", + "integrity": "sha512-kMtgZXnrjQt1q11pks4WirfZZd/NdXiS1pZs8Eenfg8lh4pQplLwhSYRow47mvyD6Uo3eUMhH8t47+ILY1dU1Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/utils": "^3.12.7", + "@react-types/shared": "^3.31.0", + "@react-types/well": "^3.3.19", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/autocomplete": { + "version": "3.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@react-stately/autocomplete/-/autocomplete-3.0.0-beta.3.tgz", + "integrity": "sha512-YfP/TrvkOCp6j7oqpZxJSvmSeXn+XtbKSOiBOuo+m2zCIhW2ncThmDB9uAUOkpmikDv/LkGKni40RQE8USdGdA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.8.3.tgz", + "integrity": "sha512-HTWD6ZKQcXDlvj6glEEG0oi2Tpkaw19y5rK526s04zJs894wFqM9PK0WHthEYqjCeQJ5B/OkyG19XX4lENxnZw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-stately/utils": "^3.10.8", + "@react-types/calendar": "^3.7.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.7.0.tgz", + "integrity": "sha512-opViVhNvxFVHjXhM4nA/E03uvbLazsIKloXX9JtyBCZAQRUag17dpmkekfIkHvP4o7z7AWFoibD8JBFV1IrMcQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.2.0", + "@react-stately/utils": "^3.10.8", + "@react-types/checkbox": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.12.6", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.6.tgz", + "integrity": "sha512-S158RKWGZSodbJXKZDdcnrLzFxzFmyRWDNakQd1nBGhSrW2JV8lDn9ku5Og7TrjoEpkz//B2oId648YT792ilw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/color": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.9.0.tgz", + "integrity": "sha512-9eG0gDxVIu+A+DTdfwyYuU4pR788pVdq1Snpk8el787OsOb5WiuT4C4VWJb5Qbrq2PiFhhZmxuJXpzz4B1gW3A==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/number": "^3.6.4", + "@internationalized/string": "^3.2.7", + "@react-stately/form": "^3.2.0", + "@react-stately/numberfield": "^3.10.0", + "@react-stately/slider": "^3.7.0", + "@react-stately/utils": "^3.10.8", + "@react-types/color": "^3.1.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.11.0.tgz", + "integrity": "sha512-W9COXdSOC+uqCZrRHJI0K7emlPb/Tx4A89JHWBcFmiAk+hs1Cnlyjw3aaqEiT8A8/HxDNMO9QcfisWC1iNyE9A==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/form": "^3.2.0", + "@react-stately/list": "^3.12.4", + "@react-stately/overlays": "^3.6.18", + "@react-stately/select": "^3.7.0", + "@react-stately/utils": "^3.10.8", + "@react-types/combobox": "^3.13.7", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/data": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.13.2.tgz", + "integrity": "sha512-xdCqR8dJ3cnvO8EdCeuQ335dOuBqEV4z/3LnpxmR11gyn8dWwtY5O794g5+AS0KqCgd9W0v7iBrRywq5UT2pCA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.15.0.tgz", + "integrity": "sha512-OuBx+h802CoANy6KNR6XuZCndiyRf9vpB32CYZX86nqWy21GSTeT73G41ze5cAH88A/6zmtpYK24nTlk8bdfWA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@internationalized/string": "^3.2.7", + "@react-stately/form": "^3.2.0", + "@react-stately/overlays": "^3.6.18", + "@react-stately/utils": "^3.10.8", + "@react-types/datepicker": "^3.13.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/disclosure": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@react-stately/disclosure/-/disclosure-3.0.6.tgz", + "integrity": "sha512-tR2IzcS7JbgAXy9U0gxQQGRHKIqgC7nj3xsY5U9QGCE1BKzwf/84iDE63AXpLRje31yuYzwXsJs6UrE9wSjb3g==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/dnd": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.6.1.tgz", + "integrity": "sha512-cbBLptL+tpXFQ0oU0v6GBtSvzP0doohyhCIr8pOzk6aYutFI0c5JZw8LGoKN/GLfXkm7iPyrfCKeKqDlDTHCzQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/selection": "^3.20.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", + "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/form": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.2.0.tgz", + "integrity": "sha512-PfefxvT7/BIhAGpD4oQpdcxnL8cfN0ZTQxQq+Wmb9z3YzK1oM8GFxb8eGdDRG71JeF8WUNMAQVZFhgl00Z/YKg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.11.4.tgz", + "integrity": "sha512-oaXFSk2eM0PJ0GVniGA0ZlTpAA0AL0O4MQ7V3cHqZAQbwSO0n2pT31GM0bSVnYP/qTF5lQHo3ECmRQCz0fVyMw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/selection": "^3.20.4", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/layout": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.4.0.tgz", + "integrity": "sha512-PGpJBCo8yzasdYVGHFp/vHdzaJsagUOSc/bAQubVpKpKK+RVgSpk2uCo1O8sYjI5MxSVrhlhqGbVfV1O6Tqksw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/table": "^3.14.4", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@react-types/table": "^3.13.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/list": { + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.12.4.tgz", + "integrity": "sha512-r7vMM//tpmagyNlRzl2NFPPtx+az5R9pM6q7aI4aBf6/zpZt2eX2UW5gaDTGlkQng7r6OGyAgJD52jmGcCJk7Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/selection": "^3.20.4", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.6.tgz", + "integrity": "sha512-2rVtgeVAiyr7qL8BhmCK/4el49rna/5kADRH5NfPdpXw8ZzaiiHq2RtX443Txj7pUU82CJWQn+CRobq7k6ZTEw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.18", + "@react-types/menu": "^3.10.3", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/numberfield": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.10.0.tgz", + "integrity": "sha512-6C8ML4/e2tcn01BRNfFLxetVaWwz0n0pVROnVpo8p761c6lmTqohqEMNcXCVNw9H0wsa1hug2a1S5PcN2OXgag==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/number": "^3.6.4", + "@react-stately/form": "^3.2.0", + "@react-stately/utils": "^3.10.8", + "@react-types/numberfield": "^3.8.13", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.18.tgz", + "integrity": "sha512-g8n2FtDCxIg2wQ09R7lrM2niuxMPCdP17bxsPV9hyYnN6m42aAKGOhzWrFOK+3phQKgk/E1JQZEvKw1cyyGo1A==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@react-types/overlays": "^3.9.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.11.0.tgz", + "integrity": "sha512-hsCmKb9e/ygmzBADFYIGpEQ43LrxjWnlKESgxphvlv0Klla4d6XLAYSFOTX1kcjSztpvVWrdl4cIfmKVF1pz2g==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.2.0", + "@react-stately/utils": "^3.10.8", + "@react-types/radio": "^3.9.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/searchfield": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.14.tgz", + "integrity": "sha512-OAycTULyF/UWy7Odyzw5lZV2yWH+Cy7fWsZxDUedeUs4Aiwbb6D4ph9pGb0RvhD4S3+B490a2ijGgfsaDeorMA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@react-types/searchfield": "^3.6.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/select": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.7.0.tgz", + "integrity": "sha512-OWLOCKBEj8/XI+vzBSSHQAJu0Hf9Xl/flMhYh47f2b45bO++DRLcVsi8nycPNisudvK6xMQ8a/h4FwjePrCXfg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.2.0", + "@react-stately/list": "^3.12.4", + "@react-stately/overlays": "^3.6.18", + "@react-types/select": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.20.4", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.20.4.tgz", + "integrity": "sha512-Hxmc6NtECStYo+Z2uBRhQ80KPhbSF7xXv9eb4qN8dhyuSnsD6c0wc6oAJsv18dldcFz8VrD48aP/uff9mj0hxQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.7.0.tgz", + "integrity": "sha512-quxqkyyxrxLELYEkPrIrucpVPdYDK8yyliv/vvNuHrjuLRIvx6UmssxqESp2EpZfwPYtEB29QXbAKT9+KuXoCQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@react-types/slider": "^3.8.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/table": { + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.14.4.tgz", + "integrity": "sha512-uhwk8z3DemozD+yHBjSa4WyxKczpDkxhJhW7ZVOY+1jNuTYxc9/JxzPsHICrlDVV8EPWwwyMUz8eO/8rKN7DbA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/flags": "^3.1.2", + "@react-stately/grid": "^3.11.4", + "@react-stately/selection": "^3.20.4", + "@react-stately/utils": "^3.10.8", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@react-types/table": "^3.13.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.4.tgz", + "integrity": "sha512-2Tr4yXkcNDLyyxrZr+c4FnAW/wkSim3UhDUWoOgTCy3mwlQzdh9r5qJrOZRghn1QvF7p8Ahp7O7qxwd2ZGJrvQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/list": "^3.12.4", + "@react-types/shared": "^3.31.0", + "@react-types/tabs": "^3.3.17", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/toast": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.1.2.tgz", + "integrity": "sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.9.0.tgz", + "integrity": "sha512-1URd97R5nbFF9Hc1nQBhvln55EnOkLNz6pjtXU7TCnV4tYVbe+tc++hgr5XRt6KAfmuXxVDujlzRc6QjfCn0cQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.8", + "@react-types/checkbox": "^3.10.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.6.tgz", + "integrity": "sha512-BnOtE7726t1sCKPGbwzzEtEx40tjpbJvw5yqpoVnAV0OLfrXtLVYfd7tWRHmZOYmhELaUnY+gm3ZFYtwvnjs+A==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.18", + "@react-types/tooltip": "^3.4.19", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.1.tgz", + "integrity": "sha512-dyoPIvPK/cs03Tg/MQSODi2kKYW1zaiOG9KC2P0c8b44mywU2ojBKzhSJky3dBkJ4VVGy7L+voBh50ELMjEa8Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.6", + "@react-stately/selection": "^3.20.4", + "@react-stately/utils": "^3.10.8", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.8.tgz", + "integrity": "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.4.2.tgz", + "integrity": "sha512-csU/Bbq1+JYCXlF3wKHa690EhV4/uuK5VwZZvi9jTMqjblDiNUwEmIcx78J8aoadjho5wgRw3ddE9NPDGcVElA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-types/shared": "^3.31.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/actionbar": { + "version": "3.1.17", + "resolved": "https://registry.npmjs.org/@react-types/actionbar/-/actionbar-3.1.17.tgz", + "integrity": "sha512-nod3uN+ClkUKBszH19aCkLJNyGFcZ4cZ+xq4sUqnh6QDl64vYZyspNTCE6DFAH6m1GFJbh+B092XMP+K6+6o+w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/actiongroup": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@react-types/actiongroup/-/actiongroup-3.4.19.tgz", + "integrity": "sha512-TLkzKj/8Qp2jROmjETnWSP0ruSuhtd7PdsVeKVXpXJKGBJGrXtSlF1KsvH3Qnhc00WfOIJnczoqYjuSyyrrB8Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/autocomplete": { + "version": "3.0.0-alpha.33", + "resolved": "https://registry.npmjs.org/@react-types/autocomplete/-/autocomplete-3.0.0-alpha.33.tgz", + "integrity": "sha512-443avwJleeBmTR96WduQpq+D4murkmZLueen/2aazRST9nylN7u8w0DSW+84c9ENroSpfHI6Nf7epmg1LxLaOA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/combobox": "^3.13.7", + "@react-types/searchfield": "^3.6.4", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/avatar": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@react-types/avatar/-/avatar-3.0.17.tgz", + "integrity": "sha512-DsMF1wze4rmV86wu5k3WWAKAJ86Y+A3aESdxQScMyvm2xysuxzhlRMLSpQ1CGkqZeKdM5GqNXY1arPoJJbARCw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/badge": { + "version": "3.1.19", + "resolved": "https://registry.npmjs.org/@react-types/badge/-/badge-3.1.19.tgz", + "integrity": "sha512-ZxfhNmGihsJlTaE4NwRfn8HSOh41n4X1TqBVn5/GUQlDLw3J444WzxPRrzZMNn2rcLEAq31uS3Jl2XhNq8v/4g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.15", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.15.tgz", + "integrity": "sha512-0RsymrsOAsx443XRDJ1krK+Lusr4t0qqExmzFe7/XYXOn/RbGKjzSdezsoWfTy8Hjks0YbfQPVKnNxg9LKv4XA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/link": "^3.6.3", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/button": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.13.0.tgz", + "integrity": "sha512-hwvcNnBjDeNvWheWfBhmkJSzC48ub5rZq0DnpemB3XKOvv5WcF9p6rrQZsQ3egNGkh0Z+bKfr2QfotgOkccHSw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/buttongroup": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/buttongroup/-/buttongroup-3.3.19.tgz", + "integrity": "sha512-afukZLE1nQHg306rQdpB+SucSgvClGK/8ecNVv6uCy7vMcwWwJXEmEjCBF5dRbITDZVaqNufdukS9jpAQ+C5UQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.7.3.tgz", + "integrity": "sha512-gofPgVpSawJ0iGO01SbVH46u3gdykHlGT5BfGU1cRnsOR2tJX38dekO/rnuGsMQYF0+kU6U9YVae+XoOFJNnWg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.10.0.tgz", + "integrity": "sha512-DJ84ilBDvZddE/Sul97Otee4M6psrPRaJm2a1Bc7M3Y5UKo6d6RGXdcDarRRpbnS7BeAbVanKiMS2ygI9QHh9g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.1.0.tgz", + "integrity": "sha512-mqx76zdq/GyI7hdx+NTdTrCG6qmf1Uk3w/zWKF80OAesLqqs9XavQQZlRPu1Cg/fHiAHIBOLYTnLf8w+T2IMsw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0", + "@react-types/slider": "^3.8.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.13.7", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.7.tgz", + "integrity": "sha512-R7MQ4Qm4fryo6FCg3Vo/l9wxkYVG05trsLbxzMvvxCMkpcoHUPhy8Ll33eXA3YP74Rs/IaM9d0d/amSUZ4M9wg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/contextualhelp": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@react-types/contextualhelp/-/contextualhelp-3.2.20.tgz", + "integrity": "sha512-z36uBeqPbuPDpeja/hECWkvUlHkHxgRG2UVa6UkQFwEVpwyGaFpLHyDMPZRJi20j9tP1IFuFdHbSicOZn7djKA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.13.0.tgz", + "integrity": "sha512-AG/iGcdQ5SVSjw8Ta7bCdGNkMda+e+Z7lOHxDawL44SII8LtZroBDlaCpb178Tvo17bBfJ6TvWXlvSpBY8GPRg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@react-types/calendar": "^3.7.3", + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.20.tgz", + "integrity": "sha512-ebn8jW/xW/nmRATaWIPHVBIpIFWSaqjrAxa58f5TXer5FtCD9pUuzAQDmy/o22ucB0yvn6Kl+fjb3SMbMdALZQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/divider": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/divider/-/divider-3.3.19.tgz", + "integrity": "sha512-dDmXLHWeX7HoOAHKfDLZpBcF5PxoFXOyxQoShPPkRJtTdf+nJEIN/RjIkSKyj5Kl3FPhnik6UZSReclZrXrsVQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/form": { + "version": "3.7.14", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.14.tgz", + "integrity": "sha512-P+FXOQR/ISxLfBbCwgttcR1OZGqOknk7Ksgrxf7jpc4PuyUC048Jf+FcG+fARhoUeNEhv6kBXI5fpAB6xqnDhA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/grid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.3.4.tgz", + "integrity": "sha512-8XNn7Czhl+D1b2zRwdO8c3oBJmKgevT/viKJB4qBVFOhK0l/p3HYDZUMdeclvUfSt4wx4ASpI7MD3v1vmN54oA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/illustratedmessage": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/illustratedmessage/-/illustratedmessage-3.3.19.tgz", + "integrity": "sha512-Q6m1J0AyKJYwHUtu/OaSwMwcHfqh6Lwc+RfIzspap7Q/jr3cleWNjxKCBZCRMq5U59ZAkunJr71VmSnj7boIRg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/image": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-types/image/-/image-3.5.0.tgz", + "integrity": "sha512-hWhwZlm4G/Ee4wltg97eoZqlwonVw2pP5XO+p7S96Hdpk8dVrSO9pktd8yWeUG+syqOZIU66d0YW0cD7K1T9sw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/label": { + "version": "3.9.13", + "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.9.13.tgz", + "integrity": "sha512-NbMho+6pTjlYP0+qtX7hLy6+FZL3mLwYzxKZMH9GnK2V0x8H0UvnRUCm+HY3qpmMoL8jrXu/a6a3BO8waS8m4w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/layout": { + "version": "3.3.25", + "resolved": "https://registry.npmjs.org/@react-types/layout/-/layout-3.3.25.tgz", + "integrity": "sha512-k3yivNwCQ6FIxwLPe0Q6Ka38AZ4BOtMMjMSgwJMtKfv2fZ4RuL3ucRZNUdTkQI2pBMFWqH3EqhdYrZ9gMLDlbw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/link": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.6.3.tgz", + "integrity": "sha512-XIYEl9ZPa5mLy8uGQabdhPaFVmnvxNSYF59t0vs/IV0yxeoPvrjKjRAbXS+WP9zYMXIkHYNYYucriCkqKhotJA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.7.2.tgz", + "integrity": "sha512-MRpBhApR1jJNASoVWsEvH5vf89TJw+l9Lt1ssawop0K2iYF5PmkthRdqcpYcTkFu5+f5QvFchVsNJ3TKD4cf2A==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/menu": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.10.3.tgz", + "integrity": "sha512-Vd3t7fEbIOiq7kBAHaihfYf+/3Fuh0yK2KNjJ70BPtlAhMRMDVG3m0PheSTm3FFfj+uAdQdfc2YKPnMBbWjDuQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/meter": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.11.tgz", + "integrity": "sha512-c4jnDWFxDp09fNpCDrq6l2RxOxcolmf/frvdtVA/d4SGvfEOoqeUakpVDuOqDD0bU58tQPG3fqT2zH8vpWiJew==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/progress": "^3.5.14" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/numberfield": { + "version": "3.8.13", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.13.tgz", + "integrity": "sha512-zRSqInmxOTQJZt2fjAhuQK3Wa1vCOlKsRzUVvxTrE8gtQxlgFxirmobuUnjTEhwkFyb0bq8GvVfQV1E95Si2yw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.9.0.tgz", + "integrity": "sha512-T2DqMcDN5p8vb4vu2igoLrAtuewaNImLS8jsK7th7OjwQZfIWJn5Y45jSxHtXJUddEg1LkUjXYPSXCMerMcULw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.14.tgz", + "integrity": "sha512-GeGrjOeHR/p5qQ1gGlN68jb+lL47kuddxMgdR1iEnAlYGY4OtJoEN/EM5W2ZxJRKPcJmzdcY/p/J0PXa8URbSg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/provider": { + "version": "3.8.11", + "resolved": "https://registry.npmjs.org/@react-types/provider/-/provider-3.8.11.tgz", + "integrity": "sha512-8IFH/tKZ3VO/57MeYHJ4UTSQX15doDdgoTiGKbFMQsi9pjh4mPdCPpShiGjym9UWX0F+VEDBJZeLOypqhfjQoQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/radio": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.9.0.tgz", + "integrity": "sha512-phndlgqMF6/9bOOhO3le00eozNfDU1E7OHWV2cWWhGSMRFuRdf7/d+NjVtavCX75+GJ50MxvXk+KB0fjTuvKyg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/searchfield": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.6.4.tgz", + "integrity": "sha512-gRVWnRHf7pqU0lBVlkU6XsLxvaWTPnn0EomddIBCVh0msVIyvEea8CXJppu7EpvRh+grNpiMEYeijQ+u8hixlQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0", + "@react-types/textfield": "^3.12.4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/select": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.10.0.tgz", + "integrity": "sha512-+xJwYWJoJTCGsaiPAqb6QB79ub1WKIHSmOS9lh/fPUXfUszVs05jhajaN9KjrKmnXds5uh4u6l1JH5J1l2K5pw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/shared": { + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.31.0.tgz", + "integrity": "sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/slider": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.8.0.tgz", + "integrity": "sha512-eN6Fd3YCPseGfvfOJDtn9Lh9CrAb8tF3cTAprEcpnGrsxmdW9JQpcuciYuLM871X5D2fYg4WaYMpZaiYssjxBQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/statuslight": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/statuslight/-/statuslight-3.3.19.tgz", + "integrity": "sha512-LVh49+7UEO+9LzuAJN6s+/hYAG3glkycN4ivng44SpXtUZqjkwVypG4SMq29CnBnRii3+xZY+R8Cl+RwIU+SmA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.13.tgz", + "integrity": "sha512-C2EhKBu7g7xhKboPPxhyKtROEti80Ck7TBnKclXt0D4LiwbzpR3qGfuzB+7YFItnhiauP7Uxe+bAfM5ojjtm9w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/table": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.13.2.tgz", + "integrity": "sha512-3/BpFIWHXTcGgQEfip87gMNCWPtPNsc3gFkW4qtsevQ+V0577KyNyvQgvFrqMZKnvz3NWFKyshBb7PTevsus4Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.17.tgz", + "integrity": "sha512-cLcdxWNJe0Kf/pKuPQbEF9Fl+axiP4gB/WVjmAdhCgQ5LCJw2dGcy1LI1SXrlS3PVclbnujD1DJ8z1lIW4Tmww==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/text": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/text/-/text-3.3.19.tgz", + "integrity": "sha512-LVd2Bf67drzOKj3XwrCJr4hK65T1/PmPmo7UEFExUBfVfnylbC+l+Xt5bJMBH+PP1Hbg8jz3xbX8mGJz+A2+Aw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.12.4.tgz", + "integrity": "sha512-cOgzI1dT8X1JMNQ9u2UKoV2L28ROkbFEtzY9At0MqTZYYSxYp3Q7i+XRqIBehu8jOMuCtN9ed9EgwVSfkicyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.19.tgz", + "integrity": "sha512-OR/pwZReWbCIxuHJYB1L4fTwliA+mzVvUJMWwXIRy6Eh5d07spS3FZEKFvOgjMxA1nyv5PLf8eyr5RuuP1GGAA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.0", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/view": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@react-types/view/-/view-3.4.19.tgz", + "integrity": "sha512-1qZLd0K6Zt5KGCoiAK95o10L+7cKVw9Dszd8A5+Cs3yoTqRXxFh5pgkCdO5LYtoFHmVFzThMM9n8bx/7ZhxlVA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/well": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/@react-types/well/-/well-3.3.19.tgz", + "integrity": "sha512-TcZiuo2cRxBq4bJXopRPAyy7wf0exBzmas4YiiMcK9NFRz2bmj6FzcyGiBJxGFdXSux1SWcvP3D1cRwpPMqJfw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@redocly/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js-replace": "^1.0.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@redocly/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redocly/config": { + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz", + "integrity": "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redocly/openapi-core": { + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.3.tgz", + "integrity": "sha512-3arRdUp1fNx55itnjKiUhO6t4Mf91TsrTIYINDNLAZPS0TPd5YpiXRctwjel0qqWoOOhjA34cZ3m4dksLDFUYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@redocly/ajv": "^8.11.2", + "@redocly/config": "^0.22.0", + "colorette": "^1.2.0", + "https-proxy-agent": "^7.0.5", + "js-levenshtein": "^1.1.6", + "js-yaml": "^4.1.0", + "minimatch": "^5.0.1", + "pluralize": "^8.0.0", + "yaml-ast-parser": "0.0.43" + }, + "engines": { + "node": ">=18.17.0", + "npm": ">=9.5.0" + } + }, + "node_modules/@redocly/openapi-core/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rsbuild/core": { + "version": "1.3.22", + "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.3.22.tgz", + "integrity": "sha512-FGB7m8Tn/uiOhvqk0lw+NRMyD+VYJ+eBqVfpn0X11spkJDiPWn8UkMRvfzCX4XFcNZwRKYuuKJaZK1DNU8UG+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rspack/core": "1.3.12", + "@rspack/lite-tapable": "~1.0.1", + "@swc/helpers": "^0.5.17", + "core-js": "~3.42.0", + "jiti": "^2.4.2" + }, + "bin": { + "rsbuild": "bin/rsbuild.js" + }, + "engines": { + "node": ">=16.10.0" + } + }, + "node_modules/@rsbuild/plugin-react": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-1.3.2.tgz", + "integrity": "sha512-H4blXmgvVOrQlVy4ZfJ5IGfQIF5uKwtkGzwVnEsn1HN7DRRI9VlFrcuXj6+e3GigvYxg6TDHAAUJi6FoIGbnKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rspack/plugin-react-refresh": "~1.4.3", + "react-refresh": "^0.17.0" + }, + "peerDependencies": { + "@rsbuild/core": "1.x" + } + }, + "node_modules/@rsbuild/plugin-sass": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-sass/-/plugin-sass-1.3.2.tgz", + "integrity": "sha512-askbmJllDZ7LYchT8AqdKt2zKNyBauq2KgA9peBExqjTIYGP+ZXA3UB4V8zGXoACqqAYl/jqf8LUjx6nRWHFSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "deepmerge": "^4.3.1", + "loader-utils": "^2.0.4", + "postcss": "^8.5.4", + "reduce-configs": "^1.1.0", + "sass-embedded": "1.89.0" + }, + "peerDependencies": { + "@rsbuild/core": "1.x" + } + }, + "node_modules/@rsbuild/plugin-svgr": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-svgr/-/plugin-svgr-1.2.0.tgz", + "integrity": "sha512-J0XEqp++cXnzVpVXsq92H6S6VXYMuGjlw07Juh73tMpxlJdPsv95ULUoiCHmuTwUeTZMRfVMamTxz03/owYYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rsbuild/plugin-react": "^1.1.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0", + "deepmerge": "^4.3.1", + "loader-utils": "^3.3.1" + }, + "peerDependencies": { + "@rsbuild/core": "1.x" + } + }, + "node_modules/@rsbuild/plugin-svgr/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@rspack/binding": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.3.12.tgz", + "integrity": "sha512-4Ic8lV0+LCBfTlH5aIOujIRWZOtgmG223zC4L3o8WY/+ESAgpdnK6lSSMfcYgRanYLAy3HOmFIp20jwskMpbAg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.3.12", + "@rspack/binding-darwin-x64": "1.3.12", + "@rspack/binding-linux-arm64-gnu": "1.3.12", + "@rspack/binding-linux-arm64-musl": "1.3.12", + "@rspack/binding-linux-x64-gnu": "1.3.12", + "@rspack/binding-linux-x64-musl": "1.3.12", + "@rspack/binding-win32-arm64-msvc": "1.3.12", + "@rspack/binding-win32-ia32-msvc": "1.3.12", + "@rspack/binding-win32-x64-msvc": "1.3.12" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.3.12.tgz", + "integrity": "sha512-8hKjVTBeWPqkMzFPNWIh72oU9O3vFy3e88wRjMPImDCXBiEYrKqGTTLd/J0SO+efdL3SBD1rX1IvdJpxCv6Yrw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.3.12.tgz", + "integrity": "sha512-Sj4m+mCUxL7oCpdu7OmWT7fpBM7hywk5CM9RDc3D7StaBZbvNtNftafCrTZzTYKuZrKmemTh5SFzT5Tz7tf6GA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.3.12.tgz", + "integrity": "sha512-7MuOxf3/Mhv4mgFdLTvgnt/J+VouNR65DEhorth+RZm3LEWojgoFEphSAMAvpvAOpYSS68Sw4SqsOZi719ia2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.3.12.tgz", + "integrity": "sha512-s6KKj20T9Z1bA8caIjU6EzJbwyDo1URNFgBAlafCT2UC6yX7flstDJJ38CxZacA9A2P24RuQK2/jPSZpWrTUFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.3.12.tgz", + "integrity": "sha512-0w/sRREYbRgHgWvs2uMEJSLfvzbZkPHUg6CMcYQGNVK6axYRot6jPyKetyFYA9pR5fB5rsXegpnFaZaVrRIK2g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.3.12.tgz", + "integrity": "sha512-jEdxkPymkRxbijDRsBGdhopcbGXiXDg59lXqIRkVklqbDmZ/O6DHm7gImmlx5q9FoWbz0gqJuOKBz4JqWxjWVA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.3.12.tgz", + "integrity": "sha512-ZRvUCb3TDLClAqcTsl/o9UdJf0B5CgzAxgdbnYJbldyuyMeTUB4jp20OfG55M3C2Nute2SNhu2bOOp9Se5Ongw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.3.12.tgz", + "integrity": "sha512-1TKPjuXStPJr14f3ZHuv40Xc/87jUXx10pzVtrPnw+f3hckECHrbYU/fvbVzZyuXbsXtkXpYca6ygCDRJAoNeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.3.12.tgz", + "integrity": "sha512-lCR0JfnYKpV+a6r2A2FdxyUKUS4tajePgpPJN5uXDgMGwrDtRqvx+d0BHhwjFudQVJq9VVbRaL89s2MQ6u+xYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.3.12.tgz", + "integrity": "sha512-mAPmV4LPPRgxpouUrGmAE4kpF1NEWJGyM5coebsjK/zaCMSjw3mkdxiU2b5cO44oIi0Ifv5iGkvwbdrZOvMyFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.14.0", + "@rspack/binding": "1.3.12", + "@rspack/lite-tapable": "1.0.1", + "caniuse-lite": "^1.0.30001718" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@rspack/plugin-react-refresh": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.4.3.tgz", + "integrity": "sha512-wZx4vWgy5oMEvgyNGd/oUKcdnKaccYWHCRkOqTdAPJC3WcytxhTX+Kady8ERurSBiLyQpoMiU3Iyd+F1Y2Arbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-stack-parser": "^2.1.4", + "html-entities": "^2.6.0" + }, + "peerDependencies": { + "react-refresh": ">=0.10.0 <1.0.0", + "webpack-hot-middleware": "2.x" + }, + "peerDependenciesMeta": { + "webpack-hot-middleware": { + "optional": true + } + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@spectrum-icons/illustrations": { + "version": "3.6.24", + "resolved": "https://registry.npmjs.org/@spectrum-icons/illustrations/-/illustrations-3.6.24.tgz", + "integrity": "sha512-owJAF3ZyDEEReznMvrqybIMvIZPyGzVdzTTktMZU0WbsUJ4zzFfOo2GwgELz2TwJvyePRSNmQ0X3ZN8hl5jR4Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.30.0", + "@react-spectrum/icon": "^3.8.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@spectrum-icons/ui": { + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.18.tgz", + "integrity": "sha512-Bbk17oft2FbhaxC1WOEwaXx9StAev3NKYEo6HJOH+2DQmDgPLsKv0ht1JpJ4sMIzKSzhrbpVfdz63Oqz+ngseA==", + "license": "Apache-2.0", + "dependencies": { + "@adobe/react-spectrum-ui": "1.2.1", + "@react-spectrum/icon": "^3.8.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@spectrum-icons/workflow": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.23.tgz", + "integrity": "sha512-Bi9mynegrz0dZ8izyebmkNDBl8e9zgCUnp6dWEgw1SVCx3F9lh8irP2HwdlSlU6PrhmIjFRmjkeVqAOQkf9JzQ==", + "license": "Apache-2.0", + "dependencies": { + "@adobe/react-spectrum-workflow": "2.3.5", + "@react-spectrum/icon": "^3.8.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "@react-spectrum/provider": "^3.0.0", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@stoplight/json": { + "version": "3.21.7", + "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz", + "integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.3", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "jsonc-parser": "~2.2.1", + "lodash": "^4.17.21", + "safe-stable-stringify": "^1.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/ordered-object-literal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", + "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/path": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", + "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/types": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", + "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tanstack/eslint-plugin-query": { + "version": "5.78.0", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.78.0.tgz", + "integrity": "sha512-hYkhWr3UP0CkAsn/phBVR98UQawbw8CmTSgWtdgEBUjI60/GBaEIkpgi/Bp/2I8eIDK4+vdY7ac6jZx+GR+hEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.18.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.80.10", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.10.tgz", + "integrity": "sha512-mUNQOtzxkjL6jLbyChZoSBP6A5gQDVRUiPvW+/zw/9ftOAz+H754zCj3D8PwnzPKyHzGkQ9JbH48ukhym9LK1Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.80.10", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.10.tgz", + "integrity": "sha512-6zM098J8sLy9oU60XAdzUlAH4wVzoMVsWUWiiE/Iz4fd67PplxeyL4sw/MPcVJJVhbwGGXCsHn9GrQt2mlAzig==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.80.10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.4.tgz", + "integrity": "sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/har-format": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.16.tgz", + "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.18", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.18.tgz", + "integrity": "sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", + "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", + "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.34.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.1.tgz", + "integrity": "sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.1.tgz", + "integrity": "sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.1.tgz", + "integrity": "sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.1.tgz", + "integrity": "sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.1.tgz", + "integrity": "sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.1.tgz", + "integrity": "sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.1.tgz", + "integrity": "sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.1.tgz", + "integrity": "sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.1.tgz", + "integrity": "sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.1.tgz", + "integrity": "sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.1.tgz", + "integrity": "sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.1.tgz", + "integrity": "sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.1.tgz", + "integrity": "sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.1.tgz", + "integrity": "sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.1.tgz", + "integrity": "sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.1.tgz", + "integrity": "sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.1.tgz", + "integrity": "sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.1.tgz", + "integrity": "sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.1.tgz", + "integrity": "sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@yellow-ticket/seed-json-schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@yellow-ticket/seed-json-schema/-/seed-json-schema-0.1.6.tgz", + "integrity": "sha512-RtI85ohEQpARt8qRLeqglOpPFu/00YGmw3Mi7iNphbjoDCwm4QrZWnVBy9uEn2veUC6fuw0GHjHAFzAfJxaEZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@faker-js/faker": "^8.4.1", + "@types/json-schema": "^7.0.15", + "outvariant": "^1.4.2", + "randexp": "^0.5.3" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "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, + "license": "MIT", + "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-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "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, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "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, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/babel-plugin-macros/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-preset-react-app": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "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, + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true, + "license": "MIT/X11" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001724", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz", + "integrity": "sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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, + "license": "MIT", + "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/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.42.0.tgz", + "integrity": "sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "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==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "BSD-3-Clause", + "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==", + "license": "ISC", + "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==", + "license": "ISC", + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "ISC", + "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-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "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==", + "license": "ISC", + "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==", + "license": "ISC", + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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, + "license": "BSD-2-Clause" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-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, + "license": "MIT", + "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.171", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz", + "integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==", + "dev": true, + "license": "ISC" + }, + "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, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "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, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-import-context": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.8.tgz", + "integrity": "sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.1.1" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.3.tgz", + "integrity": "sha512-elVDn1eWKFrWlzxlWl9xMt8LltjKl161Ix50JFC50tHXI5/TRP32SNEqlJ/bo/HV+g7Rou/tlPQU2AcRtIhrOg==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.1.1", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-header": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz", + "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7.7.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-playwright": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.2.0.tgz", + "integrity": "sha512-qSQpAw7RcSzE3zPp8FMGkthaCWovHZ/BsXtpmnGax9vQLIovlh1bsZHEa2+j2lv9DWhnyeLM/qZmp7ffQZfQvg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "examples" + ], + "dependencies": { + "globals": "^13.23.0" + }, + "engines": { + "node": ">=16.6.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/eslint-plugin-playwright/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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-playwright/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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "license": "MIT", + "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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.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, + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "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.8" + }, + "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==", + "dev": true, + "license": "ISC", + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", + "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/intl-messageformat": { + "version": "10.7.16", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", + "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "tslib": "^2.8.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "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, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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, + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msw": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.10.4.tgz", + "integrity": "sha512-6R1or/qyele7q3RyPwNuvc0IxO8L8/Aim6Sz5ncXEgcWUNxSKE+udriTOWHtpMwmfkLYlacA2y7TIx4cL5lgHA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.39.1", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.26.1", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", + "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", + "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/openapi-fetch": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.14.0.tgz", + "integrity": "sha512-PshIdm1NgdLvb05zp8LqRQMNSKzIlPkyMxYFxwyHR+UlKD4t2nUjkDhNxeRbhRSEd3x5EUNh2w5sJYwkhOH4fg==", + "license": "MIT", + "dependencies": { + "openapi-typescript-helpers": "^0.0.15" + } + }, + "node_modules/openapi-msw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/openapi-msw/-/openapi-msw-1.2.0.tgz", + "integrity": "sha512-Ksm8xG8Lm8O9IU0rC7d1rQ0kcqYf5+qW+iz94G5fuZ/tfinjzSPnhBEwRj7dStvlqCMFQEriVWt7rplbvg0zqA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "msw": "^2.7.0" + } + }, + "node_modules/openapi-react-query": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/openapi-react-query/-/openapi-react-query-0.5.0.tgz", + "integrity": "sha512-VtyqiamsbWsdSWtXmj/fAR+m9nNxztsof6h8ZIsjRj8c8UR/x9AIwHwd60IqwgymmFwo7qfSJQ1ZzMJrtqjQVg==", + "license": "MIT", + "dependencies": { + "openapi-typescript-helpers": "^0.0.15" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.25.0", + "openapi-fetch": "^0.14.0" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/openapi-typescript": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-7.8.0.tgz", + "integrity": "sha512-1EeVWmDzi16A+siQlo/SwSGIT7HwaFAVjvMA7/jG5HMLSnrUOzPL7uSTRZZa4v/LCRxHTApHKtNY6glApEoiUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@redocly/openapi-core": "^1.34.3", + "ansi-colors": "^4.1.3", + "change-case": "^5.4.4", + "parse-json": "^8.3.0", + "supports-color": "^10.0.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "openapi-typescript": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.x" + } + }, + "node_modules/openapi-typescript-helpers": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.15.tgz", + "integrity": "sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==", + "license": "MIT" + }, + "node_modules/openapi-typescript/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-typescript/node_modules/supports-color": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.0.0.tgz", + "integrity": "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/openapi-typescript/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.1.tgz", + "integrity": "sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.54.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.1.tgz", + "integrity": "sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-aria": { + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.42.0.tgz", + "integrity": "sha512-lZF1tVmcO6mTWBHpmo4r58lBxIkt/DeF1gu5vrLv2lF4H213VGdSIG8ogQgMc2NaLHK720wafYVM2m5pRUIKdg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/string": "^3.2.7", + "@react-aria/breadcrumbs": "^3.5.27", + "@react-aria/button": "^3.14.0", + "@react-aria/calendar": "^3.9.0", + "@react-aria/checkbox": "^3.16.0", + "@react-aria/color": "^3.1.0", + "@react-aria/combobox": "^3.13.0", + "@react-aria/datepicker": "^3.15.0", + "@react-aria/dialog": "^3.5.28", + "@react-aria/disclosure": "^3.0.7", + "@react-aria/dnd": "^3.11.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/gridlist": "^3.13.3", + "@react-aria/i18n": "^3.12.11", + "@react-aria/interactions": "^3.25.4", + "@react-aria/label": "^3.7.20", + "@react-aria/landmark": "^3.0.5", + "@react-aria/link": "^3.8.4", + "@react-aria/listbox": "^3.14.7", + "@react-aria/menu": "^3.19.0", + "@react-aria/meter": "^3.4.25", + "@react-aria/numberfield": "^3.12.0", + "@react-aria/overlays": "^3.28.0", + "@react-aria/progress": "^3.4.25", + "@react-aria/radio": "^3.12.0", + "@react-aria/searchfield": "^3.8.7", + "@react-aria/select": "^3.16.0", + "@react-aria/selection": "^3.25.0", + "@react-aria/separator": "^3.4.11", + "@react-aria/slider": "^3.8.0", + "@react-aria/ssr": "^3.9.10", + "@react-aria/switch": "^3.7.6", + "@react-aria/table": "^3.17.6", + "@react-aria/tabs": "^3.10.6", + "@react-aria/tag": "^3.7.0", + "@react-aria/textfield": "^3.18.0", + "@react-aria/toast": "^3.0.6", + "@react-aria/tooltip": "^3.8.6", + "@react-aria/tree": "^3.1.2", + "@react-aria/utils": "^3.30.0", + "@react-aria/visually-hidden": "^3.8.26", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/react-aria-components": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.11.0.tgz", + "integrity": "sha512-+NxjfCiswbssoCNPJ1H5NEPnM2G7whM5bZSjkSUPXS3ZbbqQ1KSmSWHT34V4mrU+kpFfEZeZ/6E6GBYfugndig==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.8.2", + "@internationalized/string": "^3.2.7", + "@react-aria/autocomplete": "3.0.0-beta.6", + "@react-aria/collections": "3.0.0-rc.4", + "@react-aria/dnd": "^3.11.0", + "@react-aria/focus": "^3.21.0", + "@react-aria/interactions": "^3.25.4", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/overlays": "^3.28.0", + "@react-aria/ssr": "^3.9.10", + "@react-aria/toolbar": "3.0.0-beta.19", + "@react-aria/utils": "^3.30.0", + "@react-aria/virtualizer": "^4.1.8", + "@react-stately/autocomplete": "3.0.0-beta.3", + "@react-stately/layout": "^4.4.0", + "@react-stately/selection": "^3.20.4", + "@react-stately/table": "^3.14.4", + "@react-stately/utils": "^3.10.8", + "@react-stately/virtualizer": "^4.4.2", + "@react-types/form": "^3.7.14", + "@react-types/grid": "^3.3.4", + "@react-types/shared": "^3.31.0", + "@react-types/table": "^3.13.2", + "@swc/helpers": "^0.5.0", + "client-only": "^0.0.1", + "react-aria": "^3.42.0", + "react-stately": "^3.40.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-error-boundary": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", + "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-stately": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.40.0.tgz", + "integrity": "sha512-Icg2q1pxTskx2dph3cFUu9RUQcInq25WZfUcKroX1Kl4jWxBobnfMvuxvJHHkysJh77IsnLmhF3+8If5oCoMFQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/calendar": "^3.8.3", + "@react-stately/checkbox": "^3.7.0", + "@react-stately/collections": "^3.12.6", + "@react-stately/color": "^3.9.0", + "@react-stately/combobox": "^3.11.0", + "@react-stately/data": "^3.13.2", + "@react-stately/datepicker": "^3.15.0", + "@react-stately/disclosure": "^3.0.6", + "@react-stately/dnd": "^3.6.1", + "@react-stately/form": "^3.2.0", + "@react-stately/list": "^3.12.4", + "@react-stately/menu": "^3.9.6", + "@react-stately/numberfield": "^3.10.0", + "@react-stately/overlays": "^3.6.18", + "@react-stately/radio": "^3.11.0", + "@react-stately/searchfield": "^3.5.14", + "@react-stately/select": "^3.7.0", + "@react-stately/selection": "^3.20.4", + "@react-stately/slider": "^3.7.0", + "@react-stately/table": "^3.14.4", + "@react-stately/tabs": "^3.8.4", + "@react-stately/toast": "^3.1.2", + "@react-stately/toggle": "^3.9.0", + "@react-stately/tooltip": "^3.5.6", + "@react-stately/tree": "^3.9.1", + "@react-types/shared": "^3.31.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recharts": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.3.tgz", + "integrity": "sha512-EdOPzTwcFSuqtvkDoaM5ws/Km1+WTAO2eizL7rqiG0V2UVhTnz0m7J2i0CjVPUCdEkZImaWvXLbZDS2H5t6GFQ==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reduce-configs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reduce-configs/-/reduce-configs-1.1.0.tgz", + "integrity": "sha512-DQxy6liNadHfrLahZR7lMdc227NYVaQZhY5FMsxLEjX8X0SCuH+ESHSLCoz2yDZFq1/CLMDOAHdsEHwOEXKtvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass-embedded": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.0.tgz", + "integrity": "sha512-EDrK1el9zdgJFpocCGlxatDWaP18tJBWoM1hxzo2KJBvjdmBichXI6O6KlQrigvQPO3uJ8DfmFmAAx7s7CG6uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-android-arm": "1.89.0", + "sass-embedded-android-arm64": "1.89.0", + "sass-embedded-android-ia32": "1.89.0", + "sass-embedded-android-riscv64": "1.89.0", + "sass-embedded-android-x64": "1.89.0", + "sass-embedded-darwin-arm64": "1.89.0", + "sass-embedded-darwin-x64": "1.89.0", + "sass-embedded-linux-arm": "1.89.0", + "sass-embedded-linux-arm64": "1.89.0", + "sass-embedded-linux-ia32": "1.89.0", + "sass-embedded-linux-musl-arm": "1.89.0", + "sass-embedded-linux-musl-arm64": "1.89.0", + "sass-embedded-linux-musl-ia32": "1.89.0", + "sass-embedded-linux-musl-riscv64": "1.89.0", + "sass-embedded-linux-musl-x64": "1.89.0", + "sass-embedded-linux-riscv64": "1.89.0", + "sass-embedded-linux-x64": "1.89.0", + "sass-embedded-win32-arm64": "1.89.0", + "sass-embedded-win32-ia32": "1.89.0", + "sass-embedded-win32-x64": "1.89.0" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.0.tgz", + "integrity": "sha512-s6jxkEZQQrtyIGZX6Sbcu7tEixFG2VkqFgrX11flm/jZex7KaxnZtFace+wnYAgHqzzYpx0kNzJUpT+GXxm8CA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.0.tgz", + "integrity": "sha512-pr4R3p5R+Ul9ZA5nzYbBJQFJXW6dMGzgpNBhmaToYDgDhmNX5kg0mZAUlGLHvisLdTiR6oEfDDr9QI6tnD2nqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-ia32": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.89.0.tgz", + "integrity": "sha512-GoNnNGYmp1F0ZMHqQbAurlQsjBMZKtDd5H60Ruq86uQFdnuNqQ9wHKJsJABxMnjfAn60IjefytM5PYTMcAmbfA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.0.tgz", + "integrity": "sha512-di+i4KkKAWTNksaQYTqBEERv46qV/tvv14TPswEfak7vcTQ2pj2mvV4KGjLYfU2LqRkX/NTXix9KFthrzFN51Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.0.tgz", + "integrity": "sha512-1cRRDAnmAS1wLaxfFf6PCHu9sKW8FNxdM7ZkanwxO9mztrCu/uvfqTmaurY9+RaKvPus7sGYFp46/TNtl/wRjg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.0.tgz", + "integrity": "sha512-EUNUzI0UkbQ6dASPyf09S3x7fNT54PjyD594ZGTY14Yh4qTuacIj27ckLmreAJNNu5QxlbhyYuOtz+XN5bMMxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.0.tgz", + "integrity": "sha512-23R8zSuB31Fq/MYpmQ38UR2C26BsYb66VVpJgWmWl/N+sgv/+l9ECuSPMbYNgM3vb9TP9wk9dgL6KkiCS5tAyg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.0.tgz", + "integrity": "sha512-KAzA1XD74d8/fiJXxVnLfFwfpmD2XqUJZz+DL6ZAPNLH1sb+yCP7brktaOyClDc/MBu61JERdHaJjIZhfX0Yqw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.0.tgz", + "integrity": "sha512-g9Lp57qyx51ttKj0AN/edV43Hu1fBObvD7LpYwVfs6u3I95r0Adi90KujzNrUqXxJVmsfUwseY8kA8zvcRjhYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-ia32": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.89.0.tgz", + "integrity": "sha512-5fxBeXyvBr3pb+vyrx9V6yd7QDRXkAPbwmFVVhjqshBABOXelLysEFea7xokh/tM8JAAQ4O8Ls3eW3Eojb477g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.0.tgz", + "integrity": "sha512-0Q1JeEU4/tzH7fwAwarfIh+Swn3aXG/jPhVsZpbR1c1VzkeaPngmXdmLJcVXsdb35tjk84DuYcFtJlE1HYGw4Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.0.tgz", + "integrity": "sha512-50oelrOtN64u15vJN9uJryIuT0+UPjyeoq0zdWbY8F7LM9294Wf+Idea+nqDUWDCj1MHndyPFmR1mjeuRouJhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-ia32": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.89.0.tgz", + "integrity": "sha512-ILWqpTd+0RdsSw977iVAJf4CLetIbcQgLQf17ycS1N4StZKVRZs1bBfZhg/f/HU/4p5HondPAwepgJepZZdnFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.0.tgz", + "integrity": "sha512-n2V+Tdjj7SAuiuElJYhWiHjjB1YU0cuFvL1/m5K+ecdNStfHFWIzvBT6/vzQnBOWjI4eZECNVuQ8GwGWCufZew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.0.tgz", + "integrity": "sha512-KOHJdouBK3SLJKZLnFYzuxs3dn+6jaeO3p4p1JUYAcVfndcvh13Sg2sLGfOfpg7Og6ws2Nnqnx0CyL26jPJ7ag==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.0.tgz", + "integrity": "sha512-0A/UWeKX6MYhVLWLkdX3NPKHO+mvIwzaf6TxGCy3vS3TODWaeDUeBhHShAr7YlOKv5xRGxf7Gx7FXCPV0mUyMA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.0.tgz", + "integrity": "sha512-dRBoOFPDWctHPYK3hTk3YzyX/icVrXiw7oOjbtpaDr6JooqIWBe16FslkWyvQzdmfOFy80raKVjgoqT7DsznkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.0.tgz", + "integrity": "sha512-RnlVZ14hC/W7ubzvhqnbGfjU5PFNoFP/y5qycgCy+Mezb0IKbWvZ2Lyzux8TbL3OIjOikkNpfXoNQrX706WLAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-ia32": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.89.0.tgz", + "integrity": "sha512-eFe9VMNG+90nuoE3eXDy+38+uEHGf7xcqalq5+0PVZfR+H9RlaEbvIUNflZV94+LOH8Jb4lrfuekhHgWDJLfSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.0.tgz", + "integrity": "sha512-AaGpr5R6MLCuSvkvDdRq49ebifwLcuGPk0/10hbYw9nh3jpy2/CylYubQpIpR4yPcuD1wFwFqufTXC3HJYGb0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sonner": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", + "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable-hash-x": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.1.1.tgz", + "integrity": "sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true, + "license": "MIT" + }, + "node_modules/static-path": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/static-path/-/static-path-0.0.4.tgz", + "integrity": "sha512-RAe93sPAKMDDuXuyU4UKJ+Sm84XJXk3JH21jlPu3bhs30o9Z3abRF6AE8qZCjCWPlJQrHIy4NfxO5CeYOThLFg==", + "license": "ISC" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/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, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz", + "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.34.1", + "@typescript-eslint/parser": "8.34.1", + "@typescript-eslint/utils": "8.34.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unrs-resolver": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.1.tgz", + "integrity": "sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.2.2" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.9.1", + "@unrs/resolver-binding-android-arm64": "1.9.1", + "@unrs/resolver-binding-darwin-arm64": "1.9.1", + "@unrs/resolver-binding-darwin-x64": "1.9.1", + "@unrs/resolver-binding-freebsd-x64": "1.9.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.9.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.9.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.9.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.9.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.9.1", + "@unrs/resolver-binding-linux-x64-musl": "1.9.1", + "@unrs/resolver-binding-wasm32-wasi": "1.9.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.9.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.9.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.9.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js-replace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz", + "integrity": "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/usehooks-ts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.1.tgz", + "integrity": "sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==", + "license": "MIT", + "dependencies": { + "lodash.debounce": "^4.0.8" + }, + "engines": { + "node": ">=16.15.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.6.tgz", + "integrity": "sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-svgr": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.3.0.tgz", + "integrity": "sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.3", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0" + }, + "peerDependencies": { + "vite": ">=2.6.0" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "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/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/config": { + "name": "@geti/config", + "version": "1.0.0" + }, + "packages/ui": { + "name": "@geti/ui", + "version": "1.0.0", + "dependencies": { + "@adobe/react-spectrum": "^3.43.0", + "@spectrum-icons/illustrations": "^3.6.24", + "@spectrum-icons/workflow": "^4.2.23", + "react-aria-components": "^1.11.0", + "sonner": "^2.0.7", + "usehooks-ts": "^3.1.1" + }, + "devDependencies": { + "@geti/config": "*", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.6.4", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "eslint": "^9.25.1", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-playwright": "^2.2.0", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "typescript": "^5.8.3" + } + } + } +} diff --git a/app/ui/package.json b/app/ui/package.json new file mode 100644 index 0000000000..5a831f95da --- /dev/null +++ b/app/ui/package.json @@ -0,0 +1,100 @@ +{ + "name": "@geti/tune-ui", + "version": "1.0.0", + "private": true, + "type": "module", + "engines": { + "node": "v24.2.0", + "npm": "11.3.0" + }, + "scripts": { + "build": "rsbuild build", + "build:api": "npx openapi-typescript ./src/api/openapi-spec.json -o ./src/api/openapi-spec.d.ts --root-types && prettier --write src/api/openapi-spec.d.ts", + "build:api:download": "curl -o ./src/api/openapi-spec.json http://localhost:7860/api/openapi.json && prettier --write src/api/openapi-spec.json", + "clone-geti-ui-packages": "npx degit git@github.com:open-edge-platform/geti.git/web_ui/packages/config packages/config --force && npx degit git@github.com:open-edge-platform/geti.git/web_ui/packages/ui packages/ui --force", + "cyclic-deps-check": "npx madge --circular src/**/*.ts*", + "start": "rsbuild dev", + "format": "prettier --write .", + "format:check": "prettier --check --cache \"./src/**/*.{js,ts,jsx,tsx,css,scss,sass}\"", + "lint": "eslint \"src/**/*.ts*\" --max-warnings 0", + "lint:fix": "eslint --fix \"./src/**/*.ts*\"", + "preinstall": "npm run clone-geti-ui-packages", + "preview": "rsbuild preview", + "test:unit": "vitest --config vitest.config.ts", + "test:unit:watch": "vitest --config vitest.config.ts --reporter=verbose --watch", + "test:component": "npx playwright test --config=playwright.config.ts", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "@geti/config": "*", + "@geti/ui": "*", + "@tanstack/react-query": "^5.80.10", + "clsx": "^2.1.1", + "lodash-es": "^4.17.21", + "openapi-fetch": "^0.14.0", + "openapi-react-query": "^0.5.0", + "react": "^18.3.1", + "@adobe/react-spectrum": "^3.41.0", + "react-aria-components": "^1.8.0", + "react-dom": "^18.3.1", + "react-error-boundary": "^3.1.4", + "react-router": "^6.30.1", + "react-router-dom": "^6.30.1", + "recharts": "^2.15.3", + "sonner": "^2.0.6", + "static-path": "^0.0.4", + "uuid": "^11.1.0" + }, + "devDependencies": { + "@eslint/compat": "^1.2.8", + "@eslint/js": "^9.25.1", + "@ianvs/prettier-plugin-sort-imports": "^4.4.2", + "@msw/playwright": "^0.4.2", + "@mswjs/source": "^0.4.1", + "@playwright/test": "^1.54.1", + "@rsbuild/core": "^1.3.14", + "@rsbuild/plugin-react": "^1.3.0", + "@rsbuild/plugin-sass": "^1.3.1", + "@rsbuild/plugin-svgr": "^1.2.0", + "@tanstack/eslint-plugin-query": "^5.78.0", + "@testing-library/jest-dom": "^6.6.4", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@types/lodash-es": "^4.17.12", + "@types/node": "^24.0.15", + "@types/react": "^18.3.20", + "@types/react-dom": "^18.3.5", + "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@vitejs/plugin-react": "^4.7.0", + "babel-preset-react-app": "^10.1.0", + "eslint": "^9.25.1", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-playwright": "^2.2.0", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "identity-obj-proxy": "^3.0.0", + "jsdom": "^26.1.0", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "openapi-msw": "^1.2.0", + "openapi-typescript": "^7.8.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.31.1", + "vite": "^7.0.6", + "vite-plugin-svgr": "^4.3.0", + "vitest": "^3.2.4" + }, + "workspaces": [ + "packages/*" + ], + "msw": { + "workerDirectory": [ + "public" + ] + } +} diff --git a/app/ui/playwright.config.ts b/app/ui/playwright.config.ts new file mode 100644 index 0000000000..b47ba0e1b9 --- /dev/null +++ b/app/ui/playwright.config.ts @@ -0,0 +1,49 @@ +import { defineConfig, devices } from '@playwright/test'; + +const CI = !!process.env.CI; + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: [[CI ? 'github' : 'list'], ['html', { open: 'never' }]], + use: { + baseURL: 'http://localhost:3000', + trace: CI ? 'on-first-retry' : 'on', + video: CI ? 'on-first-retry' : 'on', + launchOptions: { + slowMo: 100, + headless: true, + devtools: true, + }, + timezoneId: 'UTC', + actionTimeout: CI ? 10000 : 5000, + navigationTimeout: CI ? 10000 : 5000, + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'Component tests', + use: { ...devices['Desktop Chrome'] }, + }, + ], + + /* Run your local dev server before starting the tests */ + webServer: { + command: CI ? 'npx serve -s dist -p 3000' : 'npm run start', + name: 'client', + url: 'http://localhost:3000', + reuseExistingServer: CI === false, + }, +}); diff --git a/app/ui/public/mockServiceWorker.js b/app/ui/public/mockServiceWorker.js new file mode 100644 index 0000000000..da8bb3c0c6 --- /dev/null +++ b/app/ui/public/mockServiceWorker.js @@ -0,0 +1,336 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + */ + +const PACKAGE_VERSION = '2.10.4'; +const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'; +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse'); +const activeClientIds = new Set(); + +addEventListener('install', function () { + self.skipWaiting(); +}); + +addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()); +}); + +addEventListener('message', async function (event) { + const clientId = Reflect.get(event.source || {}, 'id'); + + if (!clientId || !self.clients) { + return; + } + + const client = await self.clients.get(clientId); + + if (!client) { + return; + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }); + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }); + break; + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }); + break; + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId); + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }); + break; + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId); + break; + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId); + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId; + }); + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister(); + } + + break; + } + } +}); + +addEventListener('fetch', function (event) { + // Bypass navigation requests. + if (event.request.mode === 'navigate') { + return; + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { + return; + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return; + } + + const requestId = crypto.randomUUID(); + event.respondWith(handleRequest(event, requestId)); +}); + +/** + * @param {FetchEvent} event + * @param {string} requestId + */ +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event); + const requestCloneForEvents = event.request.clone(); + const response = await getResponse(event, client, requestId); + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + const serializedRequest = await serializeRequest(requestCloneForEvents); + + // Clone the response so both the client and the library could consume it. + const responseClone = response.clone(); + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + isMockedResponse: IS_MOCKED_RESPONSE in response, + request: { + id: requestId, + ...serializedRequest, + }, + response: { + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + headers: Object.fromEntries(responseClone.headers.entries()), + body: responseClone.body, + }, + }, + }, + responseClone.body ? [serializedRequest.body, responseClone.body] : [] + ); + } + + return response; +} + +/** + * Resolve the main client for the given event. + * Client that issues a request doesn't necessarily equal the client + * that registered the worker. It's with the latter the worker should + * communicate with during the response resolving phase. + * @param {FetchEvent} event + * @returns {Promise} + */ +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId); + + if (activeClientIds.has(event.clientId)) { + return client; + } + + if (client?.frameType === 'top-level') { + return client; + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }); + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible'; + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id); + }); +} + +/** + * @param {FetchEvent} event + * @param {Client | undefined} client + * @param {string} requestId + * @returns {Promise} + */ +async function getResponse(event, client, requestId) { + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = event.request.clone(); + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers); + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get('accept'); + if (acceptHeader) { + const values = acceptHeader.split(',').map((value) => value.trim()); + const filteredValues = values.filter((value) => value !== 'msw/passthrough'); + + if (filteredValues.length > 0) { + headers.set('accept', filteredValues.join(', ')); + } else { + headers.delete('accept'); + } + } + + return fetch(requestClone, { headers }); + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough(); + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough(); + } + + // Notify the client that a request has been intercepted. + const serializedRequest = await serializeRequest(event.request); + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + ...serializedRequest, + }, + }, + [serializedRequest.body] + ); + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data); + } + + case 'PASSTHROUGH': { + return passthrough(); + } + } + + return passthrough(); +} + +/** + * @param {Client} client + * @param {any} message + * @param {Array} transferrables + * @returns {Promise} + */ +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel(); + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error); + } + + resolve(event.data); + }; + + client.postMessage(message, [channel.port2, ...transferrables.filter(Boolean)]); + }); +} + +/** + * @param {Response} response + * @returns {Response} + */ +function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error(); + } + + const mockedResponse = new Response(response.body, response); + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }); + + return mockedResponse; +} + +/** + * @param {Request} request + */ +async function serializeRequest(request) { + return { + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: await request.arrayBuffer(), + keepalive: request.keepalive, + }; +} diff --git a/app/ui/rsbuild.config.ts b/app/ui/rsbuild.config.ts new file mode 100644 index 0000000000..0cb15c22ef --- /dev/null +++ b/app/ui/rsbuild.config.ts @@ -0,0 +1,45 @@ +import { defineConfig, loadEnv } from '@rsbuild/core'; +import { pluginReact } from '@rsbuild/plugin-react'; +import { pluginSass } from '@rsbuild/plugin-sass'; +import { pluginSvgr } from '@rsbuild/plugin-svgr'; + +const { publicVars } = loadEnv({ prefixes: ['PUBLIC_'] }); + +export default defineConfig({ + plugins: [ + pluginReact(), + + pluginSass(), + + pluginSvgr({ + svgrOptions: { + exportType: 'named', + }, + }), + ], + + source: { + define: { + ...publicVars, + 'import.meta.env.PUBLIC_API_BASE_URL': + publicVars['import.meta.env.PUBLIC_API_BASE_URL'] ?? '"http://localhost:7860"', + 'process.env.PUBLIC_API_BASE_URL': + publicVars['process.env.PUBLIC_API_BASE_URL'] ?? '"http://localhost:7860"', + // Needed to prevent an issue with spectrum's picker + // eslint-disable-next-line max-len + // https://github.com/adobe/react-spectrum/blob/6173beb4dad153aef74fc81575fd97f8afcf6cb3/packages/%40react-spectrum/overlays/src/OpenTransition.tsx#L40 + 'process.env': {}, + }, + }, + html: { + title: 'Geti Inspect', + favicon: './src/assets/icons/build-icon.svg', + }, + tools: { + rspack: { + watchOptions: { + ignored: ['**/src-tauri/**'], + }, + }, + }, +}); diff --git a/app/ui/src/api/client.ts b/app/ui/src/api/client.ts new file mode 100644 index 0000000000..8b5e27979b --- /dev/null +++ b/app/ui/src/api/client.ts @@ -0,0 +1,10 @@ +import createFetchClient from 'openapi-fetch'; +import createClient from 'openapi-react-query'; + +import type { paths } from './openapi-spec'; // generated by openapi-typescript + +export const API_BASE_URL = import.meta.env.PUBLIC_API_BASE_URL || ''; + +export const fetchClient = createFetchClient({ baseUrl: API_BASE_URL }); + +export const $api = createClient(fetchClient); diff --git a/app/ui/src/api/openapi-spec.d.ts b/app/ui/src/api/openapi-spec.d.ts new file mode 100644 index 0000000000..bf6bb46325 --- /dev/null +++ b/app/ui/src/api/openapi-spec.d.ts @@ -0,0 +1,2503 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + '/api/sources': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List Sources + * @description List the available sources + */ + get: operations['list_sources_api_sources_get']; + put?: never; + /** + * Create Source + * @description Create and configure a new source + */ + post: operations['create_source_api_sources_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/sources/{source_id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Source + * @description Get info about a source + */ + get: operations['get_source_api_sources__source_id__get']; + put?: never; + post?: never; + /** + * Delete Source + * @description Remove a source + */ + delete: operations['delete_source_api_sources__source_id__delete']; + options?: never; + head?: never; + /** + * Update Source + * @description Reconfigure an existing source + */ + patch: operations['update_source_api_sources__source_id__patch']; + trace?: never; + }; + '/api/sources/{source_id}:export': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Export Source + * @description Export a source to file + */ + post: operations['export_source_api_sources__source_id__export_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/sources:import': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Import Source + * @description Import a source from file + */ + post: operations['import_source_api_sources_import_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/sinks': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List Sinks + * @description List the available sinks + */ + get: operations['list_sinks_api_sinks_get']; + put?: never; + /** + * Create Sink + * @description Create and configure a new sink + */ + post: operations['create_sink_api_sinks_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/sinks/{sink_id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Sink + * @description Get info about a sink + */ + get: operations['get_sink_api_sinks__sink_id__get']; + put?: never; + post?: never; + /** + * Delete Sink + * @description Remove a sink + */ + delete: operations['delete_sink_api_sinks__sink_id__delete']; + options?: never; + head?: never; + /** + * Update Sink + * @description Reconfigure an existing sink + */ + patch: operations['update_sink_api_sinks__sink_id__patch']; + trace?: never; + }; + '/api/sinks/{sink_id}:export': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Export Sink + * @description Export a sink to file + */ + post: operations['export_sink_api_sinks__sink_id__export_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/sinks:import': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Import Sink + * @description Import a sink from file + */ + post: operations['import_sink_api_sinks_import_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/pipelines': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List Pipelines + * @description List the available pipelines + */ + get: operations['list_pipelines_api_pipelines_get']; + put?: never; + /** + * Create Pipeline + * @description Create and configure a new pipeline + */ + post: operations['create_pipeline_api_pipelines_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/pipelines/{pipeline_id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Pipeline + * @description Get info about a given pipeline + */ + get: operations['get_pipeline_api_pipelines__pipeline_id__get']; + put?: never; + post?: never; + /** + * Delete Pipeline + * @description Delete a pipeline. Pipelines must be first disabled (status must be idle) before deletion. + */ + delete: operations['delete_pipeline_api_pipelines__pipeline_id__delete']; + options?: never; + head?: never; + /** + * Update Pipeline + * @description Reconfigure an existing pipeline + */ + patch: operations['update_pipeline_api_pipelines__pipeline_id__patch']; + trace?: never; + }; + '/api/pipelines/{pipeline_id}:enable': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Enable Pipeline + * @description Activate a pipeline. + * The pipeline will start processing data from the source, run it through the model, and send results to the sink. + */ + post: operations['enable_pipeline_api_pipelines__pipeline_id__enable_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/pipelines/{pipeline_id}:disable': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Disable Pipeline + * @description Stop a pipeline. The pipeline will become idle, and it won't process any data until re-enabled. + */ + post: operations['disable_pipeline_api_pipelines__pipeline_id__disable_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/pipelines/{pipeline_id}:export': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Export Pipeline + * @description Export a pipeline to file + */ + post: operations['export_pipeline_api_pipelines__pipeline_id__export_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/pipelines:import': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Import Pipeline + * @description Import a pipeline from file + */ + post: operations['import_pipeline_api_pipelines_import_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/models': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List Models + * @description Get information about available models + */ + get: operations['list_models_api_models_get']; + put?: never; + /** + * Add Model + * @description Upload a new model + * + * NOTE: this endpoint will be replaced by preconfigured model selection + */ + post: operations['add_model_api_models_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/models/{model_id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Model + * @description Get information about a specific model + */ + get: operations['get_model_api_models__model_id__get']; + put?: never; + post?: never; + /** + * Delete Model + * @description Delete a model + */ + delete: operations['delete_model_api_models__model_id__delete']; + options?: never; + head?: never; + /** + * Update Model Metadata + * @description Update the metadata of an existing model + */ + patch: operations['update_model_metadata_api_models__model_id__patch']; + trace?: never; + }; + '/api/models/{model_name}:activate': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Activate Model + * @deprecated + * @description Activate a model + * + * NOTE: this endpoint will be removed; use instead `PATCH /api/pipelines/{pipeline_id}` to change the active model + */ + post: operations['activate_model_api_models__model_name__activate_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/models/{model_name}:deactivate': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Deactivate Model + * @deprecated + * @description Deactivate a model + * + * NOTE: this endpoint will be removed; use instead `PATCH /api/pipelines/{pipeline_id}` to change the active model + */ + post: operations['deactivate_model_api_models__model_name__deactivate_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/system/metrics/memory': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Memory + * @description Returns the used memory in MB and total available memory in MB. + */ + get: operations['get_memory_api_system_metrics_memory_get']; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/input_hook': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Webrtc Input Hook + * @description Update webrtc input for user + */ + post: operations['webrtc_input_hook_api_input_hook_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/health': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Health Check + * @description Health check endpoint + */ + get: operations['health_check_health_get']; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/webrtc/offer': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Offer + * @description Handle an incoming WebRTC offer via HTTP POST. + * + * Processes the SDP offer and ICE candidates from the client to establish + * a WebRTC connection. + * + * Args: + * body: A Pydantic model containing the SDP offer, optional ICE candidate, + * type ('offer'), and a unique WebRTC ID. + * + * Returns: + * A dictionary containing the SDP answer generated by the server. + */ + post: operations['offer_api_webrtc_offer_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/api/telephone/incoming': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Handle Incoming Call + * @description Handle incoming telephone calls (e.g., via Twilio). + * + * Generates TwiML instructions to connect the incoming call to the + * WebSocket handler (`/telephone/handler`) for audio streaming. + * + * Args: + * request: The FastAPI Request object for the incoming call webhook. + * + * Returns: + * An HTMLResponse containing the TwiML instructions as XML. + */ + post: operations['handle_incoming_call_api_telephone_incoming_post']; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + /** Body */ + Body: { + /** Sdp */ + sdp?: string | null; + /** Candidate */ + candidate?: { + [key: string]: unknown; + } | null; + /** Type */ + type: string; + /** Webrtc Id */ + webrtc_id: string; + }; + /** Body_add_model_api_models_post */ + Body_add_model_api_models_post: { + /** + * Xml File + * Format: binary + */ + xml_file: string; + /** + * Bin File + * Format: binary + */ + bin_file: string; + }; + /** Body_import_sink_api_sinks_import_post */ + Body_import_sink_api_sinks_import_post: { + /** + * Yaml File + * Format: binary + * @description YAML file containing the sink configuration + */ + yaml_file: string; + }; + /** Body_import_source_api_sources_import_post */ + Body_import_source_api_sources_import_post: { + /** + * Yaml File + * Format: binary + * @description YAML file containing the source configuration + */ + yaml_file: string; + }; + /** + * DisconnectedSinkConfig + * @example { + * "id": "00000000-0000-0000-0000-000000000000", + * "name": "No Sink", + * "sink_type": "disconnected" + * } + */ + DisconnectedSinkConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default No Sink + */ + name: string; + /** + * Output Formats + * @default [] + */ + output_formats: components['schemas']['OutputFormat'][]; + /** Rate Limit */ + rate_limit?: number | null; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + sink_type: 'disconnected'; + }; + /** DisconnectedSourceConfig */ + DisconnectedSourceConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default No Source + */ + name: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + source_type: 'disconnected'; + }; + /** + * FolderSinkConfig + * @example { + * "folder_path": "/path/to/output", + * "id": "b5787c06-964b-4097-8eca-238b8cf79fc8", + * "name": "Local Folder", + * "output_formats": [ + * "image_original", + * "image_with_predictions", + * "predictions" + * ], + * "rate_limit": 0.2, + * "sink_type": "folder" + * } + */ + FolderSinkConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** Output Formats */ + output_formats: components['schemas']['OutputFormat'][]; + /** Rate Limit */ + rate_limit?: number | null; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + sink_type: 'folder'; + /** Folder Path */ + folder_path: string; + }; + /** HTTPValidationError */ + HTTPValidationError: { + /** Detail */ + detail?: components['schemas']['ValidationError'][]; + }; + /** + * IPCameraSourceConfig + * @example { + * "auth_required": true, + * "id": "3d055c8a-2536-46ea-8f3c-832bd6f8bbdc", + * "name": "Street Camera 123", + * "source_type": "ip_camera", + * "stream_url": "http://example.com/stream" + * } + */ + IPCameraSourceConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + source_type: 'ip_camera'; + /** Stream Url */ + stream_url: string; + /** + * Auth Required + * @default false + */ + auth_required: boolean; + }; + /** + * ImagesFolderSourceConfig + * @example { + * "id": "4a580a0e-b841-4c70-bf88-2d68a28f780d", + * "ignore_existing_images": true, + * "images_folder_path": "/path/to/images", + * "name": "Best Photos", + * "source_type": "images_folder" + * } + */ + ImagesFolderSourceConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + source_type: 'images_folder'; + /** Images Folder Path */ + images_folder_path: string; + /** Ignore Existing Images */ + ignore_existing_images: boolean; + }; + /** InputData */ + InputData: { + /** Webrtc Id */ + webrtc_id: string; + /** Conf Threshold */ + conf_threshold: number; + }; + /** + * Model + * @description Base model schema that includes common fields for all models. + * This can be extended by other schemas to include additional fields. + * @example { + * "format": "openvino_ir", + * "id": "76e07d18-196e-4e33-bf98-ac1d35dca4cb", + * "name": "YOLO-X for Vehicle Detection" + * } + */ + Model: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** @default openvino_ir */ + format: components['schemas']['ModelFormat']; + }; + /** + * ModelFormat + * @enum {string} + */ + ModelFormat: 'openvino_ir' | 'onnx'; + /** + * MqttSinkConfig + * @example { + * "auth_required": true, + * "broker_host": "localhost", + * "broker_port": 1883, + * "id": "c1a70159-9c9e-4f02-821a-02576321056c", + * "name": "Local MQTT Broker", + * "output_formats": [ + * "predictions" + * ], + * "sink_type": "mqtt", + * "topic": "predictions" + * } + */ + MqttSinkConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** Output Formats */ + output_formats: components['schemas']['OutputFormat'][]; + /** Rate Limit */ + rate_limit?: number | null; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + sink_type: 'mqtt'; + /** Broker Host */ + broker_host: string; + /** Broker Port */ + broker_port: number; + /** Topic */ + topic: string; + /** + * Auth Required + * @default false + */ + auth_required: boolean; + }; + /** + * OutputFormat + * @enum {string} + */ + OutputFormat: 'image_original' | 'image_with_predictions' | 'predictions'; + /** + * Pipeline + * @example { + * "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + * "model_id": "b0feaabc-da2b-442e-9b3e-55c11c2c2ff2", + * "name": "Production Pipeline", + * "sink_id": "b5787c06-964b-4097-8eca-238b8cf79fc8", + * "source_id": "d2cbd8d0-17b8-463e-85a2-4aaed031674d", + * "status": "running" + * } + */ + Pipeline: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** Source Id */ + source_id?: string | null; + /** Sink Id */ + sink_id?: string | null; + /** Model Id */ + model_id?: string | null; + /** @default idle */ + status: components['schemas']['PipelineStatus']; + }; + /** + * PipelineStatus + * @enum {string} + */ + PipelineStatus: 'idle' | 'running'; + /** + * RosSinkConfig + * @example { + * "id": "6f1d96ac-db38-42a9-9a11-142d404f493f", + * "name": "ROS2 Predictions Topic", + * "output_formats": [ + * "predictions" + * ], + * "sink_type": "ros", + * "topic": "/predictions" + * } + */ + RosSinkConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** Output Formats */ + output_formats: components['schemas']['OutputFormat'][]; + /** Rate Limit */ + rate_limit?: number | null; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + sink_type: 'ros'; + /** Topic */ + topic: string; + }; + /** ValidationError */ + ValidationError: { + /** Location */ + loc: (string | number)[]; + /** Message */ + msg: string; + /** Error Type */ + type: string; + }; + /** + * VideoFileSourceConfig + * @example { + * "id": "712750b2-5a82-47ee-8fba-f3dc96cb615d", + * "name": "Sample Video", + * "source_type": "video_file", + * "video_path": "/path/to/video.mp4" + * } + */ + VideoFileSourceConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + source_type: 'video_file'; + /** Video Path */ + video_path: string; + }; + /** + * WebcamSourceConfig + * @example { + * "device_id": 0, + * "id": "f9e0ae4f-d96c-4304-baab-2ab845362d03", + * "name": "Webcam 0", + * "source_type": "webcam" + * } + */ + WebcamSourceConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + source_type: 'webcam'; + /** Device Id */ + device_id: number; + }; + /** + * WebhookSinkConfig + * @example { + * "headers": { + * "Authorization": "Bearer YOUR_TOKEN" + * }, + * "http_method": "PUT", + * "id": "39ba53e5-9a03-44fc-b78a-83245cf14676", + * "name": "Webhook Endpoint", + * "output_formats": [ + * "predictions" + * ], + * "sink_type": "webhook", + * "webhook_url": "https://example.com/webhook" + * } + */ + WebhookSinkConfig: { + /** + * Id + * Format: uuid + */ + id?: string; + /** + * Name + * @default Default Name + */ + name: string; + /** Output Formats */ + output_formats: components['schemas']['OutputFormat'][]; + /** Rate Limit */ + rate_limit?: number | null; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + sink_type: 'webhook'; + /** Webhook Url */ + webhook_url: string; + /** + * Http Method + * @default POST + * @enum {string} + */ + http_method: 'POST' | 'PUT' | 'PATCH'; + /** Headers */ + headers?: { + [key: string]: string; + } | null; + /** + * Timeout + * @default 10 + */ + timeout: number; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type SchemaBody = components['schemas']['Body']; +export type SchemaBodyAddModelApiModelsPost = components['schemas']['Body_add_model_api_models_post']; +export type SchemaBodyImportSinkApiSinksImportPost = components['schemas']['Body_import_sink_api_sinks_import_post']; +export type SchemaBodyImportSourceApiSourcesImportPost = + components['schemas']['Body_import_source_api_sources_import_post']; +export type SchemaDisconnectedSinkConfig = components['schemas']['DisconnectedSinkConfig']; +export type SchemaDisconnectedSourceConfig = components['schemas']['DisconnectedSourceConfig']; +export type SchemaFolderSinkConfig = components['schemas']['FolderSinkConfig']; +export type SchemaHttpValidationError = components['schemas']['HTTPValidationError']; +export type SchemaIpCameraSourceConfig = components['schemas']['IPCameraSourceConfig']; +export type SchemaImagesFolderSourceConfig = components['schemas']['ImagesFolderSourceConfig']; +export type SchemaInputData = components['schemas']['InputData']; +export type SchemaModel = components['schemas']['Model']; +export type SchemaModelFormat = components['schemas']['ModelFormat']; +export type SchemaMqttSinkConfig = components['schemas']['MqttSinkConfig']; +export type SchemaOutputFormat = components['schemas']['OutputFormat']; +export type SchemaPipeline = components['schemas']['Pipeline']; +export type SchemaPipelineStatus = components['schemas']['PipelineStatus']; +export type SchemaRosSinkConfig = components['schemas']['RosSinkConfig']; +export type SchemaValidationError = components['schemas']['ValidationError']; +export type SchemaVideoFileSourceConfig = components['schemas']['VideoFileSourceConfig']; +export type SchemaWebcamSourceConfig = components['schemas']['WebcamSourceConfig']; +export type SchemaWebhookSinkConfig = components['schemas']['WebhookSinkConfig']; +export type $defs = Record; +export interface operations { + list_sources_api_sources_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of available source configurations */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': ( + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + )[]; + }; + }; + }; + }; + create_source_api_sources_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig']; + }; + }; + responses: { + /** @description Source created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig']; + }; + }; + /** @description Invalid source ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source already exists */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + get_source_api_sources__source_id__get: { + parameters: { + query?: never; + header?: never; + path: { + source_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Source found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig']; + }; + }; + /** @description Invalid source ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + delete_source_api_sources__source_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + source_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Source configuration successfully deleted */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid source ID or source is used by at least one pipeline */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source is used by at least one pipeline */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + update_source_api_sources__source_id__patch: { + parameters: { + query?: never; + header?: never; + path: { + source_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': { + [key: string]: unknown; + }; + }; + }; + responses: { + /** @description Source successfully updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig']; + }; + }; + /** @description Invalid source ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + export_source_api_sources__source_id__export_post: { + parameters: { + query?: never; + header?: never; + path: { + source_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Source configuration exported as a YAML file */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/x-yaml': string; + }; + }; + /** @description Invalid source ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Source not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + import_source_api_sources_import_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'multipart/form-data': components['schemas']['Body_import_source_api_sources_import_post']; + }; + }; + responses: { + /** @description Source imported successfully */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig'] + | components['schemas']['WebcamSourceConfig'] + | components['schemas']['IPCameraSourceConfig'] + | components['schemas']['VideoFileSourceConfig'] + | components['schemas']['ImagesFolderSourceConfig'] + | components['schemas']['DisconnectedSourceConfig']; + }; + }; + /** @description Invalid YAML format or source type is DISCONNECTED */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + list_sinks_api_sinks_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of available sink configurations */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': ( + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + )[]; + }; + }; + }; + }; + create_sink_api_sinks_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig']; + }; + }; + responses: { + /** @description Sink created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig']; + }; + }; + /** @description Invalid sink ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink already exists */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + get_sink_api_sinks__sink_id__get: { + parameters: { + query?: never; + header?: never; + path: { + sink_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Sink found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig']; + }; + }; + /** @description Invalid sink ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + delete_sink_api_sinks__sink_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + sink_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Sink configuration successfully deleted */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid sink ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink is used by at least one pipeline */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + update_sink_api_sinks__sink_id__patch: { + parameters: { + query?: never; + header?: never; + path: { + sink_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': { + [key: string]: unknown; + }; + }; + }; + responses: { + /** @description Sink successfully updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig']; + }; + }; + /** @description Invalid sink ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + export_sink_api_sinks__sink_id__export_post: { + parameters: { + query?: never; + header?: never; + path: { + sink_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Sink configuration exported as a YAML file */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/x-yaml': string; + }; + }; + /** @description Invalid sink ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Sink not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + import_sink_api_sinks_import_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'multipart/form-data': components['schemas']['Body_import_sink_api_sinks_import_post']; + }; + }; + responses: { + /** @description Sink imported successfully */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig'] + | components['schemas']['FolderSinkConfig'] + | components['schemas']['MqttSinkConfig'] + | components['schemas']['RosSinkConfig'] + | components['schemas']['WebhookSinkConfig'] + | components['schemas']['DisconnectedSinkConfig']; + }; + }; + /** @description Invalid YAML format or sink type is DISCONNECTED */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + list_pipelines_api_pipelines_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of available pipelines */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Pipeline'][]; + }; + }; + }; + }; + create_pipeline_api_pipelines_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': components['schemas']['Pipeline']; + }; + }; + responses: { + /** @description Pipeline successfully created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Pipeline']; + }; + }; + /** @description Pipeline already exists */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid request body */ + 422: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + }; + }; + get_pipeline_api_pipelines__pipeline_id__get: { + parameters: { + query?: never; + header?: never; + path: { + pipeline_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Pipeline found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Pipeline']; + }; + }; + /** @description Invalid pipeline ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + delete_pipeline_api_pipelines__pipeline_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + pipeline_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Pipeline successfully deleted */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid pipeline ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline is currently in running state and cannot be deleted */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + update_pipeline_api_pipelines__pipeline_id__patch: { + parameters: { + query?: never; + header?: never; + path: { + pipeline_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': { + [key: string]: unknown; + }; + }; + }; + responses: { + /** @description Pipeline successfully updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Pipeline']; + }; + }; + /** @description Invalid pipeline ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline cannot be updated */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + enable_pipeline_api_pipelines__pipeline_id__enable_post: { + parameters: { + query?: never; + header?: never; + path: { + pipeline_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Pipeline successfully enabled */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid pipeline ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline cannot be enabled */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + disable_pipeline_api_pipelines__pipeline_id__disable_post: { + parameters: { + query?: never; + header?: never; + path: { + pipeline_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Pipeline successfully disabled */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid pipeline ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Pipeline not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + export_pipeline_api_pipelines__pipeline_id__export_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Pipeline configuration exported as a ZIP file */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/zip': string; + }; + }; + }; + }; + import_pipeline_api_pipelines_import_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + }; + }; + list_models_api_models_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List of available models */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model'][]; + }; + }; + }; + }; + add_model_api_models_post: { + parameters: { + query: { + /** @description Name for the model files */ + model_name: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'multipart/form-data': components['schemas']['Body_add_model_api_models_post']; + }; + }; + responses: { + /** @description Successful Response */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model']; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + get_model_api_models__model_id__get: { + parameters: { + query?: never; + header?: never; + path: { + model_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Model found */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model']; + }; + }; + /** @description Invalid model ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Model not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + delete_model_api_models__model_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + model_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Model configuration successfully deleted */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Invalid model ID */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Model not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Model is used by at least one pipeline */ + 409: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + update_model_metadata_api_models__model_id__patch: { + parameters: { + query?: never; + header?: never; + path: { + model_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': { + [key: string]: unknown; + }; + }; + }; + responses: { + /** @description Model successfully updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model']; + }; + }; + /** @description Invalid model ID or request body */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Model not found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + activate_model_api_models__model_name__activate_post: { + parameters: { + query?: never; + header?: never; + path: { + model_name: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model']; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + deactivate_model_api_models__model_name__deactivate_post: { + parameters: { + query?: never; + header?: never; + path: { + model_name: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Model']; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + get_memory_api_system_metrics_memory_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + [key: string]: unknown; + }; + }; + }; + }; + }; + webrtc_input_hook_api_input_hook_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': components['schemas']['InputData']; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + health_check_health_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + [key: string]: string; + }; + }; + }; + }; + }; + offer_api_webrtc_offer_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + 'application/json': components['schemas']['Body']; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['HTTPValidationError']; + }; + }; + }; + }; + handle_incoming_call_api_telephone_incoming_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': unknown; + }; + }; + }; + }; +} diff --git a/app/ui/src/api/openapi-spec.json b/app/ui/src/api/openapi-spec.json new file mode 100644 index 0000000000..4d74ffd28b --- /dev/null +++ b/app/ui/src/api/openapi-spec.json @@ -0,0 +1,1739 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Geti Inspect", + "description": "", + "version": "0.1.0" + }, + "paths": { + "/api/sources": { + "get": { + "tags": ["Sources"], + "summary": "List Sources", + "description": "List the available sources", + "operationId": "list_sources_api_sources_get", + "responses": { + "200": { + "description": "List of available source configurations", + "content": { + "application/json": { + "schema": { + "items": { + "oneOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" }, + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "discriminator": { + "propertyName": "source_type", + "mapping": { + "webcam": "#/components/schemas/WebcamSourceConfig", + "ip_camera": "#/components/schemas/IPCameraSourceConfig", + "video_file": "#/components/schemas/VideoFileSourceConfig", + "images_folder": "#/components/schemas/ImagesFolderSourceConfig", + "disconnected": "#/components/schemas/DisconnectedSourceConfig" + } + } + }, + "type": "array", + "title": "Response 200 List Sources Api Sources Get" + } + } + } + } + } + }, + "post": { + "tags": ["Sources"], + "summary": "Create Source", + "description": "Create and configure a new source", + "operationId": "create_source_api_sources_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "title": "Source Config", + "description": "\nConfiguration for the new source. The exact list of fields that can be configured depends on the source type.\n" + }, + "examples": { + "webcam": { + "summary": "Webcam source", + "description": "Configuration for a webcam source", + "value": { "source_type": "webcam", "name": "My Webcam", "device_id": 0 } + }, + "ip_camera": { + "summary": "IP camera source", + "description": "Configuration for an IP camera source", + "value": { + "source_type": "ip_camera", + "name": "IP Camera 1", + "stream_url": "rtsp://192.168.1.100:554/stream1", + "auth_required": true + } + }, + "video_file": { + "summary": "Video file source", + "description": "Configuration for a video file source", + "value": { + "source_type": "video_file", + "name": "Camera recording 123", + "video_path": "/path/to/video.mp4" + } + }, + "images_folder": { + "summary": "Images folder source", + "description": "Configuration for a folder containing images source", + "value": { + "source_type": "images_folder", + "name": "Production Samples", + "folder_path": "/path/to/images", + "ignore_existing_images": true + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Source created", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" }, + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "title": "Response 201 Create Source Api Sources Post", + "discriminator": { + "propertyName": "source_type", + "mapping": { + "webcam": "#/components/schemas/WebcamSourceConfig", + "ip_camera": "#/components/schemas/IPCameraSourceConfig", + "video_file": "#/components/schemas/VideoFileSourceConfig", + "images_folder": "#/components/schemas/ImagesFolderSourceConfig", + "disconnected": "#/components/schemas/DisconnectedSourceConfig" + } + } + } + } + } + }, + "400": { "description": "Invalid source ID or request body" }, + "409": { "description": "Source already exists" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sources/{source_id}": { + "get": { + "tags": ["Sources"], + "summary": "Get Source", + "description": "Get info about a source", + "operationId": "get_source_api_sources__source_id__get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Source Id" } + } + ], + "responses": { + "200": { + "description": "Source found", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" }, + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "discriminator": { + "propertyName": "source_type", + "mapping": { + "webcam": "#/components/schemas/WebcamSourceConfig", + "ip_camera": "#/components/schemas/IPCameraSourceConfig", + "video_file": "#/components/schemas/VideoFileSourceConfig", + "images_folder": "#/components/schemas/ImagesFolderSourceConfig", + "disconnected": "#/components/schemas/DisconnectedSourceConfig" + } + }, + "title": "Response 200 Get Source Api Sources Source Id Get" + } + } + } + }, + "400": { "description": "Invalid source ID" }, + "404": { "description": "Source not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "patch": { + "tags": ["Sources"], + "summary": "Update Source", + "description": "Reconfigure an existing source", + "operationId": "update_source_api_sources__source_id__patch", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Source Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "description": "Partial source configuration update. May contain any subset of fields from the respective source type (e.g., 'device_id' for webcams; 'video_path' for video files). Fields not included in the request will remain unchanged. The 'source_type' field cannot be changed.", + "title": "Source Config" + }, + "examples": { + "webcam": { + "summary": "Update webcam source", + "description": "Rename a webcam source", + "value": { "name": "Updated Webcam Name" } + }, + "video_file": { + "summary": "Update video file source", + "description": "Change the video path for a video file source", + "value": { "video_path": "/new/path/to/video.mp4" } + } + } + } + } + }, + "responses": { + "200": { + "description": "Source successfully updated", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" }, + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "discriminator": { + "propertyName": "source_type", + "mapping": { + "webcam": "#/components/schemas/WebcamSourceConfig", + "ip_camera": "#/components/schemas/IPCameraSourceConfig", + "video_file": "#/components/schemas/VideoFileSourceConfig", + "images_folder": "#/components/schemas/ImagesFolderSourceConfig", + "disconnected": "#/components/schemas/DisconnectedSourceConfig" + } + }, + "title": "Response 200 Update Source Api Sources Source Id Patch" + } + } + } + }, + "400": { "description": "Invalid source ID or request body" }, + "404": { "description": "Source not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "delete": { + "tags": ["Sources"], + "summary": "Delete Source", + "description": "Remove a source", + "operationId": "delete_source_api_sources__source_id__delete", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Source Id" } + } + ], + "responses": { + "204": { "description": "Source configuration successfully deleted" }, + "400": { "description": "Invalid source ID or source is used by at least one pipeline" }, + "404": { "description": "Source not found" }, + "409": { "description": "Source is used by at least one pipeline" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sources/{source_id}:export": { + "post": { + "tags": ["Sources"], + "summary": "Export Source", + "description": "Export a source to file", + "operationId": "export_source_api_sources__source_id__export_post", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Source Id" } + } + ], + "responses": { + "200": { + "description": "Source configuration exported as a YAML file", + "content": { "application/x-yaml": { "schema": { "type": "string", "format": "binary" } } } + }, + "400": { "description": "Invalid source ID or request body" }, + "404": { "description": "Source not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sources:import": { + "post": { + "tags": ["Sources"], + "summary": "Import Source", + "description": "Import a source from file", + "operationId": "import_source_api_sources_import_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { "$ref": "#/components/schemas/Body_import_source_api_sources_import_post" } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Source imported successfully", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" }, + { "$ref": "#/components/schemas/WebcamSourceConfig" }, + { "$ref": "#/components/schemas/IPCameraSourceConfig" }, + { "$ref": "#/components/schemas/VideoFileSourceConfig" }, + { "$ref": "#/components/schemas/ImagesFolderSourceConfig" }, + { "$ref": "#/components/schemas/DisconnectedSourceConfig" } + ], + "title": "Response 201 Import Source Api Sources Import Post", + "discriminator": { + "propertyName": "source_type", + "mapping": { + "webcam": "#/components/schemas/WebcamSourceConfig", + "ip_camera": "#/components/schemas/IPCameraSourceConfig", + "video_file": "#/components/schemas/VideoFileSourceConfig", + "images_folder": "#/components/schemas/ImagesFolderSourceConfig", + "disconnected": "#/components/schemas/DisconnectedSourceConfig" + } + } + } + } + } + }, + "400": { "description": "Invalid YAML format or source type is DISCONNECTED" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sinks": { + "get": { + "tags": ["Sinks"], + "summary": "List Sinks", + "description": "List the available sinks", + "operationId": "list_sinks_api_sinks_get", + "responses": { + "200": { + "description": "List of available sink configurations", + "content": { + "application/json": { + "schema": { + "items": { + "oneOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" }, + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "discriminator": { + "propertyName": "sink_type", + "mapping": { + "folder": "#/components/schemas/FolderSinkConfig", + "mqtt": "#/components/schemas/MqttSinkConfig", + "ros": "#/components/schemas/RosSinkConfig", + "webhook": "#/components/schemas/WebhookSinkConfig", + "disconnected": "#/components/schemas/DisconnectedSinkConfig" + } + } + }, + "type": "array", + "title": "Response 200 List Sinks Api Sinks Get" + } + } + } + } + } + }, + "post": { + "tags": ["Sinks"], + "summary": "Create Sink", + "description": "Create and configure a new sink", + "operationId": "create_sink_api_sinks_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "title": "Sink Config", + "description": "\nConfiguration for the new sink. The exact list of fields that can be configured depends on the sink type.\n" + }, + "examples": { + "folder": { + "summary": "Folder sink", + "description": "Configuration for a local filesystem folder sink", + "value": { + "sink_type": "folder", + "name": "My Output Folder", + "folder_path": "/path/to/output", + "output_formats": ["image_with_predictions"], + "rate_limit": 0.2 + } + }, + "mqtt": { + "summary": "MQTT sink", + "description": "Configuration for an MQTT message broker sink", + "value": { + "sink_type": "mqtt", + "name": "Local MQTT Broker", + "broker_host": "localhost", + "broker_port": 1883, + "topic": "predictions", + "output_formats": ["predictions"] + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Sink created", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" }, + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "title": "Response 201 Create Sink Api Sinks Post", + "discriminator": { + "propertyName": "sink_type", + "mapping": { + "folder": "#/components/schemas/FolderSinkConfig", + "mqtt": "#/components/schemas/MqttSinkConfig", + "ros": "#/components/schemas/RosSinkConfig", + "webhook": "#/components/schemas/WebhookSinkConfig", + "disconnected": "#/components/schemas/DisconnectedSinkConfig" + } + } + } + } + } + }, + "400": { "description": "Invalid sink ID or request body" }, + "409": { "description": "Sink already exists" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sinks/{sink_id}": { + "get": { + "tags": ["Sinks"], + "summary": "Get Sink", + "description": "Get info about a sink", + "operationId": "get_sink_api_sinks__sink_id__get", + "parameters": [ + { + "name": "sink_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Sink Id" } + } + ], + "responses": { + "200": { + "description": "Sink found", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" }, + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "discriminator": { + "propertyName": "sink_type", + "mapping": { + "folder": "#/components/schemas/FolderSinkConfig", + "mqtt": "#/components/schemas/MqttSinkConfig", + "ros": "#/components/schemas/RosSinkConfig", + "webhook": "#/components/schemas/WebhookSinkConfig", + "disconnected": "#/components/schemas/DisconnectedSinkConfig" + } + }, + "title": "Response 200 Get Sink Api Sinks Sink Id Get" + } + } + } + }, + "400": { "description": "Invalid sink ID" }, + "404": { "description": "Sink not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "patch": { + "tags": ["Sinks"], + "summary": "Update Sink", + "description": "Reconfigure an existing sink", + "operationId": "update_sink_api_sinks__sink_id__patch", + "parameters": [ + { + "name": "sink_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Sink Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "description": "Partial sink configuration update. May contain any subset of fields from the respective sink type (e.g., 'broker_host' and 'broker_port' for MQTT; 'output_path' for folder sinks). Fields not included in the request will remain unchanged. The 'sink_type' field cannot be changed.", + "title": "Sink Config" + }, + "examples": { + "folder": { + "summary": "Update folder sink", + "description": "Change the output path for a folder sink", + "value": { "folder_path": "/new/output/directory" } + }, + "mqtt": { + "summary": "Update MQTT sink", + "description": "Change the topic for an MQTT sink", + "value": { "topic": "new_predictions_topic" } + } + } + } + } + }, + "responses": { + "200": { + "description": "Sink successfully updated", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" }, + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "discriminator": { + "propertyName": "sink_type", + "mapping": { + "folder": "#/components/schemas/FolderSinkConfig", + "mqtt": "#/components/schemas/MqttSinkConfig", + "ros": "#/components/schemas/RosSinkConfig", + "webhook": "#/components/schemas/WebhookSinkConfig", + "disconnected": "#/components/schemas/DisconnectedSinkConfig" + } + }, + "title": "Response 200 Update Sink Api Sinks Sink Id Patch" + } + } + } + }, + "400": { "description": "Invalid sink ID or request body" }, + "404": { "description": "Sink not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "delete": { + "tags": ["Sinks"], + "summary": "Delete Sink", + "description": "Remove a sink", + "operationId": "delete_sink_api_sinks__sink_id__delete", + "parameters": [ + { + "name": "sink_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Sink Id" } + } + ], + "responses": { + "204": { "description": "Sink configuration successfully deleted" }, + "400": { "description": "Invalid sink ID" }, + "404": { "description": "Sink not found" }, + "409": { "description": "Sink is used by at least one pipeline" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sinks/{sink_id}:export": { + "post": { + "tags": ["Sinks"], + "summary": "Export Sink", + "description": "Export a sink to file", + "operationId": "export_sink_api_sinks__sink_id__export_post", + "parameters": [ + { + "name": "sink_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Sink Id" } + } + ], + "responses": { + "200": { + "description": "Sink configuration exported as a YAML file", + "content": { "application/x-yaml": { "schema": { "type": "string", "format": "binary" } } } + }, + "400": { "description": "Invalid sink ID or request body" }, + "404": { "description": "Sink not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/sinks:import": { + "post": { + "tags": ["Sinks"], + "summary": "Import Sink", + "description": "Import a sink from file", + "operationId": "import_sink_api_sinks_import_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { "$ref": "#/components/schemas/Body_import_sink_api_sinks_import_post" } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Sink imported successfully", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" }, + { "$ref": "#/components/schemas/FolderSinkConfig" }, + { "$ref": "#/components/schemas/MqttSinkConfig" }, + { "$ref": "#/components/schemas/RosSinkConfig" }, + { "$ref": "#/components/schemas/WebhookSinkConfig" }, + { "$ref": "#/components/schemas/DisconnectedSinkConfig" } + ], + "title": "Response 201 Import Sink Api Sinks Import Post", + "discriminator": { + "propertyName": "sink_type", + "mapping": { + "folder": "#/components/schemas/FolderSinkConfig", + "mqtt": "#/components/schemas/MqttSinkConfig", + "ros": "#/components/schemas/RosSinkConfig", + "webhook": "#/components/schemas/WebhookSinkConfig", + "disconnected": "#/components/schemas/DisconnectedSinkConfig" + } + } + } + } + } + }, + "400": { "description": "Invalid YAML format or sink type is DISCONNECTED" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/pipelines": { + "get": { + "tags": ["Pipelines"], + "summary": "List Pipelines", + "description": "List the available pipelines", + "operationId": "list_pipelines_api_pipelines_get", + "responses": { + "200": { + "description": "List of available pipelines", + "content": { + "application/json": { + "schema": { + "items": { "$ref": "#/components/schemas/Pipeline" }, + "type": "array", + "title": "Response 200 List Pipelines Api Pipelines Get" + } + } + } + } + } + }, + "post": { + "tags": ["Pipelines"], + "summary": "Create Pipeline", + "description": "Create and configure a new pipeline", + "operationId": "create_pipeline_api_pipelines_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pipeline", + "description": "\nConfiguration for the new pipeline. Requires the IDs of a source, sink, and model to be combined into a pipeline.\nThe fields 'source_id', 'sink_id', and 'model_id' can be set to `None` to only partially initialize the pipeline. \n" + }, + "examples": { + "basic": { + "summary": "Fully configured pipeline", + "description": "Configuration for a basic pipeline with source, model, and sink", + "value": { + "name": "Production Pipeline", + "source_id": "d2cbd8d0-17b8-463e-85a2-4aaed031674d", + "sink_id": "b5787c06-964b-4097-8eca-238b8cf79fc8", + "model_id": "b0feaabc-da2b-442e-9b3e-55c11c2c2ff2" + } + }, + "minimal": { + "summary": "Partially configured pipeline", + "description": "Pipeline with only a name (components can be assigned later)", + "value": { "name": "Experimental Pipeline" } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Pipeline successfully created", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pipeline" } } } + }, + "409": { "description": "Pipeline already exists" }, + "422": { "description": "Invalid request body" } + } + } + }, + "/api/pipelines/{pipeline_id}": { + "get": { + "tags": ["Pipelines"], + "summary": "Get Pipeline", + "description": "Get info about a given pipeline", + "operationId": "get_pipeline_api_pipelines__pipeline_id__get", + "parameters": [ + { + "name": "pipeline_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Pipeline Id" } + } + ], + "responses": { + "200": { + "description": "Pipeline found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pipeline" } } } + }, + "400": { "description": "Invalid pipeline ID" }, + "404": { "description": "Pipeline not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "patch": { + "tags": ["Pipelines"], + "summary": "Update Pipeline", + "description": "Reconfigure an existing pipeline", + "operationId": "update_pipeline_api_pipelines__pipeline_id__patch", + "parameters": [ + { + "name": "pipeline_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Pipeline Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "description": "\nPartial pipeline configuration update. May contain any subset of fields including 'name', 'source_id', \n'sink_id', or 'model_id'. Fields not included in the request will remain unchanged.\n", + "title": "Pipeline Config" + }, + "examples": { + "switch_model": { + "summary": "Switch active model", + "description": "Change the active model for the pipeline", + "value": { "model_id": "c1feaabc-da2b-442e-9b3e-55c11c2c2ff3" } + }, + "reconfigure": { + "summary": "Reconfigure pipeline", + "description": "Change the name, source and sink of the pipeline", + "value": { + "name": "Updated Production Pipeline", + "source_id": "e3cbd8d0-17b8-463e-85a2-4aaed031674e", + "sink_id": "c6787c06-964b-4097-8eca-238b8cf79fc9" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Pipeline successfully updated", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pipeline" } } } + }, + "400": { "description": "Invalid pipeline ID or request body" }, + "404": { "description": "Pipeline not found" }, + "409": { "description": "Pipeline cannot be updated" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "delete": { + "tags": ["Pipelines"], + "summary": "Delete Pipeline", + "description": "Delete a pipeline. Pipelines must be first disabled (status must be idle) before deletion.", + "operationId": "delete_pipeline_api_pipelines__pipeline_id__delete", + "parameters": [ + { + "name": "pipeline_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Pipeline Id" } + } + ], + "responses": { + "204": { "description": "Pipeline successfully deleted" }, + "400": { "description": "Invalid pipeline ID" }, + "404": { "description": "Pipeline not found" }, + "409": { "description": "Pipeline is currently in running state and cannot be deleted" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/pipelines/{pipeline_id}:enable": { + "post": { + "tags": ["Pipelines"], + "summary": "Enable Pipeline", + "description": "Activate a pipeline.\nThe pipeline will start processing data from the source, run it through the model, and send results to the sink.", + "operationId": "enable_pipeline_api_pipelines__pipeline_id__enable_post", + "parameters": [ + { + "name": "pipeline_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Pipeline Id" } + } + ], + "responses": { + "204": { "description": "Pipeline successfully enabled" }, + "400": { "description": "Invalid pipeline ID" }, + "404": { "description": "Pipeline not found" }, + "409": { "description": "Pipeline cannot be enabled" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/pipelines/{pipeline_id}:disable": { + "post": { + "tags": ["Pipelines"], + "summary": "Disable Pipeline", + "description": "Stop a pipeline. The pipeline will become idle, and it won't process any data until re-enabled.", + "operationId": "disable_pipeline_api_pipelines__pipeline_id__disable_post", + "parameters": [ + { + "name": "pipeline_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Pipeline Id" } + } + ], + "responses": { + "204": { "description": "Pipeline successfully disabled" }, + "400": { "description": "Invalid pipeline ID" }, + "404": { "description": "Pipeline not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/pipelines/{pipeline_id}:export": { + "post": { + "tags": ["Pipelines"], + "summary": "Export Pipeline", + "description": "Export a pipeline to file", + "operationId": "export_pipeline_api_pipelines__pipeline_id__export_post", + "responses": { + "200": { + "description": "Pipeline configuration exported as a ZIP file", + "content": { "application/zip": { "schema": { "type": "string", "format": "binary" } } } + } + } + } + }, + "/api/pipelines:import": { + "post": { + "tags": ["Pipelines"], + "summary": "Import Pipeline", + "description": "Import a pipeline from file", + "operationId": "import_pipeline_api_pipelines_import_post", + "responses": { "204": { "description": "Successful Response" } } + } + }, + "/api/models": { + "post": { + "tags": ["Models"], + "summary": "Add Model", + "description": "Upload a new model\n\nNOTE: this endpoint will be replaced by preconfigured model selection", + "operationId": "add_model_api_models_post", + "parameters": [ + { + "name": "model_name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Name for the model files", + "title": "Model Name" + }, + "description": "Name for the model files" + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { "$ref": "#/components/schemas/Body_add_model_api_models_post" } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "get": { + "tags": ["Models"], + "summary": "List Models", + "description": "Get information about available models", + "operationId": "list_models_api_models_get", + "responses": { + "200": { + "description": "List of available models", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/Model" }, + "title": "Response 200 List Models Api Models Get" + } + } + } + } + } + } + }, + "/api/models/{model_id}": { + "get": { + "tags": ["Models"], + "summary": "Get Model", + "description": "Get information about a specific model", + "operationId": "get_model_api_models__model_id__get", + "parameters": [ + { + "name": "model_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Model Id" } + } + ], + "responses": { + "200": { + "description": "Model found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } + }, + "400": { "description": "Invalid model ID" }, + "404": { "description": "Model not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "patch": { + "tags": ["Models"], + "summary": "Update Model Metadata", + "description": "Update the metadata of an existing model", + "operationId": "update_model_metadata_api_models__model_id__patch", + "parameters": [ + { + "name": "model_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Model Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "type": "object", "additionalProperties": true, "title": "Model Metadata" }, + "examples": { + "rename_model": { + "summary": "Rename model", + "description": "Change the name of the model", + "value": { "name": "New Model Name" } + } + } + } + } + }, + "responses": { + "200": { + "description": "Model successfully updated", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } + }, + "400": { "description": "Invalid model ID or request body" }, + "404": { "description": "Model not found" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + }, + "delete": { + "tags": ["Models"], + "summary": "Delete Model", + "description": "Delete a model", + "operationId": "delete_model_api_models__model_id__delete", + "parameters": [ + { + "name": "model_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Model Id" } + } + ], + "responses": { + "204": { "description": "Model configuration successfully deleted" }, + "400": { "description": "Invalid model ID" }, + "404": { "description": "Model not found" }, + "409": { "description": "Model is used by at least one pipeline" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/models/{model_name}:activate": { + "post": { + "tags": ["Models"], + "summary": "Activate Model", + "description": "Activate a model\n\nNOTE: this endpoint will be removed; use instead `PATCH /api/pipelines/{pipeline_id}` to change the active model", + "operationId": "activate_model_api_models__model_name__activate_post", + "deprecated": true, + "parameters": [ + { + "name": "model_name", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Model Name" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/models/{model_name}:deactivate": { + "post": { + "tags": ["Models"], + "summary": "Deactivate Model", + "description": "Deactivate a model\n\nNOTE: this endpoint will be removed; use instead `PATCH /api/pipelines/{pipeline_id}` to change the active model", + "operationId": "deactivate_model_api_models__model_name__deactivate_post", + "deprecated": true, + "parameters": [ + { + "name": "model_name", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Model Name" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/system/metrics/memory": { + "get": { + "summary": "Get Memory", + "description": "Returns the used memory in MB and total available memory in MB.", + "operationId": "get_memory_api_system_metrics_memory_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "type": "object", + "title": "Response Get Memory Api System Metrics Memory Get" + } + } + } + } + } + } + }, + "/api/input_hook": { + "post": { + "tags": ["webrtc"], + "summary": "Webrtc Input Hook", + "description": "Update webrtc input for user", + "operationId": "webrtc_input_hook_api_input_hook_post", + "requestBody": { + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InputData" } } }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/health": { + "get": { + "summary": "Health Check", + "description": "Health check endpoint", + "operationId": "health_check_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Response Health Check Health Get" + } + } + } + } + } + } + }, + "/api/webrtc/offer": { + "post": { + "summary": "Offer", + "description": "Handle an incoming WebRTC offer via HTTP POST.\n\nProcesses the SDP offer and ICE candidates from the client to establish\na WebRTC connection.\n\nArgs:\n body: A Pydantic model containing the SDP offer, optional ICE candidate,\n type ('offer'), and a unique WebRTC ID.\n\nReturns:\n A dictionary containing the SDP answer generated by the server.", + "operationId": "offer_api_webrtc_offer_post", + "requestBody": { + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body" } } }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } + } + } + } + } + }, + "/api/telephone/incoming": { + "post": { + "summary": "Handle Incoming Call", + "description": "Handle incoming telephone calls (e.g., via Twilio).\n\nGenerates TwiML instructions to connect the incoming call to the\nWebSocket handler (`/telephone/handler`) for audio streaming.\n\nArgs:\n request: The FastAPI Request object for the incoming call webhook.\n\nReturns:\n An HTMLResponse containing the TwiML instructions as XML.", + "operationId": "handle_incoming_call_api_telephone_incoming_post", + "responses": { + "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } + } + } + } + }, + "components": { + "schemas": { + "Body": { + "properties": { + "sdp": { "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Sdp" }, + "candidate": { + "anyOf": [{ "additionalProperties": true, "type": "object" }, { "type": "null" }], + "title": "Candidate" + }, + "type": { "type": "string", "title": "Type" }, + "webrtc_id": { "type": "string", "title": "Webrtc Id" } + }, + "type": "object", + "required": ["type", "webrtc_id"], + "title": "Body" + }, + "Body_add_model_api_models_post": { + "properties": { + "xml_file": { "type": "string", "format": "binary", "title": "Xml File" }, + "bin_file": { "type": "string", "format": "binary", "title": "Bin File" } + }, + "type": "object", + "required": ["xml_file", "bin_file"], + "title": "Body_add_model_api_models_post" + }, + "Body_import_sink_api_sinks_import_post": { + "properties": { + "yaml_file": { + "type": "string", + "format": "binary", + "title": "Yaml File", + "description": "YAML file containing the sink configuration" + } + }, + "type": "object", + "required": ["yaml_file"], + "title": "Body_import_sink_api_sinks_import_post" + }, + "Body_import_source_api_sources_import_post": { + "properties": { + "yaml_file": { + "type": "string", + "format": "binary", + "title": "Yaml File", + "description": "YAML file containing the source configuration" + } + }, + "type": "object", + "required": ["yaml_file"], + "title": "Body_import_source_api_sources_import_post" + }, + "DisconnectedSinkConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "No Sink" }, + "output_formats": { + "items": { "$ref": "#/components/schemas/OutputFormat" }, + "type": "array", + "title": "Output Formats", + "default": [] + }, + "rate_limit": { "anyOf": [{ "type": "number" }, { "type": "null" }], "title": "Rate Limit" }, + "sink_type": { + "type": "string", + "const": "disconnected", + "title": "Sink Type", + "default": "disconnected" + } + }, + "type": "object", + "title": "DisconnectedSinkConfig", + "example": { + "id": "00000000-0000-0000-0000-000000000000", + "name": "No Sink", + "sink_type": "disconnected" + } + }, + "DisconnectedSourceConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "No Source" }, + "source_type": { + "type": "string", + "const": "disconnected", + "title": "Source Type", + "default": "disconnected" + } + }, + "type": "object", + "title": "DisconnectedSourceConfig" + }, + "FolderSinkConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "output_formats": { + "items": { "$ref": "#/components/schemas/OutputFormat" }, + "type": "array", + "title": "Output Formats" + }, + "rate_limit": { "anyOf": [{ "type": "number" }, { "type": "null" }], "title": "Rate Limit" }, + "sink_type": { "type": "string", "const": "folder", "title": "Sink Type" }, + "folder_path": { "type": "string", "title": "Folder Path" } + }, + "type": "object", + "required": ["output_formats", "sink_type", "folder_path"], + "title": "FolderSinkConfig", + "example": { + "folder_path": "/path/to/output", + "id": "b5787c06-964b-4097-8eca-238b8cf79fc8", + "name": "Local Folder", + "output_formats": ["image_original", "image_with_predictions", "predictions"], + "rate_limit": 0.2, + "sink_type": "folder" + } + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { "$ref": "#/components/schemas/ValidationError" }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "IPCameraSourceConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "source_type": { "type": "string", "const": "ip_camera", "title": "Source Type" }, + "stream_url": { "type": "string", "title": "Stream Url" }, + "auth_required": { "type": "boolean", "title": "Auth Required", "default": false } + }, + "type": "object", + "required": ["source_type", "stream_url"], + "title": "IPCameraSourceConfig", + "example": { + "auth_required": true, + "id": "3d055c8a-2536-46ea-8f3c-832bd6f8bbdc", + "name": "Street Camera 123", + "source_type": "ip_camera", + "stream_url": "http://example.com/stream" + } + }, + "ImagesFolderSourceConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "source_type": { "type": "string", "const": "images_folder", "title": "Source Type" }, + "images_folder_path": { "type": "string", "title": "Images Folder Path" }, + "ignore_existing_images": { "type": "boolean", "title": "Ignore Existing Images" } + }, + "type": "object", + "required": ["source_type", "images_folder_path", "ignore_existing_images"], + "title": "ImagesFolderSourceConfig", + "example": { + "id": "4a580a0e-b841-4c70-bf88-2d68a28f780d", + "ignore_existing_images": true, + "images_folder_path": "/path/to/images", + "name": "Best Photos", + "source_type": "images_folder" + } + }, + "InputData": { + "properties": { + "webrtc_id": { "type": "string", "title": "Webrtc Id" }, + "conf_threshold": { "type": "number", "maximum": 1.0, "minimum": 0.0, "title": "Conf Threshold" } + }, + "type": "object", + "required": ["webrtc_id", "conf_threshold"], + "title": "InputData" + }, + "Model": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "format": { "$ref": "#/components/schemas/ModelFormat", "default": "openvino_ir" } + }, + "type": "object", + "title": "Model", + "description": "Base model schema that includes common fields for all models.\nThis can be extended by other schemas to include additional fields.", + "example": { + "format": "openvino_ir", + "id": "76e07d18-196e-4e33-bf98-ac1d35dca4cb", + "name": "YOLO-X for Vehicle Detection" + } + }, + "ModelFormat": { "type": "string", "enum": ["openvino_ir", "onnx"], "title": "ModelFormat" }, + "MqttSinkConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "output_formats": { + "items": { "$ref": "#/components/schemas/OutputFormat" }, + "type": "array", + "title": "Output Formats" + }, + "rate_limit": { "anyOf": [{ "type": "number" }, { "type": "null" }], "title": "Rate Limit" }, + "sink_type": { "type": "string", "const": "mqtt", "title": "Sink Type" }, + "broker_host": { "type": "string", "title": "Broker Host" }, + "broker_port": { "type": "integer", "title": "Broker Port" }, + "topic": { "type": "string", "title": "Topic" }, + "auth_required": { "type": "boolean", "title": "Auth Required", "default": false } + }, + "type": "object", + "required": ["output_formats", "sink_type", "broker_host", "broker_port", "topic"], + "title": "MqttSinkConfig", + "example": { + "auth_required": true, + "broker_host": "localhost", + "broker_port": 1883, + "id": "c1a70159-9c9e-4f02-821a-02576321056c", + "name": "Local MQTT Broker", + "output_formats": ["predictions"], + "sink_type": "mqtt", + "topic": "predictions" + } + }, + "OutputFormat": { + "type": "string", + "enum": ["image_original", "image_with_predictions", "predictions"], + "title": "OutputFormat" + }, + "Pipeline": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "source_id": { + "anyOf": [{ "type": "string", "format": "uuid" }, { "type": "null" }], + "title": "Source Id" + }, + "sink_id": { + "anyOf": [{ "type": "string", "format": "uuid" }, { "type": "null" }], + "title": "Sink Id" + }, + "model_id": { + "anyOf": [{ "type": "string", "format": "uuid" }, { "type": "null" }], + "title": "Model Id" + }, + "status": { "$ref": "#/components/schemas/PipelineStatus", "default": "idle" } + }, + "type": "object", + "title": "Pipeline", + "example": { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "model_id": "b0feaabc-da2b-442e-9b3e-55c11c2c2ff2", + "name": "Production Pipeline", + "sink_id": "b5787c06-964b-4097-8eca-238b8cf79fc8", + "source_id": "d2cbd8d0-17b8-463e-85a2-4aaed031674d", + "status": "running" + } + }, + "PipelineStatus": { "type": "string", "enum": ["idle", "running"], "title": "PipelineStatus" }, + "RosSinkConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "output_formats": { + "items": { "$ref": "#/components/schemas/OutputFormat" }, + "type": "array", + "title": "Output Formats" + }, + "rate_limit": { "anyOf": [{ "type": "number" }, { "type": "null" }], "title": "Rate Limit" }, + "sink_type": { "type": "string", "const": "ros", "title": "Sink Type" }, + "topic": { "type": "string", "title": "Topic" } + }, + "type": "object", + "required": ["output_formats", "sink_type", "topic"], + "title": "RosSinkConfig", + "example": { + "id": "6f1d96ac-db38-42a9-9a11-142d404f493f", + "name": "ROS2 Predictions Topic", + "output_formats": ["predictions"], + "sink_type": "ros", + "topic": "/predictions" + } + }, + "ValidationError": { + "properties": { + "loc": { + "items": { "anyOf": [{ "type": "string" }, { "type": "integer" }] }, + "type": "array", + "title": "Location" + }, + "msg": { "type": "string", "title": "Message" }, + "type": { "type": "string", "title": "Error Type" } + }, + "type": "object", + "required": ["loc", "msg", "type"], + "title": "ValidationError" + }, + "VideoFileSourceConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "source_type": { "type": "string", "const": "video_file", "title": "Source Type" }, + "video_path": { "type": "string", "title": "Video Path" } + }, + "type": "object", + "required": ["source_type", "video_path"], + "title": "VideoFileSourceConfig", + "example": { + "id": "712750b2-5a82-47ee-8fba-f3dc96cb615d", + "name": "Sample Video", + "source_type": "video_file", + "video_path": "/path/to/video.mp4" + } + }, + "WebcamSourceConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "source_type": { "type": "string", "const": "webcam", "title": "Source Type" }, + "device_id": { "type": "integer", "title": "Device Id" } + }, + "type": "object", + "required": ["source_type", "device_id"], + "title": "WebcamSourceConfig", + "example": { + "device_id": 0, + "id": "f9e0ae4f-d96c-4304-baab-2ab845362d03", + "name": "Webcam 0", + "source_type": "webcam" + } + }, + "WebhookSinkConfig": { + "properties": { + "id": { "type": "string", "format": "uuid", "title": "Id" }, + "name": { "type": "string", "title": "Name", "default": "Default Name" }, + "output_formats": { + "items": { "$ref": "#/components/schemas/OutputFormat" }, + "type": "array", + "title": "Output Formats" + }, + "rate_limit": { "anyOf": [{ "type": "number" }, { "type": "null" }], "title": "Rate Limit" }, + "sink_type": { "type": "string", "const": "webhook", "title": "Sink Type" }, + "webhook_url": { "type": "string", "title": "Webhook Url" }, + "http_method": { + "type": "string", + "enum": ["POST", "PUT", "PATCH"], + "title": "Http Method", + "default": "POST" + }, + "headers": { + "anyOf": [ + { "additionalProperties": { "type": "string" }, "type": "object" }, + { "type": "null" } + ], + "title": "Headers" + }, + "timeout": { "type": "integer", "title": "Timeout", "default": 10 } + }, + "type": "object", + "required": ["output_formats", "sink_type", "webhook_url"], + "title": "WebhookSinkConfig", + "example": { + "headers": { "Authorization": "Bearer YOUR_TOKEN" }, + "http_method": "PUT", + "id": "39ba53e5-9a03-44fc-b78a-83245cf14676", + "name": "Webhook Endpoint", + "output_formats": ["predictions"], + "sink_type": "webhook", + "webhook_url": "https://example.com/webhook" + } + } + } + } +} diff --git a/app/ui/src/api/utils.ts b/app/ui/src/api/utils.ts new file mode 100644 index 0000000000..dabd8d2070 --- /dev/null +++ b/app/ui/src/api/utils.ts @@ -0,0 +1,29 @@ +import { fromOpenApi } from '@mswjs/source/open-api'; +import { createOpenApiHttp, OpenApiHttpHandlers } from 'openapi-msw'; + +import { paths } from './openapi-spec'; +import spec from './openapi-spec.json' with { type: 'json' }; + +const handlers = await fromOpenApi(JSON.stringify(spec).replace(/}:/g, '}//:')); + +const getOpenApiHttp = (): OpenApiHttpHandlers => { + const http = createOpenApiHttp({ + baseUrl: 'http://localhost:7860', + //baseUrl: process.env.PUBLIC_API_BASE_URL ?? 'http://localhost:7860', + }); + + return { + ...http, + post: (path, ...other) => { + // @ts-expect-error MSW internal parsing function does not accept paths like + // `/api/models/{model_name}:activate` + // to get around this we escape the colon character with `\\` + // @see https://github.com/mswjs/msw/discussions/739 + return http.post(path.replace('}:', '}\\:'), ...other); + }, + }; +}; + +const http = getOpenApiHttp(); + +export { handlers, http }; diff --git a/app/ui/src/assets/background.png b/app/ui/src/assets/background.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd713cf1d24dc74ea692bf6ed9b4e2b722816f5 GIT binary patch literal 187450 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

DAB4KY7uQqa8!nm@ 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

f%%SOJ;B_}@+9Vu-bvnUVNg-d5?IZfu_ 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 z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ui/src/assets/icons/build-icon.svg b/app/ui/src/assets/icons/build-icon.svg new file mode 100644 index 0000000000..9d01dc6f22 --- /dev/null +++ b/app/ui/src/assets/icons/build-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/ui/src/assets/icons/camera-off.svg b/app/ui/src/assets/icons/camera-off.svg new file mode 100644 index 0000000000..5cae18dfd9 --- /dev/null +++ b/app/ui/src/assets/icons/camera-off.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/ui/src/assets/icons/camera.svg b/app/ui/src/assets/icons/camera.svg new file mode 100644 index 0000000000..5fde282993 --- /dev/null +++ b/app/ui/src/assets/icons/camera.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/app/ui/src/assets/icons/double-chevron-right-icon.svg b/app/ui/src/assets/icons/double-chevron-right-icon.svg new file mode 100644 index 0000000000..f95e858065 --- /dev/null +++ b/app/ui/src/assets/icons/double-chevron-right-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/ui/src/assets/icons/error-icon.svg b/app/ui/src/assets/icons/error-icon.svg new file mode 100644 index 0000000000..73b203e9c2 --- /dev/null +++ b/app/ui/src/assets/icons/error-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/app/ui/src/assets/icons/folder-arrow-right.svg b/app/ui/src/assets/icons/folder-arrow-right.svg new file mode 100644 index 0000000000..a6b868456f --- /dev/null +++ b/app/ui/src/assets/icons/folder-arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/ui/src/assets/icons/genicam.svg b/app/ui/src/assets/icons/genicam.svg new file mode 100644 index 0000000000..9dec1beb57 --- /dev/null +++ b/app/ui/src/assets/icons/genicam.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/ui/src/assets/icons/images-folder.svg b/app/ui/src/assets/icons/images-folder.svg new file mode 100644 index 0000000000..9e9575e3f9 --- /dev/null +++ b/app/ui/src/assets/icons/images-folder.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/ui/src/assets/icons/ip-camera.svg b/app/ui/src/assets/icons/ip-camera.svg new file mode 100644 index 0000000000..a5d70b9e60 --- /dev/null +++ b/app/ui/src/assets/icons/ip-camera.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/ui/src/assets/icons/live-feed-icon.svg b/app/ui/src/assets/icons/live-feed-icon.svg new file mode 100644 index 0000000000..b4e133c7c2 --- /dev/null +++ b/app/ui/src/assets/icons/live-feed-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/ui/src/assets/icons/mqtt.svg b/app/ui/src/assets/icons/mqtt.svg new file mode 100644 index 0000000000..81a817bbf2 --- /dev/null +++ b/app/ui/src/assets/icons/mqtt.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/ui/src/assets/icons/ros.svg b/app/ui/src/assets/icons/ros.svg new file mode 100644 index 0000000000..891abb328e --- /dev/null +++ b/app/ui/src/assets/icons/ros.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/ui/src/assets/icons/success-icon.svg b/app/ui/src/assets/icons/success-icon.svg new file mode 100644 index 0000000000..dd4e527f23 --- /dev/null +++ b/app/ui/src/assets/icons/success-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/ui/src/assets/icons/three-dots-circle.svg b/app/ui/src/assets/icons/three-dots-circle.svg new file mode 100644 index 0000000000..40dda9c37d --- /dev/null +++ b/app/ui/src/assets/icons/three-dots-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/ui/src/assets/icons/video-file.svg b/app/ui/src/assets/icons/video-file.svg new file mode 100644 index 0000000000..89bd0bc044 --- /dev/null +++ b/app/ui/src/assets/icons/video-file.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/ui/src/assets/icons/webcam.svg b/app/ui/src/assets/icons/webcam.svg new file mode 100644 index 0000000000..147d4f75e7 --- /dev/null +++ b/app/ui/src/assets/icons/webcam.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/ui/src/assets/icons/webhook.svg b/app/ui/src/assets/icons/webhook.svg new file mode 100644 index 0000000000..8d63fb3958 --- /dev/null +++ b/app/ui/src/assets/icons/webhook.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/ui/src/assets/mocked-project-thumbnail.png b/app/ui/src/assets/mocked-project-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..96111a4705d4fc84c0f912e7c7c2ece0f43ef292 GIT binary patch literal 41833 zcmV(?K-a&CP)rroNqXn4B~-$~mAg5=tO}0Fi^u+IYdc_TpXR@a@`O^LN;*>a86a-+ub99x8`@JyYH=Ab?Th=yy1D1*|%?R zh!u`74FBEl8)M@4gMi=Q6XDMEL;YUhnY!->_IJ@_b>*{o`==hj;|JSd z=sL!D`YjX4w+!@e6Y_iXxkuN_rGXNSA@r7xw`QNtRAEwCo**RWI7rbo%4LM*61+;4 zpN7UyFFyt2({(c`x(L5aV!Zl{#y*Qzt?K+v9mhF^yYQiH8MNke$fphRO=-Cgk36J% zr|5Z7EzM|Kw+Z=6--@tO!s|IwN)V0?!q@esO#u*ev)spp*CeGk_zKpp_1f59}0W!BJ z6yVXkRV(%DwA{gWB=UC)<>B9RIAU9gXoc7uhjTL@hB65}(ab4~>PQP$aT$YH2;RK7y3dCb{Fy~^jx8p25w4CO@|f4+*}61lb53TsM7q^ zJmptmpabI*!!rHgIjYk5X#)g4Pj=$je4bdH@iNVCbsn{B21O#QTv(Nxc*fWHrX!un z5RrNC1A}sjHWPDKJ40@sqHEJQ_9M)yT=TIdYVj%#pLhq0@0&~Vf0F#D+>~?e4XWvWk}KL3v^Gb zbNHSw+=U;=(*f0u$6#faZkGAmG)xSO3y<_2Kb4ZdefKh6ou24aApR`n`O7?u5>}~F z!^PWHkxo{U#WBf|n1&~2Zp0!r4DA_~7>wl{2||^p=fy@4Z4&u}8IjxcthWi_d-h>N z;fg|-!bI(OA_lJ%7m)tvmuF#`nz27I;PES&fmev+gS_ozAE4lxC;kFBX+! zGI3ghbT6i_8h_Evx6WX^B=Us@Vsh^@g}e8KizURUd+|QwSCG(^qJ>U;r|~e$h(y^j zbbd+}-pB&8D0ItTcWpbtC%T6ngz76i$G+-3{JXq#8I?8B5VW}Fb80Hs5 zPpirMhJVti0=W$@t!D{A^+P5&WqvhS%2Tn;B9Az+Ap)z>zjQ8#*;*%N3RM(|BZ`g* z<=`R_=(kFZ$3FtGY1~^BzVoWd)%!MHS19oNVQ_iWfQ%>J64G@QFB0<8|Ec zo+SX*V*(Me_C>?3)eVPrKHj}1+S$=3VF)x3ci4E(hUX0ISG-074OF2Q%Z<2&-dQ&h z-$%qcbEF_v^G$;A`29>a4S(NLN=(Ah;?Emq!;Y`v!%)ZJj44wg0krAVKfKCqiC=P=@!a$n;uSpz;&x<>KaGNB12-M#l($7_krMx&zf{AKT97qMzZ zkRKY^?fhrjD!o$i(S5V60?!<-=CPTsS0uF{V1vX| z7}g+&B(FoV9J4w%MjX9`Y?FDJ5ie2?t&X0crIg!QNfDa-*+?Lbguxe!;e@3}BVi@~ zb{x{Z?}$BlEyq#hccY>r`o1XmOCgn&#*n<9y|{j^C+Wh-IsB(DTvX`GLLTxJdv5X? zCccrJ5zwNIy!@5~l(yx2-ALxI!?60{-joeXhqUyL>( zR$hC-T0-3(^m~PfH?Ufoaf_BXQUSBa#lK6Jl zPVR=ru{08u=S+J$k@BnPKz2MPzIO6@(Y35)6j~dnq{TiA84ujw10WXfrQ3lZl+GMuU!x=TPAw8JB$IxfRuCW)91n z#Lbt(+Co*>ogSy=uApgFBYve7aW4Te7cpgv%Hh%l+L*bnb7* zq1;odN}%}B>pdba8M<-TGcum=l|;8yTvQ~pB~9F-I(7texi;b$X-kMpLFnYol@scM z1!7%Rt&*=QyK%P|x>YG2G-g>0TfaySA-H zI$ECS&+4q95~Z=$FH1Hi%o-aO#;XIeYe+~B#A}%fs|B@8nM#8M%Wha$$9b01y&NZO zMxCJYzA)XjFWoge%XnO4iM+iv<<}Y?uaP0SKXF zB3>VMH^x_SrlZ3OnIJP+Au5}M>5*Do8f~>gm1f?wA#XsHeuSrbH z97|vjYw^nS7!#T6D_uFc{_dPA>ntQ5s=Rxx*kC^^zsH`AB_0ZEY4dbvNY5F2_6gL8 zvpqZCDn^5`9B4VB4@4IWq3%;7W`ZIRK0gF;NcIo}!a+hSLd9hz+$K<+%z?w68abi@ zI9C@eG@=M;^ivo%>us#R83nWWy@1BgPu-Fl0lRi{^tY^2IwdsV)AQsAHsR-$IjWS= zx^^Q;=4z~8hbk}G-|AW1R9|$R>hx~pdruS7*D3Ap<)9C_h9#(^9@Mzl$@7y&KqP9d z&LzwuP$CWjCr$&ro?|7CMdRP01yf}bgQfb~N{0}>RgYxhtUFHb;Cspl0#H6zOye zvIXnJ4FKWkEz;Qg2&M|8g8IDRv`;+Y*&{2&@%j z>@En{mlqge!#b4E^4L%uz(UC6)^%2xJC+mcD{;X_j?8+HXT2!G`V*fgbyVlPc1n_L z8WSi%)xwB-MJj_`WP^Gs$-BEszRHDT!^o6oh)ZU$C+HSkNS@ou$wna~Iz8EV8odHE z0;qPvNE8M7491G~Fd0Ro1kKM`6KgsZ84#hTYJz7^6*npq8p%S5K%uqKfw8M9kYRa* z$90hy^)odU&9y+dlb1Cz239Ya_=+S(*&pQhkPB}yMRQ()mmoM%MXEYGRZr(F<+lwX zoIQe|ZJkA`?ZA@eKI$#Xq;U`g^+b~7a_%SlLq+#tbSNS^x8d3P@kEVq;Az-E9PYhF zXvPtIay)fbvu7;!h1Whp>m4!HQLO_&(t2=2W-Rv)?HEOWV=K8Vd}jNdS4IA^LZlxuJ0+w8^Y}9Yha`b)K9}d8-5R@Tt0kk&azN)3LIh;h5KwTwdXI?wswnmnCArTlEM&)c9G7Ix42`6{+ z9a!&=eF8hAR8W~gI5LS$|H%j!riBuHF~jvH%B5;`+^=dQHj;)yBe!$!Z6C!!4@@(z}f;f_%rmCPI|v4 zQph8wAfOG4U(YzEh}=-WM3@Ag0^f4)z|CtA4Z^cwV5!A}FOp+6M7d`edBTs{nsQ{i zdZg2p3B;>LVzQCQ!mys}L_i>kQzo|L`y6#sE>|QpM!qjtmzDPh2@!{A!vggfo-uWS zL;64o0#zVT%#WfrHBEX=1xHK1EMORx z03<_!9Cx;gqPS%}AtVFKy)49%Ji_?lR3{U{Q{E?*HFI6xb33vA0Y%oTHS5$!jvV2I zVeS@M>(vlo&Ehk+FoO1OBkQH=gzDQygPce#rieCZti+w#*KH)sxDx5TNT_jwlbTq{ z@Q+mB<>;3Rnu7%l4z9zY;ZaOaOrpKD8Evht$dW}8aMXZvSc?x*!+3Zg)oKtCrCaD? zv6%Rq22QRUKZ>kyT(V{t+lpCBc$SUD#E@9?6G=u#oJsB|e_NnZtSV;!go#i`CrTTM zY?;M&*RJ!uhR(ns@4~Jp!8YmQVg=J-t8j1Q)Gp)IU(q@8?ei)Ds=nkRghdS62TwvG zvN?@zKjqF&qI5w!58%CJTTbPf#3Pahp=JoT73HN{x_PNJ#5&tk(oC3A2^7S z(NUC2W!kW53ExSRY0Oma(*W5-PI5Fp`0q5GtB{8hnz%=Ts+in-YsU$F=Nz|Y9}nC! zYVq)ktsK5ay|r5}I+t_5)rn;{^$GFnCMMJ`AbCh&hP7)XVgv?D6?tPNq7mIH-`0Zh zr=P+s>7r$N#7WjoSkL0namF9rz2&P(;)@q5V(>MNK?~KDT2uXlqdLS;2$jH`i^@1^ zlnt&SLP~Lb4;yI7;UlsRVzR5H%S7jdj1ZfKkh6NTIy^>VG)rEEK%#Vbo#lR^v0u<{S;BfdBupt(;`11hFBIl6G|+|TcJ9GD-~N95)nEKQwr<&m-}}TT zFg-nu4O_ONt-A-uj!)p#L&KPwnvtlDmX8W^n2ki0+ZX1**whs&7Im%UPBh@<8RCWu0( zlJlvtb@rn2rbWT*eI=}k(OPl(!#+hy?rAD4W_@fl6SP*ej=ti5j-hxq0)?YR#8PeV zLyce{-!TK85Yu z5B}f}iIZjVp$~ruZ-3j{(B9UGV?GY!0m7>AMayXdf+pvA7z6p~v!T>*B<~n;e-+&^M-OZIt`}(V1dm&t`G|B8V~JcIrfTzkD3eJ^du^zVpWz=;_0M`sl}S;e{9A)1Ue@TAG`2(&jD5 z(E#@yI*Ppq4r69^5fxT~ZOp%bggn*k_@x(%+9YP@#4DTI?i}7-Ol*Q|3#R8q9M3rS zNmw8K;dC~>U-Do-p+=t8l-N+G*V=h7Sk9P0Vz(yGuM4+f>$IaC2Ojt_q3$&l$@-fw zRZt@D4g5BUIiYe{k$;XG%NU!FVQI^lgrQ)t^1)w7Db)#AQqB}cillBvxlW)?ea0fA z>O^((5UP8v z7Jq{-rLc?_#&6139hdZ!&6+fEwOWqE>I_ok)AF4@2=(`;jOKkfs%68lbNzP08cjkq zSUQ6a+jN$5%AMWcnaAPB4%aE%Ol(dpIaIq;D#j*emf;bEkS3%0kB)tk-QXxWN-A*?bTpgv%-X0x>cSy-u|?CuictNE!ma5V4t9hEDK6KipXF2xXPxjWZfJivroF!I#Y8%RsXS^uZl6NEU>1j6}uC5+u~ zr|Y%T#-MqvE)v5F1s4?rL8Oj>qhcmh@tU@^!E|)Po1H{}r3RJCt^{OdpFic<#cpeD zLQtAOwy6~}Gqa?`*COlCw*a0Ywi`ruHiS1VV4e`>3~{{Q_{gv0cmLaeCGJ?jJ$K)Y z|Mok-ja|ET;j+sv!#m$`1GcUkAZ#y>c``USF*ip$JfHT_lxrfrt%4>_)L_t8e07=~ zn;e?aYP-Waym&jj7-4zTE7sHS&J(v9{6XPl;+tzyT~%FiqE!8 z_bXQlD2GjY{Y(>ajYWi&s`a6J78Ox~Qo{(sxrE!W!4!CsEu}_A?7niI0tN3(MEC&` z>QZ9J#=%L#SUnB0YH@K9XKY=A6mg>dfqt310$p%{T^6L{iHIY-F2y>S zy`Ten`C`oZ#>U3vqL*I!23&XDo5X5)?z!i1%eVgx|Kr{}&`Vg~h3B4(Gfv%%)}hUW z;hc=Ne!3?Sd792`&85W8$B=-9@aim1arWCCoeYC_qSPJ9-&rj%h()s#?GeRb1^un@ zaOWgp6*{ssAF~Jc$Yx<^alwkmT96eHCyskBPxmc?O(G`-jWrf@p)@%~-1UOl#oHl* zP(*)H-OEJ;$4Y?X-o8LEE-FMLn5_&?xUw|st0LgBm+B$z?5knMUIp?pWUXZ3@u!F= ztqmnKUZaOB5?!2f_NAC7%iQGy*9m`XkVU>;FZOSx9HVDHYFnDP0V#nk`DV<`%?rlX z($XT6Q7kT^R4kBzQMHzuwbpncO?*p9G$DeSn4FZ)*Alk(-~Z$f@t1%57dU$CD1LP7 z9r){Sego5ozKjbt_v75tw`1eBGts_b8y41`fmFT=S-O66CQV|P2$`I}l~O^%ew=t! zf>%QzgmYr+-y%T0*fOej`gk+Z(#bmBNd0~3tJ0^+c26TPp*F*P;#1Si%k|ckq)7e^cCI)4l5wJk7#UhrI0so3br< z@mrr3BAc9>#w&-9Vr062aDEm8g=cZNbUG1YMHV!j<#d%6QR#zP0X5%7$=WO{!@&z2 z<;%I9q4lqZZcY{Ol~5~Rea|lEG)$~$n2PJ3z?gXFaBgUg3_*G!Ag)B9F2fY zBb|@AFe#iGDkEmO1k317lo)#r&F0V>^}%{@(Xsqu{dAFhoo%hghA`>2b7$xl1k}~7 z7$Hw|L<1r0G8klin^eO2s=NhAzbVn8cC__k?|2{>S)rQ3mH(WD-^rXWV^@HQcacFU zdwty)E)vB!oGwy~tVf2YE=XC(!iinwg%UmP#e^o)UscX#7G_kBWV}sJl;~bB)2y*_ zg#uxS(^ymZ8UE~)1$cz7vIi=aHAvI5mk3+rF_sB^*!aGW0t2g;77F4U2EnqraYS%W zfBrv)Dw;x!&jEk%^(Q5#vP2w-i7T|3IZQwsw`|7s*IkcyyyHf!TD4l>6Y-l0YOi(= z>wOg(oZ?~XXRTT+%p@?GWE6;($)kMWVf6UptaJ&URS`73CS1v>O%f>q7qx;&`Sz?{ zBRt5sEUp+3cB>XzU1n}_h76+u)@)dn5T*_Y_TaD!4>|c6aD9-_a!C`%^cl%!s#$}= zs&{+^mw;n5Fmf<&(DCO(sCs?0v5Rt#z^~esAU%o*H1Nt6Uu5o8gp-#p2veQ=P_AUt zwIig%)UUa+XB)c347941lu)E~s;KHAhycxXK!85OHeqps{Bgs$Ji8n3Uo}Nweg}Gb zT97t@JY!HbVtg&kjN%Rd^Gme$6R4e#ztt0(&cEcPs`6PQw%^kXY}mMoppF*IOwV9q zVuA>-D8w@}GlN%m@4;vHej0!M*MCa{w+e54>kW9%d)|%Bn>Q1o739^_lp`_RBnw_D zky!6JH`MQ78j2qTAFW zKsSsw9CKL}>B;@3RvvGZwvNsS1dV}k)$i=kXrfD+bWKxRX&FMQ%A&iZE?MGCo=2~m z!a8~ln_CKvtDse+pTw!@`#nt|jxu8^`WDKtVv%2j<7GPrQ4yadZzyZ%gc?4i8_PaH zt!xR=aX~L;yR7*0=@KYGxSB~vK^Bl;$%=*>Inm3yI2Yfk(R0we2ZbW~yUW5nvbnUl zUyTHMTGFBi@7i)Y;fn11*gtQslFFG?7aqPp{@xYp`k4CgE};$Bv0E z$GTgUELNV=V@HSa#ee+*zVL;AK^tK*Zz9h3{`b8fXPkbzaJ|LF1=>JaH1#xzPQ+F$ z`)pZEv*-|CsN_r1&*D6?qV%V2{$?yL_!K|F0d+CM_*1yld8ZG zT-^U1tZSXXvEWR)&v81bK>8zdEL!CJ5b*Qgf`7%IplUiLr&QAg`LNtns81zB;NlFq zn238I7g3B>#x4olF2F|Xug@sws3pjYd zn>{A;b4^S&HVU7>E%y!?+?{Gs}SsHlTnHE@PF>FznET*`OI$nOpG8 zPrrd+^&3%Lb1lMLGi$&w`|d=hasa{T3#biVBlSHrb<~TjXH_HYqq&XbrDLPQ>X(5@ zScL+#R^c`r1M)Bl4~*H{VnYRQNI;%28D0vxOIf66{haSa|7))HkA&AGWS+^D&H*64YH#$0s(PJazz+IG3 z6&9Z?hHty=Hr#&u?K0x?&O48Y@BO&unrqP9+)8lEg5W)^?Oi0g!NtZfb?9O7F=~z! zV(Tg*H2YWRxEIG?r4#~9X!4=Or_^ncypEl8K|*{2s~3>VW-!ae^x!PQWe|H7`2xRG zg!jN?UEf` zH+OYJX@5^K<%d=SXT`9;C56#h&Or?Agon{imzYoDu_D3g0t17CSVK4)*PfU>K8j%y zv&|%~_hUM==)(`n!fe>I760MGAI7`h`(Cnu28qkf(PHuLI*wW@uZBfp zaBvozrJf`~ghaHy=Ov?aBHA(ziHD6&u|;86KjMv4Dg}a|rv%iAv&EAU!g6~TWx;s_ zstA#&gB1uM&Dy{NKLVCHzK;QruP+Ijm}}X+~M|oOkfDIvIuj=CSR3rsXf+Y+IPa-acCNi6{O8 z3S0j_RJ*qjj8Ty9Ye}xEs6M7@qWKV5f?awHcSvPRn+5mHYyiA!ez@i>zE& z;MbKRsK(Zt{amA2D>lBK4Wf*cKR~Lc>4V1UX<7hLX*3iO z9;-W=)MA!$q9K9Pv^kl(lnUY&l6(WyL>vj^lqK~cJ53&xz=qa`HnCcRAlaYHM~$x8 zPVT4nT_49>*n`60TToteDUe$&qR&+4t&6Irnl0mu%%?@)BVrB}#tE$x)%Z2l1BnxR z7PJoOJH7_hNyxn??l&@4CSODoS=DXi>1oPp6{ZEUMhm1Pd(~-})((92YyXOCueyf0 zR6<;`z3$+kC3F|ncX33SidRO%hFiH>HSMe#?^>I~;Moe}VS>{o36I4}#SyzL;Z%}( z6|_q_JJH`iDA30E#3*sU5loIx67gxC#Kq^Gj6?KZCR9f?N4L7rnQBV8T`f>|TFO>f z6mU^QhZaeez}O1IBV{4Fpjwdxpc*OoY@l%7MYT*A(jv!s(YVSrJpSMVbUxwj?4VAu z8%^W!SoxPS1}RSzbAI-DdXnp!hv_;VYR3W;hdJs&y$`I5$Mx5=mae9tX^^PQR4Rwm zKri}xx``}|Y)lvB;S4XHXLTdeH*y{5Aef?W{3eVa{5*;89u&JzLv8g{2--H1-rHrp zrGacv#(_;h-?b|);!@eU)NL~oUr1vr(~}fu5iF3UJb#SD_9()|G4!Vn;)-(z(SB$< zo`3Za7D+8?X=^8`lNFA{`sy?p3a6cRni6S}qQcl9;JdqM?}(8(fYKf*DX$(dK&a?* zp5U8B@*1RazV+GZ#A)FYOPGmh3`ckgB97Q>Xs2aSj1CglWTp1>_Q^s`O-*2qknQOM zyGZ0#NinVH<-O2yR0}0r5f?eP?SqM^@LU8iEa%gF(iCwRHVRD6fy;r#>>z}?ZSy(_ z5@1fK^s62S@lSHpifo)f#2KqV%*CdvT<5K#I+GNY4yA6LCz@@oZcb`}6WQ)4VA61L z=_=-l=(A}pZ4qa%s{z6>gdCunrp;M2?3X16T&A5~6|~Mh1Uz>yiX0t7$XR^tYnBs|oLW z;|17#U<7wQ{uCC-1vWJ`D=G;`|DJWmSr{Qzsg8q%^(v4UbWxn6i4(9bRi=UCWGRvL-LEy&C&ci;F`b3968@k zghWKdiA!lqoF>JE0$s>B`#gCbXT)#J0kP~Z%$pfe_iE&|5cP+1Av~*lGjXSRF7vvH zQ(6d`@4U9F6)lH%qp7_W1(I(4?M=Aq+|%&Xy-$*a>JpUVimNXpoqPt32XnMq5Fj>O z-8zN#ndE=Kf;?)nI8c@6g?2UdKLeLNq=(zJ z%O$=f-{&92Vp+3=tgWL4NK)AhBfnx)!qa_U7_#QL*4+3tfG)z;q$;^3Ru|VVDQ{dD zkU6#mOydmp1VM)}0jWBnI*+?<&5kPwU2*5--~qj-ka$R_Kj~-uv`xeRmVa}S%k&ioTGvfR-Ip2tYvl(vQkwb;vuclctwbHYZw}-=y z(ncaej88sj(&Y>XRA#hnE!XFrou9);&pm?xY^#?AT%s$7X1e#4>w0kT&_Ur^pZok5 zhy%|h=E(x>{D7X@oK6M-Nc;?~%BD#)B2L*~7FbXg=xWR1_ymC;<)Q{)a;T7`{546# zi%eEi1vz9WWt1BP&exm}v*8LDjR;%bU7RE&VW^%Kc#e*G3rD%8<3RNUso_XK6d)T$ zF&=`HYv#K}?8CUSHf;K0h?rZ3P8SYr4O`FEM617JWSs?wpo-|ptPUXK3=~$%kOM#K z6)>_udR91xwj5!3Jl9-NvZa&o%Ne;`cSoDXA(Bh5R;!3^$*&+H^ssJ@d`~mG3=vsH zf>MouSD`IArv5OU*DCvi4m`X^|RPQb{g9Z5!UW zeH%Xb_g}hR%L!7odyzzd zP-sEIgwkmhwK>`eS&lgHJ=r;axw;&vQ8O`ZMQe)CsELU-KbQ~@D7FyV>gsT^e1=--Pq*)Rj z;G@c=P8rmT5Met9Rxfmcs#Pf%sEOd7#X1)WSUw})iPH!3YDgLNS@VY+0>%;9X+MMc z(i|p9uTP7<7dpUlnK?;5zKPlkc=m5aLIf7!u$Gi?D2eKzzt?pUYu;ldB%d#y@|0&V z${un!5@#ooTrbdMWr^#tizkz@B_7hgl(+Y6J-KALFTJ-#(KrHu*m$u>N@hCFF%1$f z0&kfos*m9h>+mv(g$ooG@a%%Hg;gU0^K9X@&>0b~c1lofm@PhZ;@JnRWl0kwu_=pT ztpo+^5-p32Tl1RLiLJ#W9~aS7nZeZ?TXF4we;1nm`~!IENEP3^>k-`hZ#QG{#fQjP zm?CaRR%CM??M+$QeiB*i72>iaj%!6J?ZCD1L`q0%K@~&ftS?q;8aZrYf{IopJP|Xn zVO+*Ui97y>uRY_Fn&+vzQP?f9`lp7A$aCn5iCra#tXAcUHG&^%YorB&^lxONEO^I16Jlc*8aOFgm#4U$$wb=B{DE`m6-|9of3DE;UQLvH(j(osEjMT2{?QddTgnHlM+IRlG2TD5@x>bd2`{p2 z6*`Fnsf}dC^9LHIhtNbiCZEq6jPbo7VI}i+V5!hOv<{=i96s}{yD&ZV6|8MDxatiT zV)JR|qjSSHymjjueDrf4#cbxc@Z^j0_|~lt;fWu94YLQHCS7?Jd7nGn6lG&KwdRR) zHKVn~D?RV-Aikr<7L!7&HfXzVf#aLLJQa5`JU4Eg0e%Rp=*xvzSkz+lWZdj{xH zOO_!lqh2JAMz}1RSKqVc9*ly<@wDiX&XS3p)q1Zy&=e0Sqxyp*Ite+py_b?Xq3->1 zu_UHC>lm4g8XGB6M4djOWmeOeE6~Dq+2oOiJ>-lK=L~nyjpKC5PobH6hye7 z%VSUjlEio)`GASL`SsBd(X%CqD`;>GBu>aMMSm+fyV7bV9bk+khuB6h=d0aR9E zYtUn21B)cErBbuxpX4C3gXCRV-1n+@TzYzXkzKtJ&x~gA(B7T!iL-4TY{BOB{TN!e z9sTRJ;r-{GjZeJicTouc7_?v*OC+lH~6c38lz&bYc-^3C0=+tC~o~ zN)nH;q4m8z0VPm@NSVXi}>FPBzxyDgu=LKzmb(zDgs>_?D?<8+Sj8h_W!BK=pS ziS>vuIr)ZD0@)M51bBRs431PYH$JgT94a{LBnOH7F4j5f>PxXgyEH3V$%quoe;WUPgCG5ld75J0c($(U8Q)9-NlK$VG@ z=7%>PbG~`P!gjy(yy$4nM3B9GgQ)bKfiM2#LG-n}f(^a*;PkbF=wH=>T<<1qJL!CU z_4jrl`&Yk?r(PMsSAX~j?!WgwVB%%;dB>55Rutz=Uge-xde#|okiX@et!SwfZQ@Xw zTxLeNUdpCla>tHRc~R=fc=VmQ#R8hzT2bP}B_v}67>N$o!} zg@dEhICOLhN5-ZxGBuB>=?c!j^kU?@I-?2qZ0ns=BFNAYUn9rU-;5C4HDgL$(kY#*>AAaEs+Kq*==0M7bgzG zh>%0;HcL#IaxTQg)EKMpz6)!Bd0zdluT`oRe$q%{<{-5oE?4WIj0KJ@JbIY?mfP^# zpZEm6^rf%j7&+IEAFiRab3ax!zk)M1J%a-ewjz^nL(BSe@Mmv72mK%aUwC%kQGDt4 z=kU|}9!H5dUu$g?9T=A|t6qXRuG_Q`MS?lF6c;BVu|+DampE>Z8AMg1gQ`^r?9;mC zS`o~TK~oJ;XHa`a~D>1YOOFf25Q9p ze47y;pw9G)Zoq`+ESx0qrPFG)R=J>I6_LINYt6CfIXXT{6WvT#nTvD~$B+b1lOTYU zoS!xdIE2w|@=(vY95E;vDE68p2X39M)^i94_*SiW_ThR+urpqCJ)`2I>hLFM%XElK zNL_Fy(Cm5EPdtfV<7+rL$f_ayTdge7E+x7^x=MyvSd2uJQ$<{Mn*>7;%V#)hWcUD% z9@;C(;hQ#Y!b0l?JalLQQ%~5(Eg&GAgT|Q|T+I#PLta$Q%GKDAw!79aUtPxOrlHIIO>J z2sw!QKk^(t|M*kbHb)|Qm4_kn$rb`K4@lavb;_=x_H;_g-$Y!q{s=9nt7$xg z7uwwOFhN76@f)ZwZ<9DT0Oy7x4x~0+Np8ae{NZPiI`}9V4O60T zaRmYCMVd-QX?~9Tib3Vu^7cU(>CuxD<3xPNM0#|zv?ATT29HjsaQhEmg!k>can`1r zaQ%%Rz>c@R59e?1#MU8VDsR7tjJX6)BsGCehhEf-#axk}M3 za~Yca58HSMBCbYSW!xM63<)h;zrg_V3a zk)p4WORKpQlK2S3Dl)EzgNe&+$#Z&fVU{q#u}~*g>vc6JUc~@#MX;e96p5%{Q)f8n zxWhm*_N4`tj}snAH=849w-}xaVE43G(3XX#5%!;rqjQFg14zY!6y2mea6ZiHE07DO z5RUAEKff1+g$V-QvvQrZmy+NL&!}>rPQ~hi)29Nv33IfOi$rvDM-HJvUI_MiclNA9 zF*k(2{O2#@6Myk3Y&-cheDGI)71zD>P1w-cjh@afoOb#a=_JSz+M@^dp|aPFtHSnpH3W89_+Y}%j+lC)Ki`-Jwp z5g6u%8dFs?Zr7Ydd6Ol)NU^m!?J{v}?uU^joIGM5af0rn``8UOYp}6 z&OG&OY~HX2-5niBw=`jZTv`E1p1pgR_zTDqRKl5QE?_}ij$)xME$!guX1VHC{$O|4 zCylN7@2A+ML4=mdMxsy=`q)+CYB$w8(XoQ^7)IwM!+2u9o3yvUDFdx&&(;w4;tCTB z8H&HlxGF=5L$B?w>$pne?ut2(bEXS180!QJwDy_i7uaz|)xs^7W(mvK9S}A=Z!|Z~ z>k!2C)YQs065jr;`*+d%85F8TERG(4*-OMX_cHpM$Ux|5L(R`iMp;Lz!GC-AsTe0N zc<1gRgj?Q-TE|He@|`V>iV-3)A}ony^LQE{YHZb`loz1^5)?zv+m&xdGjYZjUw##r zp1vN}^fu$-p#f}Ly$U~n=>`1#zkC*-`P>(<^Q9NDb~U-aPCXr~NiX!7V-j#bGe3`s zscC6$$H5wm7m8(FsYLVPn4ZpSEOL{FCU+XwN5SrDXmDj{p$nH|Aju^H7Z}76&7sXp z7s37NGPmo0E&C7C z!pXRqMon}*N4R!Vg^Ip&E`V#88`>~;-q{*J09((^FVd#y> zl!xIh97Y?7-cAy|r8F5~bgc}*8x>x^&_yS!bSTpUY~8v6Gq3Ez42kE~iovl3B43*O zBhNjF%R0L8w)0QNFsDzh9>5mV7Wl>G zn~XM{P}%K8`3|1vxRq~-$g5K>>xs-H24E~P0vBv-#bq1P+Bq3ZcSR$iCEt&(mvC`8 zkAPFQqZmr#hz?P!t2l5}jUC0p_#FO#U10W z=-}~r{N_JDOgLD|7Wb(rCl9p2EqfVi^j?~Ywo9!|tTaVeEi*P(mI@kgcQ^5Xb z?Q9c!RKK2|N$09xV z#=$O3lB@01b1%fZ{`T`ExPc z@*F-+#MnHyA5Al_!Y>{`j>R44E}%uKGo9Vjhx7Wn7=Ff3e-CaUZ0^kMYp`Mc7SbEf z#v4ESpD}WDm@G-<@T>=RkWR;!fBf;ERlgdRL zj#~kXL1CS$p)IqTG!z65;qN-U$`V}NIaUX%$7_JqogRMW{2r-x*?7cpYo?w++%*Cl z5E<4-Dl~$U^#msWW4R+X_ZfZ9>UoJQB==LhTZeV;E|*5Be*=4lXYqUAd=AYy#Uz7@ ze#YuXO=8WeQaO|h&ZKN*@G21p-~>iW-o@ zJgNjJGq+B&a$g-oj)<>yb|=nhOJm3CwU{caBpV(b#xw!R10C)7yL%tO5fZbh@`8n1 zf&@ySYba#f(t>7!Tn-#Kgdg8_JHB%BzhTdw-Pm~2W_<92AHv(Ne+yQVPRK^afddDm z5E4%v8ynqZAmy_(wsX$d8fN)H)9OfO(ZM2=2~6@Bh~PM5h=2ENAR-f7tSHu7sZLZH zJJXIfobOFDr9AzNHzxhpl@0NmR}5gWRCO`Q`lXs>A3=hRSc}(jHP3Mx&o!})xm4sd zHs*vx79U!rNp(ip=;N5k5~s<=QlF`+BhFjk%DqN)>8!Ey;^8s;&+op17TW!6NYp}C z09(0<;)WH`lLg+capA-gT&aDZD;U(~iBMAl%Co-4&)(YI4UpbfXxWa5pqoVRoLHx- zc5*aGPB+Zr7*46|#CCrcJ*S?GfBNz_FvrR16%XUHW1`Q6)>vwkEb0_co4#f@QWF^y zovm#skcIox2Oh;YiTmCEvxm{%*@3IBc@y4G1bEt+XONEWIgdr z)*)?+2Xe4nCLPDoizp@T=bCg#KLgK;`W-Y9onu7H>2DDpy(+TFkTY z;2|I@x!L`(^S?Hk=d|b-)+_7xeQ z{L^JEDVy;$-?X)*8?}K`QR&)>(Zwb*RJ42-b3QJ`6Q-KPd(xj-#DBi_EWH1nZ^r8W zCX5r|m5NnpdChRiy45vXF>1LxlR%E)XEoM2fj(XA#%ZhYcfwGqxj( zNpL||W5jiu4ieCc;MXprD56A1dx7o5k}w1kL>qNFHi!&c`6arx{Z42iEb!4?2k?(~ zkD$r-Bgt`Op)z(18+)4Z_Uqn&H(hrL)~;WVx%oM=HW#C@ z+emttq_2jFoU7T}7V_1KmTu!3z9=5!ZxPiH{)T2Ln&riJrB_OA=u=7YWMHT4p=@(bc~Ov)!lSK&ctC6JuDFs-mwM=pw+q zjn*bzT_h_rhjTAE4;Nl?5qbxQ$mw5}08z0?V!vWkEvkM^0_)d}*N%ZF2AR1b%;I7V zk3Iev%&Uio!{K8i!lGN!Ic(Un9mQaQ`4NNj#L7gXM3~g}6{1oDAwvsv_cMF&#fPVn z^XrM+f!z8`wYmkYSpo~B3VB#Z@KL_FSjwtwFyRTk8!ec_e=LxW<_AS&nlor2mf6~t zMc?}KVA@IimQ$!q7tzsFLN5_pCt-xm`K%Na@9OQt=B+1T^@fe`+wu}P>Jp6md)^-q@dqZ<42ETRUhFpWIY|99LI|<>?F>X#-IMx-%2v|hFJK&87?EC`<;H(kETCE{kvK419Vl)46d>Y`n$R1nNVPs* zIPS(t%T~07);4xO0}El;-nXbvY7Qd>-w~6u%A_=&1S6*G!i6?>!99iLHjv0S{avnO zU1p(!Pjrl2U#PU`)u{vZhno`*&H|Q23mjA(Ncd1-y&-iNjHnPAT_fY?`n@jok-pQC zg<%3i_HY~4y{@v z^)7~w9K!^Ge_OY0$8Z1E@8G2E+lUxnz>(pjQt!7>ghs9(Hw|?luZQI@G50t7{?1(0 zMIu1mKueay`cMPd@>7C?)htIaNG9Ke_TjmyY_+Ckt(@nnKZ#~Sr`i-du(malS98#2P(7?>O+Jf*w43)8bRI5<2)xMCCD^UinUh8y2agg7oOjaZrIG{Q#WYy3S) zT+0Ek%uKcowxByzl0tpXg5__xECvS;gtn0eBlS|{J9K>%>~}&F<+MT(2Sl7Tv`pCo zta^24Z^e#$P0~?fkqzLW9hkUJL$wwu)S(3poEm8?Y-6lDjurXGca7kc<3(<627Q!R zv?o@n;Ygel!q#{*7Aa67RD(aXc_%j8-YEC>jEOe8X36aV<5DC~YTPXU7$9q}NqwZf=&kwfVLV%+AeX{J6HUZ0l?z2k&Y;{NMxl z>Q}#v@v(9A^>)MQS;=E12frgkzBk8YU3*F|E?fmE9gn1*$Kg!Qii0&6punu+Z=p;y zj139}>a0aaENZ-Zh!PVLzOAU>SESIz>l}^Sz9nMRMoBo)A+Uz?c7&?cMI4h}T#@Rt zw?2itb}xt`FE#M|q*o>Rym8P&QqObxL^a7(bs{3BS_@1>a3(S5(TnARr%6C!lyJU@ zBp%fw?#k8XxvGMIytMwD^pq#Ux@5WJ*obE?6Mf3Img;o_0E}xbiBjS-+8Po<|p1EY6drb^J}>Gr}q*b(<%dPJeI@4+=Oxl{?<-|E7sA%5{J#wu8}fTVjgL? z7-Pa%Y1MDJX;%D5uJ1+6!oey?h*Z6?azYING>9p3V zx2L5SG%?B-q<~=!m;A(si_qpOPVD7qYHA|yMyn7aThTi%y9~ej;s1b(FS-b>uARM! zCG1!~mRirHk_19X^w9<9oEfGC;!xctlhz!EOvVFwK?q4E3#O|FmtA%R&bshI(eHZt z`lY_x=)^e2C#Q%=J@oc;Vu*~7`|rOCU;5IQFh`=emn!-ZPuuz7tQM?|O*Uy$5 zj!5mK2Es)ww{vn-h^>aCUl!JSY{{kZSKquJ4<8__+_#poaq)H<*y=nJC)${LxYq3U zwh6y-qZ(81>vq)&tQ8q*ehL@a_FS0?o9JG&&0yqi_8JSs(YTyPrnyO&igpz&;{u|I zU-{5`v17*-g3Ym%6j0vtB3GXfFjr^b`p0j+_{{L|=q%bhS|v*;oysc8&rmu6zwA}W zkoS0DZV|brW@-F!;iZ?6WkcW|S*@Mj{g^8+V)XE^pz|48+|8S|U~FszU;pYCi2xr! z|3I(Q#E9bDY#k6cksNr~l{UC;lMzJ}QGTa#7T*z<2MH!%7aRwQdY;owl&yKTKb5Ah zDaTPUl8D7m5|6G-Z1@0CNVy|u6>$j{m*a3QC?P}wP_~KS#?;l&Yi-Wq&%S&Y9_N%u zzXlg$XN(I8i;1EUuUvZQvpVoNdbdG!iHXq8q%k%qRwJ>cqOr_rE#kB;_GyCcf9cmY}~wsu$w&E2UknF z;mEOJED(Upis@kgpy+@<`O)|BwXc0$!f(3CSuH6iR7y?sl;si%P=_}AOyL5lKF;@T-mvF^HXyZ1Omox`+>i&ZI3StyijM7Pc@H)t-}vL5Y3 zWc*z&Aii$HdLq8};ypLsK(w+NBU6jQxXicy{!c?5SPPlUnU)?r`pmQV=|hhSC+cWx zx8X=?@o)_|4HZ`)n5mzY%X7{-2j^UH3G%rd+6MZ-Fv~3Y(MFCR7jU?lESybSwqXCB zSMYy7|1Wsq`Df8fV%Y()9KPa_5%8xsY{lgCv_Lc^DGL@#Bt@~JP>6)&z@_8`k-p&K z^7xQW(YAL2i!WEyFKr{3nNWS(d6`8wER?`rfxs%^(d4tapWq^@J820orzS`#RHJ;+ zvs{fMJ6yyqbGY{Q41VjcevFr=j5yX+l)L_5G5IfdB*FAXoh)gDHF7x52Ck-3i4;hq zcDM`QcXQ^%ZJhz&#kr-PABf(m<##ai!!QEzh`i8LQ;8EOm$DKHQbeJsAKG9p!mcx0z zy0mJx>?E^T4mIAs?NnTL>80oz7(_Esdms5`Q*_FK<0A;jvf(7*&1=^oM+U*Szx^$I z_vUXQ+pOk!ajuBJ{MEBjB!Xl8f>YHhfp(oKb3SW@W5fd4O=TOh!|#=9nk>yag@ZkW za|K%XS@5cqo!rpH;pqfQ__we9y)-yaIU84Chh!SKJTy+_R`!B=aVKwYg`z?JV= zQ#VwVfmdFDK&@;}PTD)Zh;ph!dQG{yyU9bNt7Gn#B&6m3P7;~>=~{|9;9R(nGawRh zhJHssci(eA8-Mrx_2yJ(|9M8sXK^@tC6z;lT~wU&>xBs=KIx|OQ19}p zhrpA-bt9o9p$|@G7J{)*g>W|O19jKYl4q#nY)L|MI-M~wcXdR^#3tAqT$p`IT38)C zJc8zM2ETg!rFi#SE+n7s6h`+S!T8~QXvwswnfTprew|J)ljD3A8Eyi>DSTW$)z=Uu z?q=N4-78IW@3`|0+k7~@Yi0MznWvnFb1u3BO`WaiZYLvy z3wJ!&+~2bP zsMWzYp5<`DF-g=e%#&V9zh8OoM%?(u?da=l#`wgf#P)dsQ5NaVd3ufR+=Uu3FY_;- z`NxpiemhwkZP~nZJK|dQQsTRT{oGh0 z;tVY}=9*w1Y3Y$rGwHg8jUOXi!r{W`_vJ(H>vgw!&RIu12}2-BaE&@!lK7l);o=}Y zs~>Y9!R*W&&fK;E@44bMoVv9IMf!V@^loDbJa9c{EWpmC{mXMRF#q~5|0G5O$1*W- zw6?d1BR8GW4lt~6!$th2#C9dU*(0vhCvogI-Ska7{q)mh2DcMNm$PC|1Q3UL1)(hy1F_^5uL-aV(D zxb4w>Naq>(Zjx(y7GABRIbEfA0ZgLON1bB5G~B6yv=DQ+m90W!Lv(ycV2BCMWsh-P zh0vnIp)`H-rA24Wvjk_AchhJzSU+!onBZJ6Kv-ATE^HWgZ3z+k3i8P~<3iJF!6ykW zX_*>p?eits`e$D(H(QyWo-P1(j9pQ zxBlQqxcSGAk@88KqPvfqZNjHds)tr2C(0if z#R$V7#_n_jq)`;C(-(+`Ii2W>4Na<|B(sF4A%b8c5o>d26JxAd;`OW-A}K~=JxtYs zMk638P6cQeJ%o@50{+8t0hgb>0Ux~nB5WRN!#H`CxY(qzDvK9&+k$L*r;+l=v=B}x z&(3~a^Z9@JR2WY*hi-dz5=~S-s&AklefLy7fn-$5fo(}x%!H013%{NQ` zsE&?KdtO3p@Gxqs*t5%{Fh7U&Yd4aw?v2>I?IhxcSqu&h5+u`xY4T)@OpXK1J?Kl7 z(ONi!ryqV0H{bLP{Osl9@LIdjn#))bXCab^-z;||wXxVk;hy0{hZB|2;=)^&W6FCr ztjQ6ah;N%cj3m z>rrwk16o}{lcbFOS*G=$8(Sn%*@+Lo^$oc6%uR&1O^btH0vlGG-{hSt_QBPN;-dQ! zL-{ZN^bc-Z+B5CNLN9t~elAXD>mU$!4RN6?>0quN93M{pyHKBj{sA03co5(E=C|-1 zVQ!tB?GjZY{YeE+s|i-)3RLs#%#Kfyk&(xx(HdM$)#k#2JCE@sq-;+9>NDT`#YY!`1)Q5jdMnN0v=}2sn z7S&pG0GSX%zis)z#@IJCK-}9ym(3vB6V`@R+0xqy9Fk`|ja{&;RR-(V{ z!H`(hv&kY(MOlg9>ek1``|z&fkmGDi9_!YvBZHw^+#gZkq8G=#@vEJ^3WQC4|CaBP zg?lI3$^Xj4DrKiqaUD6?y``$?j9dk1mW+stFTNCSd)qtELI5#0AQ@V_8kt-kM@L7n zFguAbKZw3e743xs_}Sgx#W%ir2cADLg;HRsr>q(sA%=OmGs_Q>(2=NcGVr3Akk$ zOwSonMoO~=WY`7x&fk0lo7NA|<{u;MQ_FC;5@=et4N6?bhDv$b3@;|QSb_-L#Izqe zU#}9Z`RC94z1yPEM5%D9+voaz5VtvEj>o#(S|YrD!t1KGB$nHWVFEH~%4W#n+fIJf z`|!Yy>2>`@4J4 z+tWvS;53GhjiTz4Gr74H9qCC-zW4;b_4Uu=j)(VR(QA@SB0nhEat!L$3f)A9PR-WG zt0SQkFhjSg++uoGxmM|BMX2TEa(y92qrO)T>`bMj#aANrY?+CAK(~>@HDYip5m|KY zAV_@1uVhJDLzf*)d_HIFa<@tbHvv`JMfDeGaeRXrlj64B>L_y}gJ zWC7>8(Mcj9Gjjw#yY-v++P8m*mqsgSCnDwMWd`+0D~$`~7Av`!%jtH`-J}4ZZo<0H z35>1^N8)0BzTj(u>esZQQIH@gSJ6|6OgZFo_jCm3YV9=|HO{e~9J@Po{?%Zr5Ao9L za(LLeo4fJ9f9+CCk)D>Ljmp{d)u8sexPFq!*sDURg&SI_EOBv!=ChyqyKp68;+)da z;sm-Q5?YFlIn$6Jb~Uy4bYtz>wGxKT;?_M>@+Y6&)4~4MS;F(aiTm!o7ac8aGS0 zjaup)c*z9l)f1d?R;-`Fa{ayB#+4DDKo_kSnf3W2S}CAj+zPQt;sbMUTMi}w7Fq((BhOgtOdU<;mds+ewD+_E*KL0J(z3G$DDS<=0l?@sj zLmjv#W};~()n~}xfeI_Rak*T?@R7q9Cq1C8was=p4v-8cz3+KH zs^lYm@~OvB;v#*Sj8wUC>2v{`=v?}gEZCs5fVaK(LuhWN9r@>fPA(H5PderB@#EsU z*}QS15ZkedF-*?ZkQq1?SHJze__cRkgPw34yLRrxvFQ@>O&lbelAUkr-~&$x%5&vi zP133D!Sz>F5mg`Q5fg;llr<K{5 z{}on|j)yW+nm6oUcilCg6r>`kMQLA=4w0m*%OPd0TrqB7~x8~TVwPH&=~mv)RT?j#%#rCqD-#faHyvt|AuR?{iI+&*5SBZ3!=tD=$jKZ1dFo9f=z`C15J{4 ziZTyma(YTiJF%|EfqA}lsLMp#<{c93H#3fW*5Hj7o{5uJb%{}MXmkoq8Zq_J@ z#YOBOg3Gpd;?W21LyoMcbS{m<`}gA3TfU8bdv~F`t3#0VVUHmkyZg-m>>w(J$$5mN#Ad z$p}gkVhK(N5U5^f!>J{#+B#qox{y3}fC=3hp^*}^#nQ=ap1^NaGX(%Q11&b-hq~$UOfNQ&#^EyCXdIUWuDw-^Yq=j ze)3~H{J;a^E$Jdoc#NQyMVhpY8#YNfi`l73iCQT%_2bkl-j3h=_4niKRXH4d`DyGv zGEI0OxzMt{CYwMx8cf2HbTM>E?qqcvsi6lyVF>8?ya_pUhh1Bt@s}ky;S~`PC1>4^ zA^DCmiO&#mm?R-O;#!_KEhqCm2_65Ht4^h_m*G;uROiy`6eLfmwVbp5f>ap`TfY2y~b>c&Tg zFr_$mE-&I(u)MG5TM+g)4uWCfzS)Iq9qd3n4E_wLqB$RTJM0B zzn1%mFWC5X#Fl)8bp+K&VD9h6-;?>QONlx8cjPyfqBPnU-EjycgPlxwJHa{(Lbsp4xzK9dMWAr416T;gDSFG$X4@*(-FK@c(e(9UdV zOB^K6Q*aPb0HBC>SaA%93x%&WGJ2ex_QxdWp_v@?<;8jN-O(?k@39I?_#BOigD!hp zJzRd?Hng?3A>Fr;i1sk{zVs}-OmnmgJyCE~^koSD<2IVZ$ByEMKlnagdiGfNz%1Vg3AKJ-> zsgFZ5RvZG64pv7<&@3)Q;%=#TK?5l9IteZoyGcTG`rdNiZ{%`3DorD(;k}n^Bov@3 z?|BFj`G^y?sUt-8Z!Rv(p^1BPv6rG|^A>Dyf$JG-BU>Y&S%^JJa4rVRak?aT6O1RS z)0RB+BnPA>bsAU>87@0 z;MNL&Ts`^{j*g7cc$JN zt{0ciqjmjhn4Vj}S@}6!dGXn3O@}ym_#o!WHR;bPv0*_NMeEAgX#6>Hk8%3p?p-hA z_8AsV{M^H?y`E@%;|6((v>s?JnfVQSDdj927z&vyXvp=ItVUFSV9)w(gH(H_tY98 zA=Y+f@rLcI2&Ss2CFN)9Wf-K|v?z$UKJpPyj7k0F@V*L1|v~1i$Mh5GC#pxL`GG;Md&0ynMm*K-7`)yo% z#t;tgeI75pIxGRI94+I-XdD$B6JnSk1OZBU;}Fn`6$m5r>WBTy65Pt4840T8fo)pV zjq}zvNjpp55+Y};X}-0tb(*(rV1Zp})g+6m`XGta!omX5{5Qg>WIYROY&V4Gd_cQAKx;sC6gFfXSh+8Ut-r*fm|fL zo6y?37FF`07Kp&soOy-B%{5gBCnEi>MjV#)ynNQf1!r!-`CHc!2VBH{(#?#QlL9ZM zZlUzWtut5`;gINOfBppS{_*XYot!{dYdhwO1&oeQqO-RLn>THgsN?a;G2(iQ2nROd zZSVddKK!1yA-!-MPm#sENT@n@f(fi96wQ;VXIF}$Sptm$G3!O44PlK4bR}YIB&J3k zuJP}f^XcYhPtJK;da%f)gpDki<|KX!pDAy#e8wfp4jtZ)+wZs?yIy(`ZDe3DryL;+k2Cl;6W8k^oNtP(-BALp7im&Yx%5r= z&HwUobQ5>H=fS6lJ5NiQEQ#{<6=9E+ZzP=cZVv0Sr;_ux9I+)i;Yx((em3fDjn`vX zYR747(BGC)72N{28p#|+QOxYfkK#m)iCQh$KO;%PiR>ksmwYBCj)y?X%T`5Km*R|9 zUw8c{16O&-cvkrr8b@SWqT!(;B-vqdVI1AGJl{%A7nbri{@d0Hv4H_jXEcd31i9zp z%B1`c?>|5b+(xiU2Bq<15_RfH=ucWa1-=xA&j_rtrZ2i%e~gVBm4_6wpTvtv78zY8=Bn{%07V)O-#U362Q|xl)5UHfibM%4ai54$ za?WaZS1+1_X)GMwhp;du&4w$)c`{*O^HlX3T$q`|-=`MJxbuotniz zefk#M_LFbmB!3d=e1~;)u@^U4?Ww_fgtjS%w>-RYqTg5Id`W+6OmM*5%mP05U#}s< ztY8foB>cuueJ#Y2v?4jj7SG{udkJU~?~(e0nZ3!HbHVA39?tBQH8ua|@BSg=4+i@B z1o=Ns{!h&!x4tTw`C3FA5s(?Zqla%z&uSe})v3K`6w(qb;JH$%OT|gxnMCd0rHAN3 zfd(WNNV)AGKWsbc52dj~@aB(^2-GguTI@Ix&qaDhKART>_r9lJ!oyF!K*W_JcpxtT zrZJL29S=XW-3K}8n}~LHnmODC+;HvnIP0Q|$!boElY9O8^@98DKQb&qq8WmBx;t}Z z!L7pQe)Iso{`t=!oEgSYt0zD*C)2?BWm$VR+K9v;=5US2FG_GpLQ9^jX@ntWXXo*) zKYS~3@L5DUWs+0cBG@Ke<{G}@joP!@6%=xFZPf;@2~Ws*E2$wOfjt%PNG

8vJZ|S0DEizS^J-DjZjTUR;BrJExd7M1F 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 literal 0 HcmV?d00001 diff --git a/app/ui/src/components/error-page/error-page.tsx b/app/ui/src/components/error-page/error-page.tsx new file mode 100644 index 0000000000..867d9f98d3 --- /dev/null +++ b/app/ui/src/components/error-page/error-page.tsx @@ -0,0 +1,68 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { Button, Heading, IllustratedMessage, View } from '@geti/ui'; +import { NotFound } from '@geti/ui/icons'; +import { isRouteErrorResponse, useRouteError } from 'react-router'; + +import { paths } from '../../router'; +import { redirectTo } from '../../routes/utils'; + +const useErrorMessage = () => { + const error = useRouteError(); + + if (isRouteErrorResponse(error)) { + if (error.status === 400) { + return 'The server cannot or will not process the current request.'; + } + + if (error.status === 403) { + return 'You do not have permission to access this page.'; + } + + if (error.status === 404) { + return "This page doesn't exist!"; + } + + if (error.status === 401) { + return "You aren't authorized to see this"; + } + + if (error.status === 500) { + return 'The server encountered an error and could not complete your request.'; + } + + if (error.status === 503) { + return 'Looks like our API is down'; + } + } + + if (error instanceof TypeError) { + return error.message; + } + + return 'An unknown error occurred'; +}; + +export const ErrorPage = (): JSX.Element => { + const message = useErrorMessage(); + + return ( + + + + {message} + + + + + ); +}; diff --git a/app/ui/src/components/notification/notification.component.tsx b/app/ui/src/components/notification/notification.component.tsx new file mode 100644 index 0000000000..6d6148bc75 --- /dev/null +++ b/app/ui/src/components/notification/notification.component.tsx @@ -0,0 +1,63 @@ +import { toast, Toaster } from 'sonner'; + +import { ReactComponent as ErrorIcon } from '../../assets/icons/error-icon.svg'; +import { ReactComponent as SuccessIcon } from '../../assets/icons/success-icon.svg'; + +import classes from './notification.module.scss'; + +type NotificationType = 'success' | 'error' | 'info'; + +const DEFAULT_TIME_ON_SCREEN = 5000; + +export const notify = (type: NotificationType, text: string) => { + switch (type) { + case 'info': + toast.info(text, { + unstyled: true, + style: { + '--border-color': 'var(--background-inverse)', + }, + }); + break; + + case 'success': + toast.success(text, { + unstyled: true, + style: { + '--border-color': 'var(--moss-tint-1)', + }, + }); + break; + + case 'error': + toast.error(text, { + unstyled: true, + style: { + '--border-color': 'var(--coral)', + }, + }); + break; + } +}; + +export const Notification = () => { + return ( + , + success: , + }} + toastOptions={{ + classNames: { + toast: classes.toast, + closeButton: classes.closeButton, + icon: classes.icon, + content: classes.content, + }, + }} + /> + ); +}; diff --git a/app/ui/src/components/notification/notification.module.scss b/app/ui/src/components/notification/notification.module.scss new file mode 100644 index 0000000000..399471cdb9 --- /dev/null +++ b/app/ui/src/components/notification/notification.module.scss @@ -0,0 +1,35 @@ +.closeButton { + background-color: transparent; + position: fixed; + right: 0; + height: 100%; + border: 0; + & svg { + height: var(--spectrum-global-dimension-font-size-100); + width: var(--spectrum-global-dimension-font-size-100); + } +} + +.icon { + margin: auto var(--spectrum-global-dimension-size-125); + display: flex; +} + +.content { + margin: auto var(--spectrum-global-dimension-size-125); +} + +.toast { + -webkit-box-shadow: 0px 0px var(--spectrum-global-dimension-size-500) + calc(var(--spectrum-global-dimension-size-125) * (-1)) var(--background); + -moz-box-shadow: 0px 0px var(--spectrum-global-dimension-size-500) + calc(var(--spectrum-global-dimension-size-125) * (-1)) var(--background); + box-shadow: 0px 0px var(--spectrum-global-dimension-size-500) calc(var(--spectrum-global-dimension-size-125) * (-1)) + var(--background); + background-color: var(--background-inverse); + color: white; + width: 640px; + height: var(--spectrum-global-dimension-size-600) !important; + display: flex; + border-left: var(--spectrum-global-dimension-size-40) solid var(--border-color); +} diff --git a/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.module.scss b/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.module.scss new file mode 100644 index 0000000000..f3db77237d --- /dev/null +++ b/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.module.scss @@ -0,0 +1,24 @@ +.disclosureTitle > button { + flex-direction: row-reverse; + justify-content: space-between; +} + +.disclosure { + border: var(--spectrum-global-dimension-size-40) solid var(--spectrum-global-color-gray-200); + border-radius: var(--spectrum-global-dimension-size-50); + + background-color: var(--spectrum-global-color-gray-75); +} + +.disclosure[data-expanded='true'] { + border-color: var(--energy-blue); +} + +.disclosurePanel { + padding: 0; +} + +.radio { + display: flex; + align-items: center; +} diff --git a/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.tsx b/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.tsx new file mode 100644 index 0000000000..924ee8a453 --- /dev/null +++ b/app/ui/src/components/radio-disclosure-group/radio-disclosure-group.tsx @@ -0,0 +1,59 @@ +import { ReactNode } from 'react'; + +import { Disclosure, DisclosurePanel, DisclosureTitle, Flex, Radio, RadioGroup, View } from '@geti/ui'; + +import classes from './radio-disclosure-group.module.scss'; + +export const RadioDisclosure = ({ + value, + setValue, + items, + ariaLabel, +}: { + value: ValueType; + setValue: (value: ValueType) => void; + items: Array<{ + value: ValueType; + label: ReactNode; + content: ReactNode; + }>; + ariaLabel?: string; +}) => { + return ( + { + setValue(newValue as ValueType); + }} + aria-label={ariaLabel} + value={value} + > + + {items.map((item) => { + return ( + expanded && setValue(item.value)} + isExpanded={item.value === value} + UNSAFE_className={classes.disclosure} + > + + + + + {item.label} + + + + + + {item.content} + + + ); + })} + + + ); +}; diff --git a/app/ui/src/components/stream/stream.tsx b/app/ui/src/components/stream/stream.tsx new file mode 100644 index 0000000000..78c240f4dc --- /dev/null +++ b/app/ui/src/components/stream/stream.tsx @@ -0,0 +1,120 @@ +import { Dispatch, RefObject, SetStateAction, useCallback, useEffect, useRef } from 'react'; + +import { useWebRTCConnection } from '../../components/stream/web-rtc-connection-provider'; +import { ZoomTransform } from '../zoom/zoom-transform'; + +const useSetTargetSizeBasedOnVideo = ( + setSize: Dispatch>, + videoRef: RefObject +) => { + useEffect(() => { + const video = videoRef.current; + + const onsize = video?.addEventListener('loadedmetadata', (event) => { + const target = event.currentTarget as HTMLVideoElement; + + if (target.videoWidth && target.videoHeight) { + setSize({ width: target.videoWidth, height: target.videoHeight }); + } + }); + + const onresize = video?.addEventListener('resize', (event) => { + const target = event.currentTarget as HTMLVideoElement; + + if (target.videoWidth && target.videoHeight) { + setSize({ width: target.videoWidth, height: target.videoHeight }); + } + }); + + return () => { + if (onsize) { + video?.removeEventListener('loadedmetadata', onsize); + } + + if (onresize) { + video?.removeEventListener('resize', onresize); + } + }; + }, [setSize, videoRef]); +}; + +const useStreamToVideo = () => { + const videoRef = useRef(null); + + const { status, webRTCConnectionRef } = useWebRTCConnection(); + + const connect = useCallback(async () => { + const videoOutput = videoRef.current; + const webrtcConnection = webRTCConnectionRef.current; + const peerConnection = webrtcConnection?.getPeerConnection(); + + if (!peerConnection) { + return; + } + + const receivers = peerConnection.getReceivers() ?? []; + const stream = new MediaStream(receivers.map((receiver) => receiver.track)); + + if (videoOutput && videoOutput.srcObject !== stream) { + videoOutput.srcObject = stream; + } + }, [videoRef, webRTCConnectionRef]); + + useEffect(() => { + if (status === 'connected') { + connect(); + } + }, [status, connect]); + + useEffect(() => { + const webrtcConnection = webRTCConnectionRef.current; + const peerConnection = webrtcConnection?.getPeerConnection(); + + if (!peerConnection) { + return; + } + + peerConnection.addEventListener('track', connect); + + return () => { + peerConnection.removeEventListener('track', connect); + }; + }, [webRTCConnectionRef, connect]); + + return videoRef; +}; + +export const Stream = ({ + size, + setSize, +}: { + size: { width: number; height: number }; + setSize: Dispatch>; +}) => { + const videoRef = useStreamToVideo(); + + useSetTargetSizeBasedOnVideo(setSize, videoRef); + + const { status } = useWebRTCConnection(); + + return ( + +

+ + ); +}; diff --git a/app/ui/src/components/stream/web-rtc-connection-provider.test.tsx b/app/ui/src/components/stream/web-rtc-connection-provider.test.tsx new file mode 100644 index 0000000000..b78278e09b --- /dev/null +++ b/app/ui/src/components/stream/web-rtc-connection-provider.test.tsx @@ -0,0 +1,134 @@ +import { fireEvent, render } from '@testing-library/react'; +import { vi } from 'vitest'; + +import { Listener, WebRTCConnection, WebRTCConnectionStatus } from './web-rtc-connection'; +import { useWebRTCConnection, WebRTCConnectionProvider } from './web-rtc-connection-provider'; + +vi.mock('./web-rtc-connection.ts'); +class MockWebRTCConnection { + status: WebRTCConnectionStatus = 'idle'; + listeners: Listener[] = []; + + public getStatus() { + return this.status; + } + public getPeerConnection() { + return undefined; + } + public getId() { + return 'test'; + } + + public async start() { + this.status = 'connected'; + this.listeners.forEach((l) => l({ type: 'status_change', status: this.status })); + } + public async stop() { + this.status = 'idle'; + this.listeners.forEach((l) => l({ type: 'status_change', status: this.status })); + } + public subscribe(listener: Listener) { + this.listeners.push(listener); + return () => { + this.listeners = this.listeners.filter((currentListener) => currentListener !== listener); + }; + } +} + +describe('WebRTCConnectionProvider', () => { + beforeEach(() => { + // @ts-expect-error the mock implements all public methods + vi.mocked(WebRTCConnection).mockImplementation(() => { + return new MockWebRTCConnection(); + }); + }); + + const App = () => { + const { status, start, stop } = useWebRTCConnection(); + + return ( + <> + {status} + + + + ); + }; + + afterEach(() => { + vi.clearAllMocks(); + }); + + it('provides initial status as idle', () => { + const { getByLabelText } = render( + + + + ); + + expect(getByLabelText('status')).toHaveTextContent('idle'); + }); + + it('updates status to connected after start', () => { + const { getByLabelText } = render( + + + + ); + + fireEvent.click(getByLabelText('start')); + + expect(getByLabelText('status')).toHaveTextContent('connected'); + }); + + it('updates status to idle after stop', () => { + const { getByLabelText } = render( + + + + ); + + fireEvent.click(getByLabelText('start')); + + expect(getByLabelText('status')).toHaveTextContent('connected'); + + fireEvent.click(getByLabelText('stop')); + + expect(getByLabelText('status')).toHaveTextContent('idle'); + }); + + it('cleans up on unmount', () => { + const stopSpy = vi.spyOn(MockWebRTCConnection.prototype, 'stop'); + + const { unmount } = render( + + + + ); + + unmount(); + + expect(stopSpy).toHaveBeenCalled(); + }); + + it('handles status sequence: start -> stop -> start', () => { + const { getByLabelText } = render( + + + + ); + + fireEvent.click(getByLabelText('start')); + expect(getByLabelText('status')).toHaveTextContent('connected'); + + fireEvent.click(getByLabelText('stop')); + expect(getByLabelText('status')).toHaveTextContent('idle'); + + fireEvent.click(getByLabelText('start')); + expect(getByLabelText('status')).toHaveTextContent('connected'); + }); +}); diff --git a/app/ui/src/components/stream/web-rtc-connection-provider.tsx b/app/ui/src/components/stream/web-rtc-connection-provider.tsx new file mode 100644 index 0000000000..9f988a00b2 --- /dev/null +++ b/app/ui/src/components/stream/web-rtc-connection-provider.tsx @@ -0,0 +1,91 @@ +import { createContext, ReactNode, RefObject, useCallback, useContext, useEffect, useRef, useState } from 'react'; + +import { WebRTCConnection, WebRTCConnectionStatus } from './web-rtc-connection'; + +export type WebRTCConnectionState = null | { + status: WebRTCConnectionStatus; + start: () => Promise; + stop: () => Promise; + webRTCConnectionRef: RefObject; +}; + +export const WebRTCConnectionContext = createContext(null); + +const useWebRTCConnectionState = () => { + const webRTCConnectionRef = useRef(null); + const [status, setStatus] = useState('idle'); + + // Initialize WebRTCConnection on mount + useEffect(() => { + if (webRTCConnectionRef.current) { + return; + } + + const webRTCConnection = new WebRTCConnection(); + webRTCConnectionRef.current = webRTCConnection; + + const unsubscribe = webRTCConnection.subscribe((event) => { + if (event.type === 'status_change') { + setStatus(event.status); + } + + if (event.type === 'error') { + console.error('WebRTC Connection Error:', event.error); + // Optionally update status to 'failed' if not already + if (webRTCConnectionRef.current?.getStatus() !== 'failed') { + setStatus('failed'); + } + } + }); + + return () => { + unsubscribe(); + webRTCConnection.stop(); // Ensure connection is closed on unmount + webRTCConnectionRef.current = null; + }; + }, []); + + const start = useCallback(async () => { + if (!webRTCConnectionRef.current) { + return; + } + + try { + await webRTCConnectionRef.current.start(); + } catch (error) { + console.error('Failed to start WebRTC connection:', error); + setStatus('failed'); + } + }, []); + + const stop = useCallback(async () => { + if (!webRTCConnectionRef.current) { + return; + } + + await webRTCConnectionRef.current.stop(); + }, []); + + return { + start, + stop, + status, + webRTCConnectionRef, + }; +}; + +export const WebRTCConnectionProvider = ({ children }: { children: ReactNode }) => { + const value = useWebRTCConnectionState(); + + return {children}; +}; + +export const useWebRTCConnection = () => { + const context = useContext(WebRTCConnectionContext); + + if (context === null) { + throw new Error('useWebRTCConnection was used outside of WebRTCConnectionProvider'); + } + + return context; +}; diff --git a/app/ui/src/components/stream/web-rtc-connection.ts b/app/ui/src/components/stream/web-rtc-connection.ts new file mode 100644 index 0000000000..fad348b1c1 --- /dev/null +++ b/app/ui/src/components/stream/web-rtc-connection.ts @@ -0,0 +1,257 @@ +import { fetchClient } from '../../api/client'; + +export type WebRTCConnectionStatus = 'idle' | 'connecting' | 'connected' | 'disconnected' | 'failed'; + +type WebRTCConnectionEvent = + | { + type: 'status_change'; + status: WebRTCConnectionStatus; + } + | { + type: 'error'; + error: Error; + }; + +export type Listener = (event: WebRTCConnectionEvent) => void; + +type SessionData = + | RTCSessionDescriptionInit + | { + status: 'failed'; + meta: { error: 'concurrency_limit_reached'; limit: number }; + }; + +const CONNECTION_TIMEOUT = 5000; +const CLOSE_CONNECTION_DELAY = 500; + +export class WebRTCConnection { + private peerConnection: RTCPeerConnection | undefined; + private webrtcId: string; + private status: WebRTCConnectionStatus = 'idle'; + private dataChannel: RTCDataChannel | undefined; + + private listeners: Array = []; + private timeoutId?: ReturnType; + + constructor() { + // TODO: replace with uuid + this.webrtcId = Math.random().toString(36).substring(7); + } + + public getStatus(): WebRTCConnectionStatus { + return this.status; + } + + public getPeerConnection(): RTCPeerConnection | undefined { + return this.peerConnection; + } + + public getId(): string { + return this.webrtcId; + } + + public async start(): Promise { + if (this.hasActiveConnection()) { + console.warn('WebRTC connection is already active or in progress.'); + return; + } + + this.updateStatus('connecting'); + this.peerConnection = new RTCPeerConnection(); + this.timeoutId = setTimeout(() => { + console.warn('Connection is taking longer than usual. Are you on a VPN?'); + }, CONNECTION_TIMEOUT); + + try { + this.setupPeerConnection(); + + await this.createAndSetOffer(); + await this.waitForIceGathering(); + + const data = await this.sendOffer(); + + if (!this.handleOfferResponse(data)) return; + + await this.updateConfThreshold(0.5); // Initial confidence threshold + this.setupConnectionStateListener(); + } catch (err) { + clearTimeout(this.timeoutId); + console.error('Error setting up WebRTC:', err); + this.emit({ type: 'error', error: err as Error }); + this.updateStatus('failed'); + this.stop(); + } + + if (this.peerConnection) { + this.peerConnection.getTransceivers().forEach((t) => (t.direction = 'recvonly')); + } + } + + private setupPeerConnection() { + if (!this.peerConnection) return; + + this.peerConnection.addTransceiver('video', { direction: 'recvonly' }); + this.dataChannel = this.peerConnection.createDataChannel('text'); + this.dataChannel.onopen = () => { + this.dataChannel?.send('handshake'); + }; + } + + private async createAndSetOffer() { + if (!this.peerConnection) return; + + const offer = await this.peerConnection.createOffer(); + + await this.peerConnection.setLocalDescription(offer); + } + + private async waitForIceGathering(): Promise { + await new Promise((resolve) => { + if (!this.peerConnection || this.peerConnection.iceGatheringState === 'complete') { + resolve(); + return; + } + + const checkState = () => { + if (this.peerConnection && this.peerConnection.iceGatheringState === 'complete') { + this.peerConnection.removeEventListener('icegatheringstatechange', checkState); + resolve(); + } + }; + + this.peerConnection?.addEventListener('icegatheringstatechange', checkState); + }); + } + + private async sendOffer(): Promise { + if (!this.peerConnection) return; + + const { data } = await fetchClient.POST('/api/webrtc/offer', { + body: { + sdp: this.peerConnection.localDescription?.sdp, + type: this.peerConnection.localDescription?.type ?? '', + webrtc_id: this.webrtcId, + }, + }); + + return data as SessionData; + } + + private async handleOfferResponse(data: SessionData | undefined): Promise { + if (!data) return false; + + if ('status' in data && data.status === 'failed') { + const errorMessage = + data.meta.error === 'concurrency_limit_reached' + ? `Too many connections. Maximum limit is ${data.meta.limit}` + : data.meta.error; + + console.error(errorMessage); + + this.emit({ type: 'error', error: new Error(errorMessage) }); + + return false; + } + + if (this.peerConnection) { + await this.peerConnection.setRemoteDescription(data as RTCSessionDescriptionInit); + } + + return true; + } + + private setupConnectionStateListener() { + if (!this.peerConnection) return; + + this.peerConnection.addEventListener('connectionstatechange', () => { + if (!this.peerConnection) return; + + switch (this.peerConnection.connectionState) { + case 'connected': + this.updateStatus('connected'); + clearTimeout(this.timeoutId); + break; + case 'disconnected': + this.updateStatus('disconnected'); + break; + case 'failed': + this.updateStatus('failed'); + this.emit({ type: 'error', error: new Error('WebRTC connection failed.') }); + break; + case 'closed': + this.updateStatus('disconnected'); + break; + default: + this.updateStatus('connecting'); + break; + } + }); + } + + public async stop(): Promise { + if (!this.peerConnection) { + return; + } + + const transceivers = this.peerConnection.getTransceivers(); + + transceivers.forEach((transceiver) => { + if (transceiver.stop) { + transceiver.stop(); + } + }); + + const senders = this.peerConnection.getSenders(); + + senders.forEach((sender) => { + if (sender.track && sender.track.stop) sender.track.stop(); + }); + + // Give a brief moment for tracks to stop before closing the connection + await new Promise((resolve) => + setTimeout(() => { + if (this.peerConnection) { + this.peerConnection.close(); + this.peerConnection = undefined; + this.updateStatus('idle'); + } + + resolve(); + }, CLOSE_CONNECTION_DELAY) + ); + } + + public subscribe(listener: Listener): () => void { + this.listeners.push(listener); + + return () => this.unsubscribe(listener); + } + + private hasActiveConnection(): boolean { + return this.peerConnection !== undefined && this.status !== 'idle' && this.status !== 'disconnected'; + } + + private unsubscribe(listener: Listener) { + this.listeners = this.listeners.filter((currentListener) => currentListener !== listener); + } + + private emit(event: WebRTCConnectionEvent) { + this.listeners.forEach((listener) => listener(event)); + } + + private updateStatus(newStatus: WebRTCConnectionStatus) { + if (this.status !== newStatus) { + this.status = newStatus; + this.emit({ type: 'status_change', status: newStatus }); + } + } + + private updateConfThreshold(value: number) { + return fetchClient.POST('/api/input_hook', { + body: { + conf_threshold: value, + webrtc_id: this.webrtcId, + }, + }); + } +} diff --git a/app/ui/src/components/zoom/use-container-size.ts b/app/ui/src/components/zoom/use-container-size.ts new file mode 100644 index 0000000000..e7dbe2391a --- /dev/null +++ b/app/ui/src/components/zoom/use-container-size.ts @@ -0,0 +1,27 @@ +import { RefObject, useState } from 'react'; + +import { useResizeObserver } from '@react-aria/utils'; + +export const useContainerSize = (ref: RefObject) => { + const [size, setSize] = useState({ width: 100, height: 100 }); + useResizeObserver({ + ref, + box: 'border-box', + onResize: () => { + if (!ref.current) { + return; + } + + if (size.width === ref.current.clientWidth && size.height === ref.current.clientHeight) { + return; + } + + setSize({ + width: ref.current.clientWidth, + height: ref.current.clientHeight, + }); + }, + }); + + return size; +}; diff --git a/app/ui/src/components/zoom/zoom-transform.tsx b/app/ui/src/components/zoom/zoom-transform.tsx new file mode 100755 index 0000000000..80807ff057 --- /dev/null +++ b/app/ui/src/components/zoom/zoom-transform.tsx @@ -0,0 +1,77 @@ +import { ReactNode, useEffect, useMemo, useRef } from 'react'; + +import { useContainerSize } from './use-container-size'; +import { useSetZoom, useZoom } from './zoom'; + +import classes from './zoom.module.scss'; + +type Size = { width: number; height: number }; + +const DEFAULT_SCREEN_ZOOM = 0.9; +const getCenterCoordinates = (container: Size, target: Size) => { + // Scale image so that it fits perfectly in the container + const scale = DEFAULT_SCREEN_ZOOM * Math.min(container.width / target.width, container.height / target.height); + + return { + scale, + // Center image + translate: { + x: container.width / 2 - target.width / 2, + y: container.height / 2 - target.height / 2, + }, + }; +}; + +const INITIAL_ZOOM = { scale: 1.0, translate: { x: 0, y: 0 } }; +const SyncZoom = ({ container, target }: { container: Size; target: Size }) => { + const setZoom = useSetZoom(); + + const targetZoom = useMemo(() => { + if (container.width === undefined || container.height === undefined) { + return INITIAL_ZOOM; + } + + return getCenterCoordinates({ width: container.width, height: container.height }, target); + }, [container, target]); + + useEffect(() => { + setZoom({ + scale: Number(targetZoom.scale.toFixed(3)), + translate: { + x: Number(targetZoom.translate.x.toFixed(3)), + y: Number(targetZoom.translate.y.toFixed(3)), + }, + }); + }, [targetZoom.scale, targetZoom.translate.x, targetZoom.translate.y, setZoom]); + + return null; +}; + +export const ZoomTransform = ({ children, target }: { children: ReactNode; target: Size }) => { + const zoom = useZoom(); + const ref = useRef(null); + const containerSize = useContainerSize(ref); + + return ( +
+
+ + {children} +
+
+ ); +}; diff --git a/app/ui/src/components/zoom/zoom.module.scss b/app/ui/src/components/zoom/zoom.module.scss new file mode 100644 index 0000000000..ba21b920d7 --- /dev/null +++ b/app/ui/src/components/zoom/zoom.module.scss @@ -0,0 +1,17 @@ +.wrapper { + overflow: hidden; + position: relative; + padding: 0; + margin: 0; + width: 100%; + height: 100%; + user-select: none; +} + +.wrapperInternal { + display: flex; + flex-wrap: wrap; + width: fit-content; + height: fit-content; + transform-origin: center; +} diff --git a/app/ui/src/components/zoom/zoom.test.tsx b/app/ui/src/components/zoom/zoom.test.tsx new file mode 100644 index 0000000000..ebf96a256a --- /dev/null +++ b/app/ui/src/components/zoom/zoom.test.tsx @@ -0,0 +1,32 @@ +import { render, screen } from '@testing-library/react'; +import { vi } from 'vitest'; + +import { useContainerSize } from './use-container-size'; +import { ZoomProvider } from './zoom'; +import { ZoomTransform } from './zoom-transform'; + +vi.mock('./use-container-size', () => ({ + useContainerSize: vi.fn(), +})); + +describe('Zoom', () => { + it('Scales and translates content so that it fits the screen', () => { + const screenSize = { width: 100, height: 500 }; + const contentSize = { width: 300, height: 200 }; + const expectedZoom = { translate: { x: -100, y: 150 }, scale: 0.3 }; + + vi.mocked(useContainerSize).mockImplementation(() => screenSize); + + render( + + Content + + ); + + const transform = screen.getByTestId('zoom-transform'); + + expect(transform).toHaveStyle({ + transform: `translate(${expectedZoom.translate.x}px, ${expectedZoom.translate.y}px) scale(${expectedZoom.scale})`, + }); + }); +}); diff --git a/app/ui/src/components/zoom/zoom.tsx b/app/ui/src/components/zoom/zoom.tsx new file mode 100755 index 0000000000..3f40c8ee06 --- /dev/null +++ b/app/ui/src/components/zoom/zoom.tsx @@ -0,0 +1,38 @@ +import { createContext, Dispatch, ReactNode, SetStateAction, useContext, useState } from 'react'; + +type ZoomState = { scale: number; translate: { x: number; y: number } }; +export const Zoom = createContext({ + scale: 1.0, + translate: { x: 0, y: 0 }, +}); +const SetZoom = createContext> | null>(null); + +export const useZoom = () => { + return useContext(Zoom); +}; + +export const useSetZoom = () => { + const context = useContext(SetZoom); + + if (!context) { + throw new Error(''); + } + + return context; +}; + +export const ZoomProvider = ({ children }: { children: ReactNode }) => { + // TODO: + // 1. Add scale restrictions - min max + // 2. Add translate restrictions - min max + const [zoom, setZoom] = useState({ + scale: 1.0, + translate: { x: 0, y: 0 }, + }); + + return ( + + {children} + + ); +}; diff --git a/app/ui/src/env.d.ts b/app/ui/src/env.d.ts new file mode 100644 index 0000000000..4dce89b93b --- /dev/null +++ b/app/ui/src/env.d.ts @@ -0,0 +1,7 @@ +/// + +// We need these two to be able to import/export svgs as ReactComponent, +// for instance: export { ReactComponent as Logo } from './logo.svg'; +declare module '*.svg' { + export const ReactComponent: React.FunctionComponent>; +} diff --git a/app/ui/src/features/inference/aside.tsx b/app/ui/src/features/inference/aside.tsx new file mode 100644 index 0000000000..a60c2c7279 --- /dev/null +++ b/app/ui/src/features/inference/aside.tsx @@ -0,0 +1,55 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { useState } from 'react'; + +import { ActionButton, Flex, Grid, Heading, View } from '@geti/ui'; + +import { ReactComponent as DoubleChevronRight } from './../../assets/icons/double-chevron-right-icon.svg'; +import { SourceForm } from './source/source-form'; + +export const Aside = () => { + const [isHidden, setIsHidden] = useState(false); + + return ( + + + setIsHidden((hidden) => !hidden)} + UNSAFE_style={{ + transform: isHidden ? 'scaleX(-1)' : 'scaleX(1)', + cursor: 'pointer', + }} + > + + + + Input source + + + + + + + ); +}; diff --git a/app/ui/src/features/inference/inference.module.scss b/app/ui/src/features/inference/inference.module.scss new file mode 100644 index 0000000000..234db931b5 --- /dev/null +++ b/app/ui/src/features/inference/inference.module.scss @@ -0,0 +1,22 @@ +.canvasContainer { + display: grid; + grid-template-areas: 'innercanvas'; + overflow: hidden; + justify-items: center; + align-items: center; + width: 100%; + height: 100%; +} + +.canvasItem { + grid-area: innercanvas; +} + +.playButton { + display: flex; + gap: var(--spectrum-global-dimension-size-400); + align-items: center; + padding: var(--spectrum-global-dimension-size-1200); + position: relative; + border-radius: var(--spectrum-alias-border-radius-medium); +} diff --git a/app/ui/src/features/inference/source/source-form.tsx b/app/ui/src/features/inference/source/source-form.tsx new file mode 100644 index 0000000000..c86c70bddc --- /dev/null +++ b/app/ui/src/features/inference/source/source-form.tsx @@ -0,0 +1,295 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { useState } from 'react'; + +import { Button, ButtonGroup, Divider, Flex, Loading, NumberField, Text, TextField } from '@geti/ui'; + +import { + SchemaDisconnectedSourceConfig, + SchemaImagesFolderSourceConfig, + SchemaIpCameraSourceConfig, + SchemaVideoFileSourceConfig, + SchemaWebcamSourceConfig, +} from '../../../api/openapi-spec'; +import { ReactComponent as CameraOff } from '../../../assets/icons/camera-off.svg'; +import { ReactComponent as Image } from '../../../assets/icons/images-folder.svg'; +import { ReactComponent as IpCamera } from '../../../assets/icons/ip-camera.svg'; +import { ReactComponent as Video } from '../../../assets/icons/video-file.svg'; +import { ReactComponent as Webcam } from '../../../assets/icons/webcam.svg'; +import { RadioDisclosure } from '../../../components/radio-disclosure-group/radio-disclosure-group'; +import { useWebRTCConnection } from '../../../components/stream/web-rtc-connection-provider'; +import { Stream } from '../stream/stream'; + +import classes from '../inference.module.scss'; + +type SourceConfig = + | SchemaDisconnectedSourceConfig + | SchemaImagesFolderSourceConfig + | SchemaIpCameraSourceConfig + | SchemaVideoFileSourceConfig + | SchemaWebcamSourceConfig; + +type SourceType = SourceConfig['source_type']; + +type ConfigByDestinationType = Extract; +type SourceFormRecord = { + [SourceTypeKey in SourceType]: ConfigByDestinationType; +}; + +const DEFAULT_SOURCE_FORMS: SourceFormRecord = { + disconnected: { + name: 'Disconnected', + source_type: 'disconnected', + }, + images_folder: { + name: 'Images folder', + source_type: 'images_folder', + images_folder_path: '', + ignore_existing_images: false, + }, + ip_camera: { + name: 'Ip camera', + source_type: 'ip_camera', + stream_url: '', + auth_required: false, + }, + video_file: { + name: 'Video file', + source_type: 'video_file', + video_path: '', + }, + webcam: { + name: 'Webcam', + source_type: 'webcam', + device_id: 0, + }, +}; + +export const ConnectionPreview = () => { + const [size, setSize] = useState({ height: 608, width: 892 }); + const { status } = useWebRTCConnection(); + + return ( + + {status === 'idle' && ( +
+ + + + Configure your input source + + +
+ )} + + {status === 'connecting' && ( +
+ + + +
+ )} + + {status === 'connected' && ( +
+ +
+ )} +
+ ); +}; + +const ConfigureDisconnectedSource = (_: { + source: SchemaDisconnectedSourceConfig; + setSource: (source: SchemaDisconnectedSourceConfig) => void; +}) => { + return null; +}; + +const ConfigureImagesFolderSource = ({ + source, + setSource, +}: { + source: SchemaImagesFolderSourceConfig; + setSource: (source: SchemaImagesFolderSourceConfig) => void; +}) => { + return ( + setSource({ ...source, images_folder_path })} + /> + ); +}; + +const ConfigureIpCameraSource = ({ + source, + setSource, +}: { + source: SchemaIpCameraSourceConfig; + setSource: (source: SchemaIpCameraSourceConfig) => void; +}) => { + return ( + setSource({ ...source, stream_url })} + /> + ); +}; + +const ConfigureVideoFileSource = ({ + source, + setSource, +}: { + source: SchemaVideoFileSourceConfig; + setSource: (source: SchemaVideoFileSourceConfig) => void; +}) => { + return ( + setSource({ ...source, video_path })} + /> + ); +}; + +const ConfigureWebcamSource = ({ + source, + setSource, +}: { + source: SchemaWebcamSourceConfig; + setSource: (source: SchemaWebcamSourceConfig) => void; +}) => { + return ( + setSource({ ...source, device_id })} + /> + ); +}; + +const ConfigureSource = ({ + source, + setSource, +}: { + source: SourceConfig; + setSource: (source: SourceConfig) => void; +}) => { + switch (source.source_type) { + case 'disconnected': + return ; + case 'images_folder': + return ; + case 'ip_camera': + return ; + case 'video_file': + return ; + case 'webcam': + return ; + } +}; + +const Label = ({ item }: { item: { name: string; source_type: SourceType } }) => { + return ( + + + {item.source_type === 'video_file' && + + {item.name} + + + ); +}; + +const DEFAULT_SOURCE_ITEMS = [ + { source_type: 'disconnected', name: 'Disconnected' }, + { source_type: 'webcam', name: 'Webcam' }, + { source_type: 'ip_camera', name: 'IP Camera' }, + { source_type: 'video_file', name: 'Video file' }, + { source_type: 'images_folder', name: 'Images folder' }, +] satisfies Array<{ source_type: SourceType; name: string }>; + +export const SourceForm = () => { + const [selectedSourceType, setSelectedSourceType] = useState(DEFAULT_SOURCE_ITEMS[0].source_type); + const [forms, setForms] = useState(() => { + return DEFAULT_SOURCE_FORMS; + }); + + const handleSaveSource = (sourceType: SourceType) => { + setSelectedSourceType(sourceType); + }; + + const handleSubmit = () => {}; + + return ( + + { + return { + value: item.source_type, + label: + ); +}; diff --git a/app/ui/src/features/inference/source/source-modal.tsx b/app/ui/src/features/inference/source/source-modal.tsx new file mode 100644 index 0000000000..341bd1f4f1 --- /dev/null +++ b/app/ui/src/features/inference/source/source-modal.tsx @@ -0,0 +1,28 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { Button, Content, Dialog, DialogTrigger, Heading, Text } from '@geti/ui'; + +import { ReactComponent as Camera } from '../../../assets/icons/camera.svg'; +import { ConnectionPreview, SourceForm } from './source-form'; + +export const SourceModal = () => { + return ( + + + {(_close) => ( + + + + + + + + + )} + + ); +}; diff --git a/app/ui/src/features/inference/stream/stream-container.tsx b/app/ui/src/features/inference/stream/stream-container.tsx new file mode 100644 index 0000000000..596e6db617 --- /dev/null +++ b/app/ui/src/features/inference/stream/stream-container.tsx @@ -0,0 +1,55 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { useEffect, useState } from 'react'; + +import { Button, Flex, Loading, toast, View } from '@geti/ui'; +import { Play } from '@geti/ui/icons'; + +import { useWebRTCConnection } from '../../../components/stream/web-rtc-connection-provider'; +import { Stream } from './stream'; + +import classes from '../inference.module.scss'; + +export const StreamContainer = () => { + const [size, setSize] = useState({ height: 608, width: 892 }); + const { start, status } = useWebRTCConnection(); + + useEffect(() => { + if (status === 'failed') { + toast({ type: 'error', message: 'Failed to connect to the stream' }); + } + }, [status]); + + return ( + + {status === 'idle' && ( +
+ + + + + +
+ )} + + {status === 'connecting' && ( +
+ + + + + +
+ )} + + {status === 'connected' && ( +
+ +
+ )} +
+ ); +}; diff --git a/app/ui/src/features/inference/stream/stream.tsx b/app/ui/src/features/inference/stream/stream.tsx new file mode 100644 index 0000000000..6a20ce8bda --- /dev/null +++ b/app/ui/src/features/inference/stream/stream.tsx @@ -0,0 +1,118 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { Dispatch, RefObject, SetStateAction, useCallback, useEffect, useRef } from 'react'; + +import { useWebRTCConnection } from '../../../components/stream/web-rtc-connection-provider'; +import { ZoomTransform } from '../../../components/zoom/zoom-transform'; + +const useSetTargetSizeBasedOnVideo = ( + setSize: Dispatch>, + videoRef: RefObject +) => { + useEffect(() => { + const video = videoRef.current; + if (!video) return; + + const onLoaded = () => { + if (video.videoWidth && video.videoHeight) { + setSize({ width: video.videoWidth, height: video.videoHeight }); + } + }; + + const resizeObserver = new ResizeObserver(() => { + if (video.videoWidth && video.videoHeight) { + setSize({ width: video.videoWidth, height: video.videoHeight }); + } + }); + + video.addEventListener('loadedmetadata', onLoaded); + resizeObserver.observe(video); + + return () => { + video.removeEventListener('loadedmetadata', onLoaded); + resizeObserver.disconnect(); + }; + }, [setSize, videoRef]); +}; + +const useStreamToVideo = () => { + const videoRef = useRef(null); + + const { status, webRTCConnectionRef } = useWebRTCConnection(); + + const connect = useCallback(async () => { + const videoOutput = videoRef.current; + const webrtcConnection = webRTCConnectionRef.current; + const peerConnection = webrtcConnection?.getPeerConnection(); + + if (!peerConnection) { + return; + } + + const receivers = peerConnection.getReceivers() ?? []; + const stream = new MediaStream(receivers.map((receiver) => receiver.track).filter(Boolean)); + + if (videoOutput && videoOutput.srcObject !== stream) { + videoOutput.srcObject = stream; + } + }, [videoRef, webRTCConnectionRef]); + + useEffect(() => { + if (status === 'connected') { + connect(); + } + }, [status, connect]); + + useEffect(() => { + const webrtcConnection = webRTCConnectionRef.current; + const peerConnection = webrtcConnection?.getPeerConnection(); + + if (!peerConnection) { + return; + } + + peerConnection.addEventListener('track', connect); + + return () => { + peerConnection.removeEventListener('track', connect); + }; + }, [webRTCConnectionRef, connect]); + + return videoRef; +}; + +export const Stream = ({ + size, + setSize, +}: { + size: { width: number; height: number }; + setSize: Dispatch>; +}) => { + const videoRef = useStreamToVideo(); + + useSetTargetSizeBasedOnVideo(setSize, videoRef); + + const { status } = useWebRTCConnection(); + + return ( + +
+ {status === 'connected' && ( + // eslint-disable-next-line jsx-a11y/media-has-caption +
+
+ ); +}; diff --git a/app/ui/src/features/inference/toolbar.tsx b/app/ui/src/features/inference/toolbar.tsx new file mode 100644 index 0000000000..73b095a879 --- /dev/null +++ b/app/ui/src/features/inference/toolbar.tsx @@ -0,0 +1,88 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { StatusLight } from '@adobe/react-spectrum'; +import { Button, Divider, Flex, View } from '@geti/ui'; + +import { useWebRTCConnection } from '../../components/stream/web-rtc-connection-provider'; +import { SourceModal } from './source/source-modal'; + +const WebRTCConnectionStatus = () => { + const { status, stop } = useWebRTCConnection(); + + switch (status) { + case 'idle': + return ( + + + Idle + + + ); + case 'connecting': + return ( + + + Connecting + + + ); + case 'disconnected': + return ( + + + Disconnected + + + ); + case 'failed': + return ( + + + Failed + + + ); + case 'connected': + return ( + + + Connected + + + + ); + } +}; + +export const Toolbar = () => { + return ( + + + + + + + + + + + + ); +}; diff --git a/app/ui/src/global.d.ts b/app/ui/src/global.d.ts new file mode 100644 index 0000000000..5b95bec32b --- /dev/null +++ b/app/ui/src/global.d.ts @@ -0,0 +1,17 @@ +/// + +import 'react'; + +import { type NavigateOptions } from 'react-router-dom'; + +declare module '@adobe/react-spectrum' { + interface RouterConfig { + routerOptions: NavigateOptions; + } +} + +declare module 'react' { + interface CSSProperties { + [key: `--${string}`]: string | number; + } +} diff --git a/app/ui/src/index.css b/app/ui/src/index.css new file mode 100644 index 0000000000..10200219f0 --- /dev/null +++ b/app/ui/src/index.css @@ -0,0 +1,72 @@ +:root { + --background: #313236; + --background-inverse: #3c3e42; + --coral: #ff5662; + --energy-blue-light: #7bdeff; + --energy-blue: rgb(0, 199, 253); + + --daisy-shade: rgb(237, 178, 0); /* #edb200 */ + --brand-daisy: #fec91b; + --brand-daisy-tint: #ffe17a; + --brand-rust: #e96115; + + --annotation-fill: var(--daisy-shade); + --annotation-stroke: var(--energy-blue-light, #7bdeff); + + --annotation-fill: var(--color-pink-300); + --annotation-stroke: var(--color-rose-500); + + --annotation-fill: #e9611580; + --annotation-stroke: #7bdeff; + + --moss-tint-1: #b1d272; + + --spectrum-button-primary-text-font-weight: 500; + --spectrum-accent-background-color-default: var(--energy-blue); + --spectrum-accent-background-color: var(--energy-blue); + --spectrum-accent-background-color-disabled: var(--spectrum-global-color-gray-200); + --spectrum-accent-border-color: var(--energy-blue); + --spectrum-button-text-color: var(--spectrum-global-color-gray-50) !important; + --spectrum-accent-background-color-key-focus: var(--energy-blue); + --spectrum-global-color-blue-300: rgb(20, 103, 200); + + --spectrum-accent-border-color-hover: var(--energy-blue-shade); + --spectrum-button-text-color-hover: var(--spectrum-global-color-gray-50); + --spectrum-accent-background-color-hover: var(--spectrum-global-color-blue-300); + --spectrum-global-color-blue-200: rgb(13, 90, 188); + + --spectrum-accent-border-color-down: var(--energy-blue-shade-darker); + --spectrum-button-text-color-down: var(--spectrum-global-color-gray-50); + --spectrum-accent-background-color-down: var(--spectrum-global-color-blue-200); + + --spectrum-button-text-background-color-down: var(--energy-blue-shade-darker); + --spectrum-button-text-border-color-down: var(--energy-blue-shade-darker); + + --spectrum-high-contrast-button-face: var(--spectrum-global-color-gray-50); + --spectrum-high-contrast-gray-text: var(--spectrum-global-color-gray-500); +} + +body, +html { + margin: 0; + padding: 0; + background-color: var(--background); +} + +h1, +h2, +h3, +h4 { + margin: 0; +} + +ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/app/ui/src/index.tsx b/app/ui/src/index.tsx new file mode 100644 index 0000000000..84f4611b61 --- /dev/null +++ b/app/ui/src/index.tsx @@ -0,0 +1,31 @@ +import React from 'react'; + +import ReactDOM from 'react-dom/client'; + +import { Providers } from './providers'; + +import './index.css'; + +async function enableMocking() { + if (process.env.NODE_ENV !== 'development') { + return; + } + + const { worker } = await import('./msw-browser-setup'); + + // `worker.start()` returns a Promise that resolves + // once the Service Worker is up and ready to intercept requests. + return worker.start(); +} + +enableMocking().then(() => { + const rootEl = document.getElementById('root'); + if (rootEl) { + const root = ReactDOM.createRoot(rootEl); + root.render( + + + + ); + } +}); diff --git a/app/ui/src/layout.tsx b/app/ui/src/layout.tsx new file mode 100644 index 0000000000..50ac9ee3c2 --- /dev/null +++ b/app/ui/src/layout.tsx @@ -0,0 +1,64 @@ +import { Flex, Grid, Item, TabList, TabPanels, Tabs, View } from '@geti/ui'; +import { Outlet, useLocation } from 'react-router'; + +import { ReactComponent as LiveFeedIcon } from './assets/icons/live-feed-icon.svg'; +import { paths } from './router'; + +const Header = () => { + return ( + + + + Geti Inspect + + + + + + + Inference + + + + + + ); +}; + +const getFirstPathSegment = (path: string): string => { + const segments = path.split('/'); + return segments.length > 1 ? `/${segments[1]}` : '/'; +}; + +export const Layout = () => { + const { pathname } = useLocation(); + + return ( + + +
+ + + + + + + + + + ); +}; diff --git a/app/ui/src/msw-browser-setup.ts b/app/ui/src/msw-browser-setup.ts new file mode 100644 index 0000000000..f5e5826494 --- /dev/null +++ b/app/ui/src/msw-browser-setup.ts @@ -0,0 +1,26 @@ +import { HttpResponse } from 'msw'; +import { setupWorker } from 'msw/browser'; + +import { handlers, http } from './api/utils'; + +export const worker = setupWorker( + ...handlers, + http.get('/health', () => { + return HttpResponse.json({ test: 'doei' }); + }), + http.get('/api/system/metrics/memory', () => { + return HttpResponse.json({}); + }), + http.get('/api/models', () => { + return HttpResponse.json([]); + }), + http.get('/api/sources', () => { + return HttpResponse.json([]); + }), + http.get('/api/sinks', () => { + return HttpResponse.json([]); + }), + http.get('/api/pipelines', () => { + return HttpResponse.json([]); + }) +); diff --git a/app/ui/src/msw-node-setup.ts b/app/ui/src/msw-node-setup.ts new file mode 100644 index 0000000000..804c4ff7ad --- /dev/null +++ b/app/ui/src/msw-node-setup.ts @@ -0,0 +1,6 @@ +import { setupServer } from 'msw/node'; + +import { handlers } from './api/utils'; + +// Initialize msw's mock server with the handlers +export const server = setupServer(...handlers); diff --git a/app/ui/src/providers.tsx b/app/ui/src/providers.tsx new file mode 100644 index 0000000000..c7a837a2df --- /dev/null +++ b/app/ui/src/providers.tsx @@ -0,0 +1,54 @@ +import { ReactNode } from 'react'; + +import { ThemeProvider } from '@geti/ui/theme'; +import { MutationCache, QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { MemoryRouterProps, RouterProvider } from 'react-router'; +import { MemoryRouter as Router } from 'react-router-dom'; + +import { WebRTCConnectionProvider } from './components/stream/web-rtc-connection-provider'; +import { ZoomProvider } from './components/zoom/zoom'; +import { router } from './router'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + gcTime: 30 * 60 * 1000, + staleTime: 5 * 60 * 1000, + networkMode: 'always', + }, + mutations: { + networkMode: 'always', + }, + }, + mutationCache: new MutationCache({ + onSuccess: () => { + queryClient.invalidateQueries(); + }, + }), +}); + +export const Providers = () => { + return ( + + + + + + + + + + ); +}; + +export const TestProviders = ({ children, routerProps }: { children: ReactNode; routerProps?: MemoryRouterProps }) => { + return ( + + + + {children} + + + + ); +}; diff --git a/app/ui/src/router.tsx b/app/ui/src/router.tsx new file mode 100644 index 0000000000..d752d87a70 --- /dev/null +++ b/app/ui/src/router.tsx @@ -0,0 +1,45 @@ +import { Suspense } from 'react'; + +import { Loading } from '@geti/ui'; +import { redirect } from 'react-router'; +import { createBrowserRouter } from 'react-router-dom'; +import { path } from 'static-path'; + +import { Layout } from './layout'; +import { Inference } from './routes/inference/inference'; + +const root = path('/'); +const inference = root.path('/inference'); + +export const paths = { + root, + inference: { + index: inference, + }, +}; + +export const router = createBrowserRouter([ + { + path: paths.root.pattern, + element: ( + }> + + + ), + errorElement:
Oh no
, + children: [ + { + index: true, + loader: () => { + // TODO: if no pipeline configured then redirect to source + // else redirect to live-feed + return redirect(paths.inference.index({})); + }, + }, + { + path: paths.inference.index.pattern, + element: , + }, + ], + }, +]); diff --git a/app/ui/src/routes/inference/inference.tsx b/app/ui/src/routes/inference/inference.tsx new file mode 100644 index 0000000000..465cd7c447 --- /dev/null +++ b/app/ui/src/routes/inference/inference.tsx @@ -0,0 +1,27 @@ +// Copyright (C) 2025 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +import { Grid } from '@geti/ui'; + +import { Aside } from '../../features/inference/aside'; +import { StreamContainer } from '../../features/inference/stream/stream-container'; +import { Toolbar } from '../../features/inference/toolbar'; + +export const Inference = () => { + return ( + + + +