From f16fff577a31d3836ace5c9bbeb5d6ac4a84bd61 Mon Sep 17 00:00:00 2001 From: "Gina A." <70909035+gndz07@users.noreply.github.com> Date: Wed, 28 May 2025 11:26:04 +0200 Subject: [PATCH] Migrate Traefik Proxy dashboard UI to React --- .github/workflows/template-webui.yaml | 3 + .github/workflows/test-conformance.yaml | 4 +- .github/workflows/test-integration.yaml | 8 +- .github/workflows/test-unit.yaml | 15 +- .github/workflows/validate.yaml | 9 +- Makefile | 8 +- docs/content/assets/img/webui-dashboard.png | Bin 127729 -> 246976 bytes webui/.dockerignore | 5 - webui/.editorconfig | 15 +- webui/.env.sample | 2 + webui/.eslintignore | 7 - webui/.eslintrc.cjs | 68 - webui/.gitignore | 81 +- webui/.nvmrc | 2 +- webui/.postcssrc.cjs | 8 - webui/.prettierrc.json | 6 + webui/.stylintrc | 35 - webui/.yarnrc.yml | 1 + webui/Dockerfile | 17 - webui/babel.config.cjs | 16 - webui/buildx.Dockerfile | 18 + webui/dev/scripts/transfer.js | 17 - webui/eslint.config.mjs | 57 + webui/index.dev.html | 25 + webui/index.html | 39 +- webui/jsconfig.json | 39 - webui/package.json | 139 +- webui/postcss.config.cjs | 27 - webui/public/app-logo-128x128.png | Bin 18503 -> 0 bytes webui/public/browserconfig.xml | 9 + webui/public/favicon-16x16.png | Bin 0 -> 664 bytes webui/public/favicon-32x32.png | Bin 0 -> 1514 bytes webui/public/favicon.ico | Bin 0 -> 15406 bytes webui/public/manifest.json | 25 + webui/public/mockServiceWorker.js | 307 + webui/public/providers/consul.svg | 6 - webui/public/providers/consulcatalog.svg | 10 - webui/public/providers/docker.svg | 6 - webui/public/providers/ecs.svg | 36 - webui/public/providers/etcd.svg | 6 - webui/public/providers/file.svg | 6 - webui/public/providers/http.svg | 11 - webui/public/providers/hub.svg | 10 - webui/public/providers/internal.svg | 4 - webui/public/providers/kubernetes.svg | 6 - webui/public/providers/kubernetescrd.svg | 6 - webui/public/providers/kubernetesgateway.svg | 6 - webui/public/providers/kubernetesingress.svg | 6 - webui/public/providers/marathon.svg | 19 - webui/public/providers/nomad.svg | 7 - webui/public/providers/plugin.svg | 10 - webui/public/providers/rancher.svg | 6 - webui/public/providers/redis.svg | 17 - webui/public/providers/rest.svg | 6 - webui/public/providers/swarm.svg | 6 - webui/public/providers/zookeeper.svg | 128 - webui/public/robots.txt | 2 + .../traefiklabs-hub-button-app/main-v1.js | 2 +- .../traefiklabs-hub-button-app/main-v1.js.map | 2 +- webui/quasar.conf.js | 263 - webui/quasar.extensions.json | 5 - webui/readme.md | 28 +- webui/src-pwa/custom-service-worker.js | 5 - webui/src-pwa/pwa-flag.d.ts | 10 - webui/src-pwa/register-service-worker.js | 42 - webui/src/App.spec.tsx | 10 + webui/src/App.tsx | 113 + webui/src/App.vue | 44 - webui/src/_helpers/APP.js | 8 - webui/src/_helpers/Errors.js | 41 - webui/src/_helpers/Helps.js | 132 - webui/src/_helpers/Mutations.js | 45 - webui/src/_middleware/Boot.js | 44 - webui/src/_mixins/GetTableProps.js | 175 - webui/src/_mixins/Pagination.js | 74 - webui/src/_services/CoreService.js | 24 - webui/src/_services/EntrypointsService.js | 24 - webui/src/_services/HttpService.js | 67 - webui/src/_services/TcpService.js | 67 - webui/src/_services/UdpService.js | 47 - webui/src/_services/utils.js | 8 - webui/src/assets/logo.svg | 6 - webui/src/assets/middlewares-empty-dark.svg | 7 - webui/src/assets/middlewares-empty.svg | 7 - webui/src/assets/traefik.avatar.svg | 90 - webui/src/boot/api.js | 16 - webui/src/components/ClickableRow.tsx | 28 + webui/src/components/ScrollTopButton.tsx | 29 + webui/src/components/SpinnerLoader.tsx | 18 + webui/src/components/TableFilter.tsx | 116 + webui/src/components/ThemeSwitcher.tsx | 29 + webui/src/components/Toast.tsx | 102 + webui/src/components/ToastPool.spec.tsx | 79 + webui/src/components/ToastPool.tsx | 37 + webui/src/components/Tooltip.tsx | 47 + webui/src/components/TooltipText.tsx | 28 + webui/src/components/_commons/AvatarState.vue | 43 - .../src/components/_commons/BooleanState.vue | 71 - .../src/components/_commons/ChartDoughnut.vue | 34 - webui/src/components/_commons/Chips.vue | 22 - webui/src/components/_commons/MainTable.vue | 216 - webui/src/components/_commons/NavBar.vue | 316 - webui/src/components/_commons/PageDefault.vue | 15 - .../components/_commons/PanelHealthCheck.vue | 192 - .../components/_commons/PanelMiddlewares.vue | 1784 -- .../_commons/PanelMirroringServices.vue | 178 - .../_commons/PanelRouterDetails.vue | 274 - .../src/components/_commons/PanelServers.vue | 200 - .../_commons/PanelServiceDetails.vue | 279 - webui/src/components/_commons/PanelTLS.vue | 189 - .../_commons/PanelWeightedServices.vue | 165 - .../src/components/_commons/ProviderIcon.vue | 46 - webui/src/components/_commons/SidePanel.vue | 79 - webui/src/components/_commons/SkeletonBox.vue | 90 - .../_commons/StickyServiceDetails.vue | 85 - webui/src/components/_commons/TLSState.vue | 33 - webui/src/components/_commons/ToolBar.vue | 159 - .../src/components/_commons/ToolBarTable.vue | 126 - webui/src/components/buttons/IconButton.tsx | 33 + webui/src/components/buttons/SortButton.tsx | 49 + webui/src/components/dashboard/PanelChart.vue | 257 - webui/src/components/dashboard/PanelEntry.vue | 73 - .../src/components/dashboard/PanelFeature.vue | 108 - .../components/dashboard/PanelProvider.vue | 75 - webui/src/components/icons/AutoThemeIcon.tsx | 17 + webui/src/components/icons/EmptyIcon.tsx | 26 + webui/src/components/icons/Logo.tsx | 78 + webui/src/components/icons/PluginsIcon.tsx | 14 + webui/src/components/icons/SortIcon.tsx | 75 + webui/src/components/icons/index.tsx | 13 + .../src/components/icons/providers/Consul.tsx | 19 + .../src/components/icons/providers/Docker.tsx | 27 + webui/src/components/icons/providers/ECS.tsx | 27 + webui/src/components/icons/providers/Etcd.tsx | 19 + webui/src/components/icons/providers/File.tsx | 27 + webui/src/components/icons/providers/Http.tsx | 19 + webui/src/components/icons/providers/Hub.tsx | 19 + .../components/icons/providers/Internal.tsx | 19 + .../components/icons/providers/Kubernetes.tsx | 19 + .../src/components/icons/providers/Nomad.tsx | 19 + .../src/components/icons/providers/Plugin.tsx | 19 + .../src/components/icons/providers/Redis.tsx | 19 + .../components/icons/providers/Zookeeper.tsx | 19 + .../src/components/icons/providers/index.tsx | 74 + .../resources/AdditionalFeatures.spec.tsx | 53 + .../resources/AdditionalFeatures.tsx | 73 + .../components/resources/DetailSections.tsx | 352 + .../src/components/resources/FeatureCard.tsx | 45 + .../src/components/resources/GenericTable.tsx | 45 + .../components/resources/IpStrategyTable.tsx | 45 + .../components/resources/MiddlewarePanel.tsx | 113 + .../src/components/resources/ProviderIcon.tsx | 74 + .../resources/RenderUnknownProp.spec.tsx | 162 + .../resources/RenderUnknownProp.tsx | 76 + .../src/components/resources/ResourceCard.tsx | 26 + .../components/resources/ResourceStatus.tsx | 71 + .../src/components/resources/RouterPanel.tsx | 76 + webui/src/components/resources/Status.tsx | 68 + webui/src/components/resources/TlsPanel.tsx | 77 + .../TraefikResourceStatsCard.spec.tsx | 53 + .../resources/TraefikResourceStatsCard.tsx | 216 + .../resources/UsedByRoutersSection.tsx | 146 + webui/src/components/tables/SortableTh.tsx | 56 + webui/src/contexts/toasts.tsx | 40 + webui/src/css/fonts/nunito-v11-latin-600.eot | Bin 23216 -> 0 bytes webui/src/css/fonts/nunito-v11-latin-600.svg | 438 - webui/src/css/fonts/nunito-v11-latin-600.ttf | Bin 48128 -> 0 bytes webui/src/css/fonts/nunito-v11-latin-600.woff | Bin 24668 -> 0 bytes .../src/css/fonts/nunito-v11-latin-600.woff2 | Bin 20084 -> 0 bytes webui/src/css/fonts/nunito-v11-latin-700.eot | Bin 23311 -> 0 bytes webui/src/css/fonts/nunito-v11-latin-700.svg | 439 - webui/src/css/fonts/nunito-v11-latin-700.ttf | Bin 47456 -> 0 bytes webui/src/css/fonts/nunito-v11-latin-700.woff | Bin 24656 -> 0 bytes .../src/css/fonts/nunito-v11-latin-700.woff2 | Bin 20128 -> 0 bytes .../css/fonts/nunito-v11-latin-regular.eot | Bin 23037 -> 0 bytes .../css/fonts/nunito-v11-latin-regular.svg | 437 - .../css/fonts/nunito-v11-latin-regular.ttf | Bin 47680 -> 0 bytes .../css/fonts/nunito-v11-latin-regular.woff | Bin 24528 -> 0 bytes .../css/fonts/nunito-v11-latin-regular.woff2 | Bin 19976 -> 0 bytes webui/src/css/quasar.variables.scss | 22 - webui/src/css/sass/_fonts.scss | 39 - webui/src/css/sass/_mixins.scss | 31 - webui/src/css/sass/_variables.scss | 31 - webui/src/css/sass/app.scss | 212 - .../hooks/use-fetch-with-pagination.spec.tsx | 195 + webui/src/hooks/use-fetch-with-pagination.tsx | 89 + webui/src/hooks/use-overview-totals.tsx | 36 + webui/src/hooks/use-previous.tsx | 13 + webui/src/hooks/use-resource-detail.spec.tsx | 60 + webui/src/hooks/use-resource-detail.tsx | 180 + webui/src/hooks/use-theme.ts | 49 + webui/src/hooks/use-version.tsx | 13 + webui/src/index.tsx | 21 + webui/src/layout/Container.tsx | 13 + webui/src/layout/EmptyPlaceholder.tsx | 9 + webui/src/layout/ErrorFallback.tsx | 20 + webui/src/layout/ErrorSuspenseWrapper.tsx | 26 + webui/src/layout/Navigation.spec.tsx | 21 + webui/src/layout/Navigation.tsx | 357 + webui/src/layout/Page.spec.tsx | 10 + webui/src/layout/Page.tsx | 70 + webui/src/layouts/Default.vue | 30 - webui/src/libs/fetch.ts | 24 + webui/src/libs/fetchMany.ts | 16 + webui/src/libs/objectHandlers.ts | 8 + webui/src/libs/parsers.ts | 14 + webui/src/libs/utils.ts | 8 + webui/src/mocks/browser.ts | 5 + webui/src/mocks/data/api-entrypoints.json | 144 + .../src/mocks/data/api-http_middlewares.json | 418 + webui/src/mocks/data/api-http_routers.json | 171 + webui/src/mocks/data/api-http_services.json | 245 + webui/src/mocks/data/api-overview.json | 73 + webui/src/mocks/data/api-tcp_middlewares.json | 32 + webui/src/mocks/data/api-tcp_routers.json | 18 + webui/src/mocks/data/api-tcp_services.json | 19 + webui/src/mocks/data/api-udp_routers.json | 15 + webui/src/mocks/data/api-udp_services.json | 52 + webui/src/mocks/data/api-version.json | 6 + webui/src/mocks/data/ee-api-errors.json | 23 + webui/src/mocks/handlers.ts | 32 + webui/src/mocks/server.ts | 5 + webui/src/mocks/utils.ts | 66 + webui/src/pages/NotFound.tsx | 24 + webui/src/pages/_commons/Error404.vue | 23 - webui/src/pages/_commons/MiddlewareDetail.vue | 239 - webui/src/pages/_commons/RouterDetail.vue | 428 - webui/src/pages/_commons/ServiceDetail.vue | 353 - webui/src/pages/dashboard/Dashboard.tsx | 234 + webui/src/pages/dashboard/Index.vue | 386 - webui/src/pages/http/HttpMiddleware.spec.tsx | 481 + webui/src/pages/http/HttpMiddleware.tsx | 73 + webui/src/pages/http/HttpMiddlewares.spec.tsx | 129 + webui/src/pages/http/HttpMiddlewares.tsx | 125 + webui/src/pages/http/HttpRouter.spec.tsx | 121 + webui/src/pages/http/HttpRouter.tsx | 152 + webui/src/pages/http/HttpRouters.spec.tsx | 109 + webui/src/pages/http/HttpRouters.tsx | 146 + webui/src/pages/http/HttpService.spec.tsx | 220 + webui/src/pages/http/HttpService.tsx | 314 + webui/src/pages/http/HttpServices.spec.tsx | 101 + webui/src/pages/http/HttpServices.tsx | 124 + webui/src/pages/http/Middlewares.vue | 109 - webui/src/pages/http/Routers.vue | 111 - webui/src/pages/http/Services.vue | 109 - webui/src/pages/http/index.ts | 6 + webui/src/pages/index.ts | 7 + webui/src/pages/tcp/Middlewares.vue | 109 - webui/src/pages/tcp/Routers.vue | 111 - webui/src/pages/tcp/Services.vue | 108 - webui/src/pages/tcp/TcpMiddleware.spec.tsx | 128 + webui/src/pages/tcp/TcpMiddleware.tsx | 73 + webui/src/pages/tcp/TcpMiddlewares.spec.tsx | 67 + webui/src/pages/tcp/TcpMiddlewares.tsx | 125 + webui/src/pages/tcp/TcpRouter.spec.tsx | 102 + webui/src/pages/tcp/TcpRouter.tsx | 82 + webui/src/pages/tcp/TcpRouters.spec.tsx | 85 + webui/src/pages/tcp/TcpRouters.tsx | 142 + webui/src/pages/tcp/TcpService.spec.tsx | 163 + webui/src/pages/tcp/TcpService.tsx | 66 + webui/src/pages/tcp/TcpServices.spec.tsx | 82 + webui/src/pages/tcp/TcpServices.tsx | 124 + webui/src/pages/tcp/index.ts | 6 + webui/src/pages/udp/Routers.vue | 111 - webui/src/pages/udp/Services.vue | 109 - webui/src/pages/udp/UdpRouter.spec.tsx | 80 + webui/src/pages/udp/UdpRouter.tsx | 79 + webui/src/pages/udp/UdpRouters.spec.tsx | 85 + webui/src/pages/udp/UdpRouters.tsx | 127 + webui/src/pages/udp/UdpService.spec.tsx | 163 + webui/src/pages/udp/UdpService.tsx | 66 + webui/src/pages/udp/UdpServices.spec.tsx | 82 + webui/src/pages/udp/UdpServices.tsx | 124 + webui/src/pages/udp/index.ts | 4 + webui/src/router/index.js | 18 - webui/src/router/routes.js | 262 - webui/src/routes.tsx | 94 + webui/src/store/core/actions.js | 25 - webui/src/store/core/getters.js | 13 - webui/src/store/core/index.js | 12 - webui/src/store/core/mutations.js | 26 - webui/src/store/core/state.js | 4 - webui/src/store/entrypoints/actions.js | 27 - webui/src/store/entrypoints/getters.js | 13 - webui/src/store/entrypoints/index.js | 12 - webui/src/store/entrypoints/mutations.js | 37 - webui/src/store/entrypoints/state.js | 4 - webui/src/store/http/actions.js | 79 - webui/src/store/http/getters.js | 41 - webui/src/store/http/index.js | 12 - webui/src/store/http/mutations.js | 158 - webui/src/store/http/mutations.vitest.spec.js | 292 - webui/src/store/http/state.js | 8 - webui/src/store/index.js | 33 - webui/src/store/platform/index.js | 49 - webui/src/store/store-flag.d.ts | 10 - webui/src/store/tcp/actions.js | 79 - webui/src/store/tcp/getters.js | 41 - webui/src/store/tcp/index.js | 12 - webui/src/store/tcp/mutations.js | 157 - webui/src/store/tcp/mutations.vitest.spec.js | 292 - webui/src/store/tcp/state.js | 8 - webui/src/store/udp/actions.js | 53 - webui/src/store/udp/getters.js | 27 - webui/src/store/udp/index.js | 12 - webui/src/store/udp/mutations.js | 105 - webui/src/store/udp/mutations.vitest.spec.js | 197 - webui/src/store/udp/state.js | 6 - webui/src/types/global.d.ts | 9 + webui/src/utils/breakpoints.ts | 9 + webui/src/utils/mocks.ts | 11 + webui/src/utils/position.ts | 37 + webui/src/utils/string.ts | 5 + webui/src/utils/test.tsx | 45 + webui/src/utils/wait.ts | 1 + webui/src/vite-env.d.ts | 1 + .../DONT-EDIT-FILES-IN-THIS-DIRECTORY.md | 1 - webui/test/setup.ts | 76 + webui/test/vitest/setup-file.js | 1 - webui/tsconfig.json | 34 + webui/tsconfig.node.json | 11 + webui/vite.config.ts | 28 + webui/vitest.config.mjs | 24 - webui/yarn.lock | 23500 +++++++++++----- 324 files changed, 28303 insertions(+), 19567 deletions(-) delete mode 100644 webui/.dockerignore create mode 100644 webui/.env.sample delete mode 100644 webui/.eslintignore delete mode 100644 webui/.eslintrc.cjs delete mode 100644 webui/.postcssrc.cjs create mode 100644 webui/.prettierrc.json delete mode 100644 webui/.stylintrc create mode 100644 webui/.yarnrc.yml delete mode 100644 webui/Dockerfile delete mode 100644 webui/babel.config.cjs create mode 100644 webui/buildx.Dockerfile delete mode 100644 webui/dev/scripts/transfer.js create mode 100644 webui/eslint.config.mjs create mode 100644 webui/index.dev.html delete mode 100644 webui/jsconfig.json delete mode 100644 webui/postcss.config.cjs delete mode 100755 webui/public/app-logo-128x128.png create mode 100644 webui/public/browserconfig.xml create mode 100644 webui/public/favicon-16x16.png create mode 100644 webui/public/favicon-32x32.png create mode 100644 webui/public/favicon.ico create mode 100644 webui/public/manifest.json create mode 100644 webui/public/mockServiceWorker.js delete mode 100644 webui/public/providers/consul.svg delete mode 100644 webui/public/providers/consulcatalog.svg delete mode 100644 webui/public/providers/docker.svg delete mode 100644 webui/public/providers/ecs.svg delete mode 100644 webui/public/providers/etcd.svg delete mode 100644 webui/public/providers/file.svg delete mode 100644 webui/public/providers/http.svg delete mode 100644 webui/public/providers/hub.svg delete mode 100644 webui/public/providers/internal.svg delete mode 100644 webui/public/providers/kubernetes.svg delete mode 100644 webui/public/providers/kubernetescrd.svg delete mode 100644 webui/public/providers/kubernetesgateway.svg delete mode 100644 webui/public/providers/kubernetesingress.svg delete mode 100644 webui/public/providers/marathon.svg delete mode 100755 webui/public/providers/nomad.svg delete mode 100644 webui/public/providers/plugin.svg delete mode 100644 webui/public/providers/rancher.svg delete mode 100644 webui/public/providers/redis.svg delete mode 100644 webui/public/providers/rest.svg delete mode 100644 webui/public/providers/swarm.svg delete mode 100644 webui/public/providers/zookeeper.svg create mode 100644 webui/public/robots.txt delete mode 100644 webui/quasar.conf.js delete mode 100644 webui/quasar.extensions.json delete mode 100644 webui/src-pwa/custom-service-worker.js delete mode 100644 webui/src-pwa/pwa-flag.d.ts delete mode 100644 webui/src-pwa/register-service-worker.js create mode 100644 webui/src/App.spec.tsx create mode 100644 webui/src/App.tsx delete mode 100644 webui/src/App.vue delete mode 100644 webui/src/_helpers/APP.js delete mode 100644 webui/src/_helpers/Errors.js delete mode 100644 webui/src/_helpers/Helps.js delete mode 100644 webui/src/_helpers/Mutations.js delete mode 100644 webui/src/_middleware/Boot.js delete mode 100644 webui/src/_mixins/GetTableProps.js delete mode 100644 webui/src/_mixins/Pagination.js delete mode 100644 webui/src/_services/CoreService.js delete mode 100644 webui/src/_services/EntrypointsService.js delete mode 100644 webui/src/_services/HttpService.js delete mode 100644 webui/src/_services/TcpService.js delete mode 100644 webui/src/_services/UdpService.js delete mode 100644 webui/src/_services/utils.js delete mode 100644 webui/src/assets/logo.svg delete mode 100644 webui/src/assets/middlewares-empty-dark.svg delete mode 100644 webui/src/assets/middlewares-empty.svg delete mode 100644 webui/src/assets/traefik.avatar.svg delete mode 100644 webui/src/boot/api.js create mode 100644 webui/src/components/ClickableRow.tsx create mode 100644 webui/src/components/ScrollTopButton.tsx create mode 100644 webui/src/components/SpinnerLoader.tsx create mode 100644 webui/src/components/TableFilter.tsx create mode 100644 webui/src/components/ThemeSwitcher.tsx create mode 100644 webui/src/components/Toast.tsx create mode 100644 webui/src/components/ToastPool.spec.tsx create mode 100644 webui/src/components/ToastPool.tsx create mode 100644 webui/src/components/Tooltip.tsx create mode 100644 webui/src/components/TooltipText.tsx delete mode 100644 webui/src/components/_commons/AvatarState.vue delete mode 100644 webui/src/components/_commons/BooleanState.vue delete mode 100644 webui/src/components/_commons/ChartDoughnut.vue delete mode 100644 webui/src/components/_commons/Chips.vue delete mode 100644 webui/src/components/_commons/MainTable.vue delete mode 100644 webui/src/components/_commons/NavBar.vue delete mode 100644 webui/src/components/_commons/PageDefault.vue delete mode 100644 webui/src/components/_commons/PanelHealthCheck.vue delete mode 100644 webui/src/components/_commons/PanelMiddlewares.vue delete mode 100644 webui/src/components/_commons/PanelMirroringServices.vue delete mode 100644 webui/src/components/_commons/PanelRouterDetails.vue delete mode 100644 webui/src/components/_commons/PanelServers.vue delete mode 100644 webui/src/components/_commons/PanelServiceDetails.vue delete mode 100644 webui/src/components/_commons/PanelTLS.vue delete mode 100644 webui/src/components/_commons/PanelWeightedServices.vue delete mode 100644 webui/src/components/_commons/ProviderIcon.vue delete mode 100644 webui/src/components/_commons/SidePanel.vue delete mode 100644 webui/src/components/_commons/SkeletonBox.vue delete mode 100644 webui/src/components/_commons/StickyServiceDetails.vue delete mode 100644 webui/src/components/_commons/TLSState.vue delete mode 100644 webui/src/components/_commons/ToolBar.vue delete mode 100644 webui/src/components/_commons/ToolBarTable.vue create mode 100644 webui/src/components/buttons/IconButton.tsx create mode 100644 webui/src/components/buttons/SortButton.tsx delete mode 100644 webui/src/components/dashboard/PanelChart.vue delete mode 100644 webui/src/components/dashboard/PanelEntry.vue delete mode 100644 webui/src/components/dashboard/PanelFeature.vue delete mode 100644 webui/src/components/dashboard/PanelProvider.vue create mode 100644 webui/src/components/icons/AutoThemeIcon.tsx create mode 100644 webui/src/components/icons/EmptyIcon.tsx create mode 100644 webui/src/components/icons/Logo.tsx create mode 100644 webui/src/components/icons/PluginsIcon.tsx create mode 100644 webui/src/components/icons/SortIcon.tsx create mode 100644 webui/src/components/icons/index.tsx create mode 100644 webui/src/components/icons/providers/Consul.tsx create mode 100644 webui/src/components/icons/providers/Docker.tsx create mode 100644 webui/src/components/icons/providers/ECS.tsx create mode 100644 webui/src/components/icons/providers/Etcd.tsx create mode 100644 webui/src/components/icons/providers/File.tsx create mode 100644 webui/src/components/icons/providers/Http.tsx create mode 100644 webui/src/components/icons/providers/Hub.tsx create mode 100644 webui/src/components/icons/providers/Internal.tsx create mode 100644 webui/src/components/icons/providers/Kubernetes.tsx create mode 100644 webui/src/components/icons/providers/Nomad.tsx create mode 100644 webui/src/components/icons/providers/Plugin.tsx create mode 100644 webui/src/components/icons/providers/Redis.tsx create mode 100644 webui/src/components/icons/providers/Zookeeper.tsx create mode 100644 webui/src/components/icons/providers/index.tsx create mode 100644 webui/src/components/resources/AdditionalFeatures.spec.tsx create mode 100644 webui/src/components/resources/AdditionalFeatures.tsx create mode 100644 webui/src/components/resources/DetailSections.tsx create mode 100644 webui/src/components/resources/FeatureCard.tsx create mode 100644 webui/src/components/resources/GenericTable.tsx create mode 100644 webui/src/components/resources/IpStrategyTable.tsx create mode 100644 webui/src/components/resources/MiddlewarePanel.tsx create mode 100644 webui/src/components/resources/ProviderIcon.tsx create mode 100644 webui/src/components/resources/RenderUnknownProp.spec.tsx create mode 100644 webui/src/components/resources/RenderUnknownProp.tsx create mode 100644 webui/src/components/resources/ResourceCard.tsx create mode 100644 webui/src/components/resources/ResourceStatus.tsx create mode 100644 webui/src/components/resources/RouterPanel.tsx create mode 100644 webui/src/components/resources/Status.tsx create mode 100644 webui/src/components/resources/TlsPanel.tsx create mode 100644 webui/src/components/resources/TraefikResourceStatsCard.spec.tsx create mode 100644 webui/src/components/resources/TraefikResourceStatsCard.tsx create mode 100644 webui/src/components/resources/UsedByRoutersSection.tsx create mode 100644 webui/src/components/tables/SortableTh.tsx create mode 100644 webui/src/contexts/toasts.tsx delete mode 100644 webui/src/css/fonts/nunito-v11-latin-600.eot delete mode 100644 webui/src/css/fonts/nunito-v11-latin-600.svg delete mode 100644 webui/src/css/fonts/nunito-v11-latin-600.ttf delete mode 100644 webui/src/css/fonts/nunito-v11-latin-600.woff delete mode 100644 webui/src/css/fonts/nunito-v11-latin-600.woff2 delete mode 100644 webui/src/css/fonts/nunito-v11-latin-700.eot delete mode 100644 webui/src/css/fonts/nunito-v11-latin-700.svg delete mode 100644 webui/src/css/fonts/nunito-v11-latin-700.ttf delete mode 100644 webui/src/css/fonts/nunito-v11-latin-700.woff delete mode 100644 webui/src/css/fonts/nunito-v11-latin-700.woff2 delete mode 100644 webui/src/css/fonts/nunito-v11-latin-regular.eot delete mode 100644 webui/src/css/fonts/nunito-v11-latin-regular.svg delete mode 100644 webui/src/css/fonts/nunito-v11-latin-regular.ttf delete mode 100644 webui/src/css/fonts/nunito-v11-latin-regular.woff delete mode 100644 webui/src/css/fonts/nunito-v11-latin-regular.woff2 delete mode 100644 webui/src/css/quasar.variables.scss delete mode 100644 webui/src/css/sass/_fonts.scss delete mode 100644 webui/src/css/sass/_mixins.scss delete mode 100644 webui/src/css/sass/_variables.scss delete mode 100644 webui/src/css/sass/app.scss create mode 100644 webui/src/hooks/use-fetch-with-pagination.spec.tsx create mode 100644 webui/src/hooks/use-fetch-with-pagination.tsx create mode 100644 webui/src/hooks/use-overview-totals.tsx create mode 100644 webui/src/hooks/use-previous.tsx create mode 100644 webui/src/hooks/use-resource-detail.spec.tsx create mode 100644 webui/src/hooks/use-resource-detail.tsx create mode 100644 webui/src/hooks/use-theme.ts create mode 100644 webui/src/hooks/use-version.tsx create mode 100644 webui/src/index.tsx create mode 100644 webui/src/layout/Container.tsx create mode 100644 webui/src/layout/EmptyPlaceholder.tsx create mode 100644 webui/src/layout/ErrorFallback.tsx create mode 100644 webui/src/layout/ErrorSuspenseWrapper.tsx create mode 100644 webui/src/layout/Navigation.spec.tsx create mode 100644 webui/src/layout/Navigation.tsx create mode 100644 webui/src/layout/Page.spec.tsx create mode 100644 webui/src/layout/Page.tsx delete mode 100644 webui/src/layouts/Default.vue create mode 100644 webui/src/libs/fetch.ts create mode 100644 webui/src/libs/fetchMany.ts create mode 100644 webui/src/libs/objectHandlers.ts create mode 100644 webui/src/libs/parsers.ts create mode 100644 webui/src/libs/utils.ts create mode 100644 webui/src/mocks/browser.ts create mode 100644 webui/src/mocks/data/api-entrypoints.json create mode 100644 webui/src/mocks/data/api-http_middlewares.json create mode 100644 webui/src/mocks/data/api-http_routers.json create mode 100644 webui/src/mocks/data/api-http_services.json create mode 100644 webui/src/mocks/data/api-overview.json create mode 100644 webui/src/mocks/data/api-tcp_middlewares.json create mode 100644 webui/src/mocks/data/api-tcp_routers.json create mode 100644 webui/src/mocks/data/api-tcp_services.json create mode 100644 webui/src/mocks/data/api-udp_routers.json create mode 100644 webui/src/mocks/data/api-udp_services.json create mode 100644 webui/src/mocks/data/api-version.json create mode 100644 webui/src/mocks/data/ee-api-errors.json create mode 100644 webui/src/mocks/handlers.ts create mode 100644 webui/src/mocks/server.ts create mode 100644 webui/src/mocks/utils.ts create mode 100644 webui/src/pages/NotFound.tsx delete mode 100644 webui/src/pages/_commons/Error404.vue delete mode 100644 webui/src/pages/_commons/MiddlewareDetail.vue delete mode 100644 webui/src/pages/_commons/RouterDetail.vue delete mode 100644 webui/src/pages/_commons/ServiceDetail.vue create mode 100644 webui/src/pages/dashboard/Dashboard.tsx delete mode 100644 webui/src/pages/dashboard/Index.vue create mode 100644 webui/src/pages/http/HttpMiddleware.spec.tsx create mode 100644 webui/src/pages/http/HttpMiddleware.tsx create mode 100644 webui/src/pages/http/HttpMiddlewares.spec.tsx create mode 100644 webui/src/pages/http/HttpMiddlewares.tsx create mode 100644 webui/src/pages/http/HttpRouter.spec.tsx create mode 100644 webui/src/pages/http/HttpRouter.tsx create mode 100644 webui/src/pages/http/HttpRouters.spec.tsx create mode 100644 webui/src/pages/http/HttpRouters.tsx create mode 100644 webui/src/pages/http/HttpService.spec.tsx create mode 100644 webui/src/pages/http/HttpService.tsx create mode 100644 webui/src/pages/http/HttpServices.spec.tsx create mode 100644 webui/src/pages/http/HttpServices.tsx delete mode 100644 webui/src/pages/http/Middlewares.vue delete mode 100644 webui/src/pages/http/Routers.vue delete mode 100644 webui/src/pages/http/Services.vue create mode 100644 webui/src/pages/http/index.ts create mode 100644 webui/src/pages/index.ts delete mode 100644 webui/src/pages/tcp/Middlewares.vue delete mode 100644 webui/src/pages/tcp/Routers.vue delete mode 100644 webui/src/pages/tcp/Services.vue create mode 100644 webui/src/pages/tcp/TcpMiddleware.spec.tsx create mode 100644 webui/src/pages/tcp/TcpMiddleware.tsx create mode 100644 webui/src/pages/tcp/TcpMiddlewares.spec.tsx create mode 100644 webui/src/pages/tcp/TcpMiddlewares.tsx create mode 100644 webui/src/pages/tcp/TcpRouter.spec.tsx create mode 100644 webui/src/pages/tcp/TcpRouter.tsx create mode 100644 webui/src/pages/tcp/TcpRouters.spec.tsx create mode 100644 webui/src/pages/tcp/TcpRouters.tsx create mode 100644 webui/src/pages/tcp/TcpService.spec.tsx create mode 100644 webui/src/pages/tcp/TcpService.tsx create mode 100644 webui/src/pages/tcp/TcpServices.spec.tsx create mode 100644 webui/src/pages/tcp/TcpServices.tsx create mode 100644 webui/src/pages/tcp/index.ts delete mode 100644 webui/src/pages/udp/Routers.vue delete mode 100644 webui/src/pages/udp/Services.vue create mode 100644 webui/src/pages/udp/UdpRouter.spec.tsx create mode 100644 webui/src/pages/udp/UdpRouter.tsx create mode 100644 webui/src/pages/udp/UdpRouters.spec.tsx create mode 100644 webui/src/pages/udp/UdpRouters.tsx create mode 100644 webui/src/pages/udp/UdpService.spec.tsx create mode 100644 webui/src/pages/udp/UdpService.tsx create mode 100644 webui/src/pages/udp/UdpServices.spec.tsx create mode 100644 webui/src/pages/udp/UdpServices.tsx create mode 100644 webui/src/pages/udp/index.ts delete mode 100644 webui/src/router/index.js delete mode 100644 webui/src/router/routes.js create mode 100644 webui/src/routes.tsx delete mode 100644 webui/src/store/core/actions.js delete mode 100644 webui/src/store/core/getters.js delete mode 100644 webui/src/store/core/index.js delete mode 100644 webui/src/store/core/mutations.js delete mode 100644 webui/src/store/core/state.js delete mode 100644 webui/src/store/entrypoints/actions.js delete mode 100644 webui/src/store/entrypoints/getters.js delete mode 100644 webui/src/store/entrypoints/index.js delete mode 100644 webui/src/store/entrypoints/mutations.js delete mode 100644 webui/src/store/entrypoints/state.js delete mode 100644 webui/src/store/http/actions.js delete mode 100644 webui/src/store/http/getters.js delete mode 100644 webui/src/store/http/index.js delete mode 100644 webui/src/store/http/mutations.js delete mode 100644 webui/src/store/http/mutations.vitest.spec.js delete mode 100644 webui/src/store/http/state.js delete mode 100644 webui/src/store/index.js delete mode 100644 webui/src/store/platform/index.js delete mode 100644 webui/src/store/store-flag.d.ts delete mode 100644 webui/src/store/tcp/actions.js delete mode 100644 webui/src/store/tcp/getters.js delete mode 100644 webui/src/store/tcp/index.js delete mode 100644 webui/src/store/tcp/mutations.js delete mode 100644 webui/src/store/tcp/mutations.vitest.spec.js delete mode 100644 webui/src/store/tcp/state.js delete mode 100644 webui/src/store/udp/actions.js delete mode 100644 webui/src/store/udp/getters.js delete mode 100644 webui/src/store/udp/index.js delete mode 100644 webui/src/store/udp/mutations.js delete mode 100644 webui/src/store/udp/mutations.vitest.spec.js delete mode 100644 webui/src/store/udp/state.js create mode 100644 webui/src/types/global.d.ts create mode 100644 webui/src/utils/breakpoints.ts create mode 100644 webui/src/utils/mocks.ts create mode 100644 webui/src/utils/position.ts create mode 100644 webui/src/utils/string.ts create mode 100644 webui/src/utils/test.tsx create mode 100644 webui/src/utils/wait.ts create mode 100644 webui/src/vite-env.d.ts delete mode 100644 webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md create mode 100644 webui/test/setup.ts delete mode 100644 webui/test/vitest/setup-file.js create mode 100644 webui/tsconfig.json create mode 100644 webui/tsconfig.node.json create mode 100644 webui/vite.config.ts delete mode 100644 webui/vitest.config.mjs diff --git a/.github/workflows/template-webui.yaml b/.github/workflows/template-webui.yaml index df52d75c1..e8e039fa3 100644 --- a/.github/workflows/template-webui.yaml +++ b/.github/workflows/template-webui.yaml @@ -12,6 +12,9 @@ jobs: with: fetch-depth: 0 + - name: Enable corepack + run: corepack enable + - name: Setup node uses: actions/setup-node@v4 with: diff --git a/.github/workflows/test-conformance.yaml b/.github/workflows/test-conformance.yaml index f1f02709b..f7bcf3c7b 100644 --- a/.github/workflows/test-conformance.yaml +++ b/.github/workflows/test-conformance.yaml @@ -31,7 +31,9 @@ jobs: go-version: ${{ env.GO_VERSION }} - name: Avoid generating webui - run: touch webui/static/index.html + run: | + mkdir webui/static + touch webui/static/index.html - name: K8s Gateway API conformance test and report run: | diff --git a/.github/workflows/test-integration.yaml b/.github/workflows/test-integration.yaml index f8eac5dc6..b7bbb91c3 100644 --- a/.github/workflows/test-integration.yaml +++ b/.github/workflows/test-integration.yaml @@ -31,7 +31,9 @@ jobs: check-latest: true - name: Avoid generating webui - run: touch webui/static/index.html + run: | + mkdir webui/static + touch webui/static/index.html - name: Build binary run: make binary @@ -59,7 +61,9 @@ jobs: check-latest: true - name: Avoid generating webui - run: touch webui/static/index.html + run: | + mkdir webui/static + touch webui/static/index.html - name: Build binary run: make binary diff --git a/.github/workflows/test-unit.yaml b/.github/workflows/test-unit.yaml index 7d4a0fa66..b7104431e 100644 --- a/.github/workflows/test-unit.yaml +++ b/.github/workflows/test-unit.yaml @@ -13,7 +13,6 @@ env: GO_VERSION: '1.23' jobs: - test-unit: runs-on: ubuntu-latest @@ -30,7 +29,9 @@ jobs: check-latest: true - name: Avoid generating webui - run: touch webui/static/index.html + run: | + mkdir webui/static + touch webui/static/index.html - name: Tests run: make test-unit @@ -44,6 +45,9 @@ jobs: with: fetch-depth: 0 + - name: Enable corepack + run: corepack enable + - name: Set up Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: @@ -52,6 +56,9 @@ jobs: cache-dependency-path: webui/yarn.lock - name: UI unit tests + working-directory: ./webui + env: + VITE_APP_BASE_API_URL: "/api" run: | - yarn --cwd webui install - yarn --cwd webui test:unit:ci + yarn install + yarn test:unit:ci diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index 4ed5faec5..4b5ec44de 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -27,6 +27,11 @@ jobs: go-version: ${{ env.GO_VERSION }} check-latest: true + - name: Avoid generating webui + run: | + mkdir webui/static + touch webui/static/index.html + - name: golangci-lint uses: golangci/golangci-lint-action@v7 with: @@ -51,7 +56,9 @@ jobs: run: curl -sfL https://raw.githubusercontent.com/golangci/misspell/HEAD/install-misspell.sh | sh -s -- -b $(go env GOPATH)/bin ${MISSPELL_VERSION} - name: Avoid generating webui - run: touch webui/static/index.html + run: | + mkdir webui/static + touch webui/static/index.html - name: Validate run: make validate-files diff --git a/Makefile b/Makefile index 570a04199..ba75e539d 100644 --- a/Makefile +++ b/Makefile @@ -30,18 +30,16 @@ dist: .PHONY: build-webui-image #? build-webui-image: Build WebUI Docker image build-webui-image: - docker build -t traefik-webui -f webui/Dockerfile webui + docker build -t traefik-webui -f webui/buildx.Dockerfile webui .PHONY: clean-webui #? clean-webui: Clean WebUI static generated assets clean-webui: - rm -r webui/static - mkdir -p webui/static - printf 'For more information see `webui/readme.md`' > webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md + rm -rf webui/static webui/static/index.html: $(MAKE) build-webui-image - docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui npm run build:nc + docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui yarn build:prod docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui chown -R $(shell id -u):$(shell id -g) ./static .PHONY: generate-webui diff --git a/docs/content/assets/img/webui-dashboard.png b/docs/content/assets/img/webui-dashboard.png index 80a5178b0857e30b86defcac1d4f2615531e21cf..084d287eb628371362db197df8aca15413badfb1 100644 GIT binary patch literal 246976 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 JR_fZm30}?{PK@B$1IB&1-9#XpKqg z9!x2&;aD=eAZ{+VNc=y*d`*si)A4s*kh#fqveT87OL9+>-LuVYbD=*?a@hIX&Yc>G zJ@IlW+A!ivc2+87$f!#EwCYs4ZNhs?>dAH*RO#;De)|gdGElD3>pCrfa^F}9IB>CJ`RUS7}wzn|RR?W))@%a8#2 zFWk(u@D!b33XtxWW^1IHRUh)S*g?B}-{Kql_q9n%NU(Z-SV(hPDxzdj(%z5XTAj{s z^YQWsou~!*Y@vkPiW3$r7wl5{VvsbE1~V0uIKpB<(Ym0$)VHOyk!;UQ5sq2A+`=A* zEHr(S&J1zOEw{0M+Umh$b*B)?Xn3Xo$C4%}gdCwy%zM;Q5;lENL{)UduFA{j$n0hN3cFog0n zF{hf4#uElo6UE68Fndt1_1`yy`_+eBJ9kK_>Av+@Gg!*fi^<8@vecZbd8m8_OlNws z`l)XoUaf6%h>tzJl^ba{OTlb+7=ee0Ovwlcg;>D>JmS1w8h#p;mka8XyG|8S5mi^1 zFdX(RbPi(pU2L7jmLl3N!jRF>x{zHu{+Z!tEnBsc-c(-R1PSq-v-8g0wuxjRJWGRF zP-Zm`f`aSI-F_3eQH+uxMG~RUPg$^yvh94zX+l#&>C}DURDW*=zxxk^X~90Npkqq%3n4} zoqNg9$gFl94LMFkcgZyXf=bC`vw-AJ1Mb$GPGPj4KQxksP(#!zI`na4EJ?Qu=&>ZB zTw&DK!=><^&4F*Yx=y1cP#Sa*LtnQJ{YiLY>&tET?%C5%kGVPFQZw8}_oR<`}KcklFc+(!>F#37PQy-+~u5r zMrKpNRx9xANgcVlEpG{Yxiq> zLAUgs3a7SKd$2*HpqnGEKe(nZr|)(E(@Y;9AMD#MS4w45vvMK}PNr7LWFMfNr2N1i zWex03KX?{s)$+yP*Chu!0u^Te<@RFX>1z|EM_4&*o7G%NtGnaG0x3J?BZvuBbG6TT z01r#sL!K>xv(RR%i~u5qG=m&iQ0gmWb2^tVt<4#jpc=8!NWXW*T+TOKpC;$8Nf;{F z8s>FqyES&oM82ij5L+DZVC20JE>S)tcBJk zxhdl}CC|>pp=UKds!jgTGXg>rnlDwz**u7jmv2 z&orACyw=?HhS|QXh}XeiH9v-zwp|%%f;tbVqQV-e%XoBTW)FUb5*7n zPuq|(raHOT&-Ty8zq;hdRU!}BqwShX#7qa6v~|7M#Lldndw_WEq>QgVXxgQF_n_Vl z&$pRzv~(H1FeH27hUw-tw@ngvvLuj zmq#1CuFn_8q}#U zb!7_)^i19CTy{3T5|3LW*tMf`H8nJfnJ9^6+M$9mN|olS;T8IjbZ}L>RM4ZmygdKe zRvoL>7M1riPmDO>NCtrkY zR;5kmT4xNb)xLfELRa2ahDp{hiq%mHj3?)tV{UHyEX8+p%J6w}On_-*o^BGd;G=NJ z4)`cjvzb58v$85(9X?+}Q?oV#hOoxIt*u|bYN9p1UEK3hrkv`V*Luq3f(!UsO-zKD_zyGfAE%jHXmUMm4HB z9!qE3JYqE$z;vI$mnd}Q^JwxV)ziw@-)P>;R7lnlm` zBylkN)Pd6F&icmq=rqsQ8%o!MIa^$Cr^9qSFwoa==+L2-t5&I3Z2YsTieoAw8VhH5m1(n@;MB8;uZk+#2X{5|31 zHc-qbJvgk`CUK8moQ#Ob%=7&9S1lWJItE2uKf9ZnYL{5&)sPr9JO9O~HBE|o8>}tp zN{bgloR1@W)-_?OX?OQK&Mnt@=6OyC%?aO|icOpCCL*?LLTd*U%WuzV zX%R|P#^;1hKjTM`$oBmfO6{-%>=XlpXKx?rtBS;>cK6)U`caU<9^GKny@ zw>3D<+=0o|>-mSvNIYZ;p(=TN8n8T+~-wlRi!^|49TO3E+iCwooa z-i8wLY@eegMW&>3mkKg6jtQMQ|NeO!8=EYqJXB;qo$peWneRRJGvd^nvUYK)L^?+q zyaqE{MhX>pITEA=f-e}!JV!Ingeb?Btz&?-EqszJ(jl1i(-R6aDH-`n$Ris+Gis$&5Gb2P)BcoC3x0FeaKhNgU zcQ80Dd}^=N*uCVoaE9^uLk83i<^$jrS*abILK7!j#(>)2x&-<}4swW0#=;j;PN;e8 z{Z;82Z5I-Za&mL$a7uBB6|TCU1wSgNz{zmkpN+2LRXl}r&DDmNVHjQ2c9_oRs%v6^ zKT5Djz9VBnp%YT#37#7fF-Nj0GKng&Q=~~aZqEgQI}t6{GZ+=3uoqqvPq0s@V_Y1d)b#FTUN>oQV9Z^A+xE9X z!5l>fhihwF(y|?_sj0~`^$a}pivUT!>^d!V&8C;!cPmO9*JTB@S&6K*n*8Ob5s!YYx=<~A`+xy@$3e>3Svn^1T^zVNoED_vvY(b3&fO_)6`qa-!*lGRi zE_(30_PHO&y?q`BxP9KZ=C>U?GGuBR(+tgmf0V;q$M^ngI8Q4jYj>`%SPg(B52@1# zESY6EbnmwhTE&;olP-^W!^?g7r_%??fs(GziKJHID8PsLqMh2_YBlm`A$`>BZ8Zur zZkbbD|FWRsx1aP&uISd~WXG({(`i59`I*+@#xY|MOpl$Di* z9YZ?!BMIKf?1+vXJ7%N25U@>R7bj@e zLD;?)(!mrZvY4vRZv!APUjjeY=$62J$FrZ#($(s%Gj>$=K^M*zB!$vFJ9+xFfm9rk zF;$^%)jf6mgqLb|(Jp}V>lkAa!i9(r`z`Y;llcLOiHRwdPK8rOB~{+|?QjJn&P2N* z;2AvUnxP3@;msirnWO{>K_)78{%>VXc zOSd`Z(?eR81d>{(cHY9%YQ0rhWeH-SL^5B2W7G|NAKM z7N7jMDJfF+fBxkE&NsN$JvcOUI!PzFr1rP-K;d$7azc7z*z)lwxsRr2{L;B?H#eLL z3X*vgGeHRPbolb~&->ytW4(5kRInE=oQjTKKtp{7U1^vJp-HK2p{ZD|Tsa3JH!nxn zDJ~HBiiO_`NosO%V!OCqDNlFv7sGC-WY{F?&JG?C1Kq;&J_gi%>BW2UZAO2LspmyC zY2D$$5EJtPe+WImHZ8x~^yI~PtDC#}W}Q$jv z@_oD;()JhEFzz8Rk9W$`^uK=VY`B35$@WI*4( z0fy%?dm=X8OM&c2j4}&OZH59SdEw@?E#X7Hs$8E67 zzwK!s^_6LXF=NQ5jg~I`=9)&}O__26*dv_=)RgCq{nkoGAw*urL0HZ4RPND3n(_dB zyyV`HFjPG>I?U$H`&N%UNJc~m{Z5mB!S(XKJYraO=`cR`lGa~1%Q-C*k@nv#Yq7=3 zE!@Qa)*N=%+^WpKEd5=j{2MQudD8^^6&n2CZ|~Mo4-Sldc5$*y*7WE#He`Awv@`~{ zriX>#UZn3m^XRF2to4An>R}>5?9*VW(!5e>Dhd% zuZFM?dCvV!TAyyRDAS~K@aEcq66k*B4%RohrlC~3HO9Fm43p3PvKjhWOPMYH_}1>r z)@wIZC+yt5J)QqB%xyo%%k7n!mxup=kie z%esw^A4eIz0?M|~)aW(T+~?*94n{kxa36{E^8Ck$D@S8^PXD%sWBJBeYG}vfQ5Fvu9_P%>7$N0D#0we-#nM5eV-pYMl4)Vvfik ztnjM)_*0}BH7&UEEU4x{U0rjklKcy#aMJ)qD|02wq!5rx6*5AVgX#j>9x`5uzP#{1 zz0?`P8a_l#E!@Of`+dhk)Xa_?`~#tDP^!{59+m4rzAuV7jwlgG7LgWb(%W~Cz6p?f zhyCS+KROhp_LT#F`v&zDseR;NM;4Mbh+V?F)a+$h)|8{L8US-t*gS(PcG5nC27c4* zQ+|5wZ){0DLqqtXHv)4ck_MKVK-&@V2hh%i3z}9DU|7&lAQHopi^zHWV%;9b&Iry= zGoY4j5JW44^a0FE%(o$IrXhoaihWvLijk0W5NRMCDB$mzx8CZWvh*iQCwePKOZ5_H~ zsiAAsT^@I@F>9t!CG*y^Hf*>|bP!rJP8BO|d3|ek?x)|-7WUbfux$JlU!X2v2(#^< z1jz}ypF3RB;HaN9ckbNC5Dh+AirfCv4?K=!rv0p>q$CN|Y3b>5f7->(;3EziERTG$ zy`PXfprOs0=I%$7THE&dbAm8kbCK8pOO<%(4+CQL5>TDA=|K4bU&U!4;JxHaw5U*@ z%K6~!-6iOoH^oDK)uQI;^E)wX=k02D;92ud#?akEH z)mNbYwY0H;^tLwgTYpib5}jqhS?B&g&Y(|;eB-l&P27yGT7;W!SL$=J)_qY_7o}^e z7i)i2{L44%YTX}{s5NQcxfblF)2c1QE?Q6>agX!8H$s%20p&q(nMhO%?0_F+b{NTb zNZ{DMsK0ODy7eL#IhG~qj=TUp!=}320_iIZ1b*jINmb5kYDgOa>0uTgNXLPLd7@Tm zwTS235HHdLhFz>``5E)Y23uNN&*8~-9{^V%)7n%>qC!c8I6SHym|-uk#oaimN?uI8 zKs4keJvw#gEN;5_0=5_{HezXfhw-lx)yVc01K^2@Ad)QofiQ5at*xCA<5Us;P~F|G z=o!Cel-i%_nwplZTT%=;p^2tuKaA~%V&pVo@)qnqGlf9a_JpfXVoZXC&|4!zn5LFbaBLMS-(;IkrCj$bm znQi=&&Jb4p)Hjh?u?naM3LK) zCo;t$>@)X<5{IAuZjsu!F8Z3Ix#PKo z{>|(xiW8PkpqF%*eVil})r&{*P6=ka5pRNetb~p1nu`oyj2`gq!n`2YIm&+@|Cgg| zCA_>J3=Q|?tGv}ORCe8>JPWcJY7#2zysX@T*Q z{jY?}!3s@-3evRYV+YqPs9%?t+5HAroc>COUfTTv(~F&YahA`DpEZ|fCRr7>v8UyL}XE+g7LNKDr#dN#NEeBkd9e%jqP-&aZ=H?7Xyuy%XQ zvoN}%W@ct@OPU$nj9SC(Q}Nm zxkY4dox`jME8S(?+#!3cvTpidNa31Gv&{<-n0`LHUTpg!l&_kGL`7*A)dtnpx-X1g z)#^dn=kNCRf-x!^pI`GcYg;#o7lQt4EV`=1?pXn+GXDY>D2+91I7`?v%%q9P0y;*w zN9s;>a1U3)JSC!Wmcf~?Djq_YS0B|kw9LWwrzUrb-4$8^z zH1LJu4}_V9#!u(j^m@KRRK3%*6pplv`_E<)^$VICK5hA+Y*9CNs%GkCE305Gmclxs zyIXiFbu4x$NANwOo&Cr0PHsUL*D*tpAaJra7+eu&Er$&at?XWt2+Ukx z6X0JeNhBY$=V0Eev`VF9oog>;_oVJkdi0|CcenSEH^|^gA|eG{vjOHZ3+uInl6WhRJxy?GeshKP<9OIXw>X)*-WtO^z zMo>)5!lTokzG*SGsa9QCf%&PdtfSRpQbXOtb2#TTB+&U(#aAAghQy_TBS+38`yYF> zubWx{^(UIxiLA5c%QlhQXsj*kR@zr7c@(}Rd+?dM?Rx6M1>>!)db=#{c=cXrn4ba` zYJK2=@`Lo}>&8jS$)T54+DP*BTC;GPF%Sv5C~07%g0B%35U;gal6 zmPY+E3r22MoYKJ-EL=QvLwJakwpI6BCi%ObqH1a1zDl_5kO@P!HPO;9qdNf-jyQfv z>T47F)Uv|BA`cpDs~VxST+1^)7|N#>N-BY`8jr1KeAWOsU)+|mSyv+OhOK6%o?jYKNm!Q{(OnD(l^yq zN}f+3rvEp?%F4Iq!jkN|pJUc7y;Ey?sD97l?};BQ$w`2Z@GB~#71t!y}q})RMzj&F3c(^DPbvGU9_w^}3|RbHJWvVtBT1ZT zZ@-(f`72;%EFRcs1Jx^wI!>xIn$Vbi?yjlfIZ#TCGi$>W!YxwT;aE>WjbWUtA<`P@Ny8GmbJGOT$F^99MLU#=UmX zUa0F>*(#t*c*>f~3oLD`zxUdxo4ECu<|cI_HTcQbzCGa$qjCI;Z|7n;U}d4_5s6 zsuwC=;x~1}V1hAr-RE+9O;ihVe(QSsTPjw*^ZIeqHZ?DC?&;Q0nphfkF|28_dZiKQ zL_?MdC7%P=;HEQ;zZoo0ox9WH%ZG;=bMN0D7M7hmve?;SN!9EYGn#6-l=afTf*fT` z&uOYN$5ylgIx$zaYjN$^p!zTEULT2V+NrE45RkV%Gz?3UqA4HV^K?k(kg4&$I~FuX zT8&kzH_z5fPu}2my1MB#&7dE2TO5oo3R7x6wsxRW{lrbB!4y>Tn~Q*+l!8xp4m{L3 zWI=+@+!o2>vThlbx=c8e-#OK=$@1Z~gO#p%xVD+FDYc+hT#E&E8N=V2FFEv6``NAh zH-&pt*RPzk*R_q-<+*kJdQnzXjjM=h}-}}+xufNi&tBl;BR6CGA z-qfPc-FMGuo;;&u9YG!K6}{>Y1>csv`DP#fUGdKc1Nih$e*Qm#Pk(|4C@KBl39Nr37$8SE{c7>;q)gAs zQ9r35xP5r9&y3}bkVX6^bVu@CiuZZJhJcu&{kB3wfa>6kajS3twHUA627a6h6_3A! zxlVUdHEsm`u8<@*op4|RK@&kfU6dJkO(rLq6wKkHd^szz6aDa`)nuaIB@4-wISqln zh-(TrD~>Rs-rls_tRre7M6g1XG0P0(#EgInAW)q2=S%!26$-WJ{m+CmZE6!WxNjim z=~Su;(1y$4PI&$0`K-vEun5b-B(+7>$wvjruvo;I^559wxADvue`92|_zYQnD%6s% zfJ`aZ1Qb9ABe^21d~!9^-c=(i{V!cIwT-Uw7OFEclUq^)D~7pOK|-A-E_0rqk;eL7 zlr##T3_+IZq>-`~M%qTUa!Jh63r92ojduW?WV6hpWYzBl!LFN}e1QeTriVg?^IGtH zASzN21rjff8z2tQIFX!lXuOFy3s>I=R?kKq^Q(=Auldv7;fy8AUYlSxxl^wX_X&dD z@D^3)W;| zTb&iw)|pt1u+l_3orE1U3rhI5B&QA_ZY{=b;u}IA3ceSiud z8h5wI-bH!K53srDgw9rUHyr;HpSKi<%Y~AUyhZj}(4&fri@S+;3vfKAv7lz)EhM4? zpu}(uWJ}Pw%U|l{lbKjS>k-R{h(RmP(0}>((`RlA$KU^e7GnZO23eNysrua-(N09^ zP&S3I8nW%+8d7rrk(t2MSQdS&hwMT<0SeuQ%o9fM9Fc{8%{drq7V(4FU@Y#bTPOyh z)2C0*S|S1C^y%cVAplrd7uB17^>)oE{tzJgmRa7>4A_^uu9Yig$#gHug%gv zdGX@Kcz>VMWPq7@c_GkHV%Jdj!ek*eX*IvLwdyqLrLcWwB9j#a7NE^)Z@+=ehaFx7 zvo&M*QvG)=N_E0mc-fS{{`#wkU6i%t95tD@BE4KlGEPNxV>qd{_ zJ#`;>Z*R@^z(9gXBTdmvSK&s`#RiMQUv2-Bs;VlnvKEIr#+$t4zC@$mmj3v?`#9Qw zD*(>nxO>pasEqrjI0Hi*|{y zocI#~OYX%08_2)YHZr}iIIg95mBNN1CrcwrRpDAX_&q8qs?JxJ9S*;uYn}zKEfgf5 zcWT_9-B*u?j8m*yN*%8ch7EPaed)?ot7bFNHsX!itD22sj6iCIn?mOO`==>>0CdHc zQ>rIHKmcYztW7&s%$zdiuhq>id~!=CI8E#^Kb!z03y#x;%_SN$>|4H+2n-QboE@PT zz=TdbZeKe#ZbSxYUSRsYM`;rm2=R(V2qNcN5X*WdF5_|VtNDh(lrz#ArH)CZ7>5co zg!Ek?6W4NXuqd>H>A%WTqz`o-VdT=5me9k&^u)FZW=Y1feG3#s3Kp7pzPu|fXiT($ z!_?h9fCEEs7C;7=66G*kL9lj6L=+@g2K-=j;>SDU(nFbT3B)gw-MTV_D3@+#g#DZ@{eTspfFWqm-o@}t2j3NELe*W4JjtDh1Vn4|1Tka z?JhuWU4Q=6zs_0pF%SeC5X7N&!}u@<(MJ;MbM{kslt1w z%<;w_6Nrsg7ORW%#Ot5$Zk4_}`RS`5laJv-zRY17CBxE82(f`dJ)nK6%AtX8mM zB8ic{t?Q;_sx=Ao(scx)MmcXlSdG5DkWrWh&V4BHKK?Axg@LxZAH7X8%b$ zp<+&-Da0P>v9LUe%fe3}5hQ$SKl3uhF~oauH^CLVUtJuT3%_v5g_V%pSj8}}#Msa~ z{>BXz`!UDJ_JChSKpuOG?gEus%JJLsFCr@WC(AlLAiv z-iwXFVo-?NkVXh+H3KZtGya>n5s4|>B8}L(7pLR?+uj4*c*5_=8iMfW2%KoO>%+FK`cN8U4{r*TfYZXU7OpU^^ZW*CGfm3JWNPuZA_Ku(N$OPxM1nd=?D%2qg5C1R&SO1=1G> z>0rs*j~T{8;izeOuczVCrAN&le3E}C6&t`w{S!xXp2$H9EgjI6l_y%%0o+(R-Z5;|ul3>=bSPez9pJG;n7aRNO{i4oDUA4t zL36ho&IQ*au3+W+#6dd(0MNcP@t7J}0+6ZX(O`C&Y~Bpg4z#!&ee(>91K~BPcs{*& z?fZ|LpN#l&=k1TRej!C;NVp*Hu_1jA`Ah_q77rax3Mt7*5EgiNU($tQ5c^VX0mU1A zToPTurFeU*-71pEQz^)xgLBIggqKP+admj-?HD%D9>vqH3M%aiHg66xN`?JlAL+S( z7tRN~l3ar*BYte6i*40WWlujI>Pn>Za>F3Z5eyO=V>na+&9mQ46`(;SXfbJ(92%F` zmZu4AKP=m-euZxQWidPK}c zOOu*a3?m_xN))5fMC%0WYB!9-meDf%=O?<8)}+7H^$iTNpv+{vBl3#}pTPN?Z?d@C z4!bx3m|tWRVDIAGB*6QXEAu&F?g&|$i!*b#KUaw2;_YoXpG1vzeE@7R)h~#;G_H zQF_g$K+?9@wY#4rC_zED5?_BxWi;3Uc)!uB{|Qg2EJQO2q7d#iW$IK$ix#=}uo%PofG8ABD1H8 zK!XSsg>Y;y4wXc}6gSUPG73$-Un?Rm+Uyy68B!4;;8VU#Aivmkx(6E(j&%NW# zz-y2`5pXZ@F-uqo)3+-B*SBeNJ~C2*9}$XmvM1$fxaOFZoMTL_3T)D>B|$3REMGw0 zj~}n3fKdLQp?MQx2^L%i;CPoy^G_Q^wd?)yeUc4^v~A&^a(2j`DVr-8q?B-#Y9?wz$G#?=-x6YG3;G*~M;`Q5rzGg-4g^eKmFy@){SL|Exwl`hG zxe4AbCsDnNT?{Y?uoBZ+^c^6T48~=|S^ML4_?svu`!tVcBuL3L-P!=@ipqHk4Sn{8 z%k#|N{@qmsbkh5)^=qv0p1Sik*L%ek9gh{lvfAfy$D`_=RWRaUR_VZhE_5LbKnAWL zB+|)vS{tXdUPwQDJVnu+662stk0=Z~UaR~MqB zno;&^FA+MIP;6y$vRBqu6dWaap4V~AiPevi?|>bh6g4iCs&M1pCQqO0D{O0A-aMRT z)mhIg?qSBSpPL@gZTw*Y^E@~%!!J+Ls;-MXiep+^VB}yex z7n9t@zJ@$A6O)&ILLkaN_u^RK@}k>=!!igY)MtZYqiAxAkvsyQhjx}sAZydHIz>y( z_WoCr(f(AUc8DaL^rD~OQ3zm6VHS+^>_NG&vi|W?x}=&3A0KM+)DP(R8P2>61mvf= zjERx=or6sqcx>N6c}X7}cEvfd0XN49x^J#kJ2uvL6dN3i8qZB{my#V9JH^&To7XKJ zV|qW z6T9YnX1EGR>i9m_+z}`m#SmTs6`|BiJSy{ajrN+A-y9@8O+aVz#**)kJdyZw* z-Th%#JNqHxdy8$UxhdxylraqLo|t$TVxelb{ll*-C0j~&!p%QDBjY3q9wH~*q;i}P z{^$oG_fFWj)U~9;FlQYHN8VdSYz}wrrw#APr%`w0$ln(A`0zeGm-tyG=hWc+^pKQKx;DB`goCe!kTi0jk_u`Qtw{>!SviDUp8}k00z{0*&sjdM) z=7WtxMpVb|=pG6|gGT6wpXEK|1euWfo2Owa#0imv`Q*a!P}Qsbvul?(ds`_yn;4>H z^W^N=)#RdQT_2k!VKRx^uUN#isce?u8|muMIx(_b!f_`rC$6V62gwHMIdt7qmWZOESWjRTjCI5Z6@R zT^c*%yX$=w5x_b!Uxq-HF8=UgO3M|;;Dprfx(z*f<|kuf?hk289`eHvr&vFw*_yk6 z%9dGlcs*Fu=HM;QADX&8iNZ)3_EI^9>Zc5l_=2iKaN3Jc3Fx^uMtw(eWIAYn4B zx;rBFW%!++TX$B+@mYWXlZES#yFTB#0ZW)o>AMYej$hlV7Mk=iiY1%9(-ts(T%2(A z^@DjEveU0W=m4{ZdmA^gv&_TuLEFxMHa&8U1j-A?H+Fj|{s&(kZ@0s4^5kftpx__H z-~yi~lF=e$I|-ljR#^Sn^GKqg`D8)sKwx;nyuQRldE}Cx*}+yD^hC)ewC#DmKH^YU z6xVSd1I1qMo#ziqX_s!316oztqqJ)9PNxKB!2gPw=Y z;=f#qFiMz7*+s3Kc#dZ_=1|{3L-Q-Lvq)lB<7LSvJ2hkv=`reY(Wq(W zjkVd5!PNBocv*c$yj$zF1&#IQJC*kyEqGfvupTRbz5Vc0-RX6VBjQe)83}wgplygC zpaYFgfPmH)8*a)#^&i~B_U)Bn(UtaDlRv(x+fs$Vxw*`?9{=)Y+yV8KUWYfnY+WDQ zSZ$)0Ce9;N4>J75wY>4=K3y_Q1E+%e@#0R28AhxSvR!Ht%(F1NTo(HedN{#WktA&~ zn=<7XUN?beXC7>KuFkK9(_!}|S?q?wsM*S{3*f2Z zKEMGTf=(q=lPX52-7*dUb7q^+e<~K|ojfZS5B}yil^TnHM{mDB9DV7=Pn|lbZ{N*s z|MZy-s;g>Tyir<3xIDO+T)FJ^?#oAd{yUd+oVC@8uo(KCQt}8oRRAIpT{iWXnELT& zOD2;so46Tnm38vrXTllnOIDXZ{FmaN%RBumNmly*8^Ih*|68%v)xsC++F30&&zZMo z!gm|0=WU-p^N-IDj9Y#1&o~f=tP@9~kDodnB($J@w-!eZ*7#QM>5g8(_7GT5sEZaK)zYn4#aQ()V!F_d%0~knuDc|*J**G1YVaDh5S|toV zZyj&bed1Tf=siCExGn1J;A0h4k~pq&uU^N4o*uID9<33%;*odxn#;Kw>lV@e>DK>p z^oF(D4|_27@y?0Rv6;_atoU=x(Y^aSEg#?R>dLAA(J|#(qgVTv?V3L^{ha_d7f<3S@M0x#0u8v6TZ9gXJC-x1OJ(+^lw;&e@; z!{y23OYVImHjK+EQOO*wUb3~LZd%%t;5p7`=0iwPRPtHQK!fg`J$G zx6-FwT+W~7KTWxK;z#8$`x`ql9&9eA8K2evlV8K#qkh!I{u*QSCb#TJrD(MHj!wPP z6XnqSGjmEc3$3olmqsjpr3s#He#}_s}9bKrRdUey3srChEim z?%%({%Knp=D?Rx6-Z+(%)m`Q^bu*%2_TQE2M4*Tr=$Lie&DSmo)iT z0ZV=+?3hn}Iw^e`&B(8m{uQ~Dl>X1(;D3`A^v5AURDC~n%R9{?3yRJEM$My{((~3g zRx2shhBat&Qer?De^biLTfi)I9-mP+ip|U=gv7%7fP+g4a^}X@aRRQsj{UkL!I&O7GsP`e3OH&iuy<= zyZb#`1^6Y@MyaixI{{8o?Zlp~bWkj=^u_P)io4tukSfG`ZMgIA<|q|Am<2acn$VHv z+!)u_Po}6m;z_G|DAw2DxqMt;N7;$~DULcD9Sn*#d_3! ze*<}bTG8)r;HlEM_&Z6<<%&G6jqo^KasR`MHQ&A1Wz5IBJ#p){j(odAi@HtTDt2*2 zo?8~TYwu27<*&P>U5jLucctLpuU?F3iXqNtC(f$vKiz^o)@T2XWRc=1)i%3f@SqGN z>XR6v^#4K-`OheHmvd$D(B`#f9OJYmX2YU|Kf|GFwR?AesEhO@gn25OvdsT5lK`i< ziO9<$9EFXkZ!@i}-Q4>sNX=}%qoAlDu`4QzdP+&y>FVhPEu@X{j+Y8Rx?b01kSxIG z_vG)Xo2oLkI{1_DZuL(C+!G)h-ZF(CpS@kCKjdtO@V^a+J# zKu$fECHe6O8t{rOlFCK^pWDoX`yUa68_Jn^b=2~vzI|^>!AgA&8Q_9(l@EsU0t`xX zgXU03rs91nSJc;5Md2TfX|PkV5I0anKkvRVXZ36R5lnD+W_D?RY3KxRkd}$4VQ|3_ zpxLwm@s(KOh>#EBRe{XH(Xwwb$1aJ&>aulwo6}H(3?pAR&#oN)p58U1MV5m!q5t7` z`S%9%xHElp{xN~ybHy6HmC8D?#*dVMsAn|u(YY=Un@cBLVUDxtTGQCG8?S9?A%7kM zyjuB>oc;xmqy)6N`-!~@ESO$m?KD+9w`E{>I@mOtKGdX`gRlO(%cW}pYlZYcB}sgJ z32_5pt}*;&&c{7(OO09?Ydp)jJ-ZORaTYn^i()qvUJ_dt7#Z5x?V7 z*a0X4icnCJiBSZ{0M=>4&TVXD1fcd15UYYe`NY1FnB;+n14Txf8g=1Ce~X17LKy&} ztm(4|a<~y_V~v+ty7?#*{0MS}X;8?%0gr6xS=b9Jq%4(+{z9a%a~!v_J*uU>cqb50@)ZuN75TCMK@(P*i z7g_=B?}MNiNYYodi+aXq7Y5)K6N%0M8I}i;Gx}RZ5{y$*b%>ZBW4{6VukuVG3Xt)M zE9kt z=ay((Mzo9<-!BP`+4AP4_HAQvj3~z7En;GO@-f^%Z1B#B8Ga*vMl|tDUmllUCd2&( z^<4<6iUQhh62Is;kZYVFTB8Tuk_H^hLm;@v`Tc577Cfy_ku5nr=?T%gXZwH;IzoC6Ly$U1}u>~#> ze=UNby+uQT3>F684XUc4O+N$BD0{ECzDhbjIS}kOZ7MQR}4N$!i+=>jVCqEWed072kEnjFZ zNYfolNxXxJoD_eR_c@pa;L?AQ*dim=FfxKNil6+L2)N+Qc~N(+HgK0BTDQbtf0Bt( z82==k#`NTo*M~iG8~9jREThT{`H8(KK0}$`kV0#9RUX0K%Dqj z%LCJSv~aC45N#mbX#{ksJCmxELc>B)*A3k>p8|q|dGS6l!p+^P2Wc0XBex5qIfOgt z5-IKm1{~7&kpX<#WG&eb&z~5aoEtd3jjuS#+%P<%S}-sDaz3c2;H`^*5=Ax`l&}vm z5E+b)i-%kn?4da%mNQ_mVADLyhlkYQe`M=mpc!L>xc;jAN0Iqg$KGt5ask&5f(?J* zzTerdU}^01m^ngw;RKZt6%`#{Wz958$k?8=q<5+V@8O> z~ljPh#N|*~afDTC$d>NN|5m_{~D?h zUga*3Ur2a_mq7gYDbl@w!R5Hh#w2=*Fc3$jcaMSBsu#tfQ;M}C|Iy0Z;cp` zwi_mNAAbmUBwc)_Z1`1xCTr|B`tOA{$%M$*2XFL5F{xkp4#I*#NBCz(?gg`g+q=L8 z|2wzC*opWTfDULn{eAu(FG*b&P_}R@U~hnf09sd@+wvl3pfz!713QWsJ-`V0t0upV zgWt%F&`Buf;od_GX00R^V0~uS!j~Ra{Ugj^i3|oO2CL8*HonMv3l4?k??P&r4dd|= zS0y6it{;<30hg0}r0<3ilSke|Aw{NOJVpPSjC?ZVNC9+AyngWz$fSs~QLi;&a`+IN8lG>HKXx>;MT7(kbF{P{?M^uY-%iyQoGpmce%6%FX7X>E}5 znvUb+|NXcWO-)BqRZz`3*H91Miu1*I!t8-X3M;5P=| z!+$h~e)vk|DKWh7-YkIVkkzJx131;q(zkCb3rn9#1rNi18$=J9*Lv&Vg=!1-%Hwc-kqr zv51(F+%N#~{~8g1_yNaQ1m%hOaLK(8h+$t0O|kflk(h~A6H&iHDruY!iapS5B3(iP z33}TN5Z=ImLcjvUkXYvdjK@(2XC#WyWPkjCYn{>SV#Tkxzo%^daUViF`H$~U<+{S4 zDj|CG*O54brUbn7$&+ruE#I_o7m%xpkbN|Zkuq;cr8`U8+Je+cpOFNuWX@chi1FYO%Rs>1! z*DIuGW9kga_Xue=Z`6f&TJ_2i>mJ9FYnL#*i1wKs#)#ElFN?#9XwwVlVvoawK` zn+&vSZMbUo{sLtP@r9Ukxi+n%aKFmV*Y;_;V61ACDG=JXe91gEO1ph&5`L_|BfoI5 zq}=(&ls42}!7E~NDfj(`Lw)ZR{_IvfzB**GM0%t#&5Y}7^RNwD;KrDlKBjahdVX!) zm}iGl1R}ztKbm_wOUZJXibi`btHny^=|r=(^EWjQr?Z8!MZJrSnO@kJ!BJ!4|1%Nq zAjMfVIbNqZUVqCY{B?5apwUD?!APTS8&5+>#lEXEv7u2lmfv#P{qr+=Q>DJ7)HO=_ z=CySh9NWOf620iDnQo(U`%2o4W45EWkNd@eND6BJTx{?;oICH|4OIcyuNajA6&N{9 zi#kbtpFnn-L`L(C!;Xw*AryZ&;gKZ+jJZ(u3%3IiQTO^BL4H>kDrQA2AkYeY1*IFS zw)LZ|q`Tq=-jZ1ZxY>!#8O$(E{YF9dwCb%KtN7Nu0Wkb}7= zwvt8==>G%Q1QW)CnEwfnNsKeK3-O`2AKhH;)V8@?IxM++2t6u7LPnwW#o0UEN++j| zkfMhd*ge*V-f&E~L+=)x!RNn*oQcU3DEn3!za~kO z+^Ky&oJ_UIKiX}ZgJNe7A=@Bpz~LbNWFRv6Ijp;<-v`$e|Jfa8I_D^BOqC$qaF9OWm1vDNKElZ7q2gON8o33_n z+j{7FuPNfFAOj);mWZng@_CYu5Jooip%WlzPm9Og2QLzqkc1ea_;(r)p=5!fKzhq0 z@B!i=&Mahb3t=A-#{OdJ477QGyL(4pALg?4-WI)~J?DzPOCw)kl&N zvMEWGhKfxS!;ZxqY{@9be|ue%#03x28+ywRQ{vBGzUh_kI;@wT?d<5%zuh7CUfXP@ z(&|J_n~L09N-9gcuIrCw8@>LVQg=A{NN`!!@1s7Pt}jj~uw}Owu-}`gUEMR+Gk$!n z#fjzlyHVLUOz(Y8)OO@aQ9Uv}TW~PP-XuLaTj(^`g8r*(;UNiuQanuo%PonDF&ynbG_%P%v=qm5+nNT z?3Wj(!Svbz3Iv%;tNHzr%J=tOZms0h^_ZBo8O^H4y?6-@dJN^ul>0$_~IasO?&@eq^581eR^!NBh!y zs1=+lQ&~RZ^G(8aT@m4dB;=R|5J$EKNGM_G{vbBKAlCNa&G!1>xDSn0IOiY9G_B*O+c`tsfHuA@i%5+q@RB zLL&`S(#rgD7iJ2rP$H41K=c!X?|+yEi1%*6yuqD{mtCp)3^$i=DW`I_&GVV++xeG4 zLV~BJO*7F>A3jX9{pEan%ew#)AT|@}AH0jpD<6Wh6OD&PJT(Y6mC#wp^eWKup)IUM z=Nm-z=zYnV$50Xy`zCak&!S8ru~S~~nLVmUIPnPW?1yo-2*?CzrV_;kMBeqdI7sLq zXb~HHpztV(#di2k7`l+M2R?ydp@L#ndARq#vHi8B4yJy&J{wSqVjo}_E{t=4umA=9 zV*Lu<@j+Bcq%x)P8+uieX(Ug%^b;~aM>5<^UY zU%M0$W?=32W*0F*CVP}nP?0ks)$0fMO(?B}JaS2z_o4JyXEesuV0(dL%^G&dJa88K z%Sv{EhtM_ zr-*YlVH~0gBi=@2>c!#wv2{>9hW@sLO7o%kv%HZxj!^7GF{|Dg3=TVLw%>0$*XAAfERd57}J`orDAbb1Fy~&5}7#2ZtbZGyGvmUY6txV#Fvvv)X zioA*hcK|vqV$mgsAcE)YNxLw*+1kMTSbS=NWn-`ha6DmZzd*i=J2HM$Ev#Vr zK$0eLfYdYZJj65ikh29L55jdi^kzt*Ked2)t!Lt@g!m!+FgD}N0F1*hnk<||ZZg1u z4cu$ER6AE@l!^y>66Xn+xsZYPpbz7BhV0!3XR86$$N;#@6M@yCLsN6jjsyiKqQi!U ze#B-^n9~uN3Pz29Usqsru^Z%Ec#YbuOoU}Tk$MrYSP)6_Oe?N&oP=gWQ!|_KL&QDw zR8d4B&_KTsMeN6OgBUTm>~>7HGH>{apU%d{#u*}UXhay2@Pq=B7#NXJEM!dqx|3;t zE`wU_2kL}IVf6ys1o4QNwPml;C@U`?^q>=XC|-MDTI7t)0T`Lwz(|F&3STWyI_bK= zf(oJgsx=?i4M;nZOam^4vE0XYA>%&51E?SNRK!G>+JF)fL(ThHzFf>Z;q!QNt}E1f z_lG-ub}3JIL_Q>^RB|OS#V?Q7-Wh@m8;8r4^zX6WF_(MB*m%XiNk+bjjlR%eBXF84 zA~Lg2Wn^4|{{H#1mlAmWGV2HCeg@sBf5;=Yb*uCaYmS`XF}&JS!!a!WO>H@6oEY9E zM19|9=QJ&4Ir46Uu<$ z^sB$?#7-!wKHLn6h!89hA}ARiZAQh#Smdn`p`RpBa?aIH5KksS<-72C7v@iwRGJ1x zM3`MOmPB$FBzX<8&)zgk6(U;!NA~1nf$Y9$gQe^C(e3)cQO_!f{~@^$qVr$_ohZee z??Ly2?syM4hQebLj(51>1V2fg4jW zf-Ywda99~!z6><#f$8`(&i~-#TY2r2?O)R}5o*ED!Y?8McUZK-%@2l5C$@ffLTXFC zMkX)~XuQXGAHbNO7RCn_gwHFOr{ep72oUi2@1$S;jF#w8=U+#9b6r(}MxC;&`$Fj; z7Oevixws?&kxJ!F51^`WBDv;DMSGci9E!3pk;z_B)+2KeU`i!&*qFEXTxq8{(Ga5o z&SU6P#29;^VMNkO^hC&^#7rAQa86p`ct*yUkSm7h6k=mPG!H!y5^rq8CT(EN|GkR5 z!d0tjLx9?U?9GHLsz_piKs#x)Ly(`p%8b9UIvThIxU@AeU&X}F=cXskG1L=Bs!H(W zX}AO2JfxNJUJ`mx5n$SiT3Y^ALi8Tr~3|@>R6O+ye7XH4kN=^xHi(uDM7e@h)Q+9erkyRRV&Q6(8SsZzk1SR@%y7r zK)CPNQTnRl(>IA zx^YwBCc}A1OY-DU$6j<0{2Fw%@m0Lo$d~8Bh)#tO109_ha?Eq4YA`PB6Y`!>%`6uh%HLSvrydNi^Q@DcBFGI<+#Dd??yoc zOa>4m%1XLMB$LTtIKc&Pzhp5Xmo!7*Yt1hK0KV7eQbF}EgMapIgdPgQ16!qEMf%$) zi)!0<-pwXWDO7fx(`CP}RDAwS+;@nvCeT#d5cf1(T*TpzjFSajn!~EL67-s5MBEL) zjkKkZE5h0yy%K%$-hml?e-AJj1t}_Gm^i7Ps;v1~m;9&?8@qh5ND%iq*Z??-#JmD6 zkHz<2GG<=?wT>p8O(Nb~MYo9vHKBXT%XZ*|aJ1d=ZG_tYCiDsj4~N>A=)8#qo7VfA zXCRk^q~C9T`sH7dSA3J%UU0QZi;+}zM8giK6Tj{&IuYu^Hfa|Or_%J8U}IWeU+*4b zbC!<@KaWHLP{7?x1a1=FV?&aEc0 z2r>+g)F+Aodla`)9RjR9Z46g?I10CzAP(#zH04n(XCi~5ljO>3G(;5 zP&>T?6h!82o8^w(6N|Eai&h1Z3gD~}aU_KPMCVIJrlNO96zQntNF534M~GP-?ji_4 z&J$=99qmJAZAtLx)=)8{@di=<3@VvAREijHejU9}@(anUh}|4!VFsCfnEZgDa+t1t zZJz8-fcT9n-;&vm_QP3wj$@$<86)%O#1w~Kk=pf!dz#>+IQjw zY5|s)4;r1A&hYf4_xid!AmE*`ZotS=m2zGl2FUP>CqzhV#U{|kC+FF_uP8l3ue7dd z!fO3HgHi7C{DR(8*We5VZg0_1*o>YNMZp9vJu)K*$K9e8#3h z+y~csv%34m|4ztiEgMeOGAzph`5vK*X!dckh&w@05XLW-g{BE&2x?%o1ZvYtzFGWT z@8h!>?XEePdU1nh%r;-hafi6@oV>jJ0Pdh++t#ojWKFPa-hNM*6Ll!i|zxEvteZP+J+D4-6hFhSPI zy@6c90?o^X;ORcqhb0L1V~4{4adw^Nb#+mwtWIO1n>x=3C3In;y0k$Ag-(b zb|2tV>0CK!0%uY^r5h+e>m#cg+RM-Y(F6l6noUxmO2#6=AqViam9PO>Uxf2|}U zRWwrTOpcM}CHj5Oc45F75C8CWqXuGoeir&AiNC6{si8|xCl zsc54R6DK?fjSxFw^hUvPTrktU`_r6Pqb^6p8YH7zX5Tv+b}&;yY0Ji9HkYgT zVi%ApSC0uBfzS`p{3lTQ>(frV;oA$n=EGgYDBH$nN&4fnz`zihH`+EdUpSGmBl(?3 z1fYyX7`brI_F~x_=5uALU(_NpVbB8*97zQJi+r6DMzmBUw)1cZ;K9UYShxn2H=!tQ zYT9BR<7cdksp@N%{SM$|2!O<}5I)h8*JdO)^|HEm6p>~-jzLxLnDx)ewFDs)%>C_= zu0c?NRjilv_~oSu+6;?@asBNYpnMo3N)yX#Y)_EDypc}T|JOvJ|002fslKwMEUNrk ze;dZkz>m>~gi-g`zMAsoN3Swaflk0swg7k5fhMt0BSZ#rV`78=G09x)Q;-J3vksN6 z0{^8<)yLKVjt4Lw_bkRLqL!M3mhlWu1ZvN@@71o?+5&FE>O&ezO>}KZhmrtyN=WAo&G<-~~nEHW!inMPg>K|9spGZ9ky#|Zp4;Wkk=KFAH#ULmh zf(@dS*`Y{m$~o;js1$2ShYQTDpopD{6@h|*!0e$-OaZI~mK^C?LW+@qPKIe#&n6<{ zm^wm(@m)`~{QBY@oF*D(Z(EP|oN}Km``;LFVFMPq==m^8{B|ckx2P73zl4h66O+kI zfQ4R=&Ke#jQbRKBhYS=Th`?&;nOjgKlVR>TBiScO%ZPLp$LtC93yC#3>xTjrq#9k0 zsbilL^p`-lfC7mrVbdimUrettn@u0&Xv)zE6ff%_NYp)j9>jlAksL(Q0f&Cl;U&%; z>iK^*LTbx0$3PMQ!fe5HkBx<9Umkk#WJD&P;@_#SBsh(-QFWY$0h5K{fM{~JgufX| zJ2WyQ;K|{#Y2Cz4_UoZ87|Ah#JWS~^fk9FrUnOgYKJX+e*$_ed7sy=D;33H1LfKTZ zfhqD_G_v^%+INp+b~Cti(&>u!9^}JDDVT2^T}a*zBNUWnr2mU>3;}j>X4l&BTw<%H z<2rklywyA%GTf>67i#qZlBMBsk#++r;T<&U&^d@Z@7OxAm172m>wnz}5S^`T>nLLX3m?pqGdWSh#)1GUhh*vgRHD z6i9N##{`US1q*<*5nZu8jWCTg}L6t z1%K}uHVlN6k zGI#cy(&D+%K0s*X+9zQs2VaO{um$wrGHvOgoafXju1BXj?ZKiESf+mZs#;6r+wfx z(7l5F({qC_fT|J3>FWHU@c11y75&9(d#MEcm5IKQ?z zt%Aa*0kad;KeSQUWq>(9n*-y84s}-z(dQvC=))k@TIg)ek2MJ>;@rOOxdXz4WE$~1BNXSrXvwi zHN=w~f>_>P3bp@J9<^-jL*mLR+$GWk2`5GKV&Nxu`K1+NOn4|K1+qRY zz-(iPMf2DL)JFZ1>mYBRX4C!T?CfVYHWw=dl0PSJJg)jmuAjeFR`JBGm97^r*~mW|%!8!@S@6t}BgQA#WSfdlISRB;jt)XG(>ynnbj zI}4e%h)Q5zZWhv`6ppRJk`3IwQoy%iQeczMD!^(oHZ}(lY?(J~Sb4js!@|Ao(MlQj zl1}%U>vH%TbfTHr*(-t`Wp56=yJH|P`!bu+jvaplLhsEL+cb&PS6b}Y@%XYI!o4Un z^QTo-3&l3-ek^CE^(@wXdfaM?dvQB1%QL#VZfDNfW(2Aw9@o>`hCTe@B3**R@x-xv{m*|An0<`@=hwWN3%l6x4E~RQq7S8J-us`gOjw8C z{eQd+e=wr{e?Rj7e^CE7J<9~yy&Kl@JXONK3FluiIAu=1RON{+c#NkZ?scR*PRx0) zfA5wr9Naix5+g~&AFV9Oc4j`ab5j%KGR!r{Z%FAiIe$$~qiGFhT(7ixR>N9WPR?4t zIeVsYOORu7dnx(eZ1Z0gjeZi`((R*{$vHS<7G*BV;bFa#`HVW8g>HSiaxWr+ON8xo zyw3C8I~(%Y8+=!yfz=$rP%!RO5tLjbMol5q7nDJT(+sVN}``%=}Bv? zP&bjhB+s%kV2j76l~GY+1*y-OCnk2x__F)S9_M~zUE$Ud(@>(2=qb}pou|f_C(n3W z+5ae)^u!ukh3DHh>*veRj<563eEE3E@zFNguG?M-@f9CG${jsQadvi&R7=bm+OgWI zB}b(C_j@UJfwYZNpV>rT8FeNl-%fkM`QdOrDM_ogrUbve-qIDT(oDWE-Q5)DrE)n5XjVM@x>8 z{Z>6of>xnkj?}%P=?dfYW`k+lzYV3THx*sHK<7DMuzO=cXu#p;uAeMI*2yroQny#o z>@WBB5|FX$5oNYv#G;(ZFtAv6X0)_O!r_See%}tuqKg=e=|Y_pPp2;#ylQ@oPqaFG zm4F_Fe`eORv@5t^dFIx;tkY}nu6L20yR7=*D7`m_`?pA`-*p3>DZ)ozUKbPF>0{!R z!2LIrWiF&Y?eQpC6JN8^&_wc-=K(!Q`xSoY9GHxZB<8}ZOM68rGwdErEG?|E(d&h> z&DMKNEa4|b8O7N*_E_#O@lGhe>~~J9`LjjlC3Cha^ZLdTYaW(H>hcZ=7noz?vpJ%O4ARr}-@F+Om%#zksG51ZB|?Z0Ao zO6}LLlz>n5H&%DB`O;8PQK`PvRQq=Bm;S#`e)jsHpQx6_ss~3Hi|59fGw+}5eDyjj zw&=)92KLGTRh}omn^tc-AhaST+Viq=0khWx-B@4A_nX*vedNB#bbj}=TiI&sz|?E^ zy)HXfhHTmIpF~aB(7L=M)bNkwoX&$UpDifAYuK2s(|)+RU)JJum)yh{kXBq#B|J=nL#@9|J|WHuRTGBJvFJrQ8}n%vaaL%{m-feHquEsjDc=sf6 zl})jG@9P$j-LQHJ53!$o3j1jz$?{biYgHmUf2wI5$S4YTTklb__kCI3obVG(YTo5} z$y59Cji+*b>TJZ43*A57+T3KeOTd52eV%1if3<1DM_wP<_m?}xH(GI|ZhBVq_{95Ddsxs8r^qk?A-`K#c=Se~a<{cOMvHmCz6$d{ zw!zu0`K~w{=jgjBs^F^UA!(JXs+=|y1&rRB zyt(G{h#SrIJgpq$3yj{J9>%M+z3+V0SUET2ZGxoYk9_4=TUEh&_20c zJEwJb;nlRLfx7h6q-AE0s>WQWz&^jC++GnQ{$x(ejiy^3(fcYiq%VY#qj zsaM7Pg4&6kOAklBSUgqo-BOZLn%k)^n^^1hqc!4mwn(K#baD~L=vK{MQMT&xJDDsfoIWd86%vPR&@#KUi1%&&A3}0$mlOhG;3V3>im;PH`a4& z^wGuOeI^6z6(3QLC06{}CLpTWELXqNrb&;}D%bd(t*4XAoOu0uC?=C@fo@ zxqBzNUHAuuvRiP0WopqgR$IX9lI5lN1_S#E)k-d5I@}PPCY57!#Xuq(9_|87dpoA-?|dydeZ`+Mnn2M2w~4D0Nm+&gvs zaz;kHsK-`tadF+S$`E&%6Irohg%B+AZm?+Y_|Iv(#4k{`X2pZm%8^ThzUJ4$?|eOe zQaa4%63uwa6QzUeW7Z29f3tot6hOO*t^J6yN~>#}O^>}p-Pz5r_uM!a_@{2m@0*`5 zw;fc-J7%}8cYpa2^$HHVsFANm^`=XQIZ9X6jts}BMlQ4WyC1vt%Is{-?@xiXoUC%D zV#y7CLOi_8dv9}hzsyqonF)@|~6x8%7B4p!hEv=59Al{g$=_sE+!wX`tso0cGp z-lUDJwN(~;`p2xX>^ZW>kFNrrbQ`{4k!J1rtdmSDsSbs#gRJP`NVsOFxo9ek(_v7~ z1+(t2{noVt+9Mz+(lRi}t3EWm>u7vQfEC1(hvDH2Zf1iVS_2$v!xF$%;PoXSN zD9Xv4KcS+cpr*D-IYP=8_DDc9j>Vnzu1&ssH|Lc3`7>1zy;6U?HkFC>N~M8)Z>H;AZ&(GgtYqaK+?P5%A#>&Y&z)bH+*M_n z&R4zlrgr=_Rf?^sWg(xPRq;L4_W97JOPm!})C04CFe2;vKitYqmUwo}&rafa-PV!I zen(8Me{Au1E68=*qFgESLExdhf<3lE?>ea|>1$tby+0Wu=+$D`(r+1^luYlW%vJd4 zF~`cjMdp64wQ(L|Z8~HT$~i_IBm|Pyu3#hYJA|v~ouh2`Y-ZxTnKhMFt^yJ-o4gSO zp#jIY`;xQJba)sT=n0AfOf0{3W2xxn6cl1qBBZ)x6B{mr|C~A1Y>X0zIET{lCSy2d zIZ#1gG?(Acp~+k3PDLGgo>xEZyZOS5#m%WtREe#Er~L0=xF?v2`l)`gEoE zQvmlP%-S^h(_xwQ@afaL=n_RmM_ahepk4kZv+T+NKycLg`T1Uce)qP~!XVn?`%U@t z=QmIy-@aXsD)3fG=h0KA=+Uf>YA`}ASbxo89p!quCj73piwB=$v)x6`n<;KLjkR}I z@IHNI@%2-W$L@Lh&$_d$r}i}!Ur^gK+&294(DP|Js*RHyzlG&6_Qz%Qv9_?vI7;(u z^t~Nh|6Zjw|6bMirQJ&6=hCw_H8F+>w4SQ(w*E!pjltgFwZ<*1-F&;b&rG$?pDCCX z&NNDlZ56z~+lt*Ic}e>EvD>Nz*XYdGRLFilTz)I~o>6R=l>5-DWAwfpw0UI;&TcPp zar|9eF^T&|lyBe&F7pP69KETUv?r=;RhbC)?Il(|qe3>QVqu ze|(l6{}~^bJ$rUNz)dDDuJ+4X0P7=FdC*_*hPZPFKmR(MP?)*O;WZG-sG=SDrW!;H zIEd;)_97Hg^)1&y7%L_*mkBN$2Hkf7#uD00-!;09f#Du3d~8QmjnZN9Tv=FkxSd{C zR~P4_qM||;Y&mNyI^}p40HyHgWbwHgTxXQNS<+F2Kw}f5?OZ@Aw=66yV7exqPw9%l zio2KsEE9KDACvSpi(F?yHuCWKb6Q{dovmS>z`wyrJ9!vY#3zrOqv(Rjv)t#J-N(!6 zwC2mu%^T|3l=zcYV_kCv-FLZ`ylFzVTxS!JRF^R|YizAkIm{j3bWF}#ic`$=l}wSe znar40Mv?7Y?7P9;78m)<5B3CIJ3nux{6~#@tzY*eGu>hZ=@gIF@1kFdIm|*r-=0%W zx$D(;X+xE%B^9OUn!;?3Zse6Bmeggwl<19SB^(7pmYUHR9yzR z7W44(8jWcbxJttGdvNSqro~QjIlz$mitdNIG5AQQf)1>Lw|NoRtdVD5e$6n`wfKR@ zi_?{g(RG`B<;e>G>K-Oj;>rI50W5{;Lvji(u1EiVcf4|GuEV&V&}Q>LKNU4ztNFW9 z&~fvF{}?^{A$s(hS=>f}@3}vJzWK&9=j((7T7CUr1;WQ-YV^o+-hWvxu~Z1@?9$Rw zS2gd`&)s@C@855dkEt;OeJ_7|RQxX-1!kQ3io`DxXq&;waJX+7v1 zuEvjj8&Drx^nTqn)ysO!+sjMf-n>VsR>QODGryZQd>dC@ArPq0&aj>G{ttxti!wo{>SuYXTO?p9PqUS2?-&FLp^wqtRK1_G_s^DQc9 zhkR?gazG!dN2p>1Ke%MglTe2Swp%J(Xq^E8V!|byFgO@6u-X8E8;$ojw@A$o3IFWv zy`Pd78@m!nV%UuMVbhjxMrY0#V>DJ`>4Csk+1YIJG0Zf#sWe}2f$a`3H%CQ|J~*0WvL*~uJZPyC2s0Rg&e;mDQt}?I_qyX z<>twHIM2W3bD6>F{&s4V*iM<_B`#+^p0!?ad^y;^IeoOa;cJlH+}c$2UTVs_u{`5X z-OcxmoWrNqh5z`?$RTLLC)Bl`1-1MB*k8Av)!pTB?K&;Or%M&}LbEwcobvbaXNL^= zi39wm4pVNr+!&0#^?*ZcJ*Zf4Y+@6k#RnnB8cLp>t*yIRR#Kr=j{6<{A2}U9dk_I^ zbGEYizG%3ei@@@sw6qf=2{iH?4}$Qgwc$ICbvHC}p12%A-ov0!xt~2f`Y?v&JgES> zSW%B>RSRA|> z`Q>V8{Y#K>3V~LPl;JWCg{W08J%H**!NF^DS_Qro#;EdW^79(`PE@xtLoh?`Hp)?4 zhEcfcMA){|u7GfeY0DOGjAfUNQr)(1AKlYojd`{BI)@EAfrr?5_EI|t1gv_xtabad zblzG8`4{i@*?5FL=F83P-0B<_zBaA3`Lf zXK&@gn!1!k_1y`%^b=uKr0tXoS9`>_wIOv3cdv*sW{Z-GpFj9lre0diRJmk={m3(O>JYuDq$JFUKe@2DJImXq_Yr+KIlZZKsW5O7Qexo&|q{b zLTW3B{zn0%f^OyyUX51;Ll)y6dKzj#%i<`v^q}nAEM~b24-2N9+ec2OG#S9ALN&30 z;*P;GGjnrY$mfvmW7A`f##f_sulq(0s=H`cfS0<$r*wya)6<6!-Cv%I-vOW)e2I^r zKNn*T>n$YIJGO79f~?C!Cq=>5_7K)c?~Mi%JG&23kDYt>t^wiZ>)>RqZo_WmEhOI% z4O6D)lH!1bgL4?1rE;hlkyE(if|T>Fxp_Ev4e8X}X2Gp&X$wTMm0ONb70=88|N z*e_2NbOaX##HtK$fZxOi^fB*)RdNZ2&Y5WPSU`bZ++&%Zb3GK-NU-7E*9RDnFXwJ- zXkU7L(yGOlm)fI_Ax@dDDzhT4D$k>?r||H6L5Z&09MhhVReFB98?aE5hpN(wZ-_+w z%yNqy8D`x6ZMZhM-urp?*4qR*w$?un6A1^I>^Dcib?(4ZK6*~Zr=Y;iN8!eey-=!2 za^fuEfg^0moH@gM^ANlIgUrl>C8zhWpjpVYe!T}&f{`yfb_ohHlJhKbT{Usl0aM)F zAFHa41NcUJ(F;DB@HANoQpR(b4r)y7h&#{Aj8lQWg-lG%Hfd=t&?HGxcJ}25Jm@p( z>YlJd;E=Fqg5r8Z;0?H|c&4NXDu+vWqgbcM~COgw^04 z#9yxT*tU(Edo}VCG=0poE{R(Hq(!rA!e zV^K_8a`kCzJOD!=U+pj#)l1i8=5!qy?P{xB+`5K>RrYEwSY*c}TLG%L2-{WfYM6Om zrhI5SHy>A}Q*={Uzv<^vZ6K=RmaZf0uJs)CZk=b!)riIxhzhFjB zPCYU;g1ur1I_`IHqvV1*`uvEU0O?qt3Km%dp5e%o-KV_8kD+w47T;QLWE04BQn+03 z)Hp}Vk<7JMmmMfy2F9x+o3~hdcSo-AzExb!+RL94S2bMAVww9{!@ElCMjw0qYL^wo zrQc~C_w|aNX)^G0THQayW25CN-(zJ~bm9E2;emrFB^j+k69#PvSk)BJdPW}9I-j1% z=6S4sZL9Wyr%HEmJ3Ozt7Aona*4#p7xRM+c%*f2KGIk4y>C=rH*~64Q5tzEs8bnv8 z5McpNd>icw)O+Uh!x;vc(9G$NOsC&e4v9VXY3lcz*zsc;>tCe{+5}dtLa^U-_(YZ< z69!hKmkvUbeh&)`e}%i4V1)QY5@L{IzucIBsbkeEQvwO=a#zBjZ;JBxe|l>>F;lLzisH>S(Fk{9wNQSZtTB!2Y=SrU1ClW zo7<^#(uIrBWl=)vM~0H~NW$|d`-$MY&zYpx;(1F>Iqf~qyYZbSKi?)g(63^vDDKdq zR0bcUBkGLIs+)(p-;{HfEXO4;lf=wJJZ1$dBYFk18nh; z(yj}lM2RzIC$%_H7iJkQC&ya0vwV2dlh>}C7j*L|Ma?dCKeYb9vdWpJ>{yi8^7G>= z*WPX(tA5R8FuOFWZzHl4CL(wz`q}et)I4pm4n_AWZXWMXtWcew@?<*o+O0{o>7T9~ z$wmZ}E7smOwS_yZ9%dc)A$jsC$35u}cY6m3#D-h3vAf7aKs{93YU71ob}?{HqyVxq zGDQxf$G}hC_Tp5K2j*VvkjQLuAhm6;{k>br4YgBki{S%qF#=PjHG~9 zE(?qUCK0G!e;l;JI9C4Rk|QILkG#D4oP!yEen&AlSA6!HTN|Uf(xr%@h$KR zYQCO8Vi8Ctb=~k4yfER9q{dBhWG3Av+*y08%MqK*&0L3wGVH*J=i! zTOh>;*^?Ucx9@;9*^PlI@?e%&+wmi= z7Tvczr^8@Ck*Wo66u`-Put!Kz1QFh&fPmXz4laPil#rApCnG~e-U`Tj*q&Xe5h-6s zF6w|^enwN1x7E3*JDWuRVLuEXnat(+`FI?D)yc$5sFB1@VbYHDig#xYhvtk0ht z*mpyi`Aq!7RvtH`e%KNg2%hikF-0<6W9?_7^vh5O0oog>?{Ao!9`)BU%~}Qfx7($c zWeC(7F0sb5-N`|JZ1?Dj6 z;n)zU5sbuCm{ZYuQ1Wyb@o!9x7u=NeP|Bl(ATZ^RgY5Jagy=hW?p#v6bsF!CYz_;x zt(46WEZBRrEY##i$j20ct9%chZ=0Yb;fG1iXWNZbm;pm_#o8*=0b$Xz+f-ZqsCl&B ztvt3^+L|t_U2#3RM7X`+UY?=fipM^Qd94Z0_4~Nkd^Ar=x_+|{zkGRCIZmZ@O5MY3=UHUf&+j?*wn*n`m40N9K9CL`iHY5Me9C($8Dzd-kTH1Gl zYr?@B7*1U2Q8RgY8V-ilOTZWIm%kx^516Z}>gua+7r8@+Mg!VWCTMcM!77bJz)*@? z4?MOEjHxkTZXNi2A3#M#L8Q6BAf5qzUpESXTI2&*AwJD_v?!)!L9Wisd-rYwNR>3t z1hkt+s@F_9R|$S>7@21)HEUmEc%kCrfm{d(HWZ+C6fDKJ96Lcc2zWs=;pGCj4#Ow!0wb`{8qWuVm^p*x zpl)wQ=SRgSlBp|`|CF)woM?OAZDN3*mUDj_Elz4F>Ltf7#u><>G~QlWgLU5%Zb0YZ zj^aTA&PJlH3z-vp;Z>pgd z1PQMO+QclY9;F%ydUNLR`yU^qhz@VYX&ntUVTFaZlOH1J4xEjLjYyrJR`+dz#eK9n=95v-TeM{}y*v{GYD_Psxr`9}+bD>Tx zl(!!4D5J|n_~lXNcagfigQla#c!`niDH{SWXQJQDC$|0O*f6r545j$&zMw3wm0p}+ z0gW=QRr6}PX6Xv+z43Kxu$FOWzYo00aVq?c5gUadXZ4Sf)xdEk^hReO6VIhw#3Aal zK)!ex_Z<>}LU>9Y&c#GJAiM-$Gl!jluIiYhnYxCCmtg+PvFwWw`A5}UC&@#SP9B@| z!f$HAlEv*uDMY+(&Sm#^4D1!t$?KL*&>VZrXO(L@YDl59zbT3As8!`0V%VqC^4o6c zlNsO9%YKJ1lPxI6v@%KK&5FBseObSAcx1oUbC>=sc==YdnAYinWRNidyCFL;bM{ z4D}T{Zi|!Sn~uN6ZI9}8B?aTOsG+qkg_>*K-D6Zp+1y|*a@mjC9UTi;|J{eh;j~HH z23fiKpet4)kDff)wdv}m&)qnkPey`sy_DjL0nhtk*y^_{*2R{%Q79cr2j%4IcL(b} z+~>BuPs6QcZKk-{no|Q39v#Jg0XeD8Zr$42c`ip)UY|9PvtB>&dfm5Yc}+2=sa7r6 z@cTSptw3MM(zL{hwcf{&TsqgS6{{`&;QP%o*!(jFeA;D-j1EeF^I>gUgURrmkM5X6_?;FE1KhWg2o0P~=-o=`F4=rb`z3jm3%sPl}_3TkR* zHa1=8a2$z&AbEdSnwuvaAlCf`W3p3)|#@+T!5g2DiYg z`mkK!Wm_G)k$2;h$48vjm}iCByZtEF`0?(_3ae0Zm9i4#XbWJtTPWfZ&htLtl+>*3 zMFKyzC%>aZk0c8OlsFc36x<$ST>9q3d(!+Gm(4pj4zJ&cJFdU8q_(KOU#2n1^lV{y3q=Eu`sLA= z;YT{mvn3c09-@<1;P#%~Lo1o4H;@w(5*s47=rP|lAfq0gnM@y&X6y8>it8}r^r_s9 z3O>rwUus299OAi5;VhV%{tC^H^Rkiut=xTc{zUsAyD%Bq*6fXlN=QWsz;2Gw(NPGr-|}6KxX$%+gG7y4mYtY@A&W8tgBbns zkTJD~1ritJt)dQpc1bNSSV0*`q3GCmt`ZRuiHwe3LE;)(RYJg!v88gML%@qaR#cRL zaILDX?F%(_da3od`dS#Y{ziJVQ(T-4AOQd)PtDh5@Vey|5M)QY@bY)9yT@+9_@x6V z6UCi`ZR%Uvarh15VGKs;*%khALEYgJYmMK#c?FNQJ+pnZv8d5KvY(EM(#sOxQCX0h zBkgq3k4y0L6~wEc?gO#sc`blRVw=cBsp=sUB~5QxS?c`dB`4CZ=HsKsaqKiZmXW~UYDIOGM`n|_@Y)A)NW6G4b-1e2b9iZ zBfV&`V_F*l=b zd`Izs(etwhfx5$5+ydVfdE>$Z2#|c{N0eHFK+c*3IqU6DG$=4{aL3`ptcVprjZMN= z+R?<nn?Z*Y9Qn#2lv)XM*?vtib@HxOd!g^miZb63Q;}84d z@%EB;AG|j=b2D=*y*+bDy|<>Z(?;3`Ve=Nw$ZUzd7bEk&+P#3t3>XP^)@k zU$X<&BzGZ(6?&gvYjRUhPLc)3vE=GJBsRWCOR}M3>p{N4Eq+LeU zq<<&`XoUqZFDJh89~-l+g#5*p==|v{LzeuqZAMS#eDu@HC^0LRNN`^0w9eLRO;>5| z33b%+iw~2$2X@jY6cEDYSHXD#bhZMYhA^a&gaQL3T`UeU%asUE*hG4X$5TAEL8nd& zdujn}M>LO9%{!0LbBL-or`PQ-?}>8o3run4EPJh6WPP1_VNV-<+!t2Y0QnNj>ZaoEo4J-5p~j@5RO@GlN7aHai`oOhIwqwmpL z*CqXbiKJuGT+$B@O^bpmX)v$rR~o<`c)(_vy-#suc4&Y9o|;st+rQ&~O6yhk-?n!v zUyg-T)0%gL!)Ygfk#NfRy6#1K1I*(WJpkVy$Rrk-!RtNf~VGX2qcbN)LHz`?5hDfK$*58 zv4Pjr$KSu4no+_X^3SBYw6ueWJii`wCx*+GBsX-;W)?>(3AdDm`5(D_Nh2^Pg`OGPrHWY(6w}#@WK2dfRNy z=(^|KyA)94*+cz~TZK}1`Ar9M@S^~V%BLD}YjgsR6I@H@^yR^>de^Gz@8}k=s=I ziv(S+uiQE_om@S(xcizcsZ^*S{c-e4M9Z-FPbIsXJuWG(= zXiHa4IaNE{jV2uo++D~j{Gc1}@Sd|FRhU=|zd}Xf%=^=56xfLXx$9XAy2@+lEFf1o z3ug1bWlhpv1sz_`#H8cbF5M$v=Z#*ubh0+3+Ida!S{&YaP;F5~!1=uHu=C(}e~&Kb z!3Y;InL<3Y;mR|A{v6o#UPAJftF(dk-rpsEO&1Ba4fB3RHLW(XJ_UNM0q(Dx%+=QK z^x*tl#Wdm4E7zf-EJb6r3b(YNs{T@J&-~zG-G3{SmvZ}_&zfbsUG6;x8a;PuaqeWc z(-!38H%}zw9bCFi1lJZPA1nbxB!6f4I9jToBTEaLb9H*v6Sr-Dt50i z6eZ~oGwwj1C5npvokx!(b);-?88Gj%3#EVmmPDY?)_KmDj!(4T9@XZ_!i^CU>2J3IYyEC;o_H< z`so4`)Igg>s~+@p3?Vc^1)G_2OIS?^$z=e-YbPf;k}6WjedZ9b^jaQ^@SD`_h|-5b zx{_!nM!Gx^dU++(@TN}Oa1~#ovGO;zalPLaqd(q0piuPERG3Z_G_&z&FW&F@T|?_% z+cE!W-Qj@S)DL95a`lD&Ojn>Cxt0n5`|BBPjTyB(oqs1tTbfA5kxLzJqrVb*T5Nb} z;l;ZL?pKdYd;9OUrvLnF{BvW9(ucJ!&*=>~G6m?1yPwt!IQRKhIh-hBVDTe`%LCCe zr%)YBEm(AyG|6293n3q51*KQBAj$aWzARlZpG;X%02`gU(M1t7i6G%1UjY*jW4YIx zyaH>j7$`(^4t~*c-~i|4b?0eThT&KHz=5Hi{UO9DJ0F-QE1m zYyJKGk!jw1`LgUqs@APFS5Xc}=g8BOYt<^T59pg90i&aEadA;{+Bwo&ZlUgj$mQnT zhCdJhxFN=csH3$Ti(!QvdoMwJkguV(PDA33xs)p@q}BD$W93tC4Th!KI=|{1+gY3M zF2#^z+*+F4w2-;Nm*T7~a(rR#Q1lCS`5Z=>rPs$H-?rD&p(;L(iD9SQS9E;#ZaMtn zNy*8@h@?Bue%MAH%h1sMy1HDHE|mDoQ2$4kjMh#tvB0S}7E}SePN9%!57mkU^xY_C z5P4yXB6?T~7Z1-hC@mb8njEtV(u|v#9(hTvl{WAB9W?Soe0Q*4#(=v0$#{4L z*8)gzp%Np%6*PW|FNTqt0jqG=VkNh8>|-_eBUnWnc2JcP1l~`Idv&w3JS($GeBrv? zaNXGNXVbbCHkJ;|=a0OnmB{~6^x|?4;e4Dq#Tmq@IBl%WDlY5wd9|BunLkoVg;Or9 zroWbST2qR%WQwwwJsu{frtUW}5h5}o3QFx75Vlj|a3K&9A{K^PE=4sqH>~EuD&`qV z7X(3C7&f075iv(YY3GV^n7h!n@{mYz_fd|_;qN{gI;jlljG@_OiSeGP{4zGr9AzK= z9BVyNW%kw(wZ*|ofx3!{LR{`=?Ob=BJME)etxed7u z07h}IUvp9H@u-lpFol9zGZ`$B3A-;IrCaN4GwBE@RY9yB;P}#<9uGR#(41HMd3@%T z6e@2f8rN2NPw^a7HC|C@6)2r5Q`F(f#G0bh8j?$KG%`_qi~t4CsRI+nF9^^)vM>c# zGESqhMiwR#tXsD2e3x6U^4vDE5@+US&X5RJYSQc5qnI6s_Kv@Ab)~l5K*_MZ zNA!`$!ZhTfXK{3Q3)+)x2Q@G78OdQ!Hb>0fC?gj;FG#BcR#W#^bVu^S@ApVER~o3Y zYdO?aI2=0Dv(oLlL-Eze!kU7^m-eYPpTETX&}+Z@ZpHr0(z93FZ3B@&;kJhXDA0}4 z5owKncG7yMpIi#`Q4qd*7GR$4hOlaf(WkoNvap~_8h%)T3JQ-*KHO|X>|>WVd9Qq5 z7Np>35eN$L4Pn=i#q0_4jZjXGtX}f=Nbm2gCq4&5mmb%TrLP6rLl7o2GVq}_E!vx? z6+c#g=-<^PR$eb>_zQzn$55#vzZ(y2AyQ>jP0d0*(vXkjBHkdI!TmZSfJGArKJBac z`p~hUpzO$^ANG%Y&YTua&;j0JS$M??=$$R)_)(vtN#E_T->%sd4b2EN3HUFtm@c@~ zFFSkpinVt)jI@f0KWt|Nb4r3=_0Q4P#IMW$TQ;&gBP2TTlxFHO3M6hUe$#?4JI7nh z8x9Z1y{Z#wbNC}L!S?4o>msZ9>PtFGvrLQIgN|CKmTP(B7sdPabbpwdaa)XTI6QJM zHa2YX=U4OJy%pV;b#2igJc$x1u=|FBzm(i3#E}fhVum|OUoWJubKXWqxa4oZup(;-%!kRrLwh@ljYX`JKWWxvXFw&C_G8SQ;=B7JU*%_6s~zu)f9G|6 z9Jb62&)FrpmF_{m+xU4hECHvSp6+LbDl#A2O^@`WAb-RDGVZ1d?Ty7{9~m~CbuSGH zL~Zgd%VIj?E{=OpCD+T-tTFT?rBJjs+SWB+5bf2%9Wnqi79};(PkbH zky*?OSAq4!{^`79T9D1J@y2jQl%~DHQ{$j6r&ijJ$E)qL`J)1drRd!$_D^N$g@4Vj zU{hOKMO_>%o@pQODZ1-y_apZEy`G$j!?NG=EEFH(CZlx+*;cV_hM20V(0@+#js)Gn zpx!!_B4@Bqs8}Z>#pCleT0MxoAcS0)!)xchL zb>H%L4Tv7ZrKC!+yL9#R(4%M8!5teF#Z3Ni_{iQ4joeJpOx-t&X|MU*YA@G^-+${$ zM_Fd^51o5GV`6B;v4ie)#ygArnu@tvsr;1zM}bwdpsf;mw!pHula|2`BUVjB@N?2V~bS!1qf9CW=d zQ-CL?^QFJF{j+BbgZrv9E3RTqLotW8-gUCMBM#e#2QM`;qks zF&d=KN#&OZGT+Osi;Pua&NOO}7JSwnUS5B@@njPJVObu_L8z;4A5H z-~_xA6BB}A_d?hSiQI=A7dX6vvq-Tu_(2VMc2eWeBmM8DXZGVLWE*ciVix2s|F3fJ zU-97oQkBZP=a!-53)#1?nAow_L<6?}b`D%zu6N_)-OFke2u3uxa(iBT6%K?|^}mZ$Jx^FSl_0Q}x4?SjwLbEce55cOL^v%C??!VuE@WtNF z&H9>rsuV7Uh`jd#%~Byd;ylVON>(w2RCHp?rAtMtC=inV)%4Ls-k z$hJdx&o$GanbCbzd5e*O^VI{&auGwIn;=cU=oUR>(QgD064) zcN?%T2-IMwkc*~hmY50r2eyjU}N_Sx6d!wxUISJdkBe!Ms; zSgujCtz3p3zcKiK`da@(y-427*}pT^JNsP4(QlkW_gsdqAcXbTj1!WhT(?>kC%l_7 zd|TZrEm+?sRnw((?XTTlT+g@u)@#&d|8y?9r&dncg@KeR#}bB;)V>$+t3AH-$oYAW zk&@f?{;)hfVrU&sEzC6u?^((d?iWMR(0xOI4s-F$IxdHvV8G=2efK2abIB3c4-^ax z-cCCT8l0aU!bB+-huz!vHvBUdAzOD{6oXRh=tBZu16{pIyM2zSl{yx|0w2~ z`KkDs^Je%I*K)tlXGLEAscRUWAMaDQJx{0q%x=#Gy-fnrT493Uj&1qk=GD>2GR;2q zFsF~wW&dOOuPQaam(uxe{AXE;GBc}WCESzV!G%w*Psi<^sqB?Ji|3gbv^Z-V#3_+0 zU&fiu95MEdTVCL|CneHl+3xk_JF0YgzCU^KNxI^C;}FB=9gb~U79Tw_@>$*=Efuh1 z#x;VeIds5#i6LMV_xbuzDPf_E^zB6M$fhL~byb`jdkH z2&y|x9+ORla7`Lt_G=92W;Uf}UfuCP?|MM7PhrZKpbCS8kH1#5N0*K}H}z)sq`UH7wENa_FveqrMIUyHLS;J~6HJIV4Q%Qpfn`auX)Bd@Qqr^ORtp zZa!=8rku*JAf&MvuW;;GQ;&4*iCs-1FX}|D%`wsAirt0vL~`20a`$__NyCEM@~&(K zHmm=6{-M~eNiu1|eQ?p}v-cWt5){x@3)F7l-BgvaCh)5`w}D@|H)vqZ-{OKQV* zE55YETQ~hW?d&vXid{9os_|DooBZDHs^l_BIW~S(1;UPygCX7;UbmIqR{G8F(K~6t z6#iagR!(MP+^3TP2NufJTP|Io11W0U%;ZRoLsZSRw@0Y{$%W!0-R~n7y~m<2ubXWf zml>Q3@jKc>|4F30J@$lf2*-^x3$l)%j%Oa1c$6Z2z1=EYwdT-r1w(_-WTsmI2P+UJ z9KmW5dmQ#XMSP)CG;_H3SnrQl680Gg1f@jFR`*7;uoWy{Tewu7i!`;kE;9RD>Z;yK_9bjvVA-K!%q2FvUyN zt4kqw_s?xccNDlK&YN@J&QLlPaU=Zv74`Hw2rrx^rzw`2Q#uNj?q!#CS>Ll>r+r=D ze}kPRXYqh|({A(tm(^DZ-TLH{w<6%fwy5t{0q9t|thFrOSQ_*3|##&C<%?rV9I0-{25 zQapzn4_BSXM?8J*$%z*Zoh9GL=Gi$llNIZH6QfRgoK2ot68MbTrW(1*&92Y#TUA{DZZQJSmM)^*N=!E9rWay>Q4`Hci1M!z229v&n+%Ycu}G6tDAFe zY}b>W+BqH@i8G5EPcSl$B>zl{RaOd@S56fVVc|VF^f)w$bBQ(f>KorZ>pAXK*l-tzUl1l3Ng@MIo7i zAjEMG({?SZdA4_IzxR?WpQuna+i({pu4Om1aNQ*4-HD{33AODoiE98G5LVeQJ#udP>KbXnr`r7RtI!aY_Va5nkJhpZsCd7-3vehW`p zzW^Tt9a9J=bKksv|-TTV!K2!E9*Mo*4sK4r)QmL zoX3P47?k8{J`2Azw=-qh%w*DF-TIUKY{I!Aq9R<|I_FpAKMAME-77fQTqqEJIW&$7lRDnuF79-u&hSfa+0CO z(erp`;f&?tPuW3F+&jN|qrflayT~S=z=6%|dA^v<-MpJis>{v$^(pFOAqHY&*$31) zs~udg)+FWo(_)oO{nNq<-bEV_)DHKg?Z1mQdoPu4HE2)gtE5pM(w+Pnm^5w5<72Bj z^W~T}^X8@90}guw%iJeuyg823g;XaBS*zLSsH1vO?JF9umgSV^g=`n0cnKTPiJwsC z+L0{7swuo<<=_v# z-nNGWZUu4T^Fys_>d(I%%BgrLk~wBGyXoKe2#o_n)T%F?3yi+5=i|sLJ=A=UbgoyI zsipzxqa5j3fW|JtRe`|+JrEv9<7J6&Y4(-+rr(VJH_Lo zjBZ=k#`J*OGgj>!{C5eQlX^17Ao1|>BffrkhC=6*Kj|G~C>*-BXGCSd3E{OK=X{#M z>QC|mj|-pqXvr$ugBbvjsu|N7HDzIEmZKfBzz zZ^JfiK2+M9Vu$bFvKlV5C>c4e{Cg4iIr{jV4%X3*J||;VCL9;czha_@?XoRZAPie` zOH|Em`KpeJo1Xt(H@Wq12B&|?Pt1+$%$SZ_i%n-3Qb&TMOte*0mg zN0<{9lrd$x^!DsKnZ(0yp9#t`tUtEIX%-r+=-u;rXid}eH{U)PUaDwi8%q!X(GBmt z^^uEs#6@whd2W}5*w1zqE)!RJx6W){;(gi0HPo0LQ}>$2k~K@`t0=wLGMeuxU&g*> z^N6T5mb+*|N8rCZCf@<0l`oS7YIBvX(l2e%+{5*I?mMNzOyBOyyvoevw-%O($j&Zn zLsp5}xTpCmA@PM<>>s@3!`vp;DH3uk&g@!%nU?-;cS7f_m|(6Yd;HkHSh`77fvaR0WouIlSB=vItioS0&UXra zzP5|^_C#}E+|#yE&HL+FTtjm7@YrpxTE~{7a9<0a+qQi-*w-40C(ps4%UD?E(u_hG*rZJ@v)Bu{0laENBzL&Lw+J z`|i7B$rr~ZDC$Gj!bKm7mF^AH>twCGf$mhMKwsu8fLEc zys>N$q)?tWqV}c_LzTkM%EV};NC^>vhhqw)x*;VdwhB!xw5YG1PJs`YC+xY>u_G0< zgrzq6pEtZ3E}UxM;J-20>BAvgZfN zXaTOy(*fZ-^1-tKr9F?A?|NdY%OfZ8UMo5;o9o02yJFA5%`7fTpDVJ4J^C)~ZJU?) zC}0OcT0we`kAnSd+`C}OZRIN4%3tjIPiY_f615Q>zLRY&oA$hS=0U+f0qHLtZm1|8OFACpeNj-Za9cG^K2vRa zHTzCC&q>oRr%IpwqW-mzBAX?{aDJoEXKTAKDt>-o66#* z6~O{5=hLUZp11K$*)BXer~fh2{QPsC7V)NwCCbsP?|q#Yj!j#gzM7eYeWKlL6!&!Ip!^xgJX7?~-j3Pbak{eQbwIvo z`1&qUmxR<}zDd~JOMHGoIcPoi!g&WhP*Dkmim%pqL-Z*Z{mL4Zf$HVPL-%q;+O_u<5bHQ}t-89p6u3D6X!#EtDd^_S;m=y< z&TRmo1ATqSAPFG?eRPC~+NSzpXa9Gy)G7uIfhLSRfq4pIPunbbVoWv1eI95AWn zE?XH6sjMhYyCcs%sX$b>Lr&f5CI&)>Jgh@=I%BixJB#jaSxOX)%+DVj_o<54wT9O* z?zs52mv$@V2j*8Kw~LaW9;UW`YAu7@LiDgs^yMY`w(;IdIK^0hP3!0H32`f>t?(5$VNZSxya{y z&U9~$&pOMg$H%^7yXgi}^7{*a+3(U+mC=LMG#GoEqMiOazpZm6_U=u=gmMr`t~N9-igye+9qxEG5xF54n&_jpeC^v$AejDtikxS zMcHf9P@mpkdua!db-q=q*rL=&zWwp#s`01M(v_j%O0}G~ZK&H}y(@;u z@C~MDM?^$uN8boaS|=wg>u^H<%Daj?+m)9UW;~+^e6rp(JtyZec>LOI;GyXA&$E9- ziMCONKL4Z+J&*odAOB;ys4|o!Ib|6xmY7C&CjBuTo`-%DdF%eJil7yDmo8Vm@83;Z zdeBpFo0QYZx3`$tj9LC<@o;Py14zld{^kI!dNxDv!hGMO&d)x|vywAh3y;5t=7)K) z$5w6fP|n!-^0w|w*!|@&+tw_o)(FZAE?!r+N+)~IU*giAl zQ?DjiHSZKsdmlFEbyOlEQ{L+4J8TP*`-kAWzsPK09O4xIYv%CcYKxRC?Slc!o|tQC z@2U!|H{uNElQiA8cf+n{I^wAgjtVvkhIhiS(wB2$yEJK=5ZYd;1JdS2DJQ)HgO1b8 zgVWtEdpnlaujonh-;*3kWxB5Sm5%jsm}yY|Ku`FpUNsNYw~=5?-}Z7qr}QfNerUU; z=1rZxwRQ&+oG!ODR?ANQgQ+rT%Dvt4%AwIx?mw-%cZh?t@6WAyx?Y9t_FRkwE2C#x z=87)$4o1fU)2Q+lj3T2wIvVyr_9AsR?-iOh=fi_lb%74}!+!6A zRDS!ccL!VmaUf;3poihk4u@gdB_KCm-s{AnNDwQ;-h|;G@h@Mp&Q0$UdOe{J(PAlF zVYj2dyRA>$iR(fPRD7nMbZ{rx@DdLu`hH;gF;fUe34ey7Fv?|w*3j5U=EM*6>jPc? z2&gC0!ACDM)0m5)7q5bip4bNALkz-$Qg|W#igLlTXH4MB5qJRvU^ihkT07;qg383e z@UgBg&0sN)i@V~^pMfV0hu=OCQeDxSA5z8dz&gy<<6V$2uX%?jW`oVW7|neT8V;Li z#VT-LZS)Dgtr)icT&+3Fqea8PRhtjyI6s6XLPsC?6M2{)k}H)j0@pLtq2NGsaWbEn^&WrR!c`>TIk`3i`H z2IEMyPJEHE&XjlUE?MpnOD$qWy)^P5b-LLnhXO*%*LJu(e{^&pxNDuz zo`NVBkzr0@(Q{L{b5n*4I&)HcE~s5kQu7S*mKjkWW9QU(VVygdo?cR3F1BF<1K#Gu z$(!kT^AKfF{%v|g*-f~zP~Ml6>~-+aYWz7lgYnjW#PP?%X(xG4Ea8xaO?L6gT2HMy z?5li-bARTs$*eGb)wtS%(m%5iXue4f>S#r=MJP74M^$|#WlvtXjRg9f{V{N)%U@-y z?)jGi=`UnAnDIEy9}QAewa@*#zW(LFcc?d)?j)L7Q2PjQ0^wR}tOUz4okt3|+yP{0 zO2cy_SqO@NNLdg15xhH6AJEF?L^uYYG11bHzI}R&EHH88d+<3YCntsGRT08IK6z#SJs5zI7cYHlVrB`~2H zE&!znj~zcOqKd>Y4j;e@Z*T9Ul#~D{xvKh#V7>*;P8Ji<2p$Z*b?txtQMNl1hMn?s zit4~Wh?<)IFyzqJCY&9*&{EH7)p_ZXlkJT&zfViQ-I=&^qrFr8yFtNH*?EMw@0m2d zN?xnnwdUCqwfNzjUAj{h#o}|lXO4SKGyS9G&3IMKFU)VwUXemb^RB)_o#j5^}U41pkd%eOXd;Nv&b4f-+b7A4O z32Y+L?5kDwwr)_`l+5j7(NkmG;fHdJagA}NnZq|->z8-rU31!7JjTi+WxC@}$o!B| zTV&gm!)WGEv(K@>?f~}!@@-H7p;^at0j9UosT#*lB(>X?V|Z9_dycC)#u1UXgKN9{ z9P5Ywzc_$3*nu3fgslod8i3ay&p?T}l5;LZ^b8CP+PgC1>MhAFy0vCo!k4qasnLVF zO0&RnhJAL?2vA07AOYNjqsqa<KKddSwbm@zS2Ir8%rzXI38*JY>b z6&NQ=9SZE?ud9~?RC%Z$;bM^c#?Sm9_lK?G((-YxtS(_)#=UXg)2xrYX#5f0^IR7* zq_i~MCHNbT>E+lc9#r#Yu`tbLn#?g!U(I#(6XTNa(zPq#x3Hw>2NNE~#rHQ$N2obJ zu5$?9)O)g@c-Fcd2si?Yzk#Cs) zqWxR(RjLPGc4L>@#7lnMz`&fa9+ln37#B<+`TqD({iNhQ-b2hgpMU+i4O;}5VR5fs{nIAR zvWyTjphiX(u9S zQ%5oPRKvlcX9cBZI?HFt+Y{p>yH^@x?LrxRGT&2?{3484sx}`=fd?;a!L}{)&A!5; zhEGRNXuU{HyOTds2V>M89Ys1RV}h@p_^ zUa=K-gOl>x&DI)2PU(Ru`pb2K!8?Ec_aS2Vpb*9{hLJHbGBW!(GgW1QG{a>ZRMkfxk|QS@!5zG2fT zZjp~?r$a|gVCH+2l#^NBSK|`=E1lMQ#z6ChZsnqLWelK4TO#i76g`Ejh;AnF&aC3D zh`AJO9V)1F9aeBmaXEvzhWBO9EQ8T85HnH9@M-OX2a!|*3>_S7C9&!i(mrIC}#D@m0ASfom<=YMMG9v5) zbZeV+vm{)||DX7is!%l7p8D3*7O=SRK?}xGY$F_$!A`;%+X(3#E(*LU;2GB!`1nBd zeeV4E_dmy9=_jj5#34WY8RVM#btmPr(1v4_{GRKFG8#6nX?KowcMB z^_Ka=P@c;@u@p+=R@41ntrAv_(Zh}U@t6Cm)YHA3-a!`+xuOUhz4$PMtOwccHrQbi zt$pn56kfY_Ej+?li%>yxM@1RGvjpO9<_zqb>=|vB*@&wif!s~TUdxB|W0+-?QZ5-t z9RY!11JT_PiU)W)wzRfp$oN*l$|Fm*O)^qXy)nj)LI6hqK>Z+@4sjO3`0@keL&xuP zrvn%dD$^Pz7fBc%Wr3@n2PB31CH;cFfk6-GD*Lbn6Mh>^q+wIAns);PT87mj(P8Wc z8qFDq2$lCwFQblXMYUO^>WOn*o?M`?S?{i%xJCEZDoH z4g5sRkf*@#L%ZLuB>@^DvVC#9>yii8F-Q#qE)t|2s29Ven?HZ{McQ%(e9;-q_Im@% z_PKNCf+8P1*&nh8MJAxa0YMK%q(F|eZ||-75cpjM%VkJf<^jlC*x}^(+26I6DV4QW z0k#EW8+K^ozH-_f^DdYfaUo*c9z1zTsi{m4nJ_#v$IaJX8Z@5QCnd=)Vh<$QSzxI$ zfdf~*C%BzIgis!VP9bx~R|xLr0g1U3P-5k&jghdtAXLPGN|212*H;w6aH)Ijm_MxE zcwkVc3Oe>13uL{lEEki%hB9T#)~(<{q`8^NS~YASh++tcff;7lA1ZJIbA{imVLr^9 zKt?~!bVNo)i2iufsP3fM?<7=Dpte?;-*$K@;lNPpBnCpjlDEq}w7+dJo?9`y8T$2V#U zb}>8c$)A*`PS=?Zu*H;VwMuS%zV-VqHWSz11;6Dj=Qb2MO>Ax&nLXONf)bQ%w>E)l zxT$>wCF%R*MiO*>I3hZqmV3C>vjSKQvPv9o4&jcjM_L0{6!D6~j|yYhRbX%kEe=z~ zmCLqDNEE^M>I+K}=dO0ARrxdBY%G3V+di&>+X*-DLctq7ZS9~;om^PyfayMs`U=RG z-CZ`8mg3kD!T3W&Pn`S&Vhfkb*(CskN=oFUchFOy)%`#4fX=Cjv_1G>*BJ_Tg7z-@ z!vjXayi!Hk&Ob}mu~A4?_#YZj<+61$XSP;FPVQ4o>|j0!xVTtmX93;%`p*|@Riqp9 z7@AJ?scA})r+nAk^k_MTC!TpTzun&)TXl!mw6XHi{J3oNx~RkZ8m9|!Z29B<5{U7G&28P$Tn)aJz*bAjDXEC4}d z&i}5eTNi{R3Pkj4V5Z=J0Vx%7Y621K>T*omGW^$5#fmgGtnW!%)zPdhi!gW=_}KIj zL4c)Js(KWU98PqQCy|CFX0|mTa-mQF7RB)c8p|HUtcZtz$dyHf11pGtD-am~n1N!U zZ>(t#u*~0$}ug+g<788vI52tQmEd) zUlh~=LRdi*|22(rkUofmn~g$HhsSw9yVh(jXAjD9~A53g8XF9CGrCe(b-7+~$*k$r2Rsz0A*xQ8W zA}(d)aeD0WD_FJw@eXiG|1{)8faZmMjD#yqP&B!?mEBoiKo~k*?WFnpoQlWZ>;w8d zr-juaVn%I{HUBW*?!K3CQ&H!O`fe(A08lzIFfb5^(eW!$$0^1UBf|QRe=_hB|#D zUU$#)$mu`m(U{AYdl-ZQYy}9=JT1(p1iwwxW=a?Qz3C1QPCpTpsyIh;$2syBrVLjI zcg$Q_KsoD;MV-)4BMQk8ul8R=3Jc<=ZQi6l*(x!aK?MSLN_xvLJ$o=AxWV!LZkxl7 zcfQd!m$sjz-^lv~ys zv&*9Pkp`f!aFu*NG4VG*E>)b%?u;Fm(%ZO^Wf`E)sAxjxR zIUJ(s2*_X^zjmLz7?${~cB8oXC-eSC!RO_p!Jb==_6$I<8RDV8r>CJLo4DUx3-UV{ z%hvlJ&d$y{^6rJZeZX<;c@v|apKJjyw~Z>z&Lm}UhsE+7T;o(w%_6SFt{?6c{z}}- zziX8mD|(qHb%Z12Got$@G`>}h|G?J{c8XYyZv^c?OIw>o-lp{$PQ@GaE)+ru!GKPJ zmB%n=ffBIzDG1W2dDA8Y5{0dp*TVT12eAa)x!G|31!=k|j95N>%d$=5(??JbTPUDo=1m@B=xl0QR z#Hi!vEn;$Iyv3bVb>(6*pz^MfQA|}ouKN^ftzpUE`8_d;9nN^HT|xWndT5=>ZFk!G zaTP`R!jr91QUUefW=1c;?~7oTw_NFjMC7-?-n88KgIFc+E=om6-W|~e9n}5s+=b_( z(to4*QDa2{e- z7P~M%k1~fY23PY+F8A|A4)P`};&jS>+)y-@{-q8o3&FmJJs)UIkYLnpZKaXR;TLlW z32^{vgV#U>`9|a^7$`8Rg3UuJX!w<_J4ar6+$=yG1b3-hE(eN+ylb%Y6Y5*$@5-%u zhKAp%MM;^NnH-9PFJHa7hT_;?f6;2>*zo6s5ik;x4FpaAR+3B@JY#|dgi{pzq{D3C zhi@Y;pxB4?<)hc|Gt<$Sy5nmSlbn!d%xGpnYx#oe6x-tYSrf(Wt^C2((!De3Tdl;H zmr*V;Zhm^0uR4!&T2<*NVh5~Yg8c%}%Hbo&;epLi;3zl`M`Q{qKMYN$>wd&UU!?6kv0hVa3AQb)XbE?xi?F*8z`wze3PNB&8CaR~ z=V3et{!LBC(KGezBibCd)^#=aU7d-klNhLr@7G67kl4UDwTiv;XvvAV@wTc zQxsbD?ebcR;_9|?XaB<>Us>OQ9%MNT;*=7GrS0Yg0*J?%9CN4p+~CG0vqMShEc7)n+HrRb z3foaFTG6rTn6~xOz-<43I{(s}b_T9xL5JN18NB~jA$m7W}uebM6ia>}+fS064p(34%X%z{W zyF+d~Ic@$@aNhRimTpEJ+z-|$+!K--koHF)r!WF!r4rE?*h_J+B3%$sRu+H>A6kq5 zkj3_BYL>1wYTNu4O_zNrIk-^Uh8#8@FhthKEhrd5etcUdHz*?*iBv*5Cjg`YDr<&p z`BO!O1|EBY`jiWB^gwXMjGRko^AEmaWAWoitnp$RoKEad>RB-32VvEE{B{sx$QT72 zM+ohQ-W)$}P5kZv*pMkLdVH&f`&2Z8Bof|;MDEtN+}sxV<<38cOLtyQl#`P-82;s3 zXg{smHup;#lQ1wL%J;9+dFtdU6$OPgxB$x@Hfy=coN*^OQ0!8O-^5L>^sOdkK0rQr zV!sOR4-*O@B@UzuXiSvjain$mbGjRyV+C95)Ty;5UXv$sXNQx~f_I~44Up&~%xlsK z@0vt?s1IT8x*tsUR#EcUMsE0fVi!OcE6Qd4+LgWDv?rbCDKeGLnOqMB+`Nv}M;Qg5 zd(dMH?bHuMgz~m+;-Ozc*X}6m>Hdzg8$9I8C?~;xQ=J_YBi1jspD7t7i^x4!&4qiO zsKkS+@Sro|N6OvZ@wcCd{riNv_PJqklJFU&%CSegA`DaXaZu79-cfn|+O;4XcsE&A zT$-2U4=Hm=JEwsO9gz8G%8Ttpc0_!!7$)Wi>J1?EB*LZml2K#I;w=b^32YdHj>T}3 zP>=YQ`_BaN#r&_&1y(jOKL}`B^nc#_pkZu`DMS$$9Hwtosb6!S16t*bLEIw0o zZ8>quP7I}h07r({4FCMO4P~fp%48-0zWFQ`{#k8w@WcSdz#s+~;jC%tDCsy4^N=bZ zBGkAz5#nt{{Xl4L*Mon)rCV_7#O!9IkZuFQ1hSFP-XEG~r;r^T32$X3|MR-$pOb`8 zyg!7W5q&0X#n@a3oe>;mEdUQFX4BMmut62blYp)BrVo|$=XUH^MUe%G2NNp@<$%1O z&`{e+FO6eCRDii~bX}|J^E>)tFH$U$qN2G%kg{jroG>#JA!RA-<}Sibyu7@?n;G0= zlteuQ9$Iwv-oC3yj*N)-cy4>}j;$!Jqq-wrn_j(^`-SL;XKdp?dD5akBfnQR< z=o9Zc*5jTF3GYtvZ2!qkQUB6f#wM7uJjZ$Yd|D>^#;Qe%V;P54dQ#`Qg0_~uAp>#* zB8Hni)^JEhBQ0vWY1kN#5gj4KkehX5)#h%{WJ>Xl*Rc0wcvdV zxL{-o$@lk7)>@VS>pWCMA*G`!wY@cpCS%Q#ptd}%dCTq4$vk%WQMJIR2-Szv<98!% z@k3Z*&D(96b}JueO-)0uR`S<}-HuZx6u**Yfis#=!O6VyU^ZuDKBO2-AjM(J$_Vwj zK4G6t$F@#P)f*Y8rFD8OZn(se{O*)I?~x_JvQiHJs=l-FmzeFBJibM`u32i$H)@q! z_g7-_7+~akI6k$6t}x)o;*qO4?uNG{Es2s0|V#`@CQP38?x7+{Y?Mx-nwwMoc2)i{9{PL z*?lfY3dwZFs%Yl%n^X^>TEArwKr*PziOg>{DJ#t7NYE9>;53Ig5&F?fiy8PpvkY22 z?_0v?whLA_?%yafd*h3&#q;>y1&_oUz74~iOIKALma&=^aDTWfV3i)^f8{YDBhF8z z`ILe>^V+gL!NliPABca5B43#n2%+^#NGIIF!ZIdLmA-y#Lj{`lyGkZFU;%ZdBCsg` z5|>(sAX2M~cAT$HHYh$-@75C}P?~oa2A(Lz4vjWN@3+drJ}qM(@cz#3F{f3shw#0- z-xG4b2Uj;GocC*-)s5SK#s~gx!sQWy9L%anpI@DWPr@F%>JNpM3D~K* zhA#E{gze$#HT0YvI29HTm91m0f98^kz?Ryg&ZC`C@>MveHxl0FOcwDv0#IJS6IMIKkp;TGzLI+-<&CCBF7gg3V@7JusA6Le(vdC z834Gvd3^zq71_l}s!Irgl-C$JDQTMjsFce@J!QD{)H0a}os>x1ghO46yM~Z{N(xsy zTntt0c!LoiITvPWlaqZ{6uF%xPOZi*O;Lva1{ok5f^6=LozL;4e!2Jq*)ZWFW2O)C zHgxrc7J{Tpk*zOBOAe^kVoSM$(K+}$7G&}mse=FQ4MVT9$?rgi|EA$F5qvnx-6OM~Banm!xqv4>4B* z%TV&+zv8eGY0L6T&lUoWwdsSPihGlJEKYvDugs$o0IUMEPdIY4;p8-eB*jEgQ9=lF zSpK!68ay>bwkU=ELcL%g=3Kz@eJXdZ9Yu?)%t9a05JYCYfqqx?lMhv>`di4-?sa93+d7lSJrw(iLA^I4s2T92KTz!0fs=>e zZ1LKa86)jEd_ZR)alo8J#)oAOEovSz0;`9!0|@CuMnc{giIDW-1$XR`-%pQL=49?q z?smRe+x2|hsQ<7n#`~Cmd3hq`vE#0~nf|qZNfy?3{v zq{bE(7vr97{(ugbT+8aOToo0BdyeL57b?NzoWvNQ`p=&~TUmFo`2n63ii=BFnSmUF zeuZX)fXOW&AUOiiL%TMp4$#5UJZLA*~j$zL=P zNVwlJvHMD+>JILrr!;BYVL6z^Y55^76z#-o#1u~mSwy%*P`t|w0kJ}@!k0j-eiUJH z4FCzWg8#zN0t5w9p#1O;=qsdDg$-a*&scx7-B|=u-R*6p3WToEQ{xvgtZZy5tk#b` zsEQ~HkELqLY&barWl#6^uZMQ&F~3&0ME+u5Ip?@srj7>E+S9~DvU?M-7P29Nt=X3R zphqPTM94ceI?s>gs(VQ5JWp>dTS)53j0(KFwbrOnalUrj_nQK;ZEatZv_O+IzNOF<{jH=%2H-Tl>y>d1FTy$o3I@Vm zR$ML<*I&Ie@9zFBqX`oJ)xkbpjDPDEXmB~`e@2f1FLKboi@#FTQEtCK3X(bDHYkK! z$`EpJ(wC6f7Q`gW(JmnfW3Yq4k^hz1%ggO75C6*haBTSy&|KS^mb(%p2?BVFCqi=Xph`d{Xn|&QFq+VdQ7a+pLQDR(stPM3yZrwH zI}3AT?#+w?{~ZRsg2NUtoRib?f4d1)gcpg7=B$l*l=bY`8k>-+oQg<|{wm|lE9Rkw zlDxLT03TTtt%JU+i;z5z$0aFamApOE;L~WI=WX}VncRg5+?m$pFwRe&Y7Hx?+s|@=*!nNxezg}z+6`@V~p4x zCH2ycvA_!fU*`YuW7)=RHda>OXQGeL(GXB^=aG*N+4nlHd>yq6!( zqHT*1>Qg8n>v7uYZ%)u5iwgFW;JC5K>9`x=r8{F1-fDD|?(DEH&oLbG;VpFX-0C?S zwtu20najN=9A#?(hWb(t&B2f(qF^744XN=z>oL@ujosH^D_DkuBE3$vn4qlysc!S0 z8xg8f&;06R3PlyJgBVBmVWcrA=93d@cJk-8Ger!*(yqhO{q_6&h9t*#u8PZla~$lX z3~f5)@Zjgu=p=f~X2xG=_ku5vbqmld($)uBbi5T&*^w>sy-$#$M@V@QcpbChrWded6r#yZJ`*`!k?Nu8z6U55)W_6H#KO+&p83jN}MdM+-m0f0sM_LV4uXQ#UMl*_o@z}i@Vy^0%a zcsqKU(A$?{q zdAj9CQ%HyUHI8Iv3Q)k`G-n@#SrUACmA!7Rxy;VYSi;c-vGiV5-WUL8SVNg%7)AqH zwl3Zb!(6GpS?P1&M9C~+Ku*J<0ti1#EVY!G?q#+1gj9Kj?sK0QB&U&SKB)Zn*W*!l z?`t{LqEJJl3=uIgG`sx5R8P@m@7D>H-LDX?`i`fC{a(F~`4F@jXEWM4&vZ{D#fGA)GPYizt89*F<6j}YVfHBd1H(V4%u2AHOdQEW;8NYbgPjm@MK@JzxF8Vn9`2) zWib(>1RY5yl!3LKT|e}&S)unU2Y(hvs*p+Too8as-{=Cn0&G{z*J0Q>yHqmt08zY`@Id9JER1zP{J<`pW?Fcq&un=hOk8=D2%>7a=YOg0z;HDp_X zB^3^zmTJHLWfW7(hGfVo{L;M6%YHNGc54@A%(2_|%D|@}jnJ&jOm;RlxurowwTsQ; z$NqZy`i&*kumK>6+1k~pq4$2FIuc%AmUw`1c5;eJNhyThjBr#NyrQo6OIsXox@{|b zUX8Pf*H4(G?(}Lq*ta_1!}uZ{3IqjZqx<&PGY}Ch0JMJ~RVJ7Zu!4a0<60Jm*~gI-g@bLJ9VEArFf%zMMA4~ctYl=R zL@&QYhvN~&yDKW+0?E&w-aNt+e|gnydWa$O^ZT<^?{pZZJzL+`sI-2EMBu%_=J41G zQ0@<|nF}q$r4I!;9r+$oNP{+BzC>aDNtfvCmS=}y>aR+R(Y)j3;_n3g@FD^xGIj24 zkxBQr30ocqQm;h2kqV$b%0VbEkf2Bt%o?R_$QI*VYehI0E#Vi5686&Jpg(Tof3)2B zk*U}FZK&``$eiEZ!pf#mR_o*Ch_%JM_J&LNxX5X#y*n6XgLPjvq(pj+v0s(1MCAO- zQsM16?vp2OxglE{y;qOpD);qVmv|*rZ|Xf-yuONBK5A9$x{G<&?6`e7yw#B;9Go%O z!K@z=H>=m8$UW+;M=P|alu*4iK7ka#DVM)!a(?PEsxnR+ zIRp<}bBGpVmb7cwTN@j*Nvke;7H|v9_~N=Z{rT>wr0#7!5)vWx`vs@qxAP5;FWWq+ zy*m5OEF^biAmV6XcjJx7-^^bWlhB(Q zRrOU>il7%jvxQG*aqgegmCYt)C;gF%pr8wKFXQx-3a$K&WcL%fuRbZ5Vo^x;t#+2-xGj=`S5=XjH4{VQE^NE!OR|?0>yk%$>b4kqr%es z&k+un9f|c*<%+n>U8VI&y+F`m)eU~ro+2HL7d-QZrDf4Y);CnJz*oKgmo?aX^M<|r zoc=UwH<>*dVY+~+l^KtV!c>zUQ?^uFnc1al>qh+og3o96*~sf1TstU5bR2(-GPu5l zo8pLI#hfCU*9#b23Nh$8^Clg*Hv9qtEh}zq_LXhcW3x%(T=GxXveqi45u!u6)b2b_H-!tUL_NQ!BjUZ|O5L!C=e3{6R$ zB)m(KrJDC2Wabx?y;k`^4pEDf_{4Az)4lX%`rf^-(-R)67S`7G;MJqOxe5LOnUpLT zWz}^;LqX7)YC`#Zr(18;K#pC9M> z8wD~*3OBqwN_|UP=7eD|;TCC%D*O&0AOz3M9FP#A+o$(XV)M$-78TE(#!iz5$c;tiD zulA8#B!40-!7%}s#tY)kGAxOkOMvH&hGQsgfu+zPJ`+oV7Rf-|t zIC0s$-;G_muAU<4zO7TsbJyl;9!&yD80n!$Uyl1h^J!}%5-JKE88v;QJ+MC_2g1`G z2_z&^)IXakNJxIjU7*4Z^{SiwY=Rw78p~aiUwP*VZ_(G#wf>TS_TV-!CSmHx2Xa$N z!X*1I8m7}9c)z6xY=nbPFHlc^C@Sn{`gTqI=0$9T-5PvEXz!&$4eivYp=W-;)aB}q zgw#$XRcRIkkZbt58xYTgb}VAkPwZq$W`syc#BYFHIas=e=W-9>5%ZS@+Dfx@OnKJc zlTKu%BBh7R5MX>4Sx^zgd%pK0;woNvycU0le^vj%L+_6B=JwKIL=#o>X$JPe9O8zr_tMyG2}o@$1ndbp1`@hc4_hiP!w$Cq3=w9Ge}PBye*ZrgffqGri=IShhpQFhCQ1`jlqf$?JIq zr{jGQPzKQ-55I~>2?^nQyCUJK607{!ba9H^_by_mIvnH@!%~VSy|-hjPcpO|O5thD zSj^v_D21LO!Ir8ToPkqt;q95b8@*c{imEL&t~Gkp+VTcbM=u)ovI3JXI0b_q7hU|5muZCRL{?nyeizO?*7f;>19rq_gfJ zTr+s( zgi~e8a+mF7*t29$&gKYI;Y9j3>f}BL59X^osOU{)xqp|r6DY29F!Yl3+!ovxX;|!P zF|9(eO5W7g!aBiM;gm!0&kraiP&aEDL`vozBQ_6eaa^hx`{3T0Q)&PA20b5lKGn@9 z?uylpz|!6WLQ1V4_uMq*l8=L)uMwxg!QR)e<-d41T5m|fuvL;e8H&$0Vc(vnV84B8 zy1g{X;Oy*Dq%%`>(-@!P_1tREm|gCBu+!*{pKZe)D|T4mqx;FXjl;2M$zIyd`X^es z9etuAW?ANe=Pc;j&%C*EMa*b8qQtCi{-u4WeElLlKWx7v=|t?_u21@%@<3R4D=9sM zE~nNf2C_F-XyEF60m_!o{;W)_(OQf>hwnyMoodw^_RI}8v=|Gxcm-uM_}r^YM(qS2 zg-?@^Z2R~G!Tt&TNZO?n8!0u!U!6n zesmE{Djma!g&z*wsw)xqW(yrunrzS!I!x>@Fng({EsYoW_;VJfquKo|3)o}Cx#Z;C zs$GwwxEDH6D|+V$#vsU}9ca@Q8ympQ*0cH~ML4;KIIh zuoW@R?O-)x%OBBKc4DYWD|W}R(%|{JZ?-NWm7aY3FT1_L0i;{YZAK5vn8iwN?H_Bs z*%H#OdwC9vxEw+D{-p6gy4A*sjTwLFhAzMJBzfKQ7Sr)Qyw_Z4y1nC)g;0__YO02Q zJs;6Bje}vS8Xa#1@h9wNV=R^JK;t`Y$ZMyBPRN%yPUu99IlKtXemfB6H z#tz#NOXXp)&m&IiPBi=Z1uNX|VOVp%XUHLpx88!&nxz)kKOb6g+KyRg%H%PpRyyf)_UkJLKRRFm3p%ktw{ zc~HI7v&Pnx^lCg!p~_H>K4RF|l!ux`DNb@SmZfRu2CME!knU~PlTlP_y*p|&%|b3f z=7xO5(k@~mYsY)=0ro^h6ltB^$2?BRs`WE2>~xg#TCPLqq!x^hvLaDam-+5zq!7ad zHgYCOvW#ubMDY>@{*=7d>O0klA!gRz%Yk(=AOwI1H?Z>=dBZeUYT#A5jS4#mvP(Ji z)<_f+O_fQ*%izal<6H3vTHq-0$ z;o)hR!fFM>0^bF;kl+Fya$1jvU$!1j z-6>&xm0eP-6;^m0$mG4mjkL=Xa3^To{O0OCun zmzfVb2L!fm!sBJ#btw%V%W3=7B_JqUS7+|MUFpiLP{)B0O%5YCH(s{;U1=0l%#kR( zc)MvN>B8C5#89g4;|}z*P=mD_8V5f0*ue8lVjkP=fy2sgI@6(|P+s8$&3?0TJ?S$U zbqlw-u?eJM+xOB~(Qkf8#4KaW62H5!I8E^Km0xUI^=s@K z|Fo0{P0!fmY0Zw1Yi@+q%y3Ftj!&nTEsv$Y>AgER+43Esu>N)83b6+H&764A-mYZ3 zp;8dKLY|Vjt^n7lKXaYuS;f8vr2=zyTw_;nc&1mhMl6%_FaO>@MWQ?TImQuV*5qxL zBz3*evw#tf_Yyh=R#Gy&HA44pWK?S^yN@(6Hd<@?oS4(EcUa8K^S1(}xz*j%<5k!0&CRS(#(fJ6(b_7bHuXKdruv5nPF6I;@a8~5?+QK>b zau*Ey!Lh}@Pi^oD=R{U3?(Qt*^?n;CF%OB8_JF~1mo|L}SwJ9lsiwD{Bdg<G;`ifpYTl5slq$Q?E0j4TUT&mb0(acdNl?pT0pNuKoHV zx6qfl4G&^b4Y;TAHP86(cm(R+{1&l>m#-hI=`d6ZF=>tn{|<#s#e#6C+?_%z@1$__ zhiCb5EPVF;9Ld7kS*1i5JHhI@KeWxq$la`2yYt?9Vm}zwW~Gq0W1i7uCJAZkKro@hiyI=~3YPi2@B!%g-M&*1>6uz#e(Nd5IrTXMqX+K| z`8J=7IoXdai`L!35UO!9`M>LXMp^HsSNHDBM@vTc7k!z&J0s+E$LV0`2`@0H`bTc;Dbs5F?CLdeOZaT@*1AnR~7 zhnR0#l!04UB5mTATI*Lox7GK@R2e_4tl>J5hQmd^0!Mqe8#^n3c+1f#B&XKvAEtTI zS6Q=~nqqR_{^!%3ngfKn&WgCb6l?|U`jN&Vp`Nn~x0k`Iv26Ovu_pQvK~_H5r<|pQ z`7cXl^J2fF&fENa{c$xZWoup4fWk|;RxWvGEg26|ndrXS4D4th=hUxImCcU9RsokU zsPpsTxB0&gMmmXoy~MwitUX)07njhLJ=0d7(HCqVV`9^`C+Ln*rwV396qf@8b+P!AsnA>`HeJg!e_gfmJFqI28 zEFrd1@v)QSa@-dx!WJ3Q@8CSC7}FM)MO0y`2IWXBn_nM=Zqg@{Gk+Ji@_fe1 zs5|(6kWV>A##bU-ep#F>+{gB$W_GmotL#_U`UW(Ii>O#_v{ZZaeQ>IYC|`OWUR$rV zWq*(5jgAdFw>hDOpf1=4mC0Zr<^>Fr}+< zo1+EcA#!5dE6YtAqALc+nMu^!q%Iu_@l-THhn%|Qvp#dl;-b_*6uHZ+AU zz~p{!5|Vn?L91?V+rjeV`_17y!|J}z(~hVj+g6t^0g9q1vmT|2Hr$9BSk|R2B`qOV z9QvtvNuS+tVwm^)*Hm!tN+uC=7XQ$9?41jC?zdB}2FvWWL`H3Z^4Y=4lDUF%OyPHV z*>R8OO?zGT3Fa9IT(`@aey2$X*RywhUr`GT)+=^XyUy^FoNC6C%5LzxAQg^Od;<)T?t-_ z_0_xx)kCv`MS6|B!rzIn7^L==Jj4`*=30v?dd+{^%GWRJL%cdS!@%>5vtFxiyTu6) zl6%?NK82_ws|V~8S;pK)%qzL<;V+ulidnu+H*_)AJfNCy$UyW3T<6LQPq(_$8T-8g zaYcAs*ooms%e;q}xS)lpj=t@A%QpWGugMNcYwrVz9I_dY^>XHHwqEWSyxa(teaH%f zLyD);%)TR}PH&RgcO{4!`qP}rAM%U*&SosE2?=2xJZ91FMmd;*dRaO-U$g7?c8f<>09u!&R~bYm!;Fx*TooEq(|yideg9 z!6SOpjc=+>h(?r4wrV_QHj+L zf0xo@QP3$x{8>bwo@QQZN>W-QLieVON6}sEFmkaeEN8#_U~`~Ck%hi4j!A@G*5tlbdVkSfx;{+uOPEGhpZ11G4;SJrTH? z_BJ__cJEXqzjL1q4)=9>?`V6?m3!$V1ECR;WjC~-)3#AkeE~l|8@N44j49?)3S9oI zZ_SicUbC063Ag1lw;=8^N$1rdVl%Sy+a!rXPa@Jx>T5HaRCoN& z>FI0kW)7KI4#C>exopk@ z4p-@oaV#}qOTkXEiZjURxNj)W%}|I%8IsFyZD+#@X~U`}qhcmQBu=exj^s1fZ9l-z zHX?G1`|mVKg${brZ~sJQ?euChX_=3OGlfq_@cI50zD$h13!f2-F+b?8*6Mf0U+3Pl z6ATd4<0uJX&ix#?riQC5j1|A5>8}+Q%HjExj43e(_fJ^kk?bYJ%QR~vzb9mV-Z|D1 zUaF^hzZt!5om(|4z%|cc?+dl6l&Z((U4+Woooi0R z4Dr0jKAg3?rxb5^hUaPN>ktw;Yo6H$Dg;f{jGekUKpIvU+I~y^tJ4S6K~GpO3hdC$JTZ!|kYAB5VBJ#}oTY*ll+9>j5V%1DP+ z9@cs}ta;%lGmMu)Iu!aRb9mQiO1V;A7psj}j1MEjR*a6s4Mb zL3;_qEuNksDydRhX(v!=Da!1yQNFlhNP5`v0Nq_JzSOs9Cjg(68B+TkANhzCQrtI2 z9S}!G4W0g&{l6Oqfk{{0_CDQuvwH2Xvom`~v+!%jYxaKykiViPAGT{xWJ?SB8v74u z=^mP~ZM12#S?L|M-;pR>tmGnwj<)0CcYhylt8X?TDcIfX; zGIW;G&PZ%7uH)W}xX=AOPOWq!{7Y7xA)C$7k!R6v(Mi=J9ixyMOG1Cahr!XTvw;t` z33v6P4K`f2GCwX7da`)Al0E|QLIAmH!8qV2^6< z>2)5}H~v0l+^O{q)igSLzo3OT+I6Mzk*%EqsV&FQcgaFOJxaxHU51`}s6t#=O8$BL zv-?8}R5nYk4BCOgj*R^ti{(4(Om(|0HN(dB+9?5S9(#;2Ztt;SX$O1(HW}z zHiV4f%9Gm&-{rzNJGtj71B0|J!mkbHx!P7{kIG7GpKm==j$}FT8LLfimJ=Ck5F7N2 zjN+O0kyC3N$?Y%0ZNG96>2Ih7q|SXoLBTR#5IQ^r=skB}!~%TJrhq&73xa>L)79to~{OJTWrA_5o0R|EoapW||%#Mox#%&_H-doi1H@-|;81Y~TbqkzzwHrH1 z&SJZCBJRJ34hu^Qzl{8eXc9WCJ#YzrEOKPHO?Hg5vF|e`H^Tl(4Z-1`t4nq@hyh~lLfwWm8s!>irONg*xgTPqkI|^ zzYl3wzwJ`bir*uoERvsaBJ841bK0q!?p+VKW%Dfa(09vfDDvn7{{j9)y}D{BNy&nz z>!H)v5~jmXW_HH7wx#|*%y@ZDQDtA6cj}DoHM24L+fCel-J=vwGoDl8c48PL*RdR) z)Uok3_Z>U6qXniD?3ywnVwOFOg9YmgGI75j?0$BxikgvEJDHTLwwxbYO!#WQ>hy~t zk8Kd?%WSm*s1;pfw!*bii*rHd3vzLXE7v5$n~D;5Njq1iLeGqaF-UH`6<&p?f2;|u zVkaGqQV26G9gc?VXXxE8o7OL%=%X(CF?rtA}R6cn)>5)FC^(zNRg;~zAiLDFPp$$cP zvmzD+kGN{o2llVBom-9QwW7e$3FMaeAySsl9OW!_bv=(zLvOH_GYO^lI7~RVl3H1K z@o@i^a2OX`8L3nTnBM>ha{yQUw)nwJWc9|c8#^Grkprwe5V^<(nYePNS$Psqerna|7TeJgQ^gb|W5p zPT}z)=V&UzL4w**)77JICi3V_3Dh~osNq;XFVk7cvMp?A5&mVgiB1$wY4Atc34OA# z&Jdd~|IM7RM_1I858aUi>V;EKf)}e*7NuI#l-s$b$*&PG-j>{jb+;H#Z8;;WFjM6j zd*w-Jn&3@L%`+&)j_oF&l)Dw9P;-wcSTR}I#`4CquW*)6(4{U~xWAnXuk6YV+1r7G zHJp`U&*jwC^!;$!UtKg4lj_h_r3(#|m#I=(GyAH#F92utlpS;G={e|$-430i|F*Zd z@XnKQ%}a87Z)E1c0}cqcX>&x>eH*oEj`M6KEa|O_N|CI$6rt~boGfy1gMBu)Fbe%$ z{v^Qq!1}>VVg6Esx(7mF@Mmz}UZ$k{!$&qDN-uf1Hx^Oy2aEhj{7q=dy_b_GQjP(K_0>+t_Ot|kl?HZ z`NDKS+8R1GT>}&imPj(t<)FbYYNLCA%pZnwaCRzdu_q*sZh^ZtI(NF!k+BU$@ zhKa#~XpU_s;=U;g8y&X0&kmKSt>z4}?aDzhlf-VLR}z7C`EX1bf;>PY0xPr$Yg?OweC!7SU2X9(3>C`S z-kUA=_`P?RvD2uzWOADn5mzL@2)+9LZUMdvpO?!B1u1Bq=+$}@cZw`=h{H_vcv1HP zqDae_@7|cTr6raKLf&;=sd9MvG7U5(qLPyG+qlsNK#?0%MjWaqId=+wKbfZoL{>G7 zvW4%mHS{}}Wd|ic8_Cy`Z~XRZCKdpSdLHjL>MYeMW|bV%V+(@x>M zu?_9g0(HvZ)J|dc-`f5`t$VwN|IpWTe9y&n#S9~2|J~FuDuDJH{9b#8!B8Xir9q%F z&i(P{MUUk=lT9%=EW}M-+si2^)?9Bf*LWU-5U3C$_co!BoXccCJgq1?w6Qpi_yY@iK67c`kpm(F8s%os4I6)Al?uG)liP_R^e62LZ2t67UP_hLBFP zPWF2IEK!=R(ts8=@Ww;a_gr<`Jy_z@V3QS#B-eo~1+?o$hR^EWmwrJRl+V2NDo{>8 zR8Z4BdKwoO2e7xutVT6Q#yt>F?Vgj^6NW*g3ZUaqN0d{#MoSyGS}!x`xmLGV1}bP< zujG1G$7)=URw|c34@n)Uh?d^Ex^cv70VVe3bOO^|kK>RfUXHS-6OlGXSOj5CTSUVX z+jnEXPcxEh@J+ge+R@mmIGyl#07Doh;O=mW^9^q?6Ad}|oddbp_ym6?Lov6^fDG!W ze>Y`~1`5huVq2f#wQrcFDTQ4Ab_ffs)4XYe|JR?Nw#=7Ae~eNvG)Y)yN8B~IyR%Mb z!@_3oQZU6WCd(oOm{P3*1FO{_-g$sQdhHHbbRl)idmDy=!xs@}qyN~ha%zfy5^&&;;X0@e3@jN#*^$GAmoJ5jLj?Nz7{SJI201-P6jK<;<;5D+}y7d@H7nyo` zdhKJ5=gzK0i4OGjf`Xpo;es*(3G5pq&|Lx~p2*R1sp~4rj<&nbs1Tz1SL2iqJJE?4r{2cnMM?d`J zYfURqD1}-OM)6uM#yklFtrRuTGQrtnK$0q7*coTJh3h!{LygD=`Sy8GBp49i8%+aF z3elS-Q89tZTev5A@QH@oC=Zl$7Kz6On9KYCVLbPxx*6{En|WJ|6-3`A>TlhnA|pZH zvbM+$V28U@GLcD?*xMDPVVDi7ta>5OdWv^{t}=A+a8x_>WY9%u;_p| zN&sea7SIYR>G`trKQ8J3sx>MxF;5b|pj=HjIVuO072l0u<38>B&1=ruiKjr0NUzK? z{Ivg@`t=XomOtKHG5)78J^d*&;<%Wl zb}&otXIb$}V0kgAfVI}t)>eoB38YLQ{n`M6`*3)$J`>FG_BgkyGXLr!kGDGSkT#J~+F(FoMNZS^^_7IK)nv6X{*=bJ{DOYT2$S6JR zzq2e%($c=Sb2pYy^y_G^|D=`q7?Vwbc)==roGz1EM#euDw##!G{RgPwCqFz2&c z0dy9shz}2Hy5fiPX)uuXy{Dj@nx`jfwPsCX<#(}k1fNAG!cQ`n%xm0i3q}-)FI&a|2 z`??2${*%pEv?U1K%PT1jbbz5BwaOM9u5wJPKj?4>xL|WvDKQ)5i}FXvHnDYYY4xU7 zl*T+dqj9gcO^sU!Zw+=U%>S6~ydC{?8*?caII=_(HPK}NeZLoRvc>GXVq;8hcub69 zfFRgW^PTKGQ_2+vt}%gGh0C-O-Kzo4g=(*!AfJL&|ENcN2meJSNePlu&Qqo!w{IYB z>Fz%t$fXO2DBMrJjOmE>YLH4cDP?zUh|Q3aiVl-xWqgTT83xeyigRJSAfh@fy>HFu z13^@X6C!G0*#jpV?+QSRH3+Qe#XO2oBdYKU!P>Cm!DwqKDu%FF0d>G@(w{8q>sQOw zP^SAHi4qQ2Awz*brmN4FS16>7g^n&L&JPMSUV~TYju-S}i&*bnzI@pQq%h{+l5>3- z4z{nf8yPU6-hSFJy{#MfZYP8s&Cxii)0aROAfv6AoJAfuBR5m^H1tjoxbM`*8krNg ze9^M)B+cQ{wKu4R>G&GwwA9nu)mO)26zuJ-G!O77Yb^cI2 zh=R$fL84L*>E}|Q@NzY|c_bE%b2iwv-0D%D(XEFE` zOQ1uT7#Hf5%Y&j;KM)J~eD>E>yn$f@JU^Ef)>s#hbK5ikYd`{p%vap`l(bG{y$_ip0C0nx5VP z!IOrR7#2zG@6?U8H_p>QxtY6iHN+cIf2b)tl16du(xFu%DtQmFG;8JfxL`kUfdDwys3C602eS0``YkauXqJMIGd`v-o<#CGHcBsFY zocvek@Xtbl*2#yJkoMtlUxJMBs@KqmX`ap>(G^Dg1czdZSoKwf%!CBxHqiboOiX0R z@fBa&-geQ{s_1YMwjUJ&f`wAVjEe|FDnC^8Vd{aC^T=?T+tZdxe%0NT{0@IXFZR}0( zKJS>+4PN4$MEGBs6-+Tu_4f_rd@tUjCja#5e2E^1wUrgWAb2Miwv?`WawWgAkX^Ba zo54rz6FcwbUpm(G&*dT_IE(YYAq6RB&woR)eV&`P+q50E9%snR@V#Jj zgtc|rv8ET}Pi-zEJCHHa)d1-Jihn64c8)3cZ9DX_h=3n*?3R-Sw|5=QU&Ux$l$5=saqe0E?!DxP2pP6E^kifDqiA&x8 z?uGz;qSdq*>{{k;GOw!1vB&?RmcYuxR@3uar=x7bKoy2nj`P})#^!I@t2~@GpOPD2 z3-=R35pCfTI*TfQ_p3+!+qk&6H_IFCH9~oTuQD5Q1?Md}$IsWrz0CVW2}oZuG> z+(s;L;}kK_Zh_%@-0!)n4Sjd|P25YkjcRp(RRtusYLL~CR#$Kz?Rr(Z075zaK;(^1 zNVwtV&S=``;J0;y7*jwduw7-s0VlSb7QHXCh2tu>8*zi| zzGcCs^;Kz$Y4LjrWp`GmWAz3G?)+SA5;s9lB4u!tRQ!G8YF{Capc8lA4ugP3o{MH^ zu6S;5PY)jm@YjJ#7QJ&aa`+GfS=AolvW4A zVE4kZR(#qPT&zI{qj;rcg>+R?|t~@?TcK^J#0%VHh;~wb}z2UoW?_!jtX=nGr7M25D zka#ZOe_wb|@K7JTwB`9vz{68mX?teqIUAjsEH!u=lO{dyBX$wHcd|vU*+rWD9Ciq5d)_>n7E_4C&uk95*KgZkbEt5nuC>nx9nak;r=0-F7z2>k zp}z5L3ye6(u@aY+6aJBS`~>XuEZ-ECo|2l>kg?_oW1t>K%Zt&vVD5bZ zDtgA91P60eFN>2w&_DmzsPlmh`M2_@yaR2&u?Qz-l>AKNikH`IMlsQ*Rf;6{>}L*ABHi`e+fXt z5}eQCgaV}_H1xHZE5t8;p}!#xp1=w94;d&=WmZ6p4Q_NAlH2RU_CT6jJ)4o0VL3l( z3oifhOIcMN2xf0T5UOI6tC*=@JnBHVMeHwFT>r_XV48a9x3wl-UxYIwtu-Qz*Pn5) zjX)PXu3ywUU`Nh~8{As^-ndBzi!*c^3aq-Tmi!Xvz>a!oY86N`&VHXzooy|7;|pf^MXvOC8&a7 zg2-;Jh=-_nk(sa`2>xaV1e|O@a_GAsm`kAT(~G+0!9UMBp z^p6*F%ySCF-OrHz14sfX7ShxH*vn@eeY>n56v;j3ahIkjW?{)*6C@N=)mzA|C_Lx+ zLYpMU6b3N_4ZUqH5~&7DMT{+gE(=wd9C*$9+(GFEQr`;+<(a_fg~x&xLoDRMWA=lf zNt?bK>_8 z5FL)yT7MCWDIn6nL24XhIPhu95y;=ctyA$5bXM~6PPrKwno9!q-GMfOi}<%Y!$npJ z|8~06XWRmf&8%%VEmsZ|^=kYgwGjK^13qPPU_{StxAlB!_@kge1WVPZ_$v;)rmS_& z$;+YG#N4*=$~-rYdf}+sm_a3}{q)}dkc;oTV2;-RG)mLXKz$BW^bwXIsRIR@ZdIFF zDEnA}Z1i^sM~QBQ7!bpWLRMAj#2PrsWlO$E&YAvz^7}-0*gq?&LQg92kPQ%g=-T5W z=zwym-W<7O3&{_-O5*ynWB^whqB3suaS5?o1l>KRJ$nz5I%ytE>8RCVlev4g@i2+p z3vXtdp3A&01l9>nuOo`5R|kI9LzH9%w`CFrbA}WWVH894r$0MhX`8)I6>M@ZxUcsA zxpQsP%lFaeiiTx>{E_wi9a3Rea`?wvHo9IB z0}>;&vZVKlDkGBpq5I<~`fdWpnDCaCE~lMj<6R zp|(w~HdWws_CNFzZ%D+AZ(jV1auMoXP{Mh@8(CBH?zF$uh-0^@=9IAUmkCSNtyM~# z{l`aa+CIv@1ztQFI=%WpIgiNtJMCCAg=>XgZuk3;{MVy}M;E1(U14$t?Ei;zo7G#T ze8PS{P}~SGX|^t&e|yUlxmSUle;y8N**<%Pt9!7sPR%V>eEVoj|I5GR=`?K~3}=AM zoLQKrL887sl|8S!bQH?8$GrMrGc;Knn116k zh)v{Wj1hQP~uH)Y}E(_a_kFG#i)y-1n6T_lNC#H%{CQP(0@cx7=`vl9;OjXB$@sB)! zg_$7eE($;+tU4W3J@=wkPJbjO2-dc?5hE)xWA>8PR`-br^`bjMr2ICu2!Tc(vtl1T zX5aNa?Ob!??|s3mKZ8U9Zeb=%`6hP}fdV_3R#~FGwQiC0+J%wm+MdzA430RfpcJQy zsZOgJp$h<+(VI?Uko3ec5K@5gNbPp*{>6D;T14sx6CFP1J{RAEWzX++P&K4-x#uM2 z_SN|~j?%$$;hsa=+L~c$^s{S?*pGg9Tn6(-o+LntoMB$+|AWD~-Y&||NVW}HD*RUq zR1S>M+@Hc+$GTK-9bxPyKl$hc0)I*|z4_~7-``Baev2^U1Tfv}HqHxNc(-W{RTZ)vhWIaC;L=%#q?5XtP6IAer74c_oYfNx}Km>s>wX7R`>LT^o%{ zh+oc`vcG?I5Njc9ZAo{D&|7uvL($9Am$&oD3*dYob3@u`1I@Jiyuu2V%7plO--aEa z(}fd>qu7vtMFBpV;A%=oUvdxpSVJSl9X}Bl7Er zn&d|d&s;MQK)09L5Z~H<8RrSrw2d-mH7tA_JpL5BI0!{$3u*>V#%Vkm$)wp=XS3GH zPhOVeVSI?545ud6uQk(rzX8SQGVtMW)_h_RXjADgYYFhO8U80X!t`xANsmUh_Rs*Y zK)JtgdFaq0p=Rpp??VflAIh=WUH#}NKxH|)GmuPDTxfG_OyyQe%#}3oP6^n%VX_*e z&SQ`Dz@Nl>?|j%OH80~HdJMd}&Zy8hQ+|%af2xM`_CI*LHmq-T7&=}E*kLS?G&p)= z--(uY6bK|T@ZS9Ou-54RVeieuv0l6PVa>ZJ*=0y*pfngm=AlxNqLiUBBt^(P%d{I1 zMWiwhQOF!JlaMlJ%$#J%kSUpY&r5r^_kN!5?~nKW=Y5ag@4b)bc#hb&`~G~c&vmVJ zu5+DhE$*wi|BId$to$Qu!*s!TgfF8>Y}}9LAcQVp6sT#XW#3^#^(fLgQR&pt0j1nQ zQvrIT1J=d5Zd-XZ_NL_TSCJ2)id9EL21<$#m;aOEFT0s=*wcDFIl8HBl-<-*Y2jB~ z>6~)T&3X;;;X@ewcx4)UD{3?HGQ$lW^Fu{jmr2u_<>+Dvm``ec*14)UC#8!Xl4}QC zs}8^4;E*Go-1=(na_5GbRMvF$DS z{nnY_6xGdw_BVZ^I$lh*?mfVv95X*DFh${f?e~}hF|(WjKl9dsNj>fN8#tR5LaZKr z^MQ1A_@1T|6s_c14*09xTd^_z-6(KIRdw&A!F++Co#BAlka*7V zKPYVL_7fIoL7L~{xCFC52t)98lI zy)G%v++L{vNL)8Vkt^@W+RU?uTecLf*f_Kl`&s8|cTcfj%}%o!KQJVmqoQFfr@Gi) zuAgRL(sM~&*yz>U$*nBSEak@Q3@D`co8|P1D0>?3ZHZTTl@rnCIvM?}ep5rfV9JH- z{SSSf#j=;zXEtdcX%XJG2A{vw+~}7!i`TEwfvUEy&ZkZ-?;@>-Q^I5QK-!V%T@!D; z?zm9J9`$TBCCa7Zs~ac{CQ>X`Ix}osTEbbT{Ux!1{okib7o!|pCrf)LUD76Y(|IU0 zeZBR)&BI9X*kOIut;liFJ?IkeNH)ufNjvW}Jz{IfF_S^xo3R71;mrK;uLivu&+gs! zO;QGV!{K%gQU)qW8Kjv=X-)AZjY-jlu#ofxH%6X2$9q4$N`T4Vez@&Wzv+z-f zWe?Q-2r+RLbw;LXlBJ|{R9_*uz5RSxqhLO&;>}eTLpX|q6KuP5zP1h~qi(pc86n0- zx&K-?df^hrI?AaFkWQbU*s5`+Yew)(Vj^`*6nj!en|oEZ^f%dYlrG4-)U)V!U1oAt zr6nsTX6E^*3*BI>l$fetJ>0rEmCXF|g|%z;R`&ds1{-*p zR=AxkHfh`t``NjH<>S+e;)_bPr)gg)C~WLC(X&|eo@pH!7kF8BVe7^8cy1v{g16wZw*cpnA8|X}Lrr3SFHz(0_?jTJ zdX%Cl3-Uwnt`7w@60GVaq1Fy^5fU8DaRRfF%I7PzlmyT1-RM@p^u+hGeC>mKOsAL+ zoZmF#^&sMiRvav{IE8R~HuHe)5LAV-O)T-ENk?1CtiGC@@}G0mR1H-{JK{&)elc1O ztM?nfzIJ~=P;JyoH(K1UZ9$dEfWq18zkIC+S1@g}jG}?%-TsEfC zFC+KmEiN2fQ5>>*X7@uQA|ZEW5v`?UIkjhze z?Q?W3svOFhOrvI^Z2|n(;wrZYDWl5SKO4(#x7mzorkqLgX}UG-wXOwD{cA=KqUu>g z6YE5LKl-~{VN4`to7)9SwMSrqLN4X1m4qLx*UAq#s zukTt;$Mh>H#F)12A8Tv~xM3+Or|9#UT{8js&&L(PI|}WjG_s>ZZ-aP#KRrp*&qs&uEN_Emob&^XTd`&aou|bOZ zsApkZEfe+1FYBjJ$d&fY;z@f)y2iF4^=+fqnFLHyE4PWs_EItJ&#vE>U2Ij}i2e_K zcmI2PZxz}4k#bD1vFxJe4o!zUIRdVA_Mfx`hC3n~R@?z=>6aaPfVFbRjUT@iuV+lm z7+m{u*W|^~V__&q8i8yk1eg6|GggAlC_9+Vn5PEngVDsO_9NVJMk%JiB!A zMP&bj<+|6_u8S>xelPOmdYPf9L0?BkzZ#Xj^69OfHqY22-|3nAS+Bh+D7+yoinYX4 z44<^%toi7^fJlvM1j;9vU+h=WGt4a2FSCq%rB)G-qA>O<9^bwbidmxS=kIP|tQS;S z@o;ue#iO{?DYozKN#oYRlG zRO~3E;r3u%h?eB^v^lT-{^c%R|Imd!RPD?9?k`#FlINaV9CJEooL(osZO{>T#UB%1 z9Pzecx4hS7i?+TPJ=Ds)-?oMR}Ha<-59-4j;3 z_Z2^iz7lm2D;7r=I~`L9`oz;|xs(F^zs1ZR1vw!FVo8n6B}U`U%qy%Z>{6Bvhxjew z{OqpDw{zAo!p6ruyDa=mPG@&nvrn;a*$|fQL9FtWj zVZrf|g`Pt~<5uH&C3fxF;;8HqGA$_^)xK(^o7s|_+f_Ih#GEp3Q-y?|{K*m~!CoVt z8x_;`V$6IwDZP{u?BH9B50e58imZFK6jk71Nnl@f%cqDmcknR;h(SIrA`Zf{e&d%%B5~DzkVUbz61|{{Y)VODgEC+ z0Y9!?($M|-m9zYkDC*bG6c#s0kEe}FRE0do%PA;IX#Q&cq`L9fzoe{|=Ted{-mbq= z;TY28naHy-9pT}N(30{(Lx@jb9&{lXOF&CLind!zpLeFR0P5ZnM`G7Cv^ofu6UYQcc{oWmpdw!V`WbsPgCycyo1 zB!ogpfc#1Fenvdb$)!eb(sy2Ef8ju{CyZ|4M}K2y?dZ5TUkFHwFW>ExVnH3v>-Xd@ z-PAw$bWvncFWtfCn`d=buNg-}Ii(91^uGb*ix7swz`)?+B@MRK-wEiJCx0t7=>C{# zO?B?l0@Kinefe6Alvi#S@^Ar(Wz_)Jj>iU*|P`03Mm%w2#wM9aF=ve)^)zIfZx z7he_$u~@lg9BdGjJxCs=Sq>b80?OZd1x1(&__msc_!j&c0z-D!Lesinvo_wa<3PM7 zW8{)9tE3`1`fh1ENUN0;h(S!_TDap$*{;Bf=V=CwdgzhcqmDIuWHtCP9KV19=zX`@ z`%V*Sdq#ay2(#%3K5S$5Q(i1Kcj3Uq>hi6uozM_B=R4)wrX0J+up_<2u$@B|%F}ZW z4h|m=X166^R{R~q6&u_BDdVYhr3s@a2-~%)_hI9}qmr&O+S<4D4F)iVgwrcZ)?xMs zRyIJ5>j}r>SB#xf+xJP7A~-s>N^;HYydyF-F)v>#B0@G3Q9mIoi%xz|KX+}yjbBY^ zBDM3Oq1m&1{AB%w$W?!&m4k)6arBgF1zHdi3H!JX$SMVV3#1EdL@5aJaBa)u2M@xy z9lpwGwNOY4Vk@m&^9B2K&e7?bRAOf4d2B%>5)>UAg8K)y*0m0v0X2hmo%|HPQAjCl zn&Uw2-Ier~&Gfy#Ey3HxX9UW@SBsNya{G@fXwO@7%eAbIt35lhJ=gstS@>(2$&* zoccyTqBAp(;$J^|@M+C1qo{tkQgRJi{zB!AtyWwtOfIUh^Fg83lj6(w1O5;rtD*p} zjPs^ihV#bW?_nTOhCaOV*%>-W+mpVI7(W2HoO$ajO!msfprf&A`)~>9<{)nk5Hfv= z-o8iHC?qz<5?vlfHfcE=zsC@c?!~*<*lxeFCONKWa!*_g&4rj41&xBOqZ^8u4L*kTg3$bp(o8JBVo|%+E(d28@e{ao8P*vFb*9L4B(+ zBK^e{^Xio{b_^D&w6c;k=trN0!^Hw1pczFhqOTteB>gm%m7imJg}PPKRU{C#Iuw}Q z4GtVQ;Op%jj*q>yhWbTbo(4)8YA^($vhPq9HU-#vq|zGDvUyMYp>&iVNgeN5mWu{C z=FE$OAE{9y8`mYJKEh{KQdRol-~)0PN1!Vuo6-QAa^R@C>HQ{M+D2br-`j?AGBSOS zKL=p)jvkopa7R4U3%Pd4xHmt;6kWZsFYoaXF1);Qx4*yNqL@}?kA#ESRYx9xu_Srh6^3PW(yZ zKt0-^r((bXTJN3k!9KEVx9#1#YuB^dr~X92jd?Etg2o|?Teo^$xcLG@!-yK5O%L<> znv=9{K?=Kh+qT5K$2T6(0#5I(sZ%r)foXVle$i2wr4za5a%g$?rU7*>Iz5N*oi zB^+jMJ8awThT{{=OWkkTuo{Q<>Vg=P+$|eytgv)GU9^jZ!RFDm;HbY4 z85FLQH9e)L7o%}wNZ{&~D}6q4T;3HrwHP^@<}houo`FXSLy@X6!UHMhgS&R`?k8`k z*Pk!{9Ds(=Lml~=D8e8Lk4V{vzOYWXi@sab5~sDa!bv3`+J6&W`5H_|&ZRGyeA{Vq z4O7XWuJOSl6Hy4ZtUmts#L1I&7(IvVckH2CtNjCJ}IX}#= zHRvvVbO9}diCi1@M%|=f6?_@;2`acwjBxb-moQ;S^*)3wi_13Fs_ zOb1?Y03YCj$lJ&P5EacXv|dHJ9C-}cAc2D=U`ZBypzAn~!RYw$xUpjqE~kcw#&#TWxjl4)18vNSri35D zeOxWcIYG3-Yd!FLfxjM-_0P8&W$YLvvLxKjIG5sVFcs7^GjHhg!tiq7C5r?PeQjVpD%Obsn@R$5x;>cS@g{sXU|4p5R6UvyThuG502W;XVA4uy`{$h%-Hhf=SlfU7xi8-iadGuR zS85f=K|`DtY;$3w@^?c?OEhl}CARvng< z7gfeXMT)sFCa)UG{#1-Phttx-UWSFM!@!?ZgGR1gsJkzu=|6(E;=l54BQPe+4F-Q2le;WgRZxj7RB>fl|UJ8Qr|5D-4hO!BDAzIe>zP49<}s8KezQ=1Qmd8HWPv$urJW{3ga~gE zz^m;-Y#l)%P#`wHG7JRH4ENy9Qw6$m(Yl85K*WP1r~DmK(fy*L7cuLO^2Rrau}_7F zoky?Wt%63Fe3c2*EHRl`MNSBLykrDSJZA0uA@wQxaD*pP5P+LxG)?YA!$s1intUs! zTLfk!r1|xd7XJx*BV?gPU09gR4-_;Q{Fp3)(a05n%ZkGOCrQ*juD#08BmDLHBz@Gu z^wjo^Li$@+WzkLlCp>U~y+^p5$F=r`qoR z=pSvk)RkkE5MCey%|m5w{r5spWSs)gM|<+%vEuIpgC``Q>UR6ve{m3Q%4gC!&S_|b zKz)Mgj1dtm7>=N#p`r1Sm7V=Kl&*C^P<4r#lH;|VYy$lJeQ-*RsH!BjE9QLv_%f-) z-!1tXTg}QiMNl~DiN;~yo?@O}>E*SFYtY`D*acDsZPX?L*B0`^9U+=dDgl!)$wt8Q34Nh&~L=LrBjpQ3}H+&`N_mx+%gum5^IRl*ttRSxnY z5`vp*Q&j6R%Ori=Wfj3PAoK?CAO%&J;|0@t+uZ;lksp@;8mFk{#H5}^7C}7Ocn!+Kg zz|e%U@53FM7*Y|=l{0df1XN46Wcq;X zuxz^e1bU+rz{Z%WqyAC5)ORl<&n0JECcPad2S8Ee3o8xiOdZTO0HW9srv|AeDOM{qOPW*~-KZ0-mAH1u+xGPe-D= z|9PKORBF*~-n<7O1v6;sQPw43Gja)P4OySkva$)3+LN0@C{BirkXSqXh%4l`dr-rO z@W~Dn0w+3Mx9Ot@=LIw*7)Xr^MS%MqIO}WfWP2@^K?%qTBQKhUte__$u$MeqPBeBY@Yg@P5_$%txnS~#{o{ZDMlekKB_u+2p8NF(f=tf{nxEpp_+5;X zJdI5Ud|6(xBR)Rf$D*9l8IF1hnKo+NIQ27T-Y|fsKNFY{e+|2ykx%EIPPtz=6!HWo zflqQ$?ZAZqA9B?+=KT=BaOl&B_mltt$@B{c3_oRqUJa1C?DE>hN58FHK7+Zi-yz^F zHA*+Y!_NA2lk)IULCit5gKWEde3}5*VC!~Ua)cjqYbG=_D3kRkrEX-33r?0E5H^vD z&a$8#(>**>@x{4(3k)RcFVkG$ZnNoHpVj3#{I%I2@q=LA=z3D9O`^Su?7#6)6kET$ zK|`WuVh?&ZJ+|-f$j>Lw6k;-0aTF^(!VxCe97wDuYCzdVi%BV{hQQOKNAD25FO*-7 z^E3Y0GCn|LVX+BWCooGDJN_X-8nFOGkPPdG>OD_NIt{saUZuqB_3oY?ecUdfWOJsu z?nj?<2#?kVGV7w^5p|*DX2D@WpY~(8BN6c;VBzhVRj3_PMXl>u90CES1$zQ7@n;|I z&}-~L_7P_h4_AX;(>@utPJk3EAS{3aTEu=T39AqMD1a$g>rv}WLOO_(wHFRz$sRC^ zTJ>G*n0ZXD)&NnWR`FAW$-8!~Nz<=Cfyy{z%i&x}pgyIK3%~Zw>-Pt8G=`%dG0>zU zB#u|hd|7+*;UlPM}6!_sRkivSLsU_zD$3Rqbuo9r5o}kn#8j&e7mPJ(^tdfWtO%q#1im#sj>UIGFl9Kcw7QDV-RyS+prgmH8nQ=VKIpO%l;20tia zxp8thXZ)4zxT!Fcsa;>Vt7qvc7;ubH>5or;tOqczb>|S8UlR7An7*nWeF?S(v>D;| zs9Bp86_d+=7V|4Pdsm;RzxDC>^|aKB{>#v|SvC@qSU+taFE8()DeO^yTuNn)8x8AW zFJhITzRwx2JPWw|4?~MS2ACNfk2>Co;SR}E@t?KVgsZ}&cXCP);laTo5IO~yzu`s* z=DeeZLSxI8E#c3CiOIzqaFR~Koz!KRcA)^@SG)3eZ5@VVeU~pH;zA8-1SYK4*VlhV z&<~Mw0Q~6-lnlADVB#Aln2^2vx2@mxJqXwX#tMfhYG!gc5#h$8N00U*wnUUcexIyO zICnhJ*q1L4FpJro#>XHUTz|uX{MS5(Y|Ol|fTb}&JffAj3l|RSEHV(6awSHzeOAa{Pmbt%#rz^aPwE0Hg9-R2mL5G_D(8v^HAOo1$PSKq+&F%ea&3X5~S zDa~N=&&aX8N=+qp2RD+9u$>F6zpRMONLc%g#CVwrRn$yRp!}^5(B(|1gg>epe=9ll z*JF3)iyIfXw-ZC|RlzlWI76M^Vf^g{+yLR(wB&XK$APUv_&?N?!hW5O_y-J7CO*U{ zUG)046c?A(@v6y(aZDJ+?JW8{&C?{E;Pz3ACV*I#NDzlwyx|pL0a14Id$SIM3qr9u z$9%K{Km(awvY1_oQrUC%_V#@=^z@Vd^z}GAP)Cz>CC(U&N~ZZ_2D07BYXo!PX}8#g zXB80e!rgtHtyoA>Bbk>APC37WJG~_y-2pJK(h}vV${?r$0s{*}C@GvP(G#|Rabb9o zO%|i3s&RaG$>JOxisS>Ogj9v_*Q?=J9%2$vy@bje zeXs#Qr#N6fY{bWfH<{clJB;EV;x?h7zZeUXAxmg$epGF3aoO>cw~tOpkXKPNy#ty< z)V@)h@|*e8h}L=*F;#3-m_@Knr-_Fk+ztmF`Y)UVmsSTG#E)_rfCktg1HvvUC`jrH z$9lr1l9-xV$b`5lU_44rbuA6L6Fy`>D|t-tW!M0zfarw3UYPD3z|ka>2qJTE)xmv~F_$9NjnKWYfI=ou|69~`8HzYOQY4^AqPGPZo<8OV(C1<>muu345 zFk0cL1O9tiz|l}oBsUF`T5M924=O-7)nTH)-fpy*{+z1n9$C}}arf=loIVjff6h|v zh2G#t)2!Z*8;AKS{0J?85!(Z&X_COb#;3QxKx#%tK8mjnC8g0BQ_h5_!4{ebKi@0j znCQUK_eFm~kiPuct{NB#c0%4iiNcrZKR3 zFS2wsWrtC^iV^R7xVYpAdIhE-*bJlzs$-O3qJLBWM9oE6566K4gni&T@u*3u3;|4o zgM+6vVcJo;hJ?^jya7sjL5JQ5JY?6xa8#O+OTypyMDl9Cy+)7%(u^3B#DDDpsC2?6 z5v-3xNUF7AA5i;tq)gcV$(?nM)bN)eVv*44!<4|sNFX&ovFp#^K+SqBo(0<8S&V!- zME=~BdRqhLfC*fB?Od%s33{qI+d7e$U>yDR%p&K2B?)zj(yBP{#RJf^6U#{I43A3Q z)Ch zS?gEz!1)9_{1DbUD#)DQh}@SYcBJ)3IgsV&NM#frBT5?1$@?ETDl7Y5YyQ_GH0gh; z(*r32JtDBaauP)5&vjR2p}uS4zHzIL(c@;y@85F9*$MV?oGRQ#ayd)py;pM43sdYP zZVb<7e#_{Z6|qTDb;272u2pXzKO5w`DLAvoUpJ%yvnlt>66Sb*Qj#PD{j!-Gbt}{& zerWf3InA*GKfULn635`k0G`g;XR&`@m>owCN!)+9-1T<7Po#>bgA(BOePCh@VwvN- z&>AXI)|M3hF0XHF1VY2;ij=AljwkyygoO=P31nLhQMIJUrsld>h9`38+lK%cvo!Rc zOm4dVQguq^mr<%#%J?0G)>CCfn|;F|=`N%j1(Oa^Xlb70_;7bxMcqrY?i*PPGXroC z+tQ4U_h(^-sy7>+RCb|;dQ?u18g`ry8%7qP9S2w7U9u%!ywJZ98YIsyN2KCEUqM=g zjdG4g#sHlT=6|dL02hTrJ*VNQie08Pzxz~aZCaxv@AtIg%OB#?9o6BLeb|tEMfhlY z#32hk7;O8}qN1W=j63prxO8vB&0y?j_hdTl*7c11G8hF%WCee|gx3H3I=H3NOGUOi zm2*L>*Xv(wN4~kH?ktI6(dKNihSh6M8Lrhl0FEp=KKfcHo8HGHE#@C?>e#7hzcYiG z;m8s}xGam}M!M~z{+1BS3wv|>8Z&zEzpG?9(C zT>#B{77-@`1ym1+Puouk zwne5?GLor;;y*rWXAS4wNYkwfIX!w}`^E=sXp$mZL&-gN5i?7T!8L(VQPGE!)v9V_ zu0(sT3V%NK?-OI)!~JU{r}88grn;&JsE{gePSN!WvH5I@_AahzzfR@$mzW9IVkNMS zVrS(4G!&54qLYaNXkcM}xOd`vZPmNpahJ4UOg$is2?>r7C!!G{@Nx;W^&alwayoRH zOF2d@W|GhLmm3BTRo=!X3(Ppv&FvK9CE3pKs*Q&V8GIDrz8jtd3Ri?wC-XI<5tX>4A(%W?h4?u-NoVH!mYLAS>G3V3 zgbw`>vIY{e`HkCil7{dNXkuBqWiiHJiOgy==t_2W3UQ|?6 zErE~w>l-%O!W8}4yzH;veQ*cl`N!*jp~L$79shf9$p5!f8gJ08ciH&cvq~2)8j!IM zrXs-rJw51%@jva>BQ9Eg*}v8uYB$5mYo@1=5VYOo%<>irD5La1!B9G4PJg{V^xvav zq<9_kFJ;}v_@D0g*Sjd1|HVBV}n|T2O zG7@46J(w=22epPk2-^*%HImOkdJWP^NQL&yT04M$Xipz{0N zc$ERX4~#ADis-IB7kkvBt~fQ7AIRM=^qA2Kjq zWu$Vi=<3S(Ks`AzGmy9+8EihC@&`cvY$U^s)Jwy&CmQ;8j}uVhnFa=%@GI{76Hb%9 zU1fU>kf=bTGA_`V$j=IWH(qJC59h|>dDr$3TdAr!ETp*i^tee$Vuj%c7l`4$TlK^d z?TH(6Pn;)F#0fmj%6Qv5{?%!5(y7oLat8DbBB9D|g%GA@tKA+3H}CL)4OnNGf)ECw z9YQRmMXE99Sne^$8Sv;j6#-B)>U>-NeGd#M4@VubR1Ugehf7npyZkK_ovUv=*{Le!y?ZOd5!&K3?LwEK^aOQN%6)XcmPf6JE^7^Khw61z zr1fu{QqH&eWrAgOdKSpYa<$)SpI_P zeVHQ>pBZUlqCY#UUrl$PmzI|9=NqSJ_co%Ptv}eE;pX;k*tcuv&YhMj>Sd-h!qYcj zWuUU!O~9Zb$#LH9@R1{5KSZp_wVT+Yv;}}QF3K6ZAy)1YSQ}0s+SUY$vPE`KzN6xrB?z0 zTup)!0yko&`VnL`kSXJJ@{qKM z{LJW#3*&|C3QV1X7mN6Yfrmjs<~> z0i$$RpWo>b(PpUa`Z#oOF)U-HToV}3>@cQ z-bODuKL}?CDoe=f--kP_0?Z^ghTuuN>+OAHLcIe5P8>V78njnue{7--(iT*V{B9sO z(X?qBlz^{63BCizP|?wU8)?Pmm(p7*PL&`B>rfsnN{=7VTSh+Js7*D;h8M}0o&?vu zd-iM>7WRixGb!C0^~plyeCjnCsA@9WjL^aB9hkYVjfvaHmOyJ7pFes$mQcB8>3tL#x5Fv+1=&sX7oXP+KKg`9eGdl*8#lKX+y>GdckkbSb}`+^qQCAg(tjVaEDe6%E&B2?aXR9c#m&9(5*!`=7Su1%gDuMzZ930z^j^k^lYGttw~ z#AM$TAdhy=^yu;Rqwz^*h~Ad*fJ&2CoHIvOp>(ptsS4_vH^B8MW2f6TNo; zJ%6!4-p&U&6=on$;3^p6l=n-{f8T_-nu(`?@24_zKuJusF<%O-?eBG@^)Hpy% zNj&D(GtfxE-emIigg0K(NScF37al$x2)J#=CHBHt2Z~+t$~fCAXWsakr8;} zm-f?UPKcwUa6!Z}WN$0QKaF6-rl3fId=(|N=RWRx@l^cAkJGBE zGIn+%upbLun9?4WU;CAflQX_qIa!zvLGBggCUG_70@2B=9D92CjKx3$XPAPH&Tgc8 zek{(hBW*;(!cv)-zd#O(g1-JfV(n6E<@v0!E7ywTl{yykpy*xI z+Ojxv#OwXM)QCTiA+fMJ=Ua`etLNl2^X!GuGjJ!~i}czf*vN6vV+YK>$cV8}lm8$p z8mJt9!4$max^?UNJ|?r`Yj>ctGcL=lQn)t>!VmN+yjP*a3U7eT;Fqs-8qc=}_wpR| z1XNoN6t!|F4nK>ELZ7jd=gw{3v1149S)B5K)=~4Fii=b7BKCY=u-Z7Ykw;vA%uI4) zgHllyUMlenmOggucSc6{HlxJks+y&ncyZ>Zn@IET+Nmgd^F_w$?XXzHw_h!z13-Wi z+X1%&b|31$qo6IXeR#S`Bk>7XbKJ&J*oh6UE3i;_8~hsN!_~Prtnqi{9Xq4{cJ)Z2 zMIQHJ>EYTr5dz1?$klNvq@=5$YxI*@=DVt@D7hziuCH&r^zq{`fk{o*KVE;u zIL#5iw8|oXy8DZ8{%Ndz?gsXNq~~+(1a3@zdxi>-@BQ^2yH5r9Wot34hT=gNARarQ zI{uxODBb3r%?rqA&xj2M<05$M5y- zoy@qpbiX)lqZ_|k-g&b;e=}@YTb$1NRwe9&eaTpxrxDsFLQD((W_eY$><^c0R{x*= z#t_$9=NZPC5R-^p42<7yK|y+o>^Au*`QSc?n%5ab7AOLD6<%d2hn!*a<}U_33ewVF zgswNeyb~RL4Y*0)f=7YC97W5&jv#?KuJ!g(@(H+26NpcEwcf0Rg7Ecv!PeJdhi;)8 z2HsvdpwyO#V>SBQ^FgZTy*TfR^efL=t*$jEhn&(kc;|W#Jb?dv?F$F~`j40QiRg@D z|M|wq-}fc_$NTWPko)}S8>Roh@{uvSVfng{Y5t6{m^=9RYFjz5DoQ3#g+(EvM+pam zq@!3&i=!{BW7(miTr@1aK$=&#Yk}Ja*o5^_=ki<=9{@K!6#WcdXZNcBl z%F4R7fpxFY_7Z=Kj$-B3n*hJIzeMVgG;D>khW2J%auwyT5PWR56*`EF8GcVBJ(qyEbcs};@^dv6vN zXG<*S-S$}f3d8D9q(VS5vUWJm4rvMd2M1SVSq_ZYh%GBIs0CGcA0{15HQ{vHv0gQw z_Lgi-0I3hCc1?n5yP)6`WQG(yJ!FnNUs@DBp4ICai=d?P7dGELoWCf6 z^Z+NF$0}#2A{v_49YjHcF8bC2mHP)G%m}K;UY9xYM>kby2LC5z`ql07E-I33#kIzU z-CxsR`3HVk0<5^q70y6<3Hb|l?a;{RR0h4@YMfKRY~6YY$GpNiR;f40e1myUc_*S) z`nz}U_UO=fhdpPaj$}%d(9+U6?YMAJRrQ+DkBccf>!F-_Ym`1))wo}=(%tQxyfBLl z4qE-GVgW2}%_RUA?*|X04j*2Q&q2yZKn?BPD40Yn+@PuO8^(LsqiwaKNRx12ZG^t(*D7 ze!SX#VzvhW|Cf2O?=*XwmG1F5T+(`^!zep){RbK=^K`r6tnmwGL(}n6E9{hhXJL^) zdGg-0$ul)Bq`OB~HL984mmGkF`^4Qa%G+yx;R54it2s5kDhK`guD51*gW!JX>sti= zpKe5)0xr)6$smki{ro)8Xs4iHW9Tr{L(2f(da@s2gTsSd8%#9Q}55;>< z=u+(2x9{^q1&OtNH=u&yfr#tG3C4CRC7KwKZksLLHWPaAcsP}a_IfIVZxnGdTMxHa zjCGgYb$7pvw0MtBvEvQ4CXM1{k&3l8beeequS};E7 z0xR(u&x#l%SSN$YB4FrX}?0$4*^-~ z%3xWD_P|6W_;jaboRE$Q$m$VnGnRu!Pe)gIe~M({2A=Wm|9OzT&8%jJ+5MpgI2j`5 zj|_+}(wnoS*1rJCK3lA_KV)YB+3bbLc4cB7h9940Z%A};E2bg@|j%u3+0RjEP0~R7psd{H$zYcVhu`GMPzx(<70fyP?bykC% z>x8V@&Ki6S?Y`34&*Y+@Rw~-@e6)#rHgja5o2@O=_wLz-l>PIQPmk~=HeM=tc|F0& zj#Ji}YuDF=4nLu*;s)tGv$Inyvv;Vi%_b?g%4C`ErBvztG{IPYF`zi(xC*cRXT`S? zsW-iPzD3lji>Evj2($i-MwzR-=>sI@zt?J)#y~ekPAkd8qv&C-1dNR>f`DnXlcwG; zAD+|K9TOFTMCkp~A%QsLy}oDVmt8{dIoOIlpClkfSXcn;VdLWB3TwOmwdR=`6d~mS z0%f696i_)_K}E&_<+YM=zAIO*m_S>Kjd#yE4~P~Zpxcd}`>3=$X5|WN(0=&v0rCwd zXFPz1{{DL3-VnZF&z?`Xjwr-8kO4yCe=_jkeUuWU!09ZGS`IXrqAcSjv^>rW5*J@x z??e}Ww3QWJ7@vg^M>e3K4o!Rqf;xDp^5(|m2#SFGcW%;BBp9~a6;%*kn6ebWuXh-m zjson!aj9h$2qWiv`+=>frv|-4LgazJ4+h?c7-o5r<$y9t&iXuj_`Yg!zC+H+>L5~K zj35gnKUX2sUJiA`YYYma>JGg@RXE~BHkI(D^6jjww~#{?xWpvgMY+?`1GmeyQz`1F zCrLukPf5>pd+bdB2%96*&L2gGbGnST9=y%~<=F=KElyx}5zsKJKLr}+bt1bMJK|Q- zTe?5-3S10vkEioa{vf_c(n$heF4o!E8TtJA7^JP8W|@8UvGh>l?Lb4n-l6o4=ZIN0 zZ{ExUFwXkzyd=UH;?dDVwF35R3(qAAfQa$LOXPGPK#OWLv#tVs%;*U)_zk3y-22pBBzIDBg>apa?L!En#=dz zaJQMMF#Pg`S>o15o==6gvr{FaEx#ofw5hz(o{Od%EHfJ|y0`h@H>w~3Q71h*`VI0| z+EW*TYS}}mdxyI2P+L_e8nCkDCU4RW`Mu03U$!e{)$EFIz2jpgF|Cs|&%3hXW#30A z^uBzg!XIWmc+8VY7B{hM3gJiw=59?RT=ul_b{lJ|g~o3kcF7JfSow?d!{vd3UI_eM zFr#|eNXO#Bq+83GxC?3PV(UvucYJd1N2tZ6ZES>egG^Ub07<*XGoY3HLFlcLTZX6@ zc(#XCT!&|#>)N&md(>$nh^_<0*lSeS*>k*`l z2cV{eWj+E}mZZwDtm=sL7wNqvkGhoVq1Q!T^Q5ve9puXEua#9)>=G8<;*3ssf|th1 zl2u<`SxdGAMX-qFWzc!{7zZ_v*s0 z7Cynjr*PO116_p%1P_kd8Bgs)nt{rmP+AErCIt{d0eM;;bev!To*{KkoDV9xHk7V; z;d$<(A~Wt6o{{h~Y;0^Mi}RDUk+Pd8Fxlok0PEf2%UXDn$C)?=YMxP|d-NtPt^81? z+0~nwH>`p9dz@PJZBY@A-S@t(W-~mkYmTZR6(e`$=F@c-FCMh1PrS(LQ+d7oO?@T| z@B2ndYMxZhw|@c2X{v@@6ow&p@}Nn{fDmbwAGp2 z%omT2&55_6^x1o$%D8w@y~TTHlq>f`zUYk8@3*vV<;925l?_iaTPkm2$$7q_P+soR z=c|Tas}BTyQEK`^%c4;<+TwB~t|`F!uwdwfXzIy@WSNsEzhLVFbR9gMcjq&tFlER% zl)|Oje5AXNCpxYfmyIY;7+wI6Lx^dEQO@WwtnRIrp&saqs4})WSLk#lV5T_i?6MLl z15Sdh0d$U2O@8Cl+BG`G%@u4`x)<0v?@jJWx3NU&=q9NC-oc@+e~otc z%PXHX#+@&OdDH_`eEp-MF2W!+>^3VEmyIG3Wb1cWO^7=m{-r}+sA+~ZA{ z+!_=qVB13rv%oRw(15Tg42!|w(ka;}NL84BK?5LXzV{nQ_%En~iNZ?2^#Ha=SsOh@&2K%Z9KmcJ14@u8?QR>un{G^@gqG zW9#>1sc~V?yu}&ckj=Aqry_HJpcRjq)TYIF>!@oKg9j;9?q8Qzv-pj>>f|o|qEbux zRJJ0PjI6gY!P+LbeS^^*w>sT`%E+tWRcaw6V744>Oe4(7Q=xQFn z$UHd|bhc~Wi+8l9kbC5vH(FA=e65W#$3dRuR)n}<6dm^OgRl3)i~y$&NOdnWtVV3} z9dCLQA$8>n8>sCymyrHgh^KRq7w+CHVl~KMLKTMPSg0RDy#_i=G@1252(eJFjqnbJ z-{$rFzS8%Qtj$bNfROqUO~2l2Qg_5K(EHJ&VtjBDf-IW!+}~-0SxQF>jY~&gAe#pM zSQtz@VWtr!hvh_nLFDkqSkPRAAzcNUmVX2Z5XU=@8ODNi zLjbbSST@P1sKJB=8ZwCS0rs_^O_@U#bPvw)m~oj!Bxi=_ci}=oy3Zy;LZ}H}p+W6h z*r|ES1naVyj!xhH5S!cH66$!=%SW z0o;F>{l*cS$9E-Ike>O{({p%woiM^Oa0~C9vZ3;tyYXV1-i>>#LuZ`cZqZ#yRnvw* zTn!z=?IBBTrdF4Jp)_fAM(lg?&-&?y+=O={v;_#-Vs*iZA-oQ3_# z2`=v8Q3jj!3{UEAdW8;cHMucSaMp8bK46zn#A&VMQp;lcNI{6b>#27 zSJEXMNAV1%<~YX#5Y|*oLK~d{d}lrMt-rO(!ZQP@A|KLdktjtBL;1H45hYsm!}~!ci1+`Bv8uxk z^<>Y5Bk8@UyR2hhiVki1nX%EUM)vlY7$tB(aMRYU=xOgeJwl^ozX8BSN6L{Mac%Vx z>S@UvHexKuFU)nV18@vOZU^Ks33jurhvkt3fNi^k+&D5`ruZe2c}E}te_fSvW725x zb~q5jgPKV~+oIP~ubWNL334*J(rluAGj?jt-aRw9A5B#3cwN_>&}$S6GCAJVe?=#LQ{mnF z8?@Sfh`l)+&+oZ@qT{pn;iLDG~%f)MauVoCgp7h+f5|19QNNnk|GF2aQ_Yv=|mR!{tSX_!m!p(>9G< z9>OZz5W3^Q0Uylf2{_JTTa;hg2G?baAyGCcYw%Ka-Vc_*w+q(7{ocJR$T?EXK_Y-9 zPlBF~kmW7uuqwtPERSd(F~xu47ZI6p>s`=DoQ$4~J!xU_T`N<4v}cJp4zg<2JDtaT zRzrgY_2&rO5wjkLi_~k&5ij z!vrm1l;CTNJ5BsTnv&5wMQG4gB?oH1``m7Ihe}OB^PaoEM14jU+`V`23mWZoqGsaO z*!in@lvjKcRaXFThC9da-ZwUMgN2dtgzCpm_QyI1suv8|JRjBTPZ%qqS;J`wOdvdA zoY!=@1Sv$b{+OsSBwfcK4>mp~>o*r_DDBd+MKpEGqxv(c`iyUzazB4eLJ?i1y3hNE ze6LSkf6HXna$XqyuLWpi|?!0Mwi~Z5#D62Y%kRyMd zJ_GKYd1T9R=`X5F^p}DsBGB3lQ*9JIlDu;M{Ew{^$eJt^o}6dRGoNrrMp1v^TT8kZ za#8-&4|Yd$-h)9aQIJ^cQ88A)Lxrfjv!ka#@HHli_`wQktxzO10OThWNKM@@ zDth@$2{i~*Qc$)oCfmbJ&bZz(0~5E5FZ=T4%X9Q45CWNh)K+!{oWz_r>#5M$_fsr8 zYj}pL%y_M3pD(_;be>N12km%hV$C&1`qDeM0xzdsU=Zc^KIU!JKC|!sip+fOZBAd4 zbc&9;j+C-ze@u#S9;s=x^BQ>Fnd{9g30*lnKes z-Z~VZlBej_rqfxuzxjaUIk}e`9*xzMpVOGz^C<4tF1Fo4Q`a>^i&m~N3_N~q`|wH( zo*c&tDFuYu+Fnhe-al4Bp`f6k3xPpT&nBIeCI&GZ9$(|OB+T4G8x$$+-89Z9(&>|v`ST1T&AU^NPk2x}YzX05OIF$LCNPh!tb#fLCvdpIpO zArn`jQ>dSIIazg1kR}E?4>&$#IgQe{J}Eo;aQD>}y!GLTTrs4QBs|dzWD6Qi<#Xc5 z0g8@6ZQ>mos(|>9@JukgP%A+5N^lfJ>ChRhbuBCa)UrY5yy@jtN^r(#zEPjwky+A( z?7!pdfr*z0Ywdmv$|9C0Np;d_#_3YooEVXKls?)I>NFhqnw*Zp0oS#rZYM^i1?UQnHIBZV0$NazdICSF-%F4+_zO9?RfnpxrY z+y1~E*HbR^eUJz!t2C^%>`niScgu>T@Ft(h=N|2NbzZ13xWm0YSbMHy&$jA;76BJi z*{fBvc$2X4rL&hKs5@9b*#tKWyLhZ-XR(w@egV6KjNiwhAB>9}4hPIzhpfh7qj@pu z1X(^b{h&eA0@{qoFUYtZ-0ue0TL`T~(1Qpn6?n}pu<9~r z&d>l%?FXjE=R$`35wtK7Z3uPyp1oER`QCJ%3T($49x7B}C0~e#;)aMl9&?;u{<`l& z#C#}HnhS1bVh_x6^!JsWhg-jPZBK{OVy;umGw^l~P&hO-e6cBW$lL57E({hI#Nq`A zK;D5`o)^vp@dNSPAoq7ScdB%JOVZ%hIR|f{7 zl2!_zTH8v}Yuqu{^j)hQcdjp{`+9+}Yt8??HJL#`-`8nYufv>y_wq_)i_|d3m(b%F zM(8|?_=Mi0_-4z{Tm7`vaVH6!K*JwGSaUt`fUW#})A;PsuL$yI(*4jGPkc zfavCA0RLS;)Zb$#-fhc8^irw0Fh;*vQ{`L5FkWGn0hZEV#Bv{e6V;R>=Y`ZyK#)By zTa8Ax&9Z{8A;PbP-s96_ zAjMj+6D|%_ibtk}O+j3it9yD3GdZFQ(!$_9clXcG1An^99I`wiIy(uOXzKxP707zj~7>L?su~pDG ztQ1SEl^5mw#OGDm`3bI3hkR8PEm=q8JVn3tej~ISphYIW+wK1SiEY%BlsMp(pHO^; za_J3#e=r7m&K$@rPaUk>OcSGn1Q4v%CR*B~GBWS9E*`lnGv9sDu{nKZ8njA~*nDd% z(@DJRCR3PVV!1(~@?+_GdSA{poKDwkpI4w(V3k&k`ZYvjQ>Lq8G981!7A&nffIuU4KF|)FUy>$J+y?{!5?nQ%!)y z{`;l41)unzuXE^O`S)A?{MVz?rU1eJe#z|mpFVQ!|NoJHFVp`?Yxz$0DuK0u6&RL1 z(Si1-i^`)J_4?~GLa`oo8$625RF4Jnk&NHY--Gt`Bn!tPw}Ds5@t^xmk+Xb-)p5qi z*pF3WGAg4Pwx1F|cb&6x!Z{P>Jzm=3E^JiU$9gp>Q=NQ-BHzBUOXJfSnH|YuF4Ly_ zvh(pRGDpIG%9@0CRCI4ty4iUCX6MB6PXaj^ z{})^D9Z&WD|NoOBWhB|FQjx3@I(DU0GNSCgw~&=_WS5X6WEILwDkOVv8Bz8;=8<`D ztYe(>yFcsoet$lf@9*=zy!+!-$MGDGaev(J*W2wra`u(io%0(d=Qqk+d}O^Uj4E#G zrnOQMd?jg@AyvdFtxS048fWMgw8rV_BYNk~YMC!#sZM{fL4UeoQa}118^ipACA6M)>?H=Qp)3_fE9^6*jevgTMP5$^cRl*P zMYV}I9+IZSE$j2;x`JAtw2n$dMCQE^)oYN*aP&Po)L58)-S?PU>)~geXdkyD zH(gv5(irc>)mHH4>p6aV?tCNu1K01LpLm7L-~2lL;kE(~?c&p0ewzA0-mRLJmFv^fj&3wc@fEi}t*c0Y{PMSCBzQuX9fS zx$<5uK&_ULwYNv=51h!}ev}&=dgl<`$!~lJA6Q|^roU+3Y-aGplE)vO0-rfaieqjy^!{h_>I-s%1QzAMk7{i zCaS?K|5vsy-_1v|VcmKgHBN%WXG)8(f>zn;a<$YxhZ`DItA-%b8mZ zgGpQoWke!0U7>KT$b3~XJ#)ezPm#JLePE~m#EjSedrp>Y)c-Ld?Ls>?cgdI(Y^{X7 z-O%s0(FGUp7?3-Pe=efJ3)l_)!^X13b`@u37*4(Gck))y<7N@>VGTJQ;-UAc8g81A zhx0>3iR%$;zp|@KZ)X~PM4}O|j=Y4TNdAsdeXaZWZuIK31=TvO?eJ4APc(T=m2_Hd z?9T4|VQ8_=}N*mBrl7>wJ4zr|Tw4hoxKx;CglEHcD8d!0rMRU_5N} z`H{2N<5rETeMT}$uN2|0R=ziPROs(r#^d!wK2b|h(Y?nvb>c3~p*uzGN4H>QXJs-{ zN;$!k;+aAr5N%)%RvNyFTS+2)LJTyY@OP?<}4l(#i5!nR#>1(M|@JbuMz2a;vTeXHNk!Wl0$~d@&tX3gEL;e z|KWR4T3AlWJEIo+TW*_%yC;7P;%l$miHdNocoukGI%uvG#_4^Qzu{O9Z`FGxKUb?C zr}m4QAMUS+-E_I9V2om?u)fV8@38kYtm;i2{V*C|oM3ED{pw|Dx9>lF2N8xC#f*K9 zDw)2%xrbMq?(n8?zW4LzQTx`J_Q%Hqx?Zc~yZ<(Eayt2HiccWnt5`y6M0iWSsP*0D zc=oJoH~IS$O9Jvh!=u9~6vpU_J3=qyYxTyOsS;(Iaae zqcc~gr>$2vMR-;lMznR)^113o{nH}<(RB;U?wHBy2t;m-Q>BqpazuEozw@l)JYm{@ zM{*>Qs(m!N)z3u!tga=C82jkM^Oslt(TL(nGim){@)%x_lKEI!i~gb+CZ$tdbc&)v zHxaw+%K2)lneX3A2PW;_pD_0pm$nP`^{%=cRVq3uxjC&l_Kn@Lz=J$7b7@U%RclVQ zZ%ggu*TAz8Rvi$~Gd*Z`Q8Sg8!;ReOL*ud@;e_4#&9(BDrOE1~iffP0i%Lq~LZEIG z+W|Kjs(Qmf@sX?3H_!)|(Dyn1EG7pj{ML@a_|DE~FPNh9$BWHL5_!H%-@ty+h(5+>n&8Z!O+2aD*IIyz|Iz{gD`8t4WDS`CDV43>`$SPr>bTXxe z-eEM#Wr=P!Ulu;?dab=+WUJaoS{El1d~flxr|hZacA8`#NwQ<;tu(m$RM(0fq#}EY zx@C3pdSmWZy(nmcAu5A(h-y|W*!{za+iF>WX?u*9eC=g?ti1WTv7l0{ zll!$1#@KMF48ELA$B9OqF=U0QSARwV0vrEOuWebK=($ubt|;ld5cSHI#8@j1+ z-5Eol^nR_j>yW9Rhem00KQvG*qk>o4zdA1m%9NAl=dH*{`+Z7Q` zUIgXF>Xdc9&H>@Q6AsC0KjP8#v2ko&xl+Mf((zVP#^ffrNct(+hczSbTVG9WM7tVf zV$U}((78pid=Nb2)5qxb^?+F4*r&6fdA8{UnJ*cWSZ5{i2Zn+|Tq}qm2kEK!du)u$ zdJpeA{9xR(HZBe)NnH{l`FiJm&JX6k9u^cqw_>lJ#_9_pN+Wt$e*9zXZ+Q=^Va>!# zo4LuO6OTNsmatPy#`yK*_!38K{oTFod#S1TOKG3qbfk{>akg|GDZyF#bj0^lu?L3Et}-kpF_o`SyxKcW@jM<_sKvJJ)-tia(yJ_w;+fLEpF1*9{80YU6@Iw&u%ScdtLp(@BWg|+ig)LK9_l-kL=Z= z!3>G?LQeL;(6lE&Ia!=g_q}|E$!$bmL$PlW{cs%P$*HA7F|LYHo+vUV3+M3Ue*N3V zjV1fse?AQojsMK2@uUs1ak+#}A}o5_XiP%+ZO4l=R=J67##P>_213eycfZK(n=Ny? za+#ho^)1;uiabe-)Akd`#BzQCmzOvJ3w$0x~RJtReD zCM?79C^Fj>M*4?;AFkNDb#*BpqFnOcAsj_qZj|fz#_-Aso;q$0mBoF=_705{Si4nF z$Y}%g#A+P(r zAvic7z}B$fBOC{URf9(!Uh@^mm7=Q>L*hokWyKtCxQ`IN=xS)(dBa!0XvAe1qc|k5 zH1&M|TFq)$_}?!QSJ2sgJ@D-tkq351*nwOt&N%{H4@F(q+CwZaUcNMQqBCKo1S5dw ztQSw4913cM3&VpKD$%r0xn674cOv`*TYXT$0^>9wlkRcdkK3+Y0ij7FOKEEwGUJqmn_8e3JJz1RhrB zvlhT}cR+}`4Zdb2JM%dNSbqS$5A&l(`QN*D4||;qn4mRKt0vM%Y(HpUt>`t5SN5g`k{xdm;TWGfe&L^&WzY#3r4S-t+t_&vh@*jl6VKyQFGa>+R9(B14 z$Q2gKQI_C92f=LhGn7%DiyWJnQ=f9*U?pT|V7=7v=v5 zC3mTPW zMa7SI()j<(vlpbm#Sm%wsaBI}f@zk-XEc%cnA4RHN8?%j(aC4i7sLIP4?k;6;pgoUGi z|F(gL2hD>9T~~n210@&%*PVXjD3lcd0y3r>=9L5KEU2Yo0VRaTPBFwUvI#8sC!@+Y z(8>X{S>x4Eu!98&RM1eTS%bHZlwbj3O_cT&hPn|<@?kNJQGf6ZD z3ZTwy5JCW)C_)D05?of_NF)?x5K;lAp#s4tEZVJ8;E4YYS;bg@ocP&=QL37iNt?Lv z{a4(7-sN5kG7n=vLoE)9D2c{E#3oqn&Q4E@!XpLa3D>*(P>Hn%AwJj0@>g{KX{AY@ zYRQqa7M*FW?{bZ5AEpfuyym_*PVZge3TP@e2rayE)QtssnM%kmM+Iu86Cj(RsR3N3 z4x*7fpy@&64s0A*9wM|hjf46`E_(k0vev}J#K5hp%I`n=0SGd`NE9&2njyH8r#1E+ zU;=E%VuMbf7SDeB7COR9LKPI=9O({iRZ@75GYHgJDIv^;w*tKS?bs%)6YZTw^0ZHA zzq_mPZU=@IVprZ-GYow_KSvl89K0t_#aYBN@O^V+pT+@0-)e2b)uyrG-W$JwO{6E> z2o81WU^D*?`)3Bz6a6_w>C@8?3F{V!|JKrm%!VBrDCwgD-0&BI2-- zZ(ic0b{2m|_(Y5He0&A-7c>}Hq&6n)v1kIG7!{yF5j3j!Q}XCEdM}27H8(Kfw~p z%dA%(o&@}?W@@zyc30jnu5Mq!V-VyK@Seqqx_T)8EBKJ47Xz;c^xfatY#96#xrL4n z3)fUKiM~??=0&@pA#!`4(y7^{@04*C>`coGM3AO?W zVm1VTfeoq@ip&H+vB4pOh(QXi3M3f$nlMq}eu3;X1-OK4eW5=Z^gNJnIS-jijf>4& zoh4D}n5v^T@(gFo`;PBs>67O*G*1|;CzUFHR*&kJN0v6juMnj8gYO&}=q~CZN_kfi zj-Y^0L!-#;R|Xf5-%#5JMhYCyWX3N7HXgwuVgikxEf@IH5MR2 z{438^6z9o&z*@snW|#5{4-4gbwljO333ttt3JO8x;f57q>#MRnUD87)Mqy2kY$J1b zH)pv{dM~^TDAMm_>n!OOo>uUe@M+!h;~DfjJk?o}aNLtxvkILe#8xdr;deE6Vnl5H zX5Z5AUDcoOjzpjM?L~=)8ZGSQaLqx8_8kOGkdTM&0;fQ<#R4-8o+^UF1GIr)8~_z! zp}_h9<`%qN(v4(@439&g2kRB`kabI4&w_u<4D9_MpsiZ6-{v5|{RJ>O5nKZj{7_NO zL|7#pCJkUogvRhE60E`h`zAO9AZ!$XBQORp+V=?}nyQu-6Sy#BHv<*2D0Ee;+TYX% zYXC(U{fHzIWH_O6nq0iFzCo=Mff&dj)_e=tQrJeKxIHtd!al(D7`XR706-z9y9t5cu-v+G(6z(6mM7qi-G;(5~ zuzatq{L_oKtuow4Bs+OOkm9ZkU2ZNF<5JTb6nI*A8M?MARn-V@sa@&f;i8B zM-PHz5w|nYyG<}ewch*$z5W!4q~Dj6umThVuF~+NRlqXi<4`-)JiTGZF_f3T5q>KL z(W>3McM+nl;NW0REfe0;8}ZJ^IwfDsK9c(0)|LURFZK&|?%jr(bIe`*G$pPLg(Wot?JF$?>PEyNA{%Q{PE`wZfe< z(pkBwpkLe&B_q1Wd~NAn1z|zy$|4=n7kd`+k1|{P)wfaV9uxJmWyJW46$=UJcK1;D-o?gAkC8$iS%*w)jCh@-y?AZAJR#OS9-@#Ci2?c1x?u0YZPsIE(995U$*`%`VlB)PM-a@70tB2SR&8?4s=N4-Ftg5U~Pu zPeUdQIQHtI84N7hQW6utgP}&_YavVhxJcHEf$*RJH0Ur?`}j9op@k=h2@G$(DpokR zAlT1Se)!}Od-n8-^q{*td%Dk*4PnfF>I>a)8JQ6#KZ(&baWZpj^7!COayD2#?j*M> zfV`+Hqr$|C&O4^irqFRxpX|k~;IOq}rW7ctUjY(N7D~hBs$<##O#l(vBGeQ?Ke~&Z zF##U7C4dG(0VHd>;htpDvfr9F9e1XU^&s;J zm*VIk%GdI}H;^N1%+B}tDI@JuKE%ZP`_OtM^y-ei zhjtRnaDhi+xoN)6?-yN^0V5fLSA|?<5c`ch6Y^KMRXH$a4%h??3mKp4>go#B;G6>r z;LD6EZ|j(kbJw@YvsB#vIClWNaj^tK_wDb3KJv=9%Hms|uxNH`_pE9A(gkE#YJQ3| z>*#QOj@%|gwy`hD$xAk~+V3c&{M_Q_r&eE-|E?yx%#J#y>@{9w>AHsK0*}kUb`o#s z!G_*nFy6n=F}UP`NQ{tvFL2}?mH~+o1Zv-rg8>*%qtVEU4uUNjSXPMskR4U7CrqD2 zPAiWN!^H(z;5Qcxdojr1Nc<-B>HKBFhhJ zJ&W;Pd&4XPTK=boK0!IsL5rjGM%YI`Q4t6UK;RGyLJ5L1oSKQ7NVaJeaxG+8-P8fy zbJLK9St*A1_ye5=%knBn5MLxEEy$m%wFcRg!>C?S*)7;LkuHb|yP#nD6R<*WqiGN< zBI<8w3Nh(gN`^=aAe{xNmowv48t4bUq|`Tibi-mrhrVgAk8I@@$V$@&e2Bk$Zn8ZF zE6n#`b%>{x*lc!c`WqZfP;{`vcen(AE_N?mH}ZTl2E>hM38=2He|Uz&u!-U7edQ;H7PyUTuaE`oZN@0!jx2Z=RDKN2>&7~ioZ#goeekrNnqnZt$vr=~QZ zRUftq6~Bm$rI=wf2G^JwTs6$(ztT!XiUp|yS5USeXJ*!#xCb)l)X>%Js}Pc$ISe=u z+EisTtiZ)zyT~l?GEJL@;8e!n@cs3xcF!G0nO=HvGFNA6isxaiQpyB2-xIzVj$2C|jkiRj2!=S^^ zH|nhJr`>Z1ok_zbwVo#wdZy%)elcC~Fs%Zd;}6r*OL{U;tLH0tH2u>3G+fy?ay9@? zwh{7Gjbm%N^(rE}91~euL?fNi=Vp9|II!f$d}eF}XT&yU8u*(pkcK~ZaH^@Qf^S|+ zS}*)!;wPhGCoYImH>`aj6iSr!DUwG32wLSv{3?a9%+=LrZ%{mvBixtd{a6FKm{ks= z7Vbj+kQ`oH+bVRPa{`?UBuu~~z7aw$=xLY*V$;m`?|*_&7E#}WrkiYLcA|m7iKth zhcRh^e;b6mzemf9(KqiycnaIBISg$G(GgCI3=ZI6tOPrE0!)IJ2?@6V3#8yy3si>T zT(j5&{QaSC6d)rGfI~Zv2ZTNSz}=D|4i;$QUVYK4mpfULKAV$<_Bth&F{Nz`GfZ65 zgQdByU5U|+%y(kjh*25##%{&2*zplwqIS zq-5ZtKy^7@T>?rsX~?Mnao_3^L)nCub7JK**y9eV_BUO2)rfP@R~wtpCBIcN<0^RZ zB34*~0=BvMDJE2kD*WVvJQc1tC!QoD1c)pcBN4PE??v?+%I~dEKtAX%-vLwD0%T`@ z6~iF?%|`oL)dn5{KTHZyFg8O}2HhD?!;^jgTI^&Wf@0)s)MYwVf3}QoJtH^R$)fu^ z$|K~hw3q!wg_Mnq;~tMxRIT{Y&^XEYaMqV4TP|y4SAABU_*!LIFfC`eAw>9c%`IM_ z4T79?R+4OJSeSY7FuV&yq~kc;S`@VU*&oD}lRPx9#yvn94Ok|f!lOr*fg}c}CURd~ zzYjgvc;pRSQd0ECw^yRe<-L=G8VLh+=C>-aOp8xDI!0BGczQ^&8j;merkOguo&q|y ziW3KpX~@WS-bX-HbiN9li&`MJ*8k4e?%CfWUzpocZ0QWMq(cRgW-q~-5H=VxAXNsygafgjU`4r} zfsh)63^)=ZFo6&P*2o>cFAy$67H_f|1KEg1D2#y##*q>~@I7JTHdM^q=_RQh{WI*F zw5n*Y-@Yl47@OMkPskG)YHp+4FurQPn8mfqRzEb)#$f3F`3lnTEZKs^@Qab`X z`4boKa{3BEX^SnuxlhD|hz-Fy^&;+a7n?!+ zB!Sn42+ACeugC!ak_d4CQri>eq)x&QgUXEzaOQWIM9w&zpH%UcXr*dzy67wi>HH~o z4C&m|qj-~u@Qj(!H1o*kqMq3vq20HMJ6}J)OQ-A`d4}3Zbd`Y&u6C{w^4$Pkr@=M^ z>@p5BmJi81WDbEo7}Ntdq4)u!v_mr`w}K|+c{&GGc5?ck6o2~t?SuExBj0y+*vQx; zuW;zketjUBX$4C@L~89hecMP`0HJB&#Eo>~+0o8K#yMBIkGpgv3b z;+)Cm)T(aIt;J!5Y47~M)iz1~tRmUC-B1H6CZc1{jX#Ap_4hkPQXy~ru(eXj&DC-o8PdoX=Enhd@~xbrYL0ppyPjo*og@VMIzKQteyypkJKUH zm+8QU0?A8RGuXx7pF7`duiDt}PSWq6Lh8Qno5ahv{Oa`6?zprHe_i$&8u8Wm&-ZQ( z7TUAGPtE{3OT+(V6>-S~tr1Aa2aOf=V_XgFH2(6Y!ysTGW)j|p-$MGg0}!TSWAocI zM0|$~eCOCgCwNLAaSzKIDAyt7ETZGPTSkErn;qYCdQz$!#3;8ecuim8tgL*}S!p}8 zNrA+Bo;%Ivh26aQ*HeB}i-2k^{GlL(p|{7%4kq>9>0}=L-IK{>T_hbBBOCf~?EI|j z&0)E3Po1B3*qOTz-Gs&J3hEL+^Ba*x{K3=e`(GjO^1<~aO%W#u8F@`U~} zbC_y*V0leo)*)H{fdL)TKD2>A1Z2SO&VU{f@oYdiaX2C7fq^>w9QTT!;zy)aBFKPw zT5`U3{-PCc#^~*!ax`*`P9|wT3Ktr*P40fjBcXJ{G^O){O}8(Nb$+S+hKtYB-;zgs zEM$zJsfI{fyKEGoyHF$?>RbiaRnWP%f;s3+=M1R0U`9$n-V#X{AdEH?kJOFMltVUU z(Zi?ax$R5|&_!My|0GNe;*HZEu1aEs3+oC!#eZ5G+`JX*b;tGDL+4@Gn||>l10;8! zGuHrMA+S%Tplb$eScqQ~)PjETAEtul<_}Fe>Kr^kP?Z zlC7(JA|W=SXZ?hSSt7j{$XNqI76?c9{+K0dKt_a0;qG0;R$s4GCzI}@*VW~6q3RX< z>v{bnX#7}Y#X8=nq>`JnqpWMasXzZ_a=TDE%`=Jp!wQO>sygg7n^fXAP~6EV{|ca* zHeyM>GHz6a@314;tIVZxAsaMVq;vHFdxMJ7h@N9JUJs{BfUoA|txv0NRz^4+KF#{= zU?j%ZX!E5I3mv|Wr9e0H3tskQsC}T(E{`Qe99KJk`7OC@K;6sJFN=jt;l{RyN3^|7 zYdL(s?I|-m5JH5g?3^~Su-m}Y2wA&Y2^qtfgaoevjh?E(Rjll|=hDy(u*(IfPCnTF zAz1;t9QiF36=-ZTo!5LkW_&iu{r98tZOlionG?{DD|@!3?H^>y8eI7MD!yD!D*J{A zRrO=G`h_NLO!$j}&dZW*)EZI!PEpMuJYi(4Z;h+Y6(|I;4D{Kw?fuB~S+CFxv~ zJ6MQ#|2j$%b|HA5&%$&zD-V!z<;_n}^*3$=8CO2PH(zH~z~DDE^R}1H4odtUZX<|p z9&&^5zXMU7Y4W5zw~d5^gaF4>1VeQFDxR!Hh3t!knUflCb)9{mZJ7+31hmAQI58{c z_>;OFT*;O$5qJ%42!%b9yc_m_!0Dp-TGmv=)zR+tJNjMUv`R{y} ze?cV*dRN2(06ua{S=k(^y%SGsNN$fs(9#%f&p9Tay#a-~$*@TI)zzU=vS5iNg-I?_ z?c`x`&m4&meKh&W{2kPC(Hif*Y zSFfh4`GKv>P7|nNvGymN8M`iCu+!wS>NP<60cUd>X~y!R&)MQIN8{t;J#~K4DA?H8 z)RaC}R1B8iLi{mr(dL7GrruW_V&(tGc(W*=^8AfV;@Z;E@-Su;99iPymB2Hg-EiTu zKA{~Si0O;nU5~(GDTS7w-d0Tc8T(+jXk~IM7aI3{)2B3UMlGoxf`o8FQcxc)kBo`j z{T!k+(Hnm%=CSqv2mvs&qlgf|&IVOwv8DHcv~CO?V$1Vz-UfXar~@kENW8P%)}nV> zt<<%%S_(wc=iYZty2s_=hNvzcIofVW1Zfvk(t%ow4^=?tFI zi8q)n>L@Eim!%;kZ02{?v%+r0cJDcJlU*ww^Ebag_0L}tHv2X*Cir5U*-X{^8N!JB z?@DzuHPXK9h5Bj_ZkoE=qUMk3hZEF4QzO2U?yoh+r+D(cj(tIK<3e@)!}2_-Yc4dhZ6ksYz^$(gA+t0j31jHdL%P#@I9oS2^@}px zo7G-t$6lW1bkslQKSzMrJLuKa1D3m;V9T0W){~-k2)Q!%7tXKi-Z{svT3I9{ah!-4 zjXEnxqpW!5b;3;@Ms{;rH?m_^^k;YP5E*VJU{IC9XwyP<|NTJ#p%0rgc%^YR#Sh z@Si)~y5GJ!GR@{i&vnU@S}Jt7%YMz8;ZR`VUgfBr&@SnSSWQJJOD<9kqNFscKPhf4BJX6}^hS1p z-<6x>!Q^fjF8c~?v@ROSYrao13LGul*H74~r@>F?xnN2efA?185b|zSYU;PC_iu4- zIr8S8GN;nSR)(7Pto!7JP$`XE&9zFY5p78p3kf`gOO$@_G(*{0Z$z)?>)0Rm^9_5K z)51VZ9(mUBi*M=Qb+89@JZsb<7SEK&U1(cb6U-9qtPG70k=D+)X}+XEzewY?2qV}? zyw$~)A0WdplJDNQ+$M3#_xZ1RjM-{to{kM+MKbu@x5mV>`1bO&V8(WOWs4KwLKxp-kHelEtZWtdnUN3lNj2_eC-FH zo6Bb%wVnjiD^kUc+$=%j-*#T(Jt zslmlfb#5+qNv=u#zQjRSvO{04X)WriIo<0JuI6U>8Q!h8b*7cU*6Db5F`(_ar>3`G zjxKC#uMHRG*>&L3>o{CUrIOtj-!YM~@yILubjBo>r{o2%sxiW9RB=P~6N4$%>iOD( znfB(WhCNBoZ=CYeg5$-q3%VtKY~^1)Oub}b4h4b&3t0{|qO|2P3$s#rDf=Quq4zYl zelSht`aipwW%z8@L~gEFHuT;L=j8(dP}{wxwxBYN@}tI$oiY(;SDhqy-OG-}c;s47 zL|HCg$)kvFc3jpF0YMiqdhF?c^Vo3skI@4UJY*u%VRc)rzk8>gU96tDSAiPD3cIH^ zPSp6@iA;Xsh{#YW2q=2SG7)vz#4}xhZZQ#WYHV~a?Mq@?XeEcs>l0MpdZ_?LOmv;N z9z1kyzTE-E0Mxg5f;Pr&M0b8Nl_aZ@pVIP<&*tXUAA8(!!9ErnszYjGos>m03qwiFXP-;M&rIf*$YgEN4 zDf50Y#pC>YACH9c9_pfVDz^LMo;nWirhWIgLU4Zb&IQ4tX1Kwi-)%RK50)#}?AuNG z`gXpfsTx}0wcq-b8=o@>I+|&lznu2~;(x-|L3KmX4qBj-zklxpu3122|D-w=v(qWL zGR4v5R%!sM=Yf&Ws;eCy^6R6g4UWbqBrQnfFzJVFo~hdAzsO5v=6vGN2h7xWZksi~ z+-E3;rEm*{;j!f58HY`*wcAN~e5QQ#oBIYDcg-B!hML5i&GLJ4(o_^b3jgo$e*@Lb zf-`FS#dV>*qp# zqv%-NfranwtQbrLs+sY$8CzEoeZ5p#R5T9L!OReLzV;;e%?N6 zw*1-l>>hezm9mqW3Q{I%o`TluSz^>~ipRb091lstP6@S$dCI1*RMp$anNt4r6Rt5U zxc*|gBwD1obM7H~rG8r7hvz9L%H}%-B#^BCa{zj`jpUtgU)(k3iN1G#H>dN#jX5Hh z;#T#+9Nr`P3(O4$-sJh(&+Fz7hv@xqiBh*=G%Ik^D%V71O(iZ0wM;0Ck>d^L1p%bK z|3L!LX&a4GCL`g2#@W8L{f?u|pBwnkUzF^>{W|YqI-ikR!7TTgPuDNx=^((b40pxV zub2|=*G9gIyvuBlXp8Bpq99zrF1u@7b>X((bbN9IZ4KX5>5I$#F8x|lWB#&ae_7z9 z3{iq)d?HRN|3=f#y&}(iNqgI6=9<1UG3OYK-Vcg*=QW?%iKbGH+7+hJYF~|7{p^LU z@F`th%n3gNe8owS7D?!i04SmvRc-YK zzC4X}yelC|73qia@%A7tym~w`kdgFjeFtr-e8o48Tsb^t#lPNWzlJltj5g$m?i_Vp z+(tW!n|sp4D@)9qI9c75qv9<1x=cP81SbqAZ-03n&sfp|6&738Y*zcTP~_>9G0LH_ z)I^qV%L^?sQm7-ies{4UHe-3Z$HOmw9+XC468)r1{?Z@1?93j^40CQ{flqO1scL?( zQrGV>>dQWx+}GYT)G}y=QEOp!eeb=Skh!u*>BQwL6!k(B9*(8Yjzr%w<_LQ`BSW@F zm2L~hkr)ybg2H0oe&w@gQS0!bjqVT1xJ`B3*_TUs8^>l%?bbCN8gDD%&(7>K*vH^5 z-pqTg&gV=Ktu&HgdN8-&Fq|4JayWVrEgp z-%dLwZ*ia}gOlgyj376MpJddFl>mSD$UkQGrvKu};w!WtOFVGR1&-yVr9bi-nqF?> zsu_mTsqZInX~#dgn5fduhgxoPVZJ>XmB*OeA`q?VgWKu)_=J*qE%#&4O)pJf zNKc8;6c3NQSIu+(tr{VV*!63ktb6boqM>KQ$^ms!w~l2o$x7H6Jn%i&06r?A`C>z&fQ4I=*i zAeb)wEABetOL6|oH=2sMIapAvT&~#c)tLvMJEuUw-hyBK+!cF_p>6soiC*be0)*Pq z4@FZdy%W_<&p!faR<4Q@GyO_T<+qe3O^b>F^9+Tjxg9R zAMZgHn+LOPF0)mUUPq6#cU< zx%X8_#h+=L6926KLqbyEn?{D48B|VZE9|939pidlZ2K=u{!;FkY1p}H*dZ$;|>=C%3_Jab}Fpx*Yt zPsOxes#dCR?DHnvOqASy7iHsS2k*E3dNC;sZZ|0&A7ssPBX0Wga@a>t)F* zX;{Ozb$1+SV?e;ni5tokn)TqY`1cX@)~sk$oEr4K{7=Xh+qJuxh__GDqP5#sHT56O zsL4{o;avRh7(#lD!I_zH+Bop>tdWd#QBqRS>(81>leu#AtyBf<^9reIjpUUvhLpeF z-_Ul8e;eoWkVpTL=abjz%nT?ecx{OV(U3E6bL*NPsW{r7>_L8coXK7Q^rKU%TsOk3 zQrZmzU&BM1ZXk?F8nO+qSoEa`y}1tUY~*t)a!@8}}K8pmAEGUteoo87-Y%h6t-Curca(+H!i$gAJ3OQQ#r@*VM0Npy>% zl81yM8e4!Z!&68yOF7?K9l4j|h^G`WemZA>pvU*~5eq6xp@F$GngF`#M;#WPL8cR1>AfNP%^`YF;coJjaqO3gYeHk8-SBIx>xfQp&DRV61 zg7kl##DwXw1WJFJ;-pG#l{$W5Bw5o};`N5K%LZph+Q-IQ8LKmDPqSW;c6YqL!hTnN zFa^%;bJ{XN_1woVSN8|LC-H7YpiN2)u^-rB-iDWNizseXH-NfVq_@w+sItYSemqJo z?QK`0^YZaW>2>B_6O&=o^w1unY0JmmM^4}8yz4JmyaqxE5+fh&wDVvDL=?Hvpw-@>Q`6KAMtoskvb9$^VN6; z-v8#Jl*0e1_CVxv6`j3e0(#*fD%n|7u!p%WCFsi&sfVWx<~{N~&_@n_*Xa2nRQ&=! zs97lSf(q_p+IREB4 z2VeoyV9{yAh@{vq%qyDG>V&hoa}>3Bb$O`At))aOg@%d|+m%}>F9jyM?ma}bk=dR9 zZjFZ;+ve*ej+;1+1^y%U_!=REFFP5xF_+NwhS^03HVj)r>euRe6V~=NW&i$vMXE95 zKwa;7@4C8as@rj60wI(F2?agDC`~wWxJ%|sNGXc{d~>uQB2PV-xVF_+Vab!EANca~ zZOut4H8Q5Yy;H_f^iG)Qh5;*>Z!mto{t=9x?!EEXnu4!J(njN}M{MbN{u_oK-1ifH z3dQAY?;v_1a>rUb>rE&8JH4r)($@c8(7n~V<{zI7;a}%lt5^bD_Yw|Hd#S;TJo0aw zp4tqvsPZC_qY&9e5+6zH2)3@8tFLYlG>d`84vcf%Yx$#d{jY$RGwWH9_f6Fmk*kjO z-Jv&me;nv|DQ#8NKet%qXERz7S&I5S%``(GRTo*e^O06a4D-L9-o08n_NP_q$1_-gdY@sHIm6 znh}dX+GNF#|27g*eKE0VGR<{~hfXRc{`qB|m-6Z^U2gZcPQl&&)AB&U%Jd5%uZI!1 zialtwJn_c<%PA<&Kvx;Q7IUxju1s&}sZ#tMAMcWkS!SYC8vAX(LB$a)2r?fNp0Uv6 zQaQWi!`%dLu}3x9QO#^$#8;}Gl90A8TCjGalLB2h;uUb3>F<6#eT6`YUqkDLOduKc zXN^vLJBylEbNV!TW(>KacOz^G(_hD z9YTPb=6slj2wvbnfVLeDnCk6-hGA@MPkTRVUWxg*R;lK63lr7PF@mBK&2!{YkK#do z#m$A(-~lceG>{E}j#annH7eZLdY(8um)pOjZrb63&o%0vy9?tIl1M2?m_2{s>=W3j zTU^#?U!VA4XybH5>XdcL6Yx+Mr&=|O^QbP+EcLC-JfMR@=V@TIkSrG zw{gMneJjB+9(VSSEV;+%^2%68ZV<|CN}yRn%=|@gTkk8ka2TYs85y7_>pWY3EXof+ zQ$b)U_M3C`p=OQvh9P#Fw!bo;LK~u}Sdr%VMI&>#j8Q$0EO!U7zcIJ{f^;g<$}Of$;onKq zQs5p&Q15!msv*&)%rdR|9Oo{b6G|ET(M(O1o$_W%(s`D#8NoMdzDdkmz6y)s!%u%- zJgAhzeMN8MWP0;4Go=yL2p_q(goa{joa<}Ca<2eXHvx}}O-<#_8^Hr#0Sz1xtA4jx z)n{$-X(Igmh^sYN-A4hhsqJ+J`d?|`jI8BOJbGD{N&!Mltk38Vr~dwt6aQXpHc6mL zNlJ2`vy1t;8Koip-;YqbU+MVoNB-CS)GP?pK16kd1*z&ZYrUPeY{6g%@Qbm(9s=u@wfd3_{8u@Nxgx_L`VY> z5PvIz8yt||CQutxuTtBE7BDprv<(~4q+Mg-lJNuFUgP9owCy$igbHbTW#9j0149BW zgf+NBl5cUrUxC-)fBOPKvHudNERY5QfX;X=d@hFSJ~7P}%Ik=W7)*?&D6TeytN|XG zWkm-JmJfT4As{ALuCK_4-twC)AHQcXpV`H>hn`)UY!yDi->e32-JX$SkHz56_|T40 zt~V`Fe#kT6EXVn%PH%$}HaUEylMsivxa1)&FgHLbPpIuY`P*SEDhQXJ+&^~-{!RHV zFC6@XDDe=qy4!OyC_nOgUW#gAJyG696ke!vDBX_WKI74_#QI+NtDOIHKat2O^|kVn zUlNn&+Z#0#A}%=chP}jCVw9&^cD64**I>!#b>btYQ+3d5JAx(V(+(?hc#N!}SHXf2 zd@$D+2Vds%8ot zx%2GF_>Y@OLc!ZBH{Wu~n^yG;4KZBpXC8$^1QY_e5Y*O|Ri@GV*z}-{vQ40DnZr@G zneC^ml}^+Qk&onzI{v`8V7T-*fJc#!nQ3>?V{aJxG1#2UZS~E?K*%m3d5DRE!rJyJ z;i397x!oh|w54=v{>-~s`-yw+(~`L*qG2Hk#-p1U%Iooqzqm1!ol_(Xbor}2rC)_Hv%V1HUj2JMSOfSVx@OZHMs?f$%I*X(rsT~-Je`DLE-;@iLJm}HNROWZ_HszYc@Q zS0kp@(4H}|oFWeZ4y17qnuIhb15T1RF7F-B;P%)m9b#Ot!VjRaIWN4j1!J?v(D|sLsp;3p2NwYULHY(Ek|_{r zn8P2W3q^47*V!^>j2z;Dj_92cP8)HYq^Un#q8gp=dZxUpcfKj0q ztCW6$9WMzded-iBY+N9A1Y-+Cr30R-ATpW2@$m4dEgfh zr9qqFpdIIb$|^yDi%dzRDUDCWgJ*8{j?>u-P$12!x=6S7}kz5#JV*eX@CTX+w^iK=YQ5A)MopF5sSTQ)1!Ok;* zo{Ax8F+B(ybd}Glt5=7MVS0a$yHOu%A>=kLIHhkTTfBHvvS-D@r*N}dc~Ymt*&Y>^ zmg<4ziynmgpsgDyap8r29ho2~2o4MD2JJ0CEV|I98(cDw=9*xL3JYHoNNzg7JsDYv z2*Vg+6G;6#=nc(5ouit?h?oTL?AoS*qnQjhsUIXMNUJs(e7hK!cK&I=1HRQSVqzw6 zni%Md0-bmps)-vS&{nMtfV)4Y(DY-#Ftw51zyTD|_<__HJckjnB{U{N!y?QW0Br@0 zC?2~jI=$%hqNk1ip4EfhN#2%iIXs~gkfUEArs4~ zP>&6ydx$kT3?Or0x#>sdqu1-CJP2>*tl2VX5pt!bUAtvk+5H^aBW z-k!sbSpd5Z>Z8NzkoN&ksE$+-(qptEy`L=mdKS zLg+#V7f=b(kpj3Bz^@**pb5|$HZ6JVMhIwq(zy!tFr*z1Sj(ovMh;QI8}3pp(!CIP zYOn_Y9o9Mzbo*dINL=)iM>#nEB1kphpon>R9vDAEXX|Bn5h;)7vt__%6fum>>AeH6 zR=j~LwS@j)`v7>H!um*sAYI>E1$I3p08@rpcNG|6Fo0N<9|QRSr>KcQ?VO2A6+vD7 zDNRJ3-T7UP`%&7FxQzn6Pr+2~p#7>S<8S8BisC_lW0kMND(8EJ3=w!ET`!T=*@!Nm{;r1HVFJ?I3Y7X! zc+h(>@KQlXgGf68^s1UFlU?EFb0tr>1v~_atVhM zr!~C_85`N!OpaAj_V?Lskw+-ao6G12KZrLKTrtR?c(+M@oL~V^7$R91TINjoCV+UmAO~$z3iR z79QS*G7<$hB7im?@P7|zwr`+veQAtG0W=muK;ZQ%WGPr;+}QrQ6fnSRAgb(bpco*L zPC_+x4lsm3Vh1|d<}7IXD1k|NbdbqV~p~ zuJ){vQviDWa+h3cYG~wN_!Ea$6ptoo5>rz>4Pdn;DBv1HO|!{B0E>6IB@TEtYAEqd zZ%Q9u-wb!Rs=Fu=r7p%pC-9%U@?FN_$5!<_tA9bzJ_%HH>7#L=X#dw|R!FFt|Ldze zL|a&L_Cgr@C;U%vG?3OPKQS){w8O1_lKn`2^#DWz>?&2@9XN9%5_X%3e44>)*6K!R z2^iHCn3kMd{A{&PxQ}c}(in5zeixk-2nmZlziOc)P^BbnB@pGID)(5B>VkZuP>^unXQekjZ<7)7mn*!|wFw)A?N}uETu3%#N zzY!LJ!v~RRf1^0AP-J?ON}aQ9@q*5(bYssYXp-v6SZD?`ZrqYHBDH+>hV!QikfbMl z&cew6gdj$PDS@DJG9GfU1=5x)kczgA-lNo@XEE)sG)7rJoHpM+>KJ;jvmjONPOTC3 zS`=kuMoh$a`QMU@*4c)@QG#+O=V>*qSK&*xD$D=;cgY*pJiiJR_pG7_|A9H z(B4>92w%D~`Mt=j1_2P!{wgQat{HJ?pHic49h4?8#Dg8tM9Y(7iuqapiI-nQwAHA@ zo`WzFa0mIx+v=*U(C3j;`tjo{s&Hz8N7NTQg1}+dM%jwt6L2(fpcAf5NB?|hEIXcb z)HiB)92G3V^lb2B)7}=C+Xmm1v8X|&MdyPK4}3wY=D&L!7#99#z}I^G*!pjF(@bs5pB zFVfs?teBVl7vJ?L;D-FAj0{cv#nE0phHAPul2lwe?j>xH&Y^?!z6Ty&Vxa|5gE%Um z3914Okb>?5Dqjwc+y5>cd}Kj*s3uaN6V&59!R~J!`2Gl9&&3gAZ3S{X=pwB3&QCm* zX7{kRQdf^0szk{hZLVFfDX#Z4LT@ugx03SkBC(uG%o9Ex=W(f{5M>Gg%dbWj#DiYE zHn(B;2R&M%BBX{aLlXE_a-4I=PG;xE6|jM5xf3645w^`zMOir8+z< znwGpYW(m%l8Nl6vJ&fye+hK7bSJY;z2t3(vzpoJBm zMWsgRdW74K!eE0#r)jNuB^Gn(BjJIJ-1;@|h{t!U4bHH*T$PHDmRr|>u-(r zO<~3D7e{K^J36jPIf5T_JLE5C=Mrjp4W$+Q)C1)|dwqGB_0%alI7$MR{dINbR3ZX# zKC>quI4U!sU5$q`X-S-xtXlAPe`b7K+#~K$n}xAPOX>;^qAf+$*u@{eg!lIAi&tze z;Wu|V5X^B*s-I?q_s=1ib7)c>$g`ac&z|fBc`X<4oHjz_K!S9H{omf&D#m00&K@(* zrSO(#*!1CCF|?`xu)}*`^R=|c(48X@16yB}kR2V`$a%+LU5pf^h})fl%vfs3;da@(rC_6w&y7|p zUPQ}___s&9n1{A#ly6439WbUm4~f*KTn_e3=+oL!s@YC|yqL(lu-TtGbY+j(y_~lV zzr>rHz8<_{WK{UOKR5*&4VCvZ>f;TyIk#B0o{mmdWF%cWC|S_{iM9aQg4%5%VPVb6 z%1UtM9jbQy0Ing)%H;*H)WY{ml@akNDM+Z}EiPaFMp06l&545$#j6IT;YaXO&VjH*QYvNK*PDCP+6J$R!C`5&oBrg%rJi~G=2ZAdr zjj~o3(Q*x0PQLMAPq;TU*=wQX&YXlj8rg2VDENgDrsl>}@uODM&%1q1|g zwhd5uJiw@Gzgz$L=lP`NxaB*|{8@PeMmgc#Af>Oco zDpSF*`v!9UYNH;3e@Ta+>SB--;bNGiG?F8-LAh|-B9{9{mVF>;)!#66YRaFYJs(aA5|06(yva~ zjcKi)N;;9h)!Y>FrD3tFWlr!ouWT_TJH{pWo%*x_pIUp}?iIdu=^^=>4S{?s3&W3` z4If5-Nbucygvjah)o#Ny&L(+wcXtm~5-d;_^?vWL71kZ6$&19DETcN>$B!>5DOn=) z@7+6>-(Q%L!VV8q?e&f`7bLwFN2ofEYP#0exj|%x@x9=+1iYi8`$!J=nC=WJ!p{>?(fRO_Jv^eGeBNT zVm+X)tV|b9JQWu;Q*yuxXclz8@X(YhP(FLMSr^_IZ6L42A<#iYA_|b2K(X*JL?w`f@M_wllIK{D87c+vA{cDDYXW2 z`(6oEO5V?^6#eq5MwD)tE}pTVc-B>o_}A4<-kMUq$@0B?4EXDO(!a-_hXiJJ>24w3 zm0{*{O7tuYu(52(5u91XR{8De9aW!qamrCqYrFmQ|AXR`BavJzBqk&PDkeE0ZNf*-;r|oX;ze-Ces~$wT2#(sdcf@c?#N7mo?KJ~;jP+WVta_u;{KZ$CO!jx9Xv zg7HAJy$o+9Xjmj|w+~OAl>VKM(8wzc8ZP)r>!}PCBZo-xIBfb#WTUD5V%3|dB&DK? z@u1sLQn3%B&_f@u_v}s|fr~#?49aSm@Tq>D9z8udX%Cx*q1~q&_YLtdVVvgS^8`nz zBpIKh1Cksh(MC>9xAD%zoT1NMD~sO+T)uhvdb73}m623)MOh8$8AX@d=(9r42 zMX@<4#Ie-W-oxvE#vGl?;&Y_$hs&D%i0DDhe4U^8u@=Vc&tTZH<&7LJE+23l%Ab>1 z(DTH4CW?1A>cKteD4(Tgt@kniaB(F?1<2Sp;#^@wP$?-j%c$uX4>H!VdV}{5iaz2C{3t$#7pNo zXv3-BxuXNp3u{n@&w@5^Kh!Qc+e{NQ_ftOvvbpP>__r)Kx9vwghM6`!Ya({~QsC#e zb3R+mZeDXv+;1+N+zr{@>2rem{8vETmXCZ!?`iF(H#|_!g1@bga*MknBaNNb-&*|I zji)ub{t+ecyQGi8`f+qxQwfH~_0<>e(d{U_rCnsmbevu_a=?`**)OSz7R+J!kRrQU z_^`1;`0LQlH~JycAM2s5-2^w6P4JyRoe&#qT_)ld( zEwfT-?5r4HyU5`Ag@J%7CGluNwVNYBKaOlN?%-NDrLQ^~19d_IcY+VIwz zVXLk*%I@#0kJ8Zm6q7c2Aii|x@N36Sof7-Qma2v&_KNr;V+DVjrw!!CZ!h>vou~d` z?Ww+J&7+8(3vD)4uPuaBX$pRZ`q!@$bDW`Og6Hu@oM%%N6hdzy48yl`lTFV~aDp9k zKEMA=Z6BlZA70bCmsWwKi|#B@%3?T7qO+8@vAV;<$Wykr%B~x>kED0YMUx z^Oi%ZeZdO_#?;wY;6c+dG)ycjFNbJ&5i?v2ZvsUx>*>>y)yb!oJLtK2xVWO$0!Ct< zNS{K@{Ra;jV z0d3N3px#DAKB6XPn9IhJ(xMO1q;PzdfM+(M>034yLb^lMl$z^i)0>1N2M;(QE!93D z&B#XWS6&Uv!*`JYqpPk=B}*{VO;HMNXnD(#4-+yqU1Q^SRD428Yg`WXU_o7EIQUV| zBaqBe7g?1x=z=a0nwf{yZW`4#3W?AQ6?O6~qjLI&1Q9tVbu)t8;Msf=1QP}v(e-(d zLa1vB;#qV~v&l(G`JiYy`P6&v2Q!-Z)KpZiMv? z7JqX2@*Mf6?isKAT|lk(avf+EdtClwg1qC=TtqujSSZf)@r{P6*5Hprx5M_wBEyQk zIUSuN3oW!;_66j!YC!Wr3v@qV&m)?D#dO)wPa3#KPIFS8?uqZYe|-XxJ*T!WUT*fl z4<|3T-D6?Xn=Up)^c*|J_ocO&Z+k9#+|^J{CY7iU!e=2>Y}Qso`Sh(kNdxgF=cbIT zXWR#O7a2JoK7W%$&IR$wI~|A%3L5M2QR3{STsed#y|8>;xs3!ny*5MEMPc2yXu|~j zjzLv0T74s-b$TPk#Y;!+xX9k*dwaK-aaAFCoXhUUAvYt_jey;sLs}xvGCkk&Cm&Q+cOtbN^KIxgU5Sd^|l` zmtacC{ex@JSyFA#k1kvtm@G5%}}J8 z{iXd!&R_r8>?hd@K9kfI)LFAvSCsYm`sjwsF zLmIyF_>xTaVn7-v`Vp)bjj~=gH5Fz36B@_sWmNl^q$b|uO^L&}MSpoQYDM4Rd}~Kt z|6^n4h|`sDGxAr7k7=D6>|*L?;&|T7GWUjGxCejJ?+dv%B|;N3_uBEqYa_xRAwhjL zgBqAG;+XW7J%=HjV>`UxVTB_&(JE1gUS9N2bS|G=%B;^eIAV!v*DFjJa`3H}SlOvh zGr^gEvd&7J>CD7t(8 zkdyNNUy*&;3u}(h-^_o7Bv$qzg;!4J|&WcH^F+P1A2toSBq$dV*Iph zkVL*uH_5@JIEakKvM%HHeS9x9a=904&A6VB2}%y7@C1}?33hE#E8JXZu2(6pvmYRU za`NN8wZx3SWdYP|bLezsq4XGhLaB7$x3||g??&P!>q>+ul)=)bNXSu5IWOfEVI35EVXh#sP||reEtBZQIl1k`aS#( zd`y{=ji;Il3lv_r-O|Hj<@L*3soMeLZg9=CzNN?J!7I0zl^nCWUKzl)V5ka%_J;J` z%eXgEQpQoXUDHV6VnMoJIVG;4XmHr(N)(0S`j1=W!hTn|`c+i1u5b+11!%@Pv`WG}12~VNI~d?jRa|)S4^~IlSU@srU&YtE_Vc zLY9a6(l{@i-e~N|e|u|oIX@q(>0%x|mYyrgDJ$FKP>h8qQKk8aB|2evrPDm|(f2>> zU5~kGuH9Ld_U-L^@ohnXlz&M8Q3zp(*BGnxURJlB`9HwKn{ z*+5oWp7z{}x$X9(SJpJ8DPFJI)YTkpovYGr%`07%`lWiicj{ zjus~yjjM27PLoYnaRo-V0NWp4fwfzL zu%@Ly=huF1Ta#kPFE6MB^WzR={Tiw%${Zioz}UBKSi%>79)>p2t96O48FrJ+^E$DY z&Phv?2TyC#3}eGgLLbkDK9bU`Ge@Gg048M|5CUTV2#$b5I=fb#f> zR;20YvANM5uh>&wd{Xb}i%nRL*)@4 zHYHk_{}59%jEI_7Z2h~59z^ksT~LgC?47vKo7l(2Y*bGv=tW9!DC*5NFuP;;-p*Y$ zdw=IN4ZDy}oxF^HGF&qfsxf>N8A6$oK=OFzlYRBC{;%Pao|5N*^`WubOOE~9&23VP zn@H1ptN}uh!k4o8WEzti2Zdqk_dq1_=lpMy;e40qXu{*YwvS&9Cq;EXoMfl5d-IdD zGE>yx#+R3jE#^Pjd-XNtqPJ7!&1ahWO-w=?glh6SlIiz(97~!S`=C?E&8S1l&-Y@+ z1Akw@vG%^{+0R9qFrf&XH+-TR8&-;|TS*lY>vM76%+FIl7fbTn|9&o(W}BpP)c~Ob ze+0)+^_h(qT`NbfhiSV78CM%7WCTu~OB^Uxk&#2Kz(jvVxFNip{gZ#UUXzs8y#9IGKpy2umWpMU<|$ zuTez4LYI7tsf(}y*OtsMk@@5!Yu{2RFWg}2ai@v!Xn6E|J*6wOx{c)XHW5 zU}-q>ej2EiC|-bYV7M~)9NIKOs$3VPW2c!m$t#gRR(4=zPFv4xa;s_}c7qygSZJOe zYvSY?^b9$r>bp5d8BJ8u@$Q^{ULz}+su^z8%C;vNcqE&=+r}U z8&|xIhvqFCE(Cw-+44!|>Bb%M8=v2ra;Cp}t=f^O-ZBA!!|71D81>k5`F`imc5V?< zx3ZeyG6#B$-NrDJx)smuO6y;7Ddi1YcR0MA#h5-8Wu*HFU;~Z*-m!`YQQn&KIcY_k z-+$jj&}mf7Em8bc#jWp~vhK6jZEguIToS$puUU&{l&x|Me#J=}a+`i?^NMj`LgL8i zh?B9YH``3HgwhkHTTzslahIUgXM;~VuEHx6(|3@LSS@BYEDcSs&EFR0(-$YOdaqQY z#idM5@RU))KKV7@#kKQQv70?Ze2^8YO>-sdif=BDna`E< zu2H&mG>dWaU;4sJA<=Ng{v?$L+f>zb^wo{B*H^4buo@+*PgGYK{pq96Y!E-EEDcVcMveB5X>K@!xBZB#q4^_qs4s`0@X3mvTgktwM;BL7>;A##p85QsxjWCjcmA0JN8RN&mx|X1 zXWDLwel?Hc=c~S9dIP>7O$FC~hOEz&&t^fV+VnMoMR=ap{hWQS^XFxjVDu1bTTHn@eLA0M6$+=jR9c_x~uyUWtD@24N|$;QF@W9lEL25pS?XDVeL6c6F|@_uA5?F9v+QZCU=sf(FrnCyBNkFsYfp$-s_&Srch zK+l=l2FCDhZWy%hZ4p+I7A3qT1Wj-I*JvqfRe2TuUkg}2C1RS1X%y|j0}7SEbNOm7 z>ES$fYa_bx-mID@u5mDNTs-is_ZV%D!~CK!tm1p^!F$_#n;h2vhFb?~O-T2;wURDS zi$ope=s* z>7n=cC#6HaXH_3n?!0GqsKUJ1UR=~?#LdM#_x*^adQhY99kWvJRviL|Mbgy|`2&#` z*FN*Fcr6Zph+x|_-a)o^HUADJPW3MJ)EoTZstw=gDNEVo2}DLF?dK|MKB<}&V@^}Y zE;8r7QNoWLsZjrz(&_kCrlI^{^kVwPi#pfpt{7gvi`8pCe_#q!{cH;prZzM7{5>f< z+K!F+eeyyg-=BC9*W>0Tax@raxR1z0Rs9_b6XtjNZfNfOG~NoZSdFO$?M3oW89hAz z2kd~ldtHkW3a1#Pwsnhx`suoC2!Xa^MQKqAZKO-Bt`!m=+g)isHdX0B5Z62_{cCbg z;%=0PCyN!S)yNRJpq-IF_q+C$2plaoI&^8Z9r)~ti^8>zix*r??_W@>7cWmBW}_Z| z<10WlZW~VaG_se!l2@Y}7(niB85!*1F>o-GF8E2Ra5Uj3&yEmAxTKJdBegE0EJKDC zLhr=IEW#)pRq+c0#qRqjF;Ec?D13+r_h^f4B^9)~(!6Dr&sgu8$sSGjOT~_dk1h2- zUsA|r@UK#bJGlWdjaI4i?J!i^bA#DfH`zh+H#ehrI3cpxb^YE+KLbV9tryzJoTy~Z zZ)`3HB`Sxu{_qW9f4|j9B|1lA1;KCTrOznkN41%@NI;Xk(BhkUC3Pevz5MrMi%B`2 zcc~9ssK?*RFdn@gg>4UaZ!^+Ppr74-X2pYM+rH~7Viw7n8^1LzXMQndN-({a8>iiW z$|@xjWJhf{6bbM8_$^+sy}kDJ1OMs$TRbI}7rA(u#>2LJgW(89R9HIhB>KaKo83rD zVeU)sSQ|;D92zGyS%rV|RqxHvjsyA8)i>9*JcqA*K`DDyw%aHnxq`9kK|P9>|3sGi zBoELx$~t>nzuVs=QTiPPZBT=zkKlT;`QG1JEmU}4YfY%>c6o124Fbf2|1@!q8R_NPCUy>VPL}KInL2TE8`XNu zEOAYZz$NG#rD)Cj*WHYgdYO3#) z)YCtbvWnX9oE}m2pwRXdzV~Z9CHd;~YlWXo>)&^f8}rn(RP3VJzwx!$@%Zl!)w_nY zMk!w&Ta=qL1k^wS-1`#&jABGEat%pWXqU%BafJB8NkIzRE7d)urzpCHK__@I3ndVu zEGp-c@sKX#`u7C9fu93Ouy&!?eyDEVe^vAMP*1dycHyfwW|`5VR@W>idTz@&&f~Rf zFEZa@$D#J-v0TF(a+5!OOY)Ztcfc;vBsybn&49Q*crCDU(vfxjYE4Yc>t<8pI}@%5^TLMFl}gwhbY3ol#V!g( zN`c$R6^*Jrv4$XW^0Hu0s>yP@*XrTlL*}Vu94vz{bj+{|W0jG@S)X%j`#f|djj)&; zuqm4d+mz#hV1aN0wwL?~Wx-SO-Q2^Kjk3Acuwzmn`lUGerfd&hQ>ffr8q%%0Fu<09 z?joNvuizZhty0kz4!Wf`mXe1zZM654amL7bs(TUV+)oWwoN(i`!-nF1u=sHj9SqUO z;fSzZ_4I9CgM_BG$UaswX>hW-rZ-ono0=W(HLj$~;9jpM%%D3c#f9*Nz+(wN=Qfg% z{9bS8L=p_DuR!Jh2}y0q8!P-D6~#aNp(S5BRCGK+AJSL$mCfU9a+L zZ#9ej?AXS_!G*0IF5R>H7a#QTkLJ9&T4JPpfCw|$A=5@aed*M$k_;|?d;PI-&xbva z2CmdBs+VLfGsVC~Pc+;0KGt8}blJaZX0;^}XjG>rNZ)WT$TbL+`iZ{m2WM^I2$?<2 zQ-6kXMsV15AKj_>wr_vvb%OZ%DK*{6h|Ge3DbCfH+q3K4l&ex)eW3m63FNAIpmyND zvROV^JSt?rFyslC8xYV&a5AbEg#3Dd>&_cUfs%AP(9)zJLdi$V!m`-+4(eyAoJ7IS z+4Nrb(x~n^RM9}x)VXXSDO4w}ddndIVKry^(0R!#@1PYj3^N@md`i1LK$uK~Zq_Z$B<&T9+3dSV%U}HOo8rFhNpMqFz;{e|&>Rx6|ERA%S~xS8L5_eKf-KzL z-8uNP=tGXm-O#GjmzB;Gdns{eo{Pe85AN~E z=Q9n8;-|{EAeG$76U0BaoElNQAD-$y!nW+_za=6(RG}Muf4R;%bv0(c;g9E}lR43W z-jTOZd%D3@@4kCZtE(GlY2?o>ABxtGIRYPUgy`TCSlKQ*RA5X=MeU3Q-q`5OEZHCg zA)O|_B9Y`fZ#zlLSEe{Od{C9{W88b_Wm5&xSmSIICT})VaKBjd7Kf>m)mvWj+<*pD z^$2Mm%wafxoOJxp4Ey=ATGAW({j*>D@pR$YkTuj1>g!34q+0E+3ykg48xCLd61G=^ zDS7^5zIPk92nw}(={O00@(m|}A9)bsko6KsvhU>T4y(={s|VeslLb2~vRM_rv3RU;qXI?|aznmF3D8!RzRRxACC-kv1y=r5oWuvI3h8kqTJa>v?8AAy`IwbV~sl1CaP)@N&e-I|JU zPWa=MALQA0i&@5*o7)|Z6SZMH?r5$pcNtEt)fmIVr#*)CTa6fxCAsL?ZK=gUg(Yo* z+}OU+*91P;P3`j=@YBY&+`)6~W?J0Np#xiU?sbDp1~43jL+~Kbs*E-Qm-+YRG8_A; zN8QEuXH3eS-fm@^@->&vGIzs-fqLV^ow8}Za1P%%;AE7=DymYvE%@aLc_(J+9i@6b za2M(Ok}o%7-Q7B4Bjg~$Ic1f00VN>CBqJ1V71z8N-~TJV-(ti1-`hl9gVIlV`#mNu z#qyOIhJi=SR5%Gc($El3LhxpaDjH79j93?34f4;`ZOKH|UmYE2z$hVjE3wN$m5tly z7c7@wsk_^zxb&Tkz@Dfyeri1TfKr&Bfdu zoGzsW*avIvf@nJ+9j^Gyl`MC)xA#r7#Zd>~uwkw|+y%l672yK}rn^+bi?#%BQjo_F0Rpg-Q2NO#t zl!bB0xrDef=f z=_Oq70jn{RUvxsR-qXUCFK%>{wmE}&@xWfjkvV$D-5^Wzk40l>c9*vf^%A;)2eeGD ziQDEl%TF?2jxx-=fP;44X&7Mui*W|1F!umv9X&+?pRqMCJOmABgDXUJp}!IQ4s>Qh zY?$Rqi8+k67NV+2i_r3XB>kuT-wo3?u?mk4KhC9el##cHxwV#(;#ViKWH%@Avbo-j4b6Qh$H()pa z(Cy0~%=zKY@n)r%M6dg=+glpcv~MI8dW>bfbYCe8^w)1_ybGuJ%CU0o%F#JV^ZWhh zDnE#D1eFXNH7q`dn~xd)2p@&q6TGhnX2?&U?*|XpdZL_bCQpMfb^8cl?;;`P(%9W@ zsvlh_@$lT;x-jMJ_;DCN8)^Gkdoe2zze65s|1tHC-StLk(m_wHg|lIM+?DDO)l<>& zya@^$krNvo-xM^W7LDnA0zI9Yt_b_!d+hVm^9uFy!yB~ZNjFzxY@pW>wAEor#oEgP z1G5tLt2ub%0G}b;sXshiLsJvK6tp1+B=Q}T(g)A>H*rb=5|z%gt6*m+{;;fjdbMrV zV-8q7gTS3E2KU4liD!~>r~#YG^na_mOV1sARZn(ig+=t5_n~{{G7k|57Q_ufl?s!I z&Fit_gC4-gaR6>DZGbs=xMW{Z+WFA~_7B{ya$nFtNf`5oWg;^B^6pY6@z(tNcNgO3 z=ui;Y(l}idpD8N?rx7oV8F_DH;rn$YFa(Jds0ZTvHW?jU44Mcj*aKNVp!WhLcV{Te zm9~0qojH4@qyaY;=C`rEs7&2xZb3Ca-$}C?6sl9D_xuTlrK@Hi{F&lRc5Y_m43zi8 zlzTH72wP;&Ev@jWrSsHlQ2!wG_skoRihG%9_5PR0Mg4a%RaM~n1vq{!%FY<2BABwT z<8Nh^4X}>*^z>pdZ+0az9RKEBBi62PtDdo#RMoj)nh7(J(O_d=8` zSlKh8#5~-()z}AW7U`D4&3rj}ptg`7bsB3h2h*Q~IinlW3l*E&3SXn4@2yrJJ~I)- zA3MHz4@Xwiy5Pr{C=H{WHj<5zi3t)|F8AjNXqR3|b)d5LgIg|aRgP=iG%4(V`_5fL z0mpx7O^*tjrjV-=#Qu1BHvBPG(*^iO!_Z2l?=h1*NL0FW!5E>wQdG%FL(OoTl}+I1 zy4_NTOZd>+oB3~U+Rp6Mi`Hi=d%o>MrwEy3iYW0K3s zQ1Exy-6R2jr5{p%2|Ot}U}jlM)u;gO?>yLUM9ZGhH#E!}+gtRe0y?Rd+w~xg0I$~v zSYUii%mePIixV3=2BtgBRUW@IVr*?~9l@V4dx@_Nz^t>ozcwU>4h#P_+Wfdl;5X0l zYEu#tWJ<2o(CV+ez^^vpGvg1t4TFRpF|Z6(0jG<|0n7Qb59d!-F#f{*c2vEqYa%Yl za;_Fe?Zl_;xy&-$+Zm7nQcWQhd4etJ>?{6^W5skFFs&v)hAOtr@V)&AH)wwL7>)4X zZg0rxlXXLFPk9SgS!={UE557@^|Cb=w2fGV(#r4mc+#n36^p3yqIN59hxS<`fhLQM zoo_>Egkx~mt+HHR)Gpb3LQq)BJ7QD4!+_L+^^6NP(vt9XNz%qp8|0$dVFC zCOKY!V*~weE-%%YiV({P+P3e4IvEgK-v9&*_;kN_F3e!IRIs+@K}9J0&16SZ01w(c zfb_L?rM;F9`%T`#!C?)g4IID(>o5Cc9_%C~nO>Iy4LJ~MZv?;xvK0g83{lGS%<|lF z3yj1o>qhENb#I0p;^WVoY0BI;)WWL3EClxF2ok8i6;PTL2H{f@N4*XU^ULFw&ICV4 zFq`Hn(~w$v4d9;Kj3_6&%-?}1eEJ(y1PZ{2s|C7OeA@0fZmKPge;(NU_?UAl?@y~9 zP<9uuvv8Rgu0L{;4ZNH54JHj89FS>R`G35yKtBN@J_9rL1TOeLkCTQ?Vkdq)@vQ9f zR}4_!IlaGW@maX(Tg~g*J+G)gB_6`}1-g&%i*vz=*Y=}wyC4;d#3)NoBx z+DANej_++>a@-E2CcgI^+%caoieMYx391bRk>Yhyf0d#-UPrga;?-{H1)+z8!?GJx z{&R3VK>OcP;dAc>0E=1pwFbZ=(YN(@18BF*GX-xx{}0PbDX0#}kpdAP7N3(7!PDh` zf{`mHIVl7rlSDB2;OfZ=*QBWAoO0Tz#8%f=oT{7~^=(#<+;KrcTFVA~X{GtLcR?yskeJQu} zVtCnA|9LiC`i078llj*FwpZ6IMxx86EnX$J#_=ARYy6yAr*AmQt|F>vL^r|I#kxvwaSdw&1}T}EQSHmj43T*3c0QFIXn zeAh&&f2M4F8;k`v%0v@-(a}&AJ1ib$98UKhEd*JKIdJ#u1u7yEDnk^IC#ZrrWT5&>4KU`OqpjZ z!wwq5SN#Hxf*&C9sgsA5ZLFqQ4k}p0RDEs1kI@L$-lj7-8{nf< zLLV>@vlXLp9|)Gg3IlATE{k9~Mo%os%2K{++pTYGY+S%F2uvrB&&T;^AVSeq3R^aq zK{2xtsEs!#RuFs|=f!!7Q+uZS%d9(Yj6udo zDdrf8fnl<`JzDkRs9F@pb$xr4#8`6e6=#xA%s6ewQ|jpOHOzHrXwDuDWsy9dzFja* zQ8*oUFmcxw9^&;%=d^kdkoWUP7ETjJBrh({9_{?r**n*mu5&!V$aqY)CEc9xakM3KGM&b% zN47e^-J_yufvQ5~4Q`X?^8vrCLFO4`Wn-HM!n-7q!vr?8c(J+ZMw2VBj=&4c37$9+ zpSs1w#6oOOt=e&|$edv$hZZ)JQ|gs<6fOPZ&@(05pU=Q)^#SYOXYUK(-i~RGRB-I- z@nwE5i=*kbkePcrCxOTb4lY;bW5q(XcCedE)?!bVj2OCOrFlcEihAxG3SAi5SPbqY zo>Nnyy*&H<`qWfRpo?&f_q0fEMqq7P;Jig+o*R@If^u@E2r3y9h*HSXQXTGSRixz) zUg6?JWXn@%2er4g#qz>`3#+OOoiTqA>V}4fGm2KifGVf5cHn3UL^(i@frpf2{YtxF zHigIC&27RBUwnr|!ttPTa&987fp*MWZUx!j`@LQ-rhT+<87X2Ob-u@jLax%L=k@P! zi^h)s^YGm`V6)?M4kyelPFG6K|wuW7nu=XCoXvcRa6e9p0q6%GrRiq9~K|>TNbgZjSAS zN^O|?tRzF=^QS19%6>6;cB^r(KGJy`gf)48k{y;hD2cqeX}*XWtQx@T1%TNKpnU*L z$3VPhik;)%SXrH4N1@>#`e*fl!E1=ND27!}iD*6#85quPB~*@^ZDwFqOEeD}g>Eo` z$}@?V;a@RjK$|0A95i4DzM3kbN)(aKKu8NDt1AZOYc##i=lRf7L z!}c>5@F-AE61C&_98H{Nlr^wr*m_01oYjwJ5Bw{oxK`4kFXFhaP`0Xp!9jIu!}{P~ zh~3NVW$Os6*}iQ}l$^r*Mwy(bTICW8+~uqg=ky&_{J>yw>$AkT{>n@do}dzarP%4! ztxgpaKL6YPYKRM~y+*XO4i2mZg;%6hOTCd;CjW@qohOX2!+;U`$nF-q8qhKO{)@i< z%hP6cg8WqoryOc9g~|>XGdYSof37ls!yGDGSV%&`0NnZvK>zK+5HvK3FYD#a%;skr z+Sm}qNs5`GYpX{?Kcn6D8^`$tu5>e$xMa52_$##TB=Qw|ZtHof1SU}i&{aCxL*BjeF7^mMKxmeO$hH&Qc zpKBsXwNKuClEC6C*G);Nxy(De+0?$fC#=gdwX?XBnK(Va)Y)~8IJy-)m3Q>ApkRNR zj60PTogTE^^m-K3h){4NG*hn4h6rW==Q$pl6I7yw`&4J_@Iqq8WFL?$FI8QSGyOkt zwNzL_D~ac@r3>KPxVL9~|Bh}$4d0vI_TJmiZ!|z$c*f~+Q1jh5geB_ba&#oAye^>k z&~}YMCJU#tV-vLy!n;VhHXUKR`Q}gxhYYuW)2b`=dYj9}tVs(HzXiWFItCM6rzF&Q zaj7@;rm8=e$yZP6fl5%NZ4Y<4Ys(qhA}y7uW`VyfvF80xhnQ|!jxo@fC<7_g!Lc5Q zRnl3d;ZkRn=h@7Hq@=Tr%*~5CJGG{)iY?BbERfs(!KKdS7bP#(kmzkhbi-)2h{gNj zJ@`E3ZYM}M?*;8=PLT1!#jg`%`*Sn7w`WhuEJPW~#PX}{>`U~Focc|y(Wo?~<5O8# zLd7>$m^GBSZLKfHH9pMT-B}mZnM`bKFAm8!c{ayhIEV@%m|~t(DxFmce|%Lx&N8cv z%`#~^7}dqZl1Gy ztqL9-I5EmjB|oCRXS(O0F*SriYnmTT;J9+y&UwP;&ygNnI=lyb2k`?QmjYaFBu}&lKR{u3wd{#a-DZ zCOhUDHmt2>m&CsgYq7Wt24~c?&f_7$UJkjON-vsDbJzNUU)BJaq&)Q_)KjA|gdboa z834N-SZp)EzT5e>bCmspp;3G6I4xZ;k&2ueI~@cywlw~VuwH+#m-fugU~TTBx@n(f zf%S7L;diWzJ~460UVAT`+=Dn@CX@W@n_=;xltVJkT)(Er`%gDyy_J)?xppCF(qlHC zwq@)j9Iai>yzO!==hH|msHnL1P=ei!(~t$lNqdq*(j8hoG!OX$Li2|`DKX`Qd;jc3 zbUc;CuSOja|D&}qf{FN?a@q?p;@L1@Dy}NMI11P#s>%VZt%4n?BbKx0?o;uzSKy{A z4}VQ?`*sAKyh_k7w3~9#uV2)Fsid01s;;$Gwb5_7y3^k3jd7k`FX<;Mj%V%d6( z+K-@}nHHD0sr5FP3Ku}Mtw_Q$mSy@w%{~fZoiF!(cC@$umjMf(?V8;!&a96QJ##r_ zxXs0Ij)4|?d%-S_v*FfL=U%edGRm4KF(?@w_sYK+g{cNQs*Z()#U-@4ND`33PYJwG z_)h2fYaA5++VP8at`pVd!++sK(}@iwKod-kIIG2(8d&7aPNwIRW#)CO`zj%cOA<1E zk4Mc{rO;(W(DoGHifVrUA4)4=~dFO4{bi6(UZRkIxl-K^%B_-n8%L}Mf zzq{%D&F=~*&fA$VcFUYPXLmH*s{hO(ZMybt1KUhf6NUqo2LK8 z-g^K=wRP*FxJ`Q-K*fjzm83+GBw0np1_>fjvgFW2$wDJ4s3=GyIZMtNB!j3(&N+!B z$vKC9V>Ubd_nuSty*lsIyLDgvtFTJ3d#$g^r0Yd(U0#!6ySML$3=V&{Fg~<%q{ul<{Sk*)xS8t3*Iu$etJcc3t*g?r z0L@vKlD+bo!h7h({as!ZWL`)}ls+_!Jp?X?mMxRj&+Q5GL8@yfCQ@^a-jb5fd>Fhh zmy@SJ*!W3h#T)dDnd46BSw4(n=vo$!Jiwyv-sv%~hMDh5o8Xbt(7-r3Nh)8?$KBKT;Y;pJC7Va%P}|DUm2W1UZzZp80-bL3oD3V%r{=z8 z>s5L)A(acBeDATVM4o4{ls>if$J?Hj9{^b6l6yt4l9Ae}U}mjq89~6^%Ws_^R}JDH z<*%<~Ed#(5iA(G)N%w?M_BBcgbt& zr=l2fD+0?^zt{quZLoJH)`#jOIS@H0V){^n>(q+ca_hP+bDV?-4CjV}_(36?el?1K zE)}EaG~cTp6KPlIlk?7@4&$#EadEXvEbvL!ND-+b(Mp|VU+AvK_pd}Liwj#7RQm4J zzyidLP&mihE4_H@G3%ctYP-JId3(JD7f{&rrJkB!9k(_vDK2@>@4g~mF8%8YuLm3N z2xnU8Bi`+cYc|^wp(hpj1|ffr<6%Qpe_$Lmw~hu~pQ6OL*ERebipr-Y zhG*kh2te7c$InqpON+Nfk(;&zK9}Mp6Fm~jW1byWx~8QY`{X@}o|Lr zL`nR?1MkGdUU5lD->+TIz zijRP;9Tpg)Zp-@NNbqQyN+K>LguKZs7G;3w0p!xMam2s-m;B7Zp#jA!t79598U-D| zFETkdJ;J|!9WwSog)R!l|B8fgH{nsat-y80a%=7d!Nku@Eu}-DUjB}J4K?%p^S3sk zPr6=3-Eu$QfjX(0BG1&x zI7pD&bW!cc@8{eki#Z*Qs}l%u2)J{|nB>d7WQN7>^A%@y7Oz+-{$j7`Z*&VifAaVD z7g@hvHJJ#u{$MJ+Ola+IlLErQm*4rQakYFqpY;jN8&s23^QU#r@+{AGYw&vRyzGW( zI~-2LY+UE*Ll8Y6-OqTFzRJ7#L7($>!L_t7wu*6?=5)@H31!>1b{`Kt8KssZs;{qX z)Qv0tA`=Nc!Ib<5ArQC&mj?rz%6(%UaSO(M=HKLr`{v_0z;miS`Ps1aW9|H{m)zi_ zL`2r|IX84_ctd|JE!&Cehipy7BJ0-i>2BZ&lCVA_5=X9s4?DcLeyfHmj+7!PY?WPh z>~I_g|7Kis7vj6KwNq}!lE)HAy~Rt zRXO3@3CH}s=>d?`ybP)4>{3UG5`TuuV5zH>@Ljc*YuwI1E>F)-b<9-D+B@Zp4jM#& zGUd1ZWw*W3TGPhL`jDsM^hR+^`~jC!?}t)E;i=nO1u?otTP_d8ZDI_?zMAGI@zIE= zf@+n#Zc`NdwuI$UB_GW}%~Kh*79^|O|S!cy`pKo%#C36CvLh|Ap1u z^gA#&^ftAg-AWrs;&lvLysA<;aKRAHvA}XXhNLpspo~jlH zwij5oFBz6xXXAp&`T7NG`P63;T1847G&Hc=ciXsUUS+(hH?=h~XecjO_;UD`;wKNv zgPJ#o?Is`BTj0vl@)m^KaqZ3@6DPJqym;SN%(P|{yG>M+<6@VhTV(|J;5q-{uJte>O#iEUe-s2w;x|)O1!O)XS+V5`fkz|A7UdGABqtqQ8<-UC1_b>4^fgEvN?H= z2wU)R^}H{FCmAZ2sZ%vVxsg+M;>KxOD}e?$lj4x{?eJt!kS;qcGf0WYRckmGhX)A z^!=ZE(hHO%M`0UQgbWojN#tm5>pxnXt~@@}T>v1~Z!}H?QdQKk^~*ii-=t9P`Lf5d z$eMF(ZDw0{V|bH&IovwjsI>6XV-uBjHa@kXgQ2NDSzh#@Y<&MGfcgE=9G1n`YAFp# z4SCK{FDLyHG*?GoWnf?S&B)Bw_EYqY?Rz)Fsrs5U7x&vS++*%QG0!}fMR%*Oo8s99 zE#gka*mrNLZEnBC3LIIU=@rx74FBlkaP+}P+Ka8=3Ek2l(bOHb>(Sf^YzL(4W8<*X zSk=_J!V)L}<8gN2^jSAGr>qSl6M_$S=GgmJzS`i;&tLi<*_>y5>@zIV$%_!9rH`A& zSggx)!|8_#dqsMJsF9o7%JoP3N6)6r7zQ5SRy}v{LjM<|YhILIN3Fcy(K)FUVF+Dw z`8=o1WM38*S(_0I&Wc;bBuVS#)>GIe9?+*c)g%ejOI{eFWqLT)xr(Ql(Dyi{FaM@| zSoNzCh03cR{Cd^-0-c`BG{q%p#HkF6De4b;)$?U9z$ME;xA)$J3JMN>vgAG$vLTcQ8~NW4T_qGb?I~qSO3Jo2 z^FD2=1mMucp9@cW2k$k`O=$(0FO5%pXug^7N9rqQOUfI@5Qzkz>|bV9aFS0c@*SP8 zoUid@|D}|H9Od)2X6>tmC3(a0Pi%rkw+mKU8cp}Mie%+E#M*k-1fJz^`$LcmP3w%Qi|NVH8#~~XryU9efaBW9W#jkc2I`%-E;Ea5Uvo@=aYH)b5^#`7 z9-X(OyxC+~lvyBtULx114Y*ehDq$-Me#(|Fl@%Yq+0a>081O7^72#BI5?GOW^jQ4M zSv2_nAQpng9y}S07|=Z_18NaPACGpc%Eo^zzLU5#W!#iB4#%`OaF`qwgZN{fG{ReO zC-=DQePbv`C_KI811jmyw=fov^OR^V=u^pds5~$oe_3ICrN^pADO-gmSeFL(MVaOse7ag`1Qv?Qbb7%PE;EnFW2T*;!jx9diwP`a`=PDu2XR z%gWm`)rkg6f^8q#!k=XIDE5HOOw^vx&3I{d(@`zJYDf5b5EFF3EBXTDF>o1m)VHp; zeo_DQdEqgZtuNIzlZxqbUn<-Sfb7G7@gr-Uj->v5Z6uAr30W7KIf-WlG3ju4@dOv| zNC%s^so4Ze!m3d{d3 zx_;q=(DgxDSj+B1mXso~k$mc-sg1k>JO-2fR7{DTQPAr+alSpieayE*kvV)o#nyCY zRl-f@m-{A{&b_;R4ApSBnOc1xH?KCdt@iyPo43TWJk=;K)MG1ev&jY`TfQ}S9E@u0 zon%;f6Cg}n7=`F=Hygv^&tR>yP!wcz^!GjchgUmJHMXWvkq4lDd>)_d zye}?k9F;-OJjLf((e#NWt+4DXO;O{WJ^Ow5F9!^j6DZss*fvQxHBEU%1{}Dda*DW@ z+;_P4f$8+>60FDA;>!|O@~lB}Bex@6SRNpb(RWh83GMsqp3Fzun;6gA`5~_@`FuW1 z-N)Ai#zTFE6I4?4ouR;NurNc|)1{efA5HKox?umwff0%ArfxyL@$#n)K4*Qtk( zNYS_J+h483eV^0xWV~EX9XQftDY(T4t3bjP!dFA)H*`qX9=LS;Cq8EuvXws9D5oTA zuyn7ZexS6d%_pS=9-F~5F-CsF=c;t}OPpqhoJJGFkv$}3-mmX?`ivk3Dj10*5$i;N z4!qW%*X^6g-TUV{wx4Jy{{4#^Cy6PdzyD40fJkxq=imRu8?b!6dIU(&6iY zCG%ywg*ZrV2wo6)mirRf%bMrPeU67W=+6KN^WgE?`^@)$p>!Y@DPllwWy*T)H8_XH z=Mr!z>?x6=u9I~RqTAQVz-~VHKwh3cIE78Lf-@%uO(mr;Oo7YVsYy_<3&h#tIAh&Nj!-F2QcZ8?eN;xkcf=gNE{M{$^EHQHGwTv3jU{r1i7yy%4FEN&>w_Xp7vL|t zc|E#WU61*_#UPj6Xt(ah@KteR`s2eoYz=S)s?&ki-1EFYDUVYwV}V9neSL zp>G{4O~!-jJdGy)LaZwzRe6;lU^<|g!gQ~4G-M8g-QjI8P=KzZKJ*U6iQiWYzWOAa zO3%0iGEG9^1^&eaXJxQavIP;3@kZ^7@F)8i7oqg$2Y{9g59?q%(;p1rO1qwN0@pEn zwsasFuqr5b1Yjo=cm5%s?-$TWP1VVCt zO?$foZbZzay!w}VbWH#^l!wGXbF(ZIue;31C>APU%QJx3i`pHjYSj%5in=4ts6-=F z+k%R2Fms30SoO2o)I?ikXQRM)A)!Ei61)e;pYMV6CdqHlZv3i&&Bw5mn7ESk@p1Ud zOkdK%f@Quc1}d<=uNk>E02GfDzn*CYL&Jn#Q?KThmbMZn$C#L$hn5Ruyd04iR?4}^%_7#3V-!=LA2F=%DI(bD`>6a-SDAMlM` z0-`=0aQS%u*ZQ_Fq}UQ;WADPfPV`CYzb*$H>VFydP&OU!GA;CyT2TsgQ^av=n zcFXl4PjKHga(i@FkqaQ1uQcZU-~~uwdWbJ@bCBHO*#>>Wb6k6Sd-d32oAg4PSaWJ<^_tyX!UGi5|T&Ei<^UXL0^#YVMF-)C@No7VE;e*)8zR_BatZRa`OJmKS@a9MgR9Gxqk-nU(}NS zzQI2;0NeL}(^>V;82&wi|H>*rj+s}}bf1f#oSa;AB2ympuo-#6zk6~*#_tH?u#;e9 zq0F`?6@ZUc2aKUh!9-h9T z1K{2bfQ2Ujs|3vIkSO-=JKWIz>$!8#R>uofo=wpxWoxzBUM_74;Lt`DAhCb}Xal&! za}G#6r> z(P02U`Fdk@HVwLAD7tAG0IkVk*xTK@k}7ZVrw4mGv~6(sf+cKpoLOF|!THd^peDNX z2`8IqjHUEl*-F+<0L|ef`Xd?2FV9}G_Oah#l2vGHjus?V(O?P)5k%zjvl~l&f{apv z>_1D??R8^kiWXBFR~%lxe2G}I>w15WZ|ykIz^>Vt%F<2(?P{VDkIzhK@q>fO~iZ>_N0FfaODhatNe;EZJI+09aTsb-4o|Z#{)p zl!VrYA3}OwD{>{TKPU>@Ls60gi3o%%fk{1Yv2}`qckC>JjKoNYa1#O1Tqd1l`}v`j4^(dh{ z81W0X?$Rx7{Q1?RuA;S+K!Ry@-A^+CjlEhv-l6HpTlI&=5+U>$rpuitY?vn}p__!1 z@cMA$>VQ*TZqru|kS{3E^Vh}o8?vv<0LS~L_ZxtE#G!&G#F;$}peIEOXd#sA6{FdX z0+Lefix;=wQE-dnTl1~-G0nNym&fz6_$#h*ng57rTote}Q3PT754SJ(!0%}N8-Q1zgBBG4B={KOE( z7jp>9c&ez>t~pZF@tm8Msp)%wks*|RT5Bkx#yVcs_q-ikCPz64% zw)VdDbhkXJf38Jwddw`Vk?8M>J{^mThfpnEG?jJsYE&omh z8w-|bxYJ4?(rBm7bey`Rt83lVnIXbK26pxCRpv!RUn(gKl!#&QJZ3xU_z!-5Y#1PP zazlRfxHj3y=Io?tICQF*$t(g7psn?`>2vF=EwMt;ugMt=et!7_U^};jHh$5_%Vj^r z>p)x&S}6cvqXs!7e_mU}QerN;RMv887ImOs5{n&ICq4~%`p_XTR*;~5CSakdM@B~O z^y)Qz^y0RjVC4s7y69KbR!autzrcF(GzSkgG@_$jT9pdDHe$(bsuBm)j<4{p@`YMf zUx9)ae_dQeWL{b3fg@)l_Ut`?09d#kt5gK@41Ky#g^vyjG8!34Y0ow!OMw5wXKPg) zkPH`AgF@B7z>eJHI3fyq#2fnL%c3s2r@v8G<6H(zMY!M`@sCNL!CL%Y&~%1n{LiTF#*(5?PX!3GF~TV#7>8 ziFCFibJ;IWydP?OqhUs3HeAC1`LOu@7<3!i+LDZ%g{h-#8c;IsaE?nWP2J?}n)Ylg z9n)lx5|rlc1_-K%~J{)0tW7vltLOccAD*|wmeV)k~#N$0(OB`y_LxBHV!J!{@(Lbr%hYnq$&b0jc)ucXT1zSMeNW1J&vGr#4Wb~%_8H& z2}Q8v2=EP4-vRBZk|cwjmFO9I@$?=!&fEM*CBYiYh6_8@ic-{GJrZiuoe+6S6Tprt zpufW9)YTQglOwzds7@as3;EGeIZicJIH&?*q!G+D%g%e zY-0B+8{`BoMBhjw$uZhHckU!6S~3GfP%7>r;N-w+9(y0(RB8RHW6W*P?RVPbHR#mX`MM)F5P(kp2KRNb{=|FoL?KZ2;5)r;%GXu-k!f z*wR{xBfOdi0U#4vdf%R0g;YC0gunx)$G|q}1||WZ{%B2G07chl)ldw8{D-#->5v$E zoOWWt6cBa}ay|a?`{J>`UVw!1B9T#Gp$%Zejm2<6GW2`7oeiA`1mu*Ue-{^^orRVf zvl*@=dn4LOuxSA%F2qv&wj(&-HnaUy574KcfLv3{C}{&zGW+SeCF-z&8utKOpZ1V3 zMChT(q%0@{?Srhze+&GL8qGh^H6*0&9h36*_W4kD0Ps3(scMOU+=2boZc<5FI*_(J z*)cgl2#X;$axsG2IV?{ka5hjz0TzuVU$ts9SUlF(n3O?CNKK5&`UBWwY2;GZZvvij z^x|=){J#wYVkC^{y#D?6Bub}<@R5Ih@!u5e`sarKb|C&M4#a;?$noE+@XrkVf42(I zQJ`5?&1qRaNXRiapP50gAuI)8=i&hOA5E=5&8$Ho_4U3z0ES-&bQOr%+Inhr=C6^a zUnd?i^eL+OvOv^ogifcdc|F(}zlp=bq-|b){%~4A17Slzn*MXTyL=*&ZPK&3jTe@7 zHfMu_RZc0qGz{p<(&xo+$ea6KJmm7%18#^Cg^Pvx;>8D0^8k)e*tS-;>vLnUdP+BM1iyuBkQ(+KZQvu=DU?^#RU9s2K1 z0A5bG$vm(xj|%ZC0j^B?sShe8(9Wz@hI#c&x5K+pSp?5v-?=tefq?@R6e@$RTet#0 zp9$2T+f39&ufW~crCQ>kc)T*zb=*tKnRL*3D#LYqbZlKa@8O3I5@7^ z?DK85AdQM2lU$A~Q!*;%$?F5Z|MmV9yS|h??cKMH;PftozeJgR>|!sx#WM8Pg=dRE zr=(Sw7srC7W(j1X9b|oSm6?sL8P4LU4s}OK09Zeel9G!5g~Gx?+>--Ayt6`J8SD+> znT{0g*9Ty+r^wD)<6;2cA`KIK5vmYeZX*;Tn+MvPw!ve$;r0&eBc;r=v{B_=`IaN% zlA#VBKu}C=9HPW+&BI;m()BIP%PRv!2u^h&>t2o1?nllg0;gxj#T7cgwL#4i+&J_Q z@>p9Hgp>5($?6xJB9+QnJFJ-FdCaV=ZSQ#dFJK~Zv$cT)89hBcgQNuJ)K9X|9J~pv zE7ENfg;Z7hvIfW6fQ;i_G^TK{Ms9-3auB_E5WjWele1}JpFr&UoHw!j0Ob|UD}?{O z^zDPcqQOL~3YSr9eBP1WtpH*x=GaYn3vbRq{tH8|2$k-}uzo7H(9H# zj&Ku<1+nbSx3d0vO3~=ctK*S92MEO?4A4d8>(@KTI)SDd$BjzCJZ}SAKrhd!4L^_7hm4b3?o5{C)&_7VmS_7v|oSf1ERApOag#{ZhYC+fCgsA zSM_tPClye`KA>Wf<*1?G5yIT~Lpo?LD=l%Gbf(Mn08#srGaLSrvjQ~nIHPKQ^S1YW zQJg!_fdCC2E1#tB@*4|Om_VC(Wj5`|w)6hOuAgV2V%hG+h2rKU7ufb4ehB0W3hVve z@RcjfNfNgs?=+SxY+MgmTFTygh!dLO#x_NX(a1zJX6Z|VU%hP*d4G)usBjXr8BAyp`)Q}tPd~*M)Aw>M zaX_h1d3E*U7CmlVQSgFSzsAi?O&ft2=UC6EL#r`wTy?Y}mt0mTwl_bTu| z*tQWgE1GwM#_xL|Sku<)bnmEB?T-m|ciOeHlJt+X?gL>C3SV$LZG@Aq+13WHhA~Ko zJ-tmJZ8Nh+NbI_xWi#XtTX(3Pv9^vf2>Q8fp0DZvT>?e#$RYO@PLyDGDp_r3v^d~A zM8e?(5fc`<+nh$Nm!W601UQTj6nXwWL5>298dA#4aJ(Q5x%})RS>>ct;T zw-NUnq@NJcGrbi6WPEB%i3qntsdUZ9j@s91K4?gkPrB57e&c!*HLacF;%Usm^TBW; zEG)cve){bAu?CKinh{wAg)=aO+TOOyFe|pb7Vb!j?81&Vb#@HN!22ab#T6bSdJ66Z z+fNX&oERuAE!o*%#`bSH#lK>pr4@y}?cV$NZ$aWB7QekPvoFv6kSX&?Rop!?Wo?BLX&I8fp>*;fasG7(iG-*B{TI z|FC;Nr@%S38PSvYm*e8{9P)Z3BwwK8aSW6xC<9(8Isn+9NfzGNE62Wt?T z$k>=MVQ2fe$YdoAPSp!e=8L%Y@_}#&KDR>%ZyG_qDDZFqS<)9<_W+r<}!cb;EzRXr&uGcOx6-H0VB-^Mh5yEu-o}Qjuyu5K485~EC9=&q% z5d7p+?7`FR-Me>vn2{ho1JP_cjHswKX#S5y%PD3lRDYhb4FS+K&;>K@I8b;Ej%+cC z^TC#oZi$nlsJAUyoJLMcj_B@u{y0YtGs{rq%d9vGZ4yjPKMlH7uSi1-&>TNJZH9B) z*_kbUf2L&aB?b>x7y||l%=xFYjsrDd#RT{F_doFZQzaJG=gO3Q%3?j4&dJ+rF1j<3 zw!;+DY>wA~X1D8g15b^Gp*EDx(6@K%wfe%rkXpN@sA_SiWWkqRA1W#FO~gknRM70C zFPu$D!LBcg5Edz|YB{2)p>#94!otjtUY&Vi?BW2>C;Y%xU0!r)DfDW4YDsNB>d&;TAGY3{{3wS>!oNQpqIVqOTf>aZPKAkS zY3$)^Ul=VLgls!(rhjPDY}!F;Qnu#^@sVY8dMcMmG(V$+O7p-#cma-mdbXE1rAI@nAy^_>D@W}aW35w-ZEKrZ)=w2h_?Nhz(8Pod+yUw zPF!%l6~i44iZ>RFItMx*VT*=AuO;DBu+a& zLaro)3Jw|?8P%%{Y_xaJ^tJc);(3e5>+BmG`vpd^g3nQxJGiE(K68_ly|C%GAEU=8 zB-=&jGHa|?D=xI>?dYj*PaIyHu`Oj*RI`?sC(O;6i^mMsg7M{XhCOv+FY)^>YFa9n zHG8{GA39qz;;#{wlv==)q$uJ`XAh;#!d6RGoqTt^oTj|2ps0!`|KlVNHV3u-os~RB z4D6qUmAq0`At52y9DGyh6_(%5=?^R7mL&^SHSR*Q$>!!Ds5!?4p^n#6z+~I>F zYhJ3*d)v3;8n!zd>g?v*F9r{MSXsG};~uTVGU_QX^Bv+wz6Yu8E(G&n#qrs>xg*dY zzTtfToLgcAG|AadGj&BmD4RGQ@4OG)ZM#`zw4o z1FFw6hS@#d84usNqNujKeLs|+8zfLe2WkNL&NC~f*5-jX)oVBO?%dg5(s)YewLusX zd%cIo)=w_3seonmd`n%Zjaj%JPFN2&>HWmfwbJb+Fw?oU0wdwP%kbl=-VJFpiIpV{%i97S|gHPQu&crL~ac*rKZ< zmwqxv*co7tPD@L(?7epn0x;ars@Yk1qe-OtOsSo+@Z2-9QK)<>jW_8p;`3Kq`D)UY zNsn2mRxG&&52UG@RA1ew9-?%dvRJPW*}AtgM<#-|E!`B7pB)IZtfUgDfx1!^-J^6> zP--eL&1pIbgI`%$*{Yu{;)J_-t#1zyp4Wy631AkYXtpnlfc9akWKk>Nf+_cxW%GY{ z`J^Qj9~e#}Y?v*e!S};9(}g;Ig+)Ji(>G;dm!S0C{p&(PDvB(8;96bNuMg>-IYLUx zfZ^xoPwbA9>MQsvn{i#PEsXBnyLWtBbM{raDM4Yc%gdh?5w=VHp*6Cmdykm#g17iR zJx$FENRl$`7h%jGdbveoLbG*6_KTTz^FOx+X`JcU?aB}1u{R??=+F3uKY#(EtsFeC zb+>jocatHKXzPn=0x4cJ01%^&y-$=Op)q{1*!1b zkD|4&yBjD3619d{Y|7H~6_Jf5FH5M1HkuW_t%`&K)a$yGC;vpe;Kr}0^_4t=5C#dx z7VNX|q6zu5>Wl7_c&G|N3rih0J~1JVe+t^O0V)Rg&_Uu<+RfdgDtEfLf8LW23e}+a zq1s+ejrz(0@eq>Y8~N~{fhdS1nzO`1He~-{&-?hTomt#v-254wcd%JWej={vqc)z7 zxI#S)tgu87)>Ommz*_ibR8&;tj|LepFya>GRiXN=z|!ndF92f96c`(8>Y=?28d5#y zr?|1PalO#0uJ2}E??Ov8E-xo%1MgN@%2lq#r z%h8eLTk5V|$`Dh?^M-`kM7G z_~i|QYBCdEiX_uBFt{q=$C9v*7eCw*Ucv>tW?%$q-Z^s)F-nWuaBL_lZrF;!sdiXn z?Q;l}L=xx?BW#T!YY3BRIZ_RRNQZ%Me0pMI(=I4$`QzEa*cjd9fRQ3_pQACiZ^}&? zU6U5fNHj8zr@M06!yYoiR^a!JS%q(!AZZ_!G;??erDtQI^7QzAb|riTsX%ff*3Rxa znedus=JfW4uZDd;sS4kzLoX>Uz8v@6tnp_D?F{CRp@|7-O{CDu$(%2s*?aRfC8=w7 zt>3!e%1~nI;Q4JzB1s{o+K<&~{MWC0R#sLN=g+q^Hom_VnO^aNC7qyDXoD>%EVLSM zS{(%`*CQ2}N`E?dn2^_83cBFwyoW|D(D+ph1tycT7Gc1=b#-+ZJSd)FNwbYME-tQ7 zG?}D=a}ktIOHGA2cVsm*G=%40OAmwBFC`&i3_*itO6%4KITeXdH+u%^J4$zQxOt%<1<1I)q_NrEvG|Pa zX#_eyWD@`((hl!D93ORh6v}IMrfAmLeS*SGi(lDyL=PN1C=2>xW1PJTPWQ;CJBzq* z+;#`91_}#4bo~AabW??KaG39{$oJ54{W1vDnFZ$3OsC~Y&{d$^Z5O~o5rC2$N&LHZ zn5G$Vzb3<@K* zbnNWxTBW;%uvn~iiL|3^q)fbtS6gT22MM1p{i2l+N_N}JBX^%jxs+dCr~ zCBAtj%UDA*GiiLXdNDszuh*`oFP?JRmBSS}@T4?9Pt45JLt%_-5J>||Ri%O(Ub6-w z{od}>4)Hd2aPm5Dw1g8)|1dzR&{Y|$F9y+7f#@l6I?M)&5MEX1+IR_O3OT!C3J9S<1rRU+ zIORmb($bRLjDO9Ds#P5~(jH0Q+7>&tz4X9$%c%ofGo{?0E`NPAxVfiCC0~Q(^y0J` z!4bfW8itMx>PsJ6mfyX(l7@2@W0`l`-zUk~1 zNO~^yI&V&|;|Q~ak@upb!yg_>RndB}G_d3BHNYUJ1OIWoc)$@iTHCelBAKC7izBS! z#=u_?*VcZhzLM#$3r8#H2{3i_y0Z=Qp*kNJ305_%dBXrQl@=8hg~E-#mDG;OnZGqG zcW8uK&OCwv{L!%c`i=%>&h{)ess96MHnh2;Z-;~ID!NuCd zHY}jx0w8b3He$&K35=R*U#}QBrm@nU$rVES52jzV5bVT2C?JMqHLiVyg85!9aypla~u9WjFCyn@#!CuclnVfja z?$7PSFi4@<`$q?fK$cDw9=Yd!etwj8KW^Gj8?#qC4s7-#2NOorfQ*K(9%shfMYgmc zRp8GDsItXW+hS%gr=PgFxmkicIb!QP7Roms?PEma;4kQ7E}5Hhtfjv{49>wZ3?2^Y z5kD2vDo7g!oHr}tAS{aT>O*gYKpw0Enn)BC08_msuHm~RZ{G)#!!^B@HLOS$7rxWh zEC!dZ2ZOZ&NB3JQQ}mZiU9z~sLa+rPod?G9*eJ{x1G{5a4SFOmDfKfmUKB2GS76s8aBzY1YaPwzRd$FE9Sj zlibqT8Sqewj~>!ZreN9hvOLPZ+;y5Ve==2I5!A{k$Zjf*Zogj$5xm`=Iq`9v3&aF0`N+pQZT@V-K;+{{ZKSkF>M8l)y9u z)3Z$qah9Om<^&hMzgb!_?Q@s_1HWOGutPIU&(0?#vR-x69&()Dw$2rvNX6hsM@K{K zM+5o5^jvIxn3QER9VD({Y^(zI==ZISG=c-Xb_lFABc{8jr=_Rx3feHB*YMG>2gGQK zubMec_AIEBE~|i8JQ@L>3%XWb{^!=mBI%yQA0?q&UZ$6tTFfg%QfUNY|g{`mjNGjsCI*T?y}$2Bz`#pp26ch_q#LuvQx@C?(a z%6GihhgLKuPF-!1%;g7o@>OM6haoBW`~!hKa!kH=x0S{7L&ST2&6f>xJGkmk&JvSzaQ#5918fwpb`o;O2B;xPFgUk?v2*_EnbdE-V}<+ef??vNJRzk zhInMYa&xy+lis(Ck-Y*3>NyGuaSaU|1;ruXstE5MJL!EwYN1Rg4;dO8_bDVjYKFsW z^H>?3BKYbor#Y`*4=5?wIYLGjmylr5+?JG*lgQ1=sv?5h)4&Q&BE%D`fBd+yv3Za| zhd36KKgaTxdk+^xRR#xBeA?91LXjgZbi|IdC)@BLS}JXA?U7zhK}J^_g*Z2NcTQb# zM~IgyIG&xO%mYsyEFcA=w%cintgNhXj-1?izI`u2PFz~r3@mQO`@|=`Rh5MB@r#9c z*28xhTwvj^Ij-z+IZV-d^Tx1R$3{Zeu-p zwSf5L#NuMsmN;qhEWvqB4F4&<}Ci$-cvY-DIC1^+i~t|`(C zrY6`Z7HLS5e2}iXI&-&#JAYY091NpuL$#a=m+eMK;x)In23Xo}@+Mbm|7MWP4>ZdU zscb%NW$iAK@Lq4e{(O<7IAYl~@#qF#2aG299Ic`WXw6%uLkBwVZLs&@eA+YC5;3xG zz7E3D$EKvD*j!H!hq}AsZ@yCHUF|&Mb8~s3wXDoV{(=h=*d-DfN+IUNxp;Xi5&CY1Htql88TY>+MD8Y<4!q6MD;z%vuV?Zza>8G%1tCKGl2Vpn@gUk4$y=g zo3rUO!Ti<}pW2CgKpf&=XKiT*0$BWOkl=yqH+@V~B+uG7e!iz9B3Fu=o4bv4&pinV zE7-FP_lw1=!N*Oe`faK*xBbPm^<%+*-t7MGuntJ(sHu4jk4{BIMqY$}4e{^cDv%0H zKJcx%vr{R7oIFzf)FHM_5&@=@-v~vJme9ZlUgnwG@ybc$c(l}>!YEZX$q0v> zS!bTB_O0!|=fDp9F^)b>?&eWYR)7Bmh1Q8foq@0AXc<0Rkub1v!v{21k)kCRPZ++$ zo*wm@YY*H=fYaOPg>SA)Mm##q3Z?%KPB}%%u$->Rc}KF@47d(3gf(C*H23y~{OwVI zQ_)I#FiaGjKJfhE2UPdQ=4MMvi_cdNuLP=UY93HDU?Ae^-<)DLD#X(PDZ%12>m#{* z4YQ}ypNRGY4Pl;!6O47$Crx*9`UK8S>emJHvLh2d3@qZr3}jdXC^Hlq5)>y2VE_~r z1eS^lAGj{Izhv&7o>xxFX)2g5%YvRV;x66W=9%+F>X3G=YpvUfmix?CXg!CVu zMrZIuTS9%kCkngUTzABP@dmMlv|&hmC8>zr{RT-3_P)V^r@3t&g);?7i7C0ct(&$Y zA6Eu&#q&8scYBokC^%$!9UUB)umIp{4oGuK9=od0r#;a5DTA@EuMf0Z(6Qx2CCX|D zMH;zh1_N^84U0yJVCi;GX=r_YefJC%(bI%3MymM(paM{+-nxO$#(L{}ex1ScH@&w7 zifNuYyx-U$bO&($#egwg?F6S@2(zm>&{QU(HhtBpDjAROz+0`_6Ln_opW1mdEra3N z3*(hy?<$WLDS?z3ov%vTcNsDV*1qw!3$gVuXh8;MB0Dc{jMsUH*M>h(*35DXaEUdC z)#qHPJo~!nmcQ?7Rq~ONK9icTDu|{UIAdPxi=BmVS2J1ygU{65to@ho`%H^9tLi7d zDt$|I%=t#K_#|h3JgoBGG=O6GO!ySr0{%sa&}WA46i14?G^QQag0a&C_!o z?+Z9mdz@zNjy&4Q3n3a`Q8FPe6xNv*H#0LsE-b7{cdC=AqVbRtioKzDAl0m$SX;CM zAk&EVWylmWngG6_oZ;lu)XC&$Lh;}^0SV6>5`%cCnwpkdSPki+(D9bIF|3)RN?U2i z9gow~$39eXo-IvkPgeFpeiH;oQnK67B-q#@FTZ|kebLqqizZneBJk}(yjG}sL)mS5 zI4jE3Ti^|W_%{5C*7N)4mxrx@FzUtUji*DPC;-EFuP=^u*a$HrXCw<8|6Yg5lpHnf zZk2|;b}LfX2VbCHj89Le7?px^Z3(do=?z>S@F^vrsIG=BxBDa7$cpaOy`5G-%PN7S zLWXj>=1qtxsPkU#?duC2sqt5QDQBYxYv|dRa1;iu_--HdWO1&K6#o^V12q8G!niQR z9YT0lwUCaTdyAGGT)(tO9Fgs6wtc=Z9dTJ%oG6S3RplYN7u2nV0?3N`5Xf$rP-)g4 zpPH&oQeRHwU>vT@%nLg>HwA@hMbLpB)JqNdP-v+T06EQEqba*C-|p*v;MqY|S1V7w z67&R$4xj+IFILAz2>G%ov0tOUWu;+TRxq?swDZ1qO?=FbUq65di5yviLa2Sv9OG%8h->O{!LE&^9-}3h{15=Cn-!TgCGq z=(K(G=#eE*o#azoxic5aQ(M#;$93_040hL8R{KQWQ-}Yeru2G}d}@ z03=|c60-5WB>nZSSCHH$Ym^EDJ|d^C@C%XCMedEf%R+3^$2<1p5*h#$&X1jmZiIFb z3&TFrqmchfV=}gHH%1a-PlX`N7sam_8H^lV^U2+808; z@SN4D5)h$Tg$P(Rk@HB51R#S1ht8H^1+I`YH;m6}G#awWrc@K4gwav1S?-!>Go}R# zbzcWL&Vsb4ogxY~cHwoiz0DlGl1Hy@Ai@_48zl(Qq4;H1(D$xWkYmB%IdD6#ptaZ3 z^4K0h0klKmo|ceHSI9L9ylkUz-d0biCQ1MNTO?s%8DcrpgCP#&2P)areKEjcPcEn* zeb{6Wd?`%qo`j`nXrF0y>pLgl2PY(wP3wj{gqMf--3W2}?e3@-MCHbb3~ng*JPcjN z`n6n9k5A=NXD3~W_$J^Kcfxx=b=O8m0QyX34O@@aWGp<$)P26;%de_Q;AOSjFiI~9 zy1do`sp4Dv@!Sg1e8Wh?PE#uiB)yZ?hsA{ekTb%UC`hu9k&=$WV0yH;LjbTclfJ(d zqFL7le-pdfh2kHO*+}U=Vf5vDz9e=n3gW9U6Y8k|I;YB&dsOgboOJADp@6gP6IOc`E_t-IbAh`8Y!<6}zv~A00HT zDjUsBP2LdX;o{+m1snP0E%*VmevT5QUzvPm;fLjP3&2Xk!opb8pWdIAS@{S$Zwrtw zRw$wb5wG}Mfv&0mz}RdJiR@^DE)R$FMSQdHHScQ$*e~BXc8_9vuwwvjQG$o(8w!A# zWwkLLr}(ZWH=GlqU>uvsEPzZSA2QKODu(M&@E>+BuNiK$r}79%O#R|7h!LWkPH;B$ zK{$k~Aj*Uk1Xw%Z4OFjx?w3oGvbM3&fd()+6@1qn^z14euM`)tr9UD99q)zlGId|g? zWjn^nm<#ZC7Kje$Tu|M6{{S&6RoIaGcY%oi-vp-~Tt4kF(tX#(3AL5%%8X%$XdVjS zLj-_=f&#K<@MGk@x8Wiq=(!2g{fuxR`G5$cFn&V96$lmkF1{>IP!FA$n)(j34`cT%ci#i<&80@x zZ_e|^2+Ac->zz3j6x_^}LW@1vASEhch2?c@{Ps?0d}c;UQL*DiyyDlNGLQsP6!=g) zRV8VhnNiBPUGW^FYI9!YBK93CfTMh$^TTqRG1JUV3tecQgO{QpbQ^%hh^Xk;lex`A3@e@OD6% zccWl1)iiG*%;btAfTMCG%UU|&4&d@(IR%ZKmnu@b71<~Y>wqDOi-eb zT4hKYLPj13GV(Ta1_uY1R#i%9Y!vfVr69Wu-(`*|k351sX4iYhjb|yE%i!hjo#gE% z>WV#IIERY?Ri^pz1bV3P*T)&Te{|jv6=fLh$`W_lnljUbpyXft5yC|Xplsykd^xp6$RQ{@h|MV3 zG_1JYx~R{hjwc^wr4TZ?AH2acHh|lBZZbYAfv3EVRZ!0w)-^Qj=Cr_7J2N;d(~mM79mx@+7BzOJ7|QSx^dFb59$qN+YN^ z;A|A%O!CUPa${sCXug+4dFfBfi_}&(Y>D#p+euW5eod?->GXGdBbvW*hIhocLnG|` zEI~P}H@)CQa#gNOTkKAqa`(3R&VZ!in1-{PCP@6lw>YNw@by`V)XFs^HW?I&-Vx2&rkf-ES*qpmD(gr%xh`2wX{3 z(dZG1U6A28PuLty-dSaSI6)IXeV}u)9orp%D;!VkC9G9k@wJ&2wCIa{m%kN92;8K> z#pfEwIpi*l=DIt3Te1+-DcTvVC$G+!9NrHxhFo^LRP5ol?(QJyuv?nB+ydu264+iS zt^nCT$&pWx$U+%i$c#Fzc85zC4Xh&f7R(!onzJf#ou`c&GFU%gBUiGEGg;;GL*DWB z1-%nl505U|9x@X(mgx3U4uF(Ypx<+{+Q#nXb5AX;dHUu(Qkc8nHao0E25x`rh>nDi zb+L^~ydU2|{r04Ww8Bt1(6-u+D$Sh%Z!=isIy}_hd!7jqoOoq)^xZo{12c)0M#5_D z%kD*!!#TL_^F6n)y+s^~{VPLDE7<;irOP_sT2onqvMyMW1^C3exe4Z2VEshal@yZ4 zQxE+>@R*p&;;SBG)cMJAi)0G3U8A5g^e#_szj5~&w(lXfr9xS3cJ|#~!q?tG zTs;_PSDa zHwKCzp~4W-0)nJ;hoXd1f=Gj))X+6_sfe@)NDLv3bk`8?wa4%8Iqx~odDc09y#GA! zISo?M672acmx4M#h*7bnpj zRlol5sbHa)jUm5zzv|PoZ7G}uC%xYkk3JXS;W8>f;Up=j0_UQDDGVv4@&h8v`T+Uo zw_sSA(I<%w{rOvmzu)E_w=upv6()-AtjhD`pfu5w0?I~KY@w^sWmE|7$u(-l-{)p{ zFz%7M2%S!#^F$rBTER|g{r0c1v9iexL&MhiCB^SudrC8}#yHk2H88tEA}rP~1a>n{a%~@(ouAKsMqb6hJ3lde zW?BnVJix2xloYq{IVO{VC&9J#vkhILYeUgslX~uGMIuIzWHlcO#WnFw9hr~H^}@5+ zw=roy+uM46Mz)=b2_E~FB!mBGQj(_&a-6A2p~)adZo_ZS)#u(d6py!(F1Fv%y$Q!~ zIs*_>`^6P%k8+Futt>LgvLLvAu~vtr4>%9_lcOpNGrg0O6VS=m3T~}M?(FP{f;Fw6 zsih0bGz0zu{ROJt(OVwibhrVz|V{grnOY z@y7}JFvP{J9al{y`LUg zf&F)c5ln?9ly@?TFmh~cZAU+a$RkAcj#y6sv=F&Ae}0N0bp{N+(RCaSM`!i@f@A+u zERsI8Gw_cMEU4~g0oybJs(%R{u58;VuhuNX{O8Y~qg5N-g`~eB)PmO@5W7l}4}YUHZG zzvI%95uUvxktsJvUzySyw~))zRy?AD{WjfLrPt>;sm-b2`0R@GPp7WvMz^KgPmP{R z2cL8n7)8s6mw^|-0EeG`GOvl!5hsD@93FAeqR$4Nfs($=(vR|JTavaTyj`>=qggEeUM!GH`0FiyrjJ95L1pyVVfPmzS{CKY3K1SQgqfhao$DUDDAk8vkbfeMgB z)=U&gBZ*W%2GRiH@a7FjVPpu7Rg44yDY=e;&JbZUKoxBu&;_(T5=a=vnw0_d6aaci z0E={;kx~Q3APon#gn|{|x+BOxx!)vrW*xz*u&Zc2U#CV0+<92NxD2b}Xf$9YKuos; z`EyEI+E5I^n_7P%7Z`zqNE1tc3`q{fNGAxwY*85cnA$a{t3f7&p0tO3y^|PVFr(uy z2Kj4RtQ4-?8RXeg!2kS&53ybmD6u^;eY;2VL&&OV}$IBgv_)GPnzecyUscG-v*^DRwi)MQJ-nV%3(u@1=pr1y4#_VfVR=@kRVj=Xs&{WEz`IKr_)3(&>K`ykulH@Ln%Vo)|f(g z;sX#EDzS<{uEHMRS^^r&rpU>Q)IykNNyWv8)4i*rqVmYjlA7FsmP9XNT|FTQCw&;l=`qwbId{Ryb?`HeuknT9(7z*y-b=#nnuKVKzk z+(6pTrcuO&+K>RK|Bwv<5Pt>ScK^i0#CLd+_4f81Hz`0vomZ!1Df6-PYU5HAnugBl+Jyk41|(1XLU~ogmlkCYe8v-`dkEb0cZJXY_6z(m$e($*9JU}(qU>_8=H~ujDhLP z19o^b_{AxG4bUGFPXwIc(6u>0a9iLgk%|)B0kg+(PD!xzVRr_)qmXF~+F2P@Q|(w* zKTI;nGQRbGeq)&2E)nz`gI9@ij{jG8{7AUSz5-^v)iS!{HjITzAs|se~LG7re%Z4di`F%GFsm0;eO3B zoq3eUq3*VEeRQXaF>vNteLGsbeY%jSH4HN#Zsbf%rU2|neE2lZ zY@krW*=Bfk>9yh1EcLxS-KACQf{){kE$PiOtVT1hoA$XnesESB-AYSL6(Tz(bkUz& zeQKZ{HhT44!M6+th_25!PDZ~SOB$0kiwZVS5PuJ|(jSb_rz5X-Jez8 z(DA~>Fv`KN=uwE}E_OM8F8kyCi$BNP3{Vnsa{u9nM5ruH%o;;a;-Sf%8~PKmUNB@5 ze)dCwbNdaBvqs`QtmVg1&t?Ar>cianZMaj$pw7USWDfwz4Ih(uLjOuw1GoXDShib~VQ6T9l|)5s4wxlD zWE2GXZno~Nj(VQVjWGvM#&z z-b?Ex$pgyBj~NRn6A1GXpqkNe91TSn#9IrO;j;)14LxgKbOAmv6j?mc{lsJPD;=w6 zLZrqFXNw-+0J6rQBiK~E?ukAoDhEmZG4WCGZE{(7ADXOAcZ-M?LWM==WVBNF8gZ}G z_s>}VxIv0hHm<{QefNP0yX?eKr28S1;o)9*!3tqRy?U$^O_6*i-krfr-gH)X;Y_fu zd3$@ODgQoGF4qnMR_?I@Ib6AWQ^FZc1B0f>4D}3s_2YklZ^+#L*4P3WW(=mm zd1&zFli?KXlS*eD^$CFaYlTMjIBNUN%}tiIFz{7;S)wo21TGl_GFU(QZTo`c#wdZT z+5$b&?8^{__?_5t39}c|I8)=o|F636^vLu{ zKlE*WJSl5;t~6G8c_yQ>(mi>uy8>s_nt+%GY~~v;1rA6d)n>*#6eVa~{4nB}^8MO(t3)pmitgvJ`6Xu4uO)&jK>$=w&YFR?@1) zfK^SX)F$fgoTijiEk#RKzu7mxzPR5#)W~FJ1wK_GO?9OEUBf8id61J3l~T4xMZ@^= z3lg7>tx8Y+d|$E5>7H-g*oNlu8rvz>wJ1Ybg*|{7x$Nky`P<{VO9LPelftY}n-Fnj8mPTkcKamNMkFqpYVq?Vl8tMX`E78B%5a z5`da2rcU51sFNH@%)Ftd>cFzX0xpuyk(cF1@g0>JKyx+061|jPh-gKC+A)CzoE;V8 zaNB;TXvyg}19}~vx(vzBB3TYKtczX(Wfu@T*x?KcM#S=sfk`7>_+V_>5r6UstH#gu zIA-bGKh32)WluYm8(EHp}S^-UW%*B8p zshIV(gMy<#PALP*69C4QXYIkQ)kpi(B1+tqfIZ>q=?PQqTA}#qV_+}IIC3yUEicKq zG)=RkyV%t^;&D!RY-~=Ux@x7{wz-%aD1+p|GXgf2tQK&DYCb(jOI!ajaJIjmo-3lD zDK2bmA1><@U%rzj|5m4e9f#@EufpYO(~`C4_1j4iJU`tU`^jqeFiD%-GYN>z({bj? zh8w%V?QLym2A00W^Lh32-m+!GGqfDaJ*Qg4SQORc)Xo?GtB?$T57tz#r6qv*^mGaJ z!thPAD-pmRK2lOr^0T90`)sp<*oqQ^gAU>4vkbyqr3BC?p#(I)VsHVEpDgnC7J)&kb26gk4uzExSP>D9ioiLo<2;*XcuG_N33q?e9WVwFFg$(pDJo6BnEh?5Wup3`p@_Qa1zctZ(Huv$$FlPA9RQJ!Q zx!vg!(PCZa`;Jd)^XUZEQm~e#Y2^iC$qd_Nyry`pvEslO;BZ)a3z;kkhse0fWB=hByNidxs6gjVnbyTd!c$PhAf|2jg2SJ9b)D> zColmz?p(GDpJl}cyRew^{M%czqB|R$2HSxjVEU~It$t@UDwXs?6%!lZBiMhVV!O1>0jwC za@2F%=Sy0kztj7}J0B#@s`V(Xc~N+?7#Bk%;n>OGA$Xm}5RdB(s|w~|@} zpui#sN!C63ctQ#MK;n*#QBL;=)LnxN!~(Pa7}ai2qXDUXZSrj}u<~OIwT13HPQVFc z_JmWSq6q{j2Dd}^Q3#$#ealSt(W6I4;=LK_=W*2Mp$|d67iPS&GN^K&0OqCEy=nw> z34#^CY!;>siS0;oVhvu=ad3~yz}N@JWZDaM#=t!DzLNSWg$0APmz zvD~v+oP6%2aLZsM?2!z2&JicJirx{8A$0JwTXa$Vb1=LWy;S|dOVQk1NBx7Wsz6CLa*AtG~Sd6Nb5 z5!{zhU~R{1p_V)9>Uc0nCFjAp{VUXd8W;CZtASPad)$K7Nu3Uceum8W3o}v-Z+}+l z9E@|w{i(rmif4VDs@r9av(34I9-0cVGY&QeG9Oi1SWa@Ud>ZCn+R9TrP5tuh16sPq zvC>&NNA;A~a==CeT;k~xG_6l~!=gUvK^D(_b?G!nz}F|3mL`$qsy$TQV3o@_apX*SdTqyK#b zO>|g9mXq3%CXs_CB&#^j1d(6$*u)n zm@>=2!PbNT1yCA&G*0^j-PJ!}s?bs+&k|@rtQs@?kzf!xn_x+i?^uAU-I-ld3GA^D zaWK-6imZCb#qZD<5iYtMz;8X#0!{f^R#x?0QDOPhaY zLqPG$C(Ft9{By4Q6b{?3A_%2(cWZs$*qhxvtHb%nC@PXH&fVN?+plx%9izhckzTz8M_M3mN zx}nE;?TszHgJVD4UGm{Sp=+%O{1>V+A>X4%9B;1wZ;Yz}ndjU8w`hT2PKe#E`CoMF z^rf~~d(%k6_G5E71b*{rq)3M4pINe;<&-zlr}e~7>k6b772tdg2QMwXZ-+@f)>aHxE>S-A0(OX z1o+E1%0sigw^swdzeVPjvk8!;Z-GzuTTR0CFvnh)y96Ifh5QcL+9tqmt4F9vo9P!5AmHV%{% zXHq_vmx}>kn+6(*1cP78vOVh|!cUJOn8qW}vEA&UzFx^iA&SF=~_2?%S`%l6d8&?&7QS+I~F7_>})2 zxOc79ktDwEu7Qx9!D=RsQvZw~+_(3#CR6n{=tM?^*aM+c5mn~%?M~H@>%;V! zdzg`_l^d#9=6xu3%cIW_0+0TA{9l>ArE?R7WXX|GVfkf0jqjBerAoU){0p5iG?7)a zNSwm#_qHwtY~J_-)8i0EboiRC*dm>m_q_s5lB;2bzr1`OW<@LR(SuT*DuH;*GNW-{ zL|dGqPLxUg{Bi#-h+$^9bR<;R%*i|bGS3j|Rc(zyfo^yDI@q9p{>Uy+mVN2OCn~BT zvj04oW9+qv_A;WGC3Ew!IY2&9clt>0VkXQ*nLUiBloS+NQV1mKW*Ox8sTzmQG=M4r z<4VMy>#8(^pDYdn41Wn5;umU@Y@pY`5}G!1a8(a}Dg?v0@|)WKV?r1MS|doY z@3~OrW(v70X9ZT_cP(#rr16>jYPZ`*$bp}-K16>_HzHw&&Gn@h-%5j%CmuY^Snv+T zVPp2w2Ks*J5k_)Yhz9#bv2RrmQUET(azd4<1sediPV!yPHS353*?NHUUndy!eIAy4 zR@dzHPo#kU3w~8CXXpVwlLUUW!kq*CEXMVVleYZ+jx@!6`#c?i!!+^UM~H_HK%QVw zkwpZp7;h{}8GG*~#E&+dJF`YSN;Tq%djj4kI7%>?AX)-=zO}x!2Ee>+MNaGNE&--( z2y!Vvy5#QNYoHj&?x&%;A(EzuFnG|}M1U0Z7sJ76DI^7i9^?u)8hrc(Xv(Rq zqQLk59)xdzfTlVw)+H~t#q|fH^UZKj)ElH+qlOX$wf7vZ=RuQBRiaf;SZD~B2Bo!# zf>pY}o1{e-;Z&dtN(MoAIM?5+&GMf|!j*o9lLjNWm>dj&f8|I}#{yYo0m7r8ot+A# z$wg&0OzmwyviTS_I7C99*BLL*ZN$evc5>o>f)+ezo*`%(?AH-c?)-~41=m;fx#=nE zmoXiwO;LsVOJi~%0c-+v4f*>1Oh&@j9IMZ%8sUFv4T2WrO9sTU4iv>GO-mY+b*DKE z>_x}`bcQD>8NixJRUIo@O%v$Dz`Edtk}6)^)cyR|n|b#iZ{~MN0NH?M$I9*}KYA2W zlQ@y&Ek9KN7U<@x>+W7&uK`mI^<{*&+Rz*TUDeoF5{!bxk9x+!!njP5Rxq-o-3s^r z_`Xs7J%{kKts^yqs#BeX&*a&&^T6;hNyEE4^6KO|a&)kcW9EB#BmS4A%}->I_Pj0g z3z!T5@r5#yYu~(=ng z2ok4FVZI=cKOQ9~PgLy{RukJ4)LC?zC4QU+Pxs%CW7OD(K2GQBgztw%T*lEmJ9Kaz z=I7^eb@3Tg*Ofgz>auk4rz`;6durM%Jji1ue*elzEROB_{&13q$vV4mW2aDUkH`|i^6~B@c+)X{;-g9# zfe3#e|G!b){*U|p|4O5O$S>$dBfzz&y$B&$OkjB2eG6SA7*vUm`Skyu=bZ%6#nzBv z*9?0DL;=H~)N@SC#vIt*X_UkW_GjgeYknDkLZA>0@DhP2Il9N3_!%DC|H`}6gqREa zv08}={!Z;(?E*~<)SAeacNww3NE?lB;s;8~2y)gWWFdzIvOX766mL^zWjvkCc# zF)S$*A4C>~)Neyz<1jK`b%ZCw zoJagX(N4M8?sFtMl|+n(n2Ndm=bpU?$R!(vbW%iQpW@VtZc}iVhSml4iM!My=oPTBARKEb{SX#+)XRlmyu8czaHdr{dMS-JZpaG>0_QX>|jpEo@ z+8@K|`sbbyY-hIwSfEhlstL_F_@_`cr6%GMXk=m00$b^^uEjyrDy*B#(iN~J!1!k} z&hM{iw1SYk1pMg5up{H*W@n{1jh4d=sF(~tGF$~`SW7|Yj^LbQOXA82%e|W-Wp5S*igmn`ha{bZ_#1SWqeK_NN*54X|x0iikqy?fud1jqg(8!Qf3pa3BP*x?e^|4k5S_+Go^(QNf!Pjw%pH?=`xog z;LsCYA;_8?<3YG9lw64*VZ6KuUzl&sZLKs9+6Nf|Nbp#yV-b-DIBe#!zg?$hWr}G3 z8!ekh5VD{pqE8CKFOdBhx22&3BqrdXY{gen6-L3gAp;qfC=FDJVH{=P&Cjn^$>Uy`gUStpnZA8X zLh*Rm%2*hRC}^`r=E^vb)OG4`Qxk8?r^)4l3Zkts$Y;2k{Te!ek(Qlls?hsQ@ZOOM z?wg#%tWXrzC>;#Oc@#%D9nRXtB<=35U9sSA0Tp*sf#$}neb#q~ReERY+~PhCsja}0 z=ejJ0xW64(_a8vA9Ft>zZ|W{H)SZ3;VdhVi>eqtuHjyP0Lh`So2$xtz00 z9Wo5C6)ckPg%U2uZIxknCy`d4v+D<&}lTn0++T~%gx0V1WbCuA`i+P8wL2)rGNdKb`yNWPnQwKb9Lu-2BnZ0=@?{U zIa$MY9V*IEXxd(cB-XcVT4jQ8f*J@gJEO}NV%9PT^7<^tml=rvA$mMepwkwi(p_X= zcL#&wjw{X5Qk;X$(oVTf+^URIDWAk3XcYOT%l^n&G=o_nEaIBpotayIZ{X=u=m!1? zJI<6Yd7jgVVM2MdifStc+9+Mj4GgGb5b`@*&#wR|vjz&K?4-z8hrreCt@^C!U@xzk zWMVG|jz}75Bt#kmQ?IG|DSQ`Bu`oPAiIz5KxK@ zC?5`p!{B6{s>$9%pHYByXG7f~tiAnAbr9aQm?Ti{=sm0jL55(d)qdE){}}q`jXw(R zk$#U}K}JmKPi;VaVROjDM1v_kAiQIc9d|hpXgP%DE{zGyt;hOZ3A;!16f+oJ%|d``BiUFxg>*2A&JgH!&1d=(oo{V{d(!u_O31SfzjVZ9Bje^H79| zojpT{Fr8ACA zT^%l{ak@K?wRXC3VjMPZ8nlg56od9v2Goa4#oMd+C0GSBPsq>~Z;x42j6PL48wtlx zw4uod1F%mss^T`P!m_qIRhiiUvBsIi#6nb;0jS7_TqO{25`hTkuG_%0pqxx=BxHc& zATHZrjCOwqvZAPs38`J9#tyYRDALS0DmDj7A87B@B`?*%@mX&zTt)|7CW5AD+yS#Y z${!GU0QRu$a81k=zk#d6Ai)uRa{j6`DupCALhdb+y3Y>+q_EoIrkvq)5jI9lEMES3 zuU3Pclz3P=_I?Ahhe@jBA=f(%_cSntroD^$f2)6xWt%8X{L@yL$qd93s9blDHaN93 z1DsO#ff)*7g7l+%DxLW<+Tcq>qZ?#)iGyg$f_D6SpZ)GdX>R*j6b6^VjV!tnT6m=g z9D(J+jT6UPh*$G(?B>AEjA3jmp$nRIln4j&U&G=nPL~U?|Fd1<+*p)FJ(4G@`2Rir zE=@FrzO+H7b8D$3%gpT?td6lTjc7MKkfO)n`DRhB8!xXZ`A4E29me8J5V6j9KRbIl z*i1K~hdmZKEE;27b%IBLd@(=vdc$iJtpzTMvO&4u*_Ua}i!_GsZ@>~mAWn>6QslxZSXw_Q`CEg(`Xc*OT|$r9)8 zV#}G+T_vGyKBzc|+uexc5!H|lj<)N0lcroooVA|R1=GMtaa)h?efEXC8=^hYE&`Cr ztnBY947+bNrK_o{9D4+14mckq6j{u)6O;Z)$A3L}vJlj}06=>8U(9nM8)X#Sv3?1sq>g${<2dw|pxgFT-3 z{1#-f2B4hpW|Y8M@4WI_rR*ZQ1!r`L^9D)jZPfB8O};WkT_p;gAV$BV{EJe0=7>Wm zLL23^){>oJ%MbJ`aR(*zq6W=|{aM+T21I8j;eU?fFaNf2WaooBy7d^zU~k=`ut~$p1Y4 zCmZp9Fh3I8{~oOLpG7GO+a3u&+RmcG9d251q$}^Ae5rPx&6~GpZolavRE=N=1h?hw zo(kVPfbiZklS2`SNw`y~idB+I>Vfdmi`WdQkW}S8&XC7R+-T)d0S(KY+0LEAqV|4U z&F8kqB`b{L|3Q=g{pUg26fyY_D!2s6a{Pp4)rgAo^T+A%w_&+|0m_pnxz40us`R}DhP<(fy~9oq@-^>U!F^6 zf;0piMW8GBGc^TS#_?9Ik4O0XY1m>j<-ykiq>XtRh8;P^To364vxYSQY=MHvAe|90 z9PRCbe44>Y)mf>#3c<&fbr zn7}ffjHHTS8CLFi<@+cL*d>Ub=B=jfY60$1e{=aMuw+s5wpcjfztSTh1Tt>%%<=FE z@LE6;$sUNCh`bM@(_Z7j9+Gbz-$?`CzM*EMVMBBg%;F++U4gKy8A32*DDio2tlcyj zBqRb01Cirxt*sB74`rVNzNHS@Utrq>b*C^8SP1`zNW`}gMU$V;tI#FP2Shw{U7uj) zUWJguA)fPGXAn3rYUS8#LY+NFBoi~s*!wE~kCBhhzYX84QMH9lQ?F`jGN(Py*b@aQ zbU?-(R>`U#&9zY8Cmjp|2uuf%#mNw&2gk7A#N#WR=-_bv43nEKJNs7IQ5V_k=kojX z#{2^m_Cf)D*)^zb3cftwZU;i`A=_+G`)oy#(Ss~`V7*ii>`g%&+TTxsbNe@ugAfn3 z(ki53swCswifb>u*ps|P*xk>)fH-xf4}O^l5rkH_tLxYlA$ z!D;n(S??03R7!z_O5pHk21sZF$xap6Vl_BAAja}xN=ddb3}2OGxE6LJFa}zw zj|}hr>p(2|How&Vih4u+H&W8Q`ew{tJE>xg$m=V{1KXxLizykDgk0rm)#PZEJ$j01 z9(6jR61)GL9o_Z$J=2YnDU=-VNl<*`S4jtos;_*M@E2@E)mL81NzX?IMCn)dtezt_ z77tlAxb{vPUDQmupX?D6ahLCNVfynN*-t%OZ;hF`a?oiyIJs|H8|kM1KK{So)@*$j zUplv*gxxvzJ8n9_Mxp0sL;v{?hjRC`eVkv{yK?c?f#*^uZ|~ouc7$7>W%JOBi!3jE z>W^Q&a{eskncOv_KMAEzg@c)kDP<$Orp`B0e)Z||Oed-rRH zZwf8t{yoeghvCmb&pqAU-9L{VzSic6~-`lyXBU;eJ|l9b3S zeXs32GxI?Z&)KzVojEFWh=SsjN}{oRTE|6>S@DE~gyZz|{$IaJ8u4(GkQf^pIygHs za&aBMapT7P+M4I1j8l~dFxGIIf*PppTIHYe((d2CzpAMTqY;C>=J~+mj>*lNxqBAs z?l2|N2E|^j(m8oPO#1f_)AO)Wx{6rtb%**v?E9M>&iU>Vbvw_F-VK#I?y-E7G5Dvf zj{^7k3*97gUL=|UhaVpPJ#yuFaumGAYTe=P;2&o1hYLo#Zo%8I!?kgu->y%J6<4vB z4-0*WiH|Xd3Dqgt%+wuO=JPBMs}a3rm5j+TT(T<~zwZPdx73)rl(SRQW<1c)c#>&+ z=FTyjS}JzB-yeoZvP*_e2eG`aWBOfhCdNM}|7BEN*mB|4nO`mBVzD+}-mD>e(^%nF z>R^-2ypSM6{5}mmFAs#6VB@~>?m4^5JJ^yp8l|N8?$51Jhup&4k8^-=j;z?{Hf$Eep4>GVAwf&6E=Odn8WO1-(~BszrtFAj!-GSMZ^4!8`x@-d~PI{QZDPWkKS`$#1gztWNvS&be! zNI~a^o(u0%wY*08;KE)H#$=vrE{~L6G5sQ`@`_14EzW*KO5QM6;kG1yDP?@^J)Xxb zOgRThD54vy+{eG^C>9+Q7E@=vn1Fo^2MUknyBfYHxkkRwZP}!3;dXJD_Y@BHaugNo zO@}loF0=c5FM;vR_Gp{^*KY1T4W$e4gY1p6`x|)H67Jji--kEP6`I}%hJ9ocir#>jMDs>5ryLd6-^*_@li^^UPc2fWFozNQ^N`rQB zyt?1L4@zEA-g7$GAu_EO&mO_?nMT9VJbuOw1!0%M_)HkFC&ig0@%hX-G=G zoFE9D=I5iWJm*|gA?wld<=l+ORGY)rvbUFrIVC0L8jMbu*b}Tiw(J=*-{9W*t8Qgp>;5@*PYZ^x)LuY4DUX9Jd1U(ERyXJH%g-oQ&hKImEmXREDvO( zKa0k-$3NrxhmBCNFJG(gs@R$A5h=z1o@%d@JA~0SPr+wH`GTe@6w!kI+HMk8D5xHg zTaGu=FVD8A(BZI4={1K4vt+!kiDxvX`aC`Dxj%7#EP8a|L@{N6xb!m%I$zve{*3{P zUkNKkYc(C|lYPmYVEbT1Z>itQc_-nB?ul2!FBr^x0^kRMzGfoXRk{! za@p`nXnR6S>XeUG`*9i_yu!vG31c}z~ilsw9OAW3xH!m-=- zN{o~wjIA(>KiM{}8<&24xUL?$Hn3xBPVO<+>7v~0lA$ad925}| zYWLGRK$8_zrynGf7<88j{tQh@D)}FJK@w88AO3h&drVK88u8Ndn)OI(gid#D4#;)6 zrMq0FX89a8_kD1x+1(KP`sGW>i4`YkW3F?A-C_xiB#;FL7ueO;-1h(Q;k>17t{zR+ zz~@Oh{8!zyO}iyw?A$UadoHW z^O8S){P_3eq%qA*XmyY$^iGzTTty)vp@|JyPDv@LH*b#oDHu~vF$vR{)BQAX_;bI2 z)(LO2!$*&P-Enol9)I8G&3F0Rl9JasRJv}9B(@qIKYpASGp^Dz9mn5BFDm9Hn{@ORE;f1l{+T!~iRoBjo`MuQNrxiuRN+FRSOW*EbT_ms? z_hTr}e{|rKIKJ-y=Wbl7psd|=eP~)J_YPx1eRYfp8U-nh@|rYQeYi%lg!)6bI<{JU zQ{FxN`SV_=>eA+X^?IdYNy5|ZwHIq0YsHF%Sb8Trw<$me=tabG+)0HH%yVApL zza;spgA*HMWYeFDK0CCzJKxQykiLf`tmMJO+BVC6vF-;N`WJ+SY45$~pz?+)Q%3fh zcrYwBMsx|eFeucQ4KAKg6eMB79zJ?!505gl&zI59y~-V~yk;F)q(3b;t#E>}Fe+aB zGmS7u9^G@!&EmLsnxDSEM~0MOv5ZpRVG?DF9u^99>WMi|WjR`(FNyC9$v(=YevRTJ ze_opQrs#DO{K64)p?gZ@+t!mOD|Vd91x@4s1W_7^ChU7>P965_vVHT-mNPTIJATM% z=nqb1bq>cVCVzz~^v-?~vP!nf8e;*PGn=-yH9xrQW!-8>_f!;@YOnkmdXcDTtn1)@ zEZ=D2e8qG;+ZOk8SC#}?9sG_BQ*vmFOQ_7%8-=wo*LWN0_2SkflX1-?9_J+v{Bk+| za+hM^ruQ%TXZJ$~tfoE}9R6V>q+{1Dde8$PRyGaP_<$YYc?Cx7dqNl069KY0T42E&T%bqRUB*BI1 zxGQ^;g5NvY_e-KOUi-Pd)@pTNgXgtB2Ir2>Oa-`UY7S0^51iU?tZOZNLzWb{P%~y= zJ70a)EoDYqyjDLGAIU;NN%@xEVV&VBto@W7g7!lmj5PHU#mv*vXWZ0(-=8oU-^yjb zi+?<-EKV+|r1@uANOiY?!?Nh6Pm9Xh+QR23#yD>c<~$#~@iu4ahc=0=7pEw@B&-8u9#L;rat2#@B8sS*7S2(= zE!VXoN9QNBr?yfwa*td8onzOe_j2@K8yupivJvty@-NZQEWiBwiJzd1WJmQN>@aXE z6l*?1;&*1zGy>1-Tzc-JlLM42=bE+8!x#};;JeaJUD|f@iRAenvGSi6$0ky0SRoDT z>sRsUN|Hwz%5=;LEaok(LlT{PDvk&W$+QYezIvLq`8l=QVztclTD48h!HpmZBdwr>nTWZs>pK~N@ zu4E9<*;H|o-IWP^sZ->?59;`hk;nisx1MvEWV9g{q1sid4}dMwA<6WQ3*!aQ^p z8L!!@rQhx@>sY&H`QT{9K*S3Zd)re6TC-M-ZcWErOGajkRvfIQ*jz*^&9+uN4vuHh zRI=(yno`VKtpT`D`uQ)!z!KU-iXC7Y@i*FISr;hi>FvYP{>nt4CjQ7M*6!vV<@bU| zNhUVhsU});V&FX1S8!frk+}1ba_LQX0rMv*&XlRJvb!3w+zItL;Wlp?M^JH^C5W9_yi=9Wgn9s$NT0|f_3cEsa+1;(U?hx|=bVm_@; z#5`Jev!s_j9UJv2Z2ZY53Jdp>o*UY|wF~Y%K@kSIMrrdO*kAj!4v$Oxf0vn+~-s( z_3t&PRzDp*=l|dof$xLj?9HY;g}SC|=j?r(q*4S$NaEz~>u$a|B6zZVxCldN<}UV1 z5#D&(vd1z7TqpF0Jga>&-04ozz?gX{_IEwJgq=cDD`%WY6IlNshX zK%-!@sY=Hod9~%{zybEJx@4F7&QfCNwJliPIwN10OHOd*B*UcA7YPrS}adDseNw~ z`;bX>i6ShLqlUc4=lmy)`8)LoEQ}ame7INFH(H&bg$1$6<^ii$W^csUov7nBG1W(_ z;z0L}k9-%eCEBdrkzB3QKQZ6X|Fdu(el_`mP*W~_5q)B9m;_CEnjgDaD1Y0_S0=-j zIX?R%wO5mFM5%51CR=wNsigV0dGKwMUCfnjCXX({z+|iY6aLMX#uz#unUjrK5(94u zOhZ_0>&Be#4tTqFsl%|{?AV6F9sX3tn)Ja$d<8S}pTW66AC`g9DEqJRGS{}c`%mw< zm&Yr8x7?Q3kI#BJk}G!2jB`y&(jY7(#8Y!{a41{N^G24>t;Ar*fn%4)X1`_*TKo=N z;2f;Vw-n?uquV*Xd%}*~ojzH7b6>>THVKIr8)>_h$T0zJJpR-xQL>oJ{HMH|>|S{@ zUcT(^efT0avRR9L)2AW$rL8Ts_k7%J=4pv`GMU?hHAV~ae8!g>=q*S-=w=^jNZNn0 zhrG7?!4b~F&nspRei0Zi5>7Te} zmm}3yYeKwd(IH#o(4oWGd+pA(zP=?XsU!`!7Q!+3>#iLtI;pFkaL-_(H+TNiohYw| zHdim2H#y=v-}!tGpck>$qQmlPGPobLz8p|Pb55Rhv7xWywu`jy^q(D{6jP|_YA%ok z?A(^Prg`F{*7J8{{arkhn6F#gVMSeRi}N?8&#bTnw>VeV1$lkAVKS9Y3kvU3H&aUP5z(p*Cl460l5?CXv+ zTGQ|EdJJxhebtS6H@f5VeMh4xp2}N>=`9K8u`4ArP=9|;o;&b+VJzU3rKS3)(ua(_ z9vm~#s36HV)(`|p$7|V=le;>b3Hr4lz3hPv!HWrzFaOrz`XMhL&Sv9tGuww6@a*<` zFMO4d01W8$R>|}JV%xptm&U@scs3b+ol|LOv%2}YrF`P>YnqaV*4)gK;IkYYd}tFR zD#iJ1oHha5Y{YxvqOd$2PM!PdAMa7hR!c70ZY@fTL2^s-VCz50up3g>FKCab@V4 z@20)=bJ_P2vyV!|tB0;6U)Me$9!KxfAG1jHtX=-SnRNdwFBDpAF%QXFR;+GSbF^(t zb$891?6fMEegyW?aD&qIE?Y-tNrw&o^@I4s_oJ;d^!sy4ofD-RL%(F?6@mA{9nGyooR+a zHQKOwD4f`edH4{9d~Ey8Pq5K`%wMm^-*}>AQ7puqDFV~~%ZXjFQ0>~a8$bQlw>NFG zd*9x%Fo?bIm2+)7Y)8eHybYr&aQoGu*yudXrE!v~#6x?cA6>%s=K8~35l3aUDZM`_HSEE!$7_XeXlwhe z2a*aGG*uoX>33))3(;Pv-hFZ~K`UtVL8VlSzD~2DWtZc9y|?*ox0e}kEK{y0-fkDU zq%Dhd+FS`52~OnEUDG8;tD|)%Ti~0i&JJp*eXF43I!bO`c!i)~-`R^ZR@RBPW8>y0 zg>s-qd-usud*asG^kz{{LTtut&7+8A=$ww!{H;-P>oQdFZSqXV7L^|d?>F6S^N@3= zea6Ra|8w!T&_|(zB!40{Ymo7i?3Xk`maq zWTPiJ9unkv^`0K3twi#5v){g_?pf3viHcAJ#wyR z@Avm}exKhtx7)d$KhN#Bb-TUam0q6D$GEQhb-%9be#thZKRjp?dG4NJ>#6;6?sjmF zMXa1pM8WTou;y&Or~)eZ#cT6i?2m}q0h6Sy4;fI%%{}=W#9F$;!p&o?TT?}}q$0I@ zcAPQa?H7u68G5V;Hx1h8Hi?DGE1&n2oG_y^zN#EjCL?Fm;;r`ea`8Skv37@GrHdb) z)?>ZirL~=tuHA=4gf{tWHAg-r zw?}<;=scPj)qAdix)kaU*J5+36_k7QO-N%!Z zv9KYge@`YUon_lEs4@?CFzPsytRR+tUJvHaR)t1mssh9Q__xOGOimP zhG>QwYbY3hx5?Gqk&JPDPk{11c|D;Qh{G{8r{^+N!)#imjLsYO5Sz8N>(*x&^JK2? zF}it9^H{xBSolM!lJ3{0&N#dF_OEG@qV6n&KMzMg-{Zh#uu(b8Ot+SeD_Dhf+4`R| zCa)MHw6%CKnYWC!C_1-xukiV5WfYeAB|F$_ zGRs_Fu?+g>nM2>c77J#_14yhp%kQ1m({jwSCYfd|oSW4{YI}{Ze(X2ThvxVKBeJ1K zq@+L3{EJ8L$9yj^tG!vs)#}%$;Bk|6?-}4u)SXxnGKcr~I!0&XRXi`k*6&x(4PF`& zcJ?zgFsl-tUx==eb{Sv3ZdkQGmX&q>)csySfdl;q^Dwd==Z{wQ=zI7cl@gI7#nS67 zu>~;tI2n`oD(rny^kog?M6i-E4?vH|@zGB9^n=_ioq8VPxb`n?(sbwy3-n3jW^LBg zYU*i&zl`>F1n*BbEZLsfb@MZ*g(6eq=?v;lol8MW*NmbwifeZ}DVF7fHgO}KZ|#&? zDQZ5@T8qWx2^3*lsaMC9pF{1Qm?rAP!g(1E(M0}Pg?LEg!LwJ!B_A~kD%AI4843#& zTy0w}0)*oJpY_;orCT38vb*$nFg`TP|Fy1hneI&u2S=#PVH9%()O56zc7)C-{+_^uhQXYfOX zP;V*aTG(AWLks>nDY@rL)oE0;aZy~fA_m(`%8Ilz&qya+ANarhaV%hF>|0KV3Jj<+ z{&sJC5qKdrg^q(fKdZQBmxehut%U#|2`fzakpmZ@68_dBYF724S=+I=8O8Wi%{QGo zv!>;1&#AX11l|?)8y{UiV}HI?S+3oroNeVo^hxv=OL24|M?U+Wyc&6yUP0tr2jrdg z8I?X=o~~f$uky!^(6a#YUxq&NDpOwJtSL3s(~nzJx!-Su*{XN+F0)f15i2d_U}H_D zXD^To$@E^AAWIdc22`Jk<4AnCq;dH*h5x;Pn9LRT5 z{vR{YVil))Spt~21fg%V6Fi0fBokY0AIEeFS9u?*YR~1pN*^J&P;~F7qP?BxzxVlY zdTG}J7!a=Eykx#ob=+90U`);ylH7$a%jqQ}Po^}%>$Yr<8Y&~74|#q&YxT;MtRtFG z#-pwc6&`0*@%S6%Jq36;#6 zALG13#}R!yMfL}&x(2t>K%4h~38m(TwZSfm39hgAUpyTgB@MwQ>@Ye>bK+lD_zo*s zYV~+>iHKA%e)L6(@XX0ZbBV~=jV|wVQrSGUXQbu-V^nBW@ z7qA-XB&|#RdW-C%mM8x9`aDOW(K|J{4U=nZwYR>}zJB$i@w>9n>yEGA9=TS=rTfbP z?&&_PCqpo`6fTZS@RbAf3~ur#>!t~f@Wm0mz>5Vw`lozG-_!7Z57yye5i3kqkjv23 zn76cwvi=@S|1Gm3V)#NH1y^u-pXEvfWzO$C3i91l0d%h{wmu2LZpw9|iAz_yC%U~O zV>KWZ(1}XH!YGq}un5BHy8D)T;9o}y(iZ%ji!XANTzd}BKlIVz_LQs~Op;*d3*5loGq$f#Kn)Z>Y$9^V5d7rSI74zoAxn3$Cyvy%{_T3b^Y&d z9PqC~?!6;*P?JZF=Dxk&1O7)wzU-zzim(Dp=#1Q%H)>RF(J>r8z@n)=g$ zkrlQtV*RZ`n+d+)jYfQ1@EZG`X?g`;Y@}}gbe*PvG|gJk&tKIKYzFoT#o3MMOeHQB zHQX4B5c`utVqrWi{67Om69fg7LzYug`Zo(Zu-@E)$^uLN{Z;qrsGrx)i1p?c-0%>y zyrTaC7e8^ z3%noRGPIZZVX?#IxKfnjRHw5g^@=nbHRZ*4^M>5eL?JiUGk`~0+a_2i$4rY|4DE4b zx@v>I$Cq?If9{3_xWjW|_U09ufSlf1-!rV|_heohMI>^pA;|UjW|Z+AWx>!En(zS( zz|yx_3*urC}Br{o=PV`{vBMFd!gl`d0q8R=9}Kn`gY2R>J`(( zUS&mQ`)-s?<#~VZ?}tDR%|^#fN2x1Nu^%(UHrG_q6-w+p*h@^G=3v=+ zN{XQ@a)hXh`7Cxu&|>)>J|z35TdEWh#xjnU?7GooW>!wjXKg~`jS-3P zs?@Z2I*7Qg+{oW(rdBRvuj2WBRSH+UC?i%M!dxywI;^tO7nGr&!rG{`V|d*LZh34R zc&^+^jX1+rR%x$oW@jbQI>tt-PSo{_>g1)`-4HBbo@|$%2tcN0y51pkso5t@fyX;?MNGN_2epJ~^FNC=+^|AbW-#JN0FA-;snn6BZ4L z7o(M)Hb8 zX;s*wioCmCOZJNta{$<-J(3Sm~f7~`KVFCJK0quq;9alc~ON&IW&;ioH{w}_{wG&l>Csx`k;K zN}eYETok`SJM(Cf_vG3wN}KM+Pd8-D`Fuq_kqPCYcr*x-e=`brTs5;v_yF@_*#=N| z@~fxMlB!Fm440Dy<;DH-@|NP4u(hSPYxh&LQ>No{*o{Shh{d+P96+V@)}Fwk?1;pT z`v{-Aj5Z{+i>~gZcP2Kz*J{%sXEa1_pZiPK>S>51r9w3lw)Hr2y0HaLGc(g}EKD2_ z2=JWhPZ=u>3pkVxMYFQ^W9Yr1HqfFWiA$dHx%;iGK%rBfc4c4RTfeEAipKjWYOY${ z*IJ9jtSEN`O0VlYjNx+MihTC#wDj7jE~j&jo&C#7$y`_s?vU5Q4 zia$61u21A#-+hiOoT9o(Q?C@`3$~LcUPtEnPj=KFv={WW0f=q=H?#Khy?#(kO(cDi z!u860Ix8Bvz7p%T!Pxs*E>-b#_dc_4j@_i7j8t#x&pl?vgGwPISm;H<^+|0GEIpP9 zM&Rq75al_)(|KMmo{dKkWU`yuFc%OO}VgE!OGh zb2N{uzZT%H5TaFdAd%JSDJg*(u<6oW;Vvi{hv$xed^>MeS0I!#sk%ud$dXzNy?BKL3Ex-?JW~qb?voT148gWr&eDleCHF1Edb~eCMseBcQ;(o zxt=ZEvS_!#*pWi_>G%tu7VEnCRVWJp)JEdHejKoEb@a`4)p~8(PR8X zQDC8_d%Rt&#G(i%b>vCnsuU|%&Hw>{Pv5=g`T)G{0Q*V)#B?SGX^OqG(t{luXGhISf$`(&Qil0Yz|`-%cl5nc`sp+)>co0x!m>v>W)r~Cw4BZF z87SY(eLYd3a8J-^KHE-C>Dq|Dp`=^9l`I1q?RHZ^ z?-Eith~{`xSdY`_HErG}z{oqf6DM-)I)Lf?w*JG)X)BK)&9bWzBmHxqW7KE=$23)l z!gAT^%T*6+bcsGk7WSFDH6hLF!#=%*57>XFr7~yatsgAlg-TK?d5d8EeEO;_>t*2W zy4l+gw^c@*i>gWv7^N6%*on2TE~R2}EbJc0U*8fp9hqx2zqrw-u_q?Mb7tYZ(7RH15vLf;N^pw- z@5=&w1t~S9>FMdH#6;Y($1v~-D^U?ISM6M|6t;Y$r%`au@c&%_{EuA%uRJ=aLaETu z@;3UJ^rTU>w2((S-%Yjjy|xSAjmzqH6jlFdnA8%)uO&sLoL+cP^-NXUuhlqF$9SEL zj4XX{d1`VJRi#6mt7fsrBc?Dg%uYqc@8{>&(*LDwTxVi58CnQi;R#y*8yPNXPG6@N3LZMry;Dkpg$pX)Xpe`N1 zUzs!8DN*r;mxbo4NuNeb^X$(?w=0?-4KQ5&@pBqYC?9XUInw@|_t$%#3tg%F5>&7;9Yy_`TNT1#cz27e3 z7D(_M`=#vzN?m-^fTeuX+LeR0`*E$GTP18CXq_^cFbd(lElJq?;;B=ky(|BAmn((W zD~C!Hm&+BsWi_G)6(ifDT4={Y(!_hqh(rg^$~+CO8GI|vYS=Th9&-P^FA-846zi|xS0U>L#Z4u1 zdupMX4_hn_uJ&G)Qnxg^Z(`Xk$uO3RzXQ;^<`hzybIO&CQC3psOiDZ^O>EA1g&C9(qRTCpmgEhF8Xv>p68;~Yz=t9Dd zT`N?qpq5hh?B_*auiMif)W1BXv0IFWlxXL#rJTfbDZ+b~h^X`Gp`XRBi>?hi5H=y;-Kgp`4cEwFC;LQ&-3_Ic|%i z-2{zTBo)2OGto81i;c05J!-Dtp6YQ`>-H_2t)zzt$Y0y9!SMmCuVsTx7MN;Qjv+4ASn#cm$u*Gb#DpWJz^<;b|=6@vvq&eTx~`@WrX zp77eLp2yaGc|Cfy@|k@oWbcdVO1!af#x4qzgMM1}cy^ZhjT#3bJwa>1Z%m%J#Dz}n zHJbByi;g1u`!1pR(e$e9Eauc#Tc>_YEAtMCDr*qDt78hyXCR21^B6N3lt(=>LqYU!x0MWj{vIB3{lngbMR z1<4|aIqVWvqLi{F-P}ZAu7hr=26V-&ttBTEox?tZ{iff-Zg-`A8vSwGT`(%z7Wa17 z(H#z+sx!vzc;D72y_sJoGWi-rHP#s>OYi^rDYxRfQ$t4nOeT^cARQEzh+|Vg+u2`@ z<723kLiYE@)>d5NW9RNQc~t4MdCUZHTr#!JOS77qj2YwZN-vEdl6p*A|A+|PG25Bf z&e=wLeU5ZuiN4L*rTdq~h$dF$8rQBY3H`BQg<=g`aLEu`Um(kQ0R;ieq#~OmBPL%& z{{T~1b;5iEwW4wAGZ$F?9E*}`Re$Tz=r1a0S(HfaT{!D$Dxhp3+Z zo53joS48TUhJiX7j{^rjFVP$%>aO&-7ZfU3k}i1Gd~Ar+nwyXAR_tXj_t%}&3;xx< zikgKSWaQ-6tbnkfh=fe>KTRPYDfkT=XOr@-G~DyEti#b*|GBGHdh1}DNLVL%e_c_% zF<9M=8WtS~e}C#nK>lER|l7H-)7N5Nr%)Ur@qx!w`K1vly{py)`zZ|r|IA0 ztR?M_rmxN$F*EFzlZ|*&5_H?ZK4#d66}rJ#a=3qHP5;GYP0trnV6YLX7;^#`ki$;&!kO})nLHw3{-lj zSkE4({HHEDfsJ$P@P8|cc5shOX@M1QHLT%hD!q1Bw2Ug~OGH-I(+lL} zXJ8;ujd{`eKsp?J{7_&P?wc!XF}}%?qKlov+sYwUVh(lzp8PW?Ay0NfMlU;koz}eQQ@b{wRBoUI zg(I+*40WM-X$3UX4D*rFxetG;f|nk~w@n|8@vX)1S5d+}dDC^%u;u2+NG-&F2}glE z&YFcrg*sJ_*=NMjd32T;!2lu`)8(=nj(EOIt!we)g@4zJx?UWZ6L@a*2g8_XDS6PU z>K^fGf~KU}8CQ3Awa|fhhvPJ4A*p7QD}D(6E|FTaoQ*!C9Oh zkEyruDZ=h}w+{_gi>KBP4`zxVKo3=902&&;jMI^ZJnhvj&78b@X=gZxEgKSPcL!UO z_d@6jmNzHj@8ae9uJw6t{k$akc)rfSd%`+0$g?KW}XH-40# zfgkq{1K-S*CJBpw3oy{&p;@x_Hmd+TQQD>)~ZZV`dYy%Uvxr=#t*N=yPeG7I=s?^3n~hp{|3G zb>IT2`sLlSUlIr?Q%}Wdh{`tIHxIK~P!Lz}9JyC)T23c1zOqZEV#r0)-*zm2D*Yxc z5_++44-X9fygmKfFo8zrP5rRoAMl212kvAZ?mSyUs_wSKqIy3lM5ZEDA=-no)Az38 zC;%09Dgoz+9~g8UVY$>+WkL_tSzoVnmXFDxZil0u=f)|QzSu+ug<}3?bl&62uXm8A zij?{;LS~s*(C~ZAWI98(TLqW%qzJocCtjkJ%?Fc1&0x*#VsqR<&0m=Y4;DrLKAmHN zz09DI%tFa*zcd;%5q2xhO(Qi z(!6erX0ZABQu!KL^nGlL{wBfYLBo-9{a%>vYiC#W3|b4zt&VUffUoj-T-MSmB^4lt za(ue*B0SWecT0S2dRo?K)_b(r&hA2Wse@5k2*z@NS2K8>63^h*VuLD&NigE54;h_AWVoEX>Sziw2t;8?o%G=u~rmjOx3*d|&pEo7(~h7dJTn zAwN`MPd1gk-iLZtXz6WjHGSvg)b!i4I@5Fp?*aR@y&)X8o8P|O!~_TX=I7@FG{ci5 z_Vf2|RnJYTbp1^UtsS?#MoXl1wjbzG^WkL5M&9+u6U!^C4#8l2bP7KJ=F042Vq!vB zTNh6MQX?{1R@`4O68JR!>RkB1RcJ%iC_A5tUp*5{No@PT4yCDUcV3R7)r8D;uABkj z*VGnQO67j~`Q?Q`24#`v=C~RQbq$R|or0H8mjAcnTqO(IJ5{<&t(u@^r9bTpjugwe z{pAt@cO?S3ftR1|4X5W`yu}dv#uanXLe`F5T`*ZQ>uXHRtB4N4^~s^c-xy2;IaT~s zpP`)Pm~yu(zAqC&=j(OS)SG8|FGo%6-J5Fo z$?Aa+Vs-0vHGQh*v%R6p!_BSYFQOp!z3-A$5|pWA)A$+R$vY3(Chm!EQvT-Qq?iF%2aK3f7dHg<&sdYpgaV9E9HqS?D%>@%Msiy`VYIomszz!Zm4 ziXd~T{sR9dC^G0`s^7?2q^)`!-j8BQ3s?=s*d{? zr|qAmN78ox>sK@d{0(B-|JSdQe>A; z&HwXB|M~BGgMZpd{(tb0d13G0bHWTG+>@idHjt@p1%pY^WWqP~t3SWJv-4&fOh@tq zO^swByQU0oQWbT3D7oBTpI`)iD~U&sUR5SwR?Z(WN~w*(cVNQ|2ar4q2LFV~`Sx#f zr2>l$cEzN|#3#>9kTf+s{d3aZ-A$=~S4z!vmWwlVq{@%Hw#Iq=^J|+=!7wtur0WWr z5cfzP=BEWPot@@D`G`8N8B8|#o+TnOMH8wJMZJ9aVyZca%1y4pfOit~p=Cf`2eSEr zVPWS(mvdIUjyGkwd&zGZxt^pldLQ?py`VpO`&U2V8GPavkYVNex;VAuD6%qELuK3+ zQI-(@`sPzI^pz{VMxV>TJbq4>41z*|&h_{`o0pYqZzTMAz5jUVeDe62ahp`-{^x%Z zqa5V;`1t#WhfRZnR3KV|bc%yi*_ANr>)7!;`ji@M=sf${+S<<5WDrGzG=G;}z+GRs zq*pJV+ccGuLivF7;^d!`qiNm^gFgBE{*Y!0)?2seCp>-=fes)&GYd;_XmE}nov71! zSQ{CL$dEr45)}>2SJQ^BksxCFrWXX{wp+9E(3Y;QVrOT!ztzEmg#xKk;-s5Tp?|9& z<+dlydfgsFx%C(aHwP7bOM;jyAF`kDk$1V{n@2`y;iIT{^rRFO!}iI3R}PGg(eJH| zHG@{_Ca926CE|c&oHfJg6I0Wv-gLGbkkdwMkt>i2%IlcZInB_xT@Ajf@9rO`+Y!RR) z3o6F_($dl@70TWXE*Cp2DCyKVg^QvusFPp1bZH+(GLzEMhGLz;djpz*(;WTdu;wrh zihXu=7UUBi-@S{Cybw&dPKODAnjfDKArI3`B5u%=dMn|&G2Rc0vQ~cFwlWxS(Ku9W zjD@QIbNDPB=UJRW04^bALR)=}(`pmwP){u{hr$fWsZgFzK8*$+Dg!Y&@BXJJjnLcM z8`O{}K!RNg-r~>x42c~Dn7Ry_%K%Zq?H}!~`YUCByjlaNs8FviWS~G>k~?1eC8
l7Y8fz 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 Pe2|w`k}AAw;P-z3i?lHD literal 127729 zcmeFZcT|(<_b=-A=g(nAEMuWaoe>oQ0j2ji(nOky3euwV8VD_P#&HxWA)_?u0sj38APfC%v`^^;;lQ`y)ql{`zKt#)JP-TFx8cpp|IbbN z;G;`Rt#&uB%hBWW*u9g!L)6i9walf()Y5`?mmhwW!Usv$^ znL)Q#_X8&cky;5lnsgpiU0gK~jwCS=FO6WUC6>8{o8!%Ak#O*+7xLShhed!lZn(%L zojZN{G33Z7x0{gGz)1{j$>R5M1>0klvQGh;HkOVToF@!A2ncuM8%>1m&404|JJ${+ zs{OkCWYKa0N}^98OjFj)J9ls4P4=u5U>+4{OVdB)_?(r6zFwYcjYpAk<8IX5+^kcFsp8k9gBGb8V;}V#IJ2RWiF*=;AHWrOAX`!}a z24sdw1Z0K5q9!z17l=QPb|v_3Oj#tZ-}E}!nbmkNCeAB0ttZR??Lk}n6yA+#9i;x} z-fOMaz*?`N3=Nm_9Hn%7g~}(hW4CV}%*aXZ6LvuZy=Jh3 z?`+cWrQtli;3wK6fu1+0U+}ZJEx|?C*J2CzX8ioNl<-LE86cnr1{b?MQ=D``NmCTW z0|tc~9j$%&CIu<#EkZ;u4b<9x)`U1ATOtetw+KgJ7Inm3=i1#G-*UF*@{pRauLvXQ zCRhhE)9jIv*eY?P&9Ywc&LHTFyCZC529tq<8y-hgjfEkXn)8~LpF2v)r}^T7UA4udp>decEGjAr#Q16KOfE{V)vY z+Q3?$`4{=5j`Ei;ROw&Ws|ra02_h_aXO{8vM0W2A~j>qvZ46A zeuj3SFm|JDWjyYju`Ufq&cT+X0GfR4SR;+?yRgf?P{VGFURVk3o=VU*$dw?r#arHZ z%VYQj7K-qO2+r>3!;t;?@pI%X`J&kyw|-PRe=@Czfx7X+I*o~pKeC0MIAdhz>1-+A z{F8b8H!YDn4`}wU;F%VMJqy{6Wg)K(4)=_Hy&0<O}&21(mW;gGdx3cV9JXyO9>(G#^6eXJ9 z%q~~q{=r#6dX5;M>G`IfYy)Z`| zZ_`aoSTBmM43=9NdNtvcSrVo{-Wj{0pQW;2xAz%)XkqBx6;%5R)b(u>@w7@5!(7#+ zyxiC!s^hbHuuHi@X37CkN9^F1?1@UL;)|Q1>vUyTNaTfpJiSOLy}u5R@4jE`Uam6- zm4ekD9M{rSEsEw1%T-+)$r2`twC_xS=dSbrL`}9Uw}8fE7ytF1GQQs&9VJKg4Vy_xUDUxn{PRHL~}sm zc|H6#I#c%(ot#Ig3Xsxltkjft(Lo5A2VQ9GfmwF?tpvaO{z^M(>-=NKpkJzd6~^(} zrI+hI?(LqHKacL>UT|?U>}^Rs|Jr~bIY0&*F+{BDUORf$d#h75N}>&W;*keu5Ytz= zV3nh)6wSf4es>a^+--6j z&1Jj0yE)zZ&vWtnRI;AP20uEQQse3Edtd7FQgED=k7Wep z0$4|<6_Nc^G^ZYZb|lX)0B7c~?uk+=o0T6DCY{UAX@HxaW|DmTyp!p*jmQn_XlP8I4VKDh4`q(T+B$&dzJ=6H`sbhJ0(Qv!n*?J8i7@ z!nsu=y*A~$Z;UjzP_;3p5s)Nx1bgcESUQN_Q+25|sI2-H|K1(W& z<2MwFj4J(-u;(m%Zl+qCvG+GRk%Zz8`}y-Mtpy%q-f3x{_qJ@1NKtwfa)g`@Ej8w8 zG}2m^v&GN{M(nYO^#iOA)5e<0(YjsY#}pbYuz$`@^jCULDtPF1&)%)W=-gr6ajExH zkxiJ+%6s{rt~*ZkXD&!V4ey>Z+H6x%fnh<&8RZ#wE-h@}x!&@ZixZ24Vlczk>#|(QZFs_uBitM_2)1Q&v9`9k+p>Fh@fdB zW@Hu_YeV690`ke$@+tF-(=nLQ;7+!ONjyJAQ~UTTFRKirM+Ubtk_1DRmX-{=))m)m zbYCA+9mmOab%{>AE1SnUypTqm^c;#v{3$rbATeGOHaR40ikwLraPB4~=*cn7k-A1Ix=fTkQ^g~!0xl?X5_<}*hh#>_vNlF<~IHsW6fOTo;I$1Dt@X?*p zcH)UVMgqIPf?)6iZmX{{CuOK5n3blhMjTLI4={SFq*gp(QAz(qFrWaa7ORr@p}BQF zcSnh%4LY#VP(qXnERNSEwTCGJo}1y+ygC>C>e7jV?sa+gaslkLMLo6w!GI5Maqlq2 z;oCC&zivsUxa>B2a8Eb3XQ|pyjYg{T=)R}|kmCC5dp5C!sp-W+%8jlXY<)qYKjN&l zi|22pD@AWl&SaL1_OvM%TvK+V13{9HBR7mQcRoFXFm`uWKLU{caw=}b(?QR7=A7OA z&Q}#G25Sx+i1J;Z$l8@*3*X9(qnZ)`z}c3UjNY+y@YT`r)d)FJmIhkaZQRyO z(!3u5xj)YYz>o8C`Mm2pr0X#wX&ST4yYB3yxB!Uqo-H371-Vc~6pkI^vxg4}IzoRN zLQ?CVzkFHL`;x}&nTVzYnGsgfhI^8!rH>fwkJB&;+>;EiYV$1*_tYsi(2)dQytV!g zaQavZ%K8|)z>%5)cPaN=FOC*$zLh*B`=~%2V#(~KA$gQ)#`M%ic6W5(nbRbav~AxI zK_=q?5)Aik^Yt9hB;(-Mo{?R`{ z5ZP@~@S^WPmBZ_E7KVshlrUsy!aRj%(^!0synOqM5`c*DmsF@LGG(a#_7YQccBYvvv+_FN{mKuwupYO2x}RXuKR zR_C1Fv}otdBeVVQ7Vu0z?V8jPo@2zJa~c;P-9W%I$szG?^)~ejV?p$t7zgEQf~vve z5yR7&F&6+AQM_h!XHCyeZ<0I2(DIJz&0$QJ1u`=XIY87GgtIm6tfV|M!em%gIVN7v z2~ILFaOqFVxj@jJTeAQF29;0{no$*dSiHoSrgkxW&y6%y$`Hr1`% zS$ixUL(tt3stCVKZ&U4IHcq2JsM^~!%6OvA-0fRz8ZzO)nxka;VwM>Kyih=AaYoiX zICIf{a~az=%*=LOA~FQE#>EDPGBk~dD0{p*!iv){JWqqn<#%S*B4g}3#g2hU-3D?2 z@dk; zA2@9}yWS8ir`{59)n+LFN2#31x%OZ&vM(_6)AmFfq_OALyUhGgVY&koy_m`(d4xmW z`fTT~_d94WdBb;51@a?qb5CX?isJU|d+z3tjeay6o-|x&G!trNrJt)cgPa1~PW`h{ z0Qsm%I*D1HkXfo|b0zKy`*{l~+0*JAh|;{;e67k65`@5&J?$FcNQ0So!j7mAMq@mi z!jREtf*;YLgV;-4S9QO&oC zuJP8d(@!p!=+c;nD!n1KTP?%VW&Zww7xM1~L&!d@1cov(iuxtS`9g-VU9f7Pbv>vB zNYeytNf>;7S3A_YG5~TRJeZVvJA5AEj57u@^?H9e!HslV!&F8X3*$JIMmvfM;tF36&8j256P)$-F$T8O}Gw9(_W8H5oKHcgD26OmCB ze^}hODhvI$@pa}E`0FT?i&4Uwgiye6+CpK{>{TIoZwNpdq##%kMO)_bcXJULcKAZC z5puk`6sS3I0#UAKTQbr+GUuYC9IXh%6cTOYccTKt+`>7nJ=!od1+A-KflD;h7~zgZ z#Xz)HT#O$b{k5jN+F06NHd;Gztzga-&nv2{7}vnKR}zBNoPDmK3TC6AC|>ypbqnSR z1(@qT#~L-I4N~Fjbp%;y^Sef35QlT67cMvnoa(hMbl2YuckFqOzlJm>*P{$Uw%UUz zg-oSWXNy%9v9{1cy&jl>4=*36ZCsD5j2t1x`)5_ZATa!tkRw;7@BW6G&AZOb5Z>(( z*q*mjbhE6WK@#Uz`>`HY_ffk~#&K;+x#-N|ch@-Kq~|XQ3>iStL*=UC0rwR-9R{OL zEWWqL652YOhE`8jYOC=d3fHipnn^;i3F%&SchLQzIkuW`fcXGO=WhYJI-0~? zd^xTtp^}9L@A8n=i2@+tI}M1_WKX0$+OfVoz5WJYARks!iY_tS9t{^f&(@V6BKDjo z%xyz_=k{Nzm*Gc_PN{c`>IhuYvrbm_9dtM)u@xvqW4>Q*tlr-5<^pkEc(5PQXKEcj zehw^fcO2N#=o{B?Y-#WwB<}7c3%mmdz{v}hh+;4eGWO%>0ab2OTQEiBg?TVnqp@!F zAAymzK_xE_75^Cq`vEcDFN>ePYZM&m*wUI_FxYAXni^>Lgy!bb*ln0;u7 zc(BdwE^1br*)Ff9{7afi_BRpmracL{&^Dh@HV(T7C`() z&c|% zc#ZK>+w?c}<9{C_Uc*td5Y%^?=V9SOjE2xv#gU-)z5zDWf4ICvMKmY99u~~p=_)eU zbW$C4Gew4Cvbpr#96U?LC#lz9L1<$wkfamCMW2uEB~lBo349xm#Js)*Nor^PA#a(g=P{qfI z>#;`T-3rB+2;;;z&`6_}&|t6bF$oZNWK&WqMG_TbOfuMFlvV#e(VsK<*z>btg#tt( zI8j>-9HVU@m6oIbMtdR%NDJx-DUzo$9yBMg&0N?Upg@K3^?**OzaCOOmy{~M5u~bA zc#aHslFZB$-2Mh^L&!p#aCx#@HgC(AJuw2KVr_L@KS-&}s+`wXybHN8G_m;HYj%C?PXKb7 zJj<&!M{2006_1wJa4XP!TnzY4r}4}Ta)F}>YHC+?SbM9N{WV<}C~LdY=;3$3oL6r(@_?_KGl@h25sirplp~h9-;M4Gyds7@3S0P^NNXYHH_@t`}8kPcei}& zG9hS%@nZG5XA?j`*)qRS@29*o{l~&#eB-5p5|U1mT#nD_OyP76+{JTb&88(7my_O9 z7>$|t%-h|))m^e~3ek%4zwf*tsceME1Z5nhr{U`=CO@d|28|^+$y#d|dN_DI$d5D0 z?jo`LV!Cu3UuOWh_C2nrC$`mCx`@FrpM5@%P^mGXU%a88Q*zwkx23?J?uG3|6IF?^ zQ7sufpv>!?Thl^NP45pDmauyFDkBt)5@*8ky@I9HF`&9t+*L(=&Isd_K0^J0)LU=( zT!aqG6?s>71&W3SwrC^!|EPF$x>1F5zwVO5t)J^N%txdxL_4dk@4Oc3*+NN{@)+4{ zRR99_?R)tc!26HkBEp!KTA2=g8T$m9JVlftROtR70A0%gmJz%=yz^`(iM#ECt&xQC-rTYjC;+AFe{E7VH6 zcv=lTeik#4Xcth>L50{ z7ntNDsi77KidcNtlMR&65X7NrFUjAt{;UpqZR5nCfoLhIQb%mT<-2DvQJ2d&-`Q`t#(~$%#dfjiykCU{mYGaH&brQ^7y9R|h+6oJ+^4 z)?&B=nayExkc4=J#Hj6RzmU5IZR#U=Q-TpHG*Qk7INAZO-@Sk+!HQmnJd65In~xi< z+tZ5)tPoV(`Al+h#ZY;*$j$j7bFH|?JjSbjmS z&Jl453HVF%2WNXdAp(ot$qR+aC7W&OBzN)~J#mS;5H?k@ivRrEi9IJ72rI_+PI7!o z393~lIS>=MNfUt^VQ1SyW;mTV@sVrKZssIPAWin@l8icb`yCH1mjoG5#v(uIhNLDm z6sDKBwI4$QFS*8fJ3wBBxh1s7qi%#@Sjb64P8}Uv=j+c~XODBjhKiDCDSm2MU3v8N zNtNznWY%!W^3Fo^S~hthgRz6so9foW6w~nQ>woft1kQOw}jc97h%y` zhONwfNt^U?Rq#C>j(EL`%YD@BMr&{2PFXEqt)jk^dpyc+BP8WSxIpG>XTiQ_0Eqd&_CWDS@b;*L!e_K9mw@6lMNx$i#dL%E zT0++*n?2RuzG3jU=dwJqxTC|Va9UoGG~|}X*;TPO3-7M23!E*%Kv?kY#KbcZZVBN* zNi;{4XFSVBCP>}21QxTg8{fpQrNp$a-V6#F>Rlk^QmR<+;PqZA7h6%<{(i6dX5YSr z6EwB!rQ!J5n?{dV!-K?iaIl(^-3e9Z6Ba!UYg%5hpu6Vn?~Z>mrQL;*brI^O)hoJS z^zxkzD4$2GoF=yuR#a!OI~m)F13yyB$|Bioey{DPggZHl{1|)!$xuo=(W|nXc(@<_p9hG>kqp94#jcW(rslE z?(Z_P?O2DtKDh1%JUFiC87|02r|HVtx4Zo_BpNfO+CEQ~Pm(4j-U zfB${iwKMvdr0>0Zzo@x&oRoL%meDnl%3q&ktkxl@gV{CZ4Mda)=py(q@NFIoBkx%6 z3ZHY4ALRye`YlbN+%;Nz#L}}#H5L4c=wU0w^)K$iCc@%S-y?-^|{ zyFGyywL5n->BnPAC1jz116`h|la!H3fBW{WWcTJkLJ~1?cYv|ISYEpKDZ*suJd=RZ zoUAhUBGGY0hHSj0eBbBK_Xxl@wzo5R;FE{RJ7<0nAtQhZ+9Q|m>jB~1YHxs{D}kV0JHN- zu+qneh@D~*>h7s%7z?)vi#%P88!6BYFJEPj1LA@sC=ZXCTpVNKM(PZ+4wafDhBLz_YPGtFB zTis_*U}w_zk{CnQ?!4qEYonZ_hs%Yz>^GP!TNhCQvKfcdz> z29`6d4KVm4t^Vp}_@3Sg<}90cW^OZ6Z|QP?dMR)VrKL`5n7sy${P*^5Z}sP4=C9>} zH+IShVphIiGn&830kM}7#Htgs(5IKu!W_>O0q%U?zRMXvQ1oY*Z)Q7X^6ff>jCe@+0l6~-f!PPKB(T#G`7?#V1OQY3Ik?AvKfu0(ki zXR4id2s^!>_;kcaaZx`ON|1V%LliUa5~0wVA3~A&BImu!2?>7}3tzTm|aepSD4*=d2Ui^D!86-To>VXI-^D+f$G zob9*a73a|d`3x03G5vBJh=o?E~!hAg^)992hpK8uNR*auC zgigPGD+*;!J($WSidm}N;-5eJ>mV`u_hKP;%!gB|7b&=M=!ko|DBT{5mx!{Antb}a zeQ;?d#OzQ>nyK;hA}Qg#UEwl9R6^ZCh;o2>vFhJ5jm1tZ<3*ufjykaj+u9N8Zralk zCfwmf?E0Sx$_DD{TL|@3;E)u3v?yZ_i94fz-5D*)@Kj&PV6N2bT`c`OA9I6=vt^Rn z^W&I@j`VXC&KSb?*!Oi(+>s(# zVl%O%!SQ6Citt;{4{P_t`AYs-9Zfxen3^?*2cwO}L;GbKyx>cVF- z;3xVKffUQieKev?-}%R)tM>S33+G`9a?j~PxI?4vtgL#me9}9jWcQ`Q zi`PO8cyYQo`7aqO^)K;lNNPX)rH=0cjoF(ZmEpi^#v9-Fo8K7a_LhBtxW>o8AW1hh zes@F}a!|3gx=lp&{y*P#oXumd$6SyAGgDRs<52cT!F#*sXJ3plvcOT3L)p6rth{MV zMw+6Bus&!*#z5Nf@Jx}`*Ouq^HvkyB&cs3L<(5@ti7-yQ%ok>c#OTrfM$%Z5|MtcM zLhg*W1$Vfe&=F@?UmSNS$`^)hymseTjtmW=cC>e0xV1D@GSW}-%(h!Lg7drLOpZk6 zDg_Kx<^v@45`K{;s^ctB(%c>sX`UkULuYyzj2Rw6gP`c)a|_|@E1Y`0u_RpzB&oAq zMMxee*>SyVZZnT?Ffv_4B0g?D{w4L3Ci36ZH7A^EwjpjS62~EwE|Ri&l%4*RE^~$C zFole$vl)7W33CMzsy!)Wgy5KiSTW14CFkBW-nIj!R7*b zZZ&F7k)^9VLUg3n3kz^>Is>xNNa`1EZn^GkQ7E6ZRI=V1rmNOJgjQDVTre3VqDF^@ zhy%r=+{lteco1tU^6v(@WjG-B%&e;0+sG*KnnmTn4u#MEN6tJXa7KRDtD&4nkFps{3D~bL! zwh2w8i7rHS%HLp$uYEQWhJYD}ajbiWDGx@kKh+r+(iv}3EuP;mAn6_JnhuhA9e_fE z>~fW0iYM*SvD6PKFaN{;2f8cDEjH8|Q_C?;I_G@1HJ~ln%<0 zu50Hl-h-U<936UU#P!s!*UvAg*NF4$d1UG>UPh1|>P!;Qt1RTC{bA=TSDZtR_Ai+l zKV_JlJfU{Xi0Gf!JYJL&b1`GftDL^ryGb_YT=8lap{)EFRnrnJ)fsJK*YyU#OJga1 zitTg%Jm0i1*qTihp>CI3D1`a-{75Kdn$m}CP$sZ(4RTkkj{D+(1&34)eY;9jD&MP0 z{|;C$;AWW#@4p$S$dMIz&?x@A+!?L-oy%Tv?oT9Q!_PW~y}khNI#ww6d`{#Kc@{iktVipuQ3Vw`4?3gyL)D# zSr-P&AEkF;)iR_X#A(;N>q&J@zpT#0GIb?r5Hqtw900$W@0p30a24~~T8`fv1t;;0 zu57SQ0i1~K7jxo14W3?Mo(DxY5I+8;>)}DqYFX)91SOo0@ejeXwLOQy-9f>XiOJ` zD^mJMZcl+q*fWD7w1j&`aS&|9B;qs<+%EZ0f=6A!?{8F@mF1l%_z0Y?e@>Yyh%Nyv ziD_Ep36S_f-TjFmyox$iO2ij61tzG#=q8$KFoi*rl8_R^lf)E-83my6YeNvUaVDop z6ELcLfd5`b8c-wxoP@#8Rl|5!o$mpRR6<~YjvJ$&S-c@;tgCPJ*6*)6VO{9@n7Z?Mzzqzfqo9aEQEgcrL3zC8+CPmH5}z=uP% z8w2xj0&!;8uXeKfKX)0U%M1aFHO{O9CFKfEuqgs!V~t@_dY5|dkgv#)jk+P=YNy0_ zCsHSBs*d*713MqNyT%E{p<$c7r2UqZkB=e_>)vAG5+DGF#&KAXJk~dMl>YWaoF^xZ zR_UJ6o*?L3oG#f&J~U8plKA;2*949#SbfmHdBY&z zGbF;e)Fx-mJ0wM{krDlf+a+W^~hc^aI zH~9qxJ>MCcdTiM0Jq3;XOaxHUO@v`=k!5 zX&TX0;p+OVkn>XyzVbGt+GHcN58q(k(fuc1CI8OXLfA^6s?eO3x*11#pZ6ezHu9bp zy}tc+YQi}&^;3Uvrlb0Pk;!bn25h=KuB>66lCN+nbS*T<R9HG^bKqxJ-hm8PJ`qpp2$iqs6_j_4(Zy0q9e@gtMve@8i2 zouWas|0N5x5kxuC$d1n*MpwALs&bkLctqjJ?}}a z*JQ}Bu90#FQY%EX28qg*cSynjnjSso`?^F?*BSV$nwpw4F=BT5!l|LBme0EX3{Edf z0rwo~dmCvrG>I)w$ksOTjXH-o?VQv3n-w7Zv#0cAmcOW+zgu&ci5t{O_IQ!>%VVDi z{BU=)7LwoKv{*ivDoKVztYj>yMG(YZ+ZG48V(edP?Ie9*<2hEpV zgTe>XWl}7UBfHcq9qlVXgT!hozrg|#Ui@$A#FEz;TttHury{`ADD2H}Zo5JP+ixtl zs%FcE>KyMq(ReyWc0cd`3*+&8+qOzwH1Nx}bsoNZ z=or?w%C9Ib_|CIZ1;jaVb6^r-=UxgmK;f&i`3-k6{yXaa^TW7#|3k}n%usUk^KJcq z(w04m-Pckxhww;~rH<&$#`@tb1a?xlD+ob8X!}@;W%UDpuWmqXiJX%5w}ih`0%7p&n1)9yGc$(#IDyTZTMt~w(? zcxNOoMn>X08isRAO|hN{H)C!(%BxJU(z?2EeC| z_Pw2$=evN}kG9vaGez;WaKllX5OZw+O*b{mC&_;v>SNdcIr*unUhi)7uXnok#A5gC zX{n^%xP%DID(^Z(q=?Atu1~kjP%b7U;kj>`i2Ys@k!xAJ(=GM&YIhjY=i@L> z1rGss z&u`qhRSuvXNHc*i=KCrnLCdCH*fbSW`6{+L3~wMYoBrg<(+7G@!EUwA6OwSa{^7#| z3Y)1zuWl0+eT4>?b-*&$*aBVdSEm*a{~i*?-w)LP`RttI#|Zn#YV?pI;NMiv@vp$b z4mZAD4(-(UUtaTBv3b7JTE>^oEq%EBj6=nDFV(%W095x8VQ5+XG-d5+^vnAczGFHj zTsv(7HRWSMs~@`Cc0IsV!jSjFaSO=_yDW5OFOU53n}fLcJt*2Kn*KD|UjzIA$^Oo* zC+UX@(;qJTuJwhOwlG)H1WGQ&nvJTZSM#^DtrR@w-zyC8*51$Mt0gJJ!(cjL>J69& zdhHO(t53bv_BD6*R0li8S=181{hh>SkCdc8kV=B8z!cLsm}}o~$>n>^DS|vM!-RlW zR=%Xx1A)eB^Z^B;#SS%e^0h{Jab;Gm=a3)s*T~UU&JB8WCBxikGjMTrCj`U3xJ!ey^ z>%;Yp;RxWzFTHSL@{-hKRY*tw9sxPph;d^;PdLhCLRRjod$-hAD2TTpr6(ZjpFG}K z5=cA9tF(Puh=gUMZ`=JdY@q%dA{Cr^^01E9y&9Z8u}Orsvurx`L-ik9gi*aLEFM$B zgn4?2Uf`fOue;OLvbn+5`3J*)*{Z!tn!ss}&#n*goKGNUKSVYiq|@Fa!eGT-^CMGv ztNDJ>^H*KfU?p*?&UBB0@%QiFUq7@_l0r@9m^lV|PX7TT&NapH{;mOy zplThK_39ir_+PyM-zo^Xd-#&%k6yv+5x~zTTQevDdUzG+IL;T5w<^BYc0WPJ zewI+nkp%4c=08Ic%tpH;zqA-)P-Cn2ox*>0>gZO@aJE& zK>tSTrbR}tg7;wlQc`fN(S#!W%iRfCs>tS{6_@O7Z$?wmIJXi-c>m(@)$QWD$IA#s z)N~odCfsUtuHUIK;C5~PaFej4D-Myd-pw)uK{M^p#*B??8`oOmu25S7#R_KJR}5}m z*CqAnhdp$ix+kXFe|NU(RsMvN(zHjU-Iu8h^qXfop<{Y)nlt9ij?C43PCMh2;(aDV z;bYyIGuc<)=k)&i+h3o>-iey63Wy+|eTN4AadDr>`scUnu_fyU!B_v=1toj8pP)Pk-qo$60Z9Y z9;IJoLT)(h$2(JTlRcG8?V_~OEoWFy6n3gE#DL_&Q#!4?@#EjOnO?Za{;O?r?~zOC z=m8yFS6=HG>H388sXvi?s3!MK@rhU=`l%oteOOtA4!&c8JL&bcrlUbs^ZFACOUqxW z;a+Xe=^p9KAqLp|tX2XXNeEqJzuxSli`3rULa3|{&>{o?!bbWPx=O&N6lXkr)j*SaAs$R#xu?(3SyXwoh@hTydZ#h2r5xtl`j57|*yAw63I84U{mQmSEF6~yqccO6Q=Tq4I}8TcH$G2`=Uuj$;O0lA zjVs_k-Q=&Gsm{8%Nfd~L3Hm1leN*89xmsXr#Ugtw<)$jTidpZFWq zxMo*+s%NrqAaaP9w^Hjd)|#D)I(uig-Lh$ddQ^yy}!?K zUXyvnLK3EX-CwICfS5Nkc7m$SBo|9Bx$^y;MP>1ZT2h&PH{q7ks{MqI(T6xN^S}|y z$t?N%QKDS$l1vw)hA@Z51uty@g8T4;kRRNk1xKfq z<6CEh{qt-1G5m@B?>sN*8%tEY9>sf9OFB>$E`1=j?FcPeH~P)m+T5s2XMJHnPBtPO z?fachA_WT*?Fy|m3(EvC&sXIcRemE9Wfc|L&Mq$H6&2Sfm!sM?>}uCP);L`Ha0kn1 zYx|g}{JsDZXynj;!hKEpv0-d}0{lxQqPMiQw+q$H6t^ru0{b!=5%N8Con~tub z@4D0hx;kt4z4C18PLrFy$d)r6_RS>uK`z8PFUz=pxwR;hS{=)Lq?%zySGJ#ZY5;aG z0a;O?!PM!t<@083s9mkexwtwR80)i+M3qN7y7hrjIuo(=K)ZM%QpA_wW=tnbdDEx_ zz(|1e&lkh(qNnZ?>M&zh>90Mna-17%@8&;wfcwOfB)?xAn=q6bmyRxxr~>lbOqhX$ zfyi>=$Yo+76v+kAyJa!VOO(=t(j5d_k9 zU05fwo+82ve7=(_Y`?0V1-Q=e`s@!L{M^?r=}V0d79r%}A`I7$v6417LfVhk6H`c# z#ouHx#AeET{Z23Fzyc3anK==bfJDb`ZIGi3A1zLgRVhI}1gnXA#S{n1RStsHF2mt=v;__m3%Q^mPv08)9t?g^$uLiHbZMCne>#LTiyOUX6SUerHMU`v ze&nzj*xoUsB^#X7@RvGyF2A8u4eS!<8^PJaeqMF58PWC&RkH1yx}LNV6=~)Y`0Lsy ztf5);AUFP`vtgNUbik1O$jsENYdWer zMN(Go35kjG3kgh{$Qi_N<4q2#s^VuRj=32p!1?6oS-^HF(!qS)TtIs0?~&3mAim#C zDd7~XBI0|Y{@2I4$w>Y}%x6_1C^bC2#qeqWkf^PX^Ti(3+IXv9OkXejb4d@J8y*DQRx~1G8X3fjB z{moz7oR0vO{-p)D&fe*82}-u(k^ar)$;|E$yP0Edoza&vLoByM^!KGnWC}tnWbwdzo<2V3#3j_v3XJ!f8P1FVxDXcYqjRm|<``$x z%CKzj`vVTXZM$R!YF!k%y*k$(#c&>zZ_3&M+Iz&4kIH9+(~$yvlA?W43JQgK3G(u{ zjM!S4){Fdd%hjp<`8H?#U+cZPw8A|vXCMP~%2@4~7$|)zGLF;97{=)^$jl|pb?C~} zB}8W~^TqOH1Gdok|1}tgW7&8YpFcKrd?Lx#jA$g2kEEK!8l69+cwc z>f}eti(~FS($g@MUSD6gN;>%RRur4k_dG8zMN~pOeD0tAJgY>1Rrw@>GUy%3twf$0KJ3w=c(gL0C85O02 z8y;0$%c`g2)O%M}@W2c3b^0jpABTZ?z?i)`)2Ublc4Z}~GnQRe#NKuD@2}7ajQ;wMuRa_Y{eJS|fBPF-(7j23>z4yxW5&Iq(!Kwh^8XZBzM$MQ z(q4NIP4D9L784)6rvpxtUjByH3gvXMQjfxIdaYA1h`n9kw{IFyB}#>*d^#FNJDux- zt&gKTusnKBAo$i%>Gc#Up~1LkB=}pp{Q9X7(Ku!bI>&-U#4zMuo(&Z0P6u%4g`#4?Sce z5OPmK5~D-7oN!e8@`C}ryzOtT(fj_A1x)Exo+Vih9fo>O150y2P%Ru-PwE{kH+k0h zsErzisL5(L^mm+Gy02QNl%{>B%GP|?(;-G`N&LoQe+aKygj#>aB#OvaVed+XaE6mv zDOb9GhIJ)r;K0#pCL8@dJND9DFIRIU6Js=!7Cz~5KR#?!#0<{P!}^MKyH%O;#p!v$ ztK^@*it4>MfGJ~Uo#BpZVW@Zle{Mew90&Y|*Acc&!Crp}wufWw#Rn0j1o{c!iNG`@ zJzh-$<;F^_(utlORfqSX;ykuL286)QJtp5gb&D0N=iYJg)X|mt@RuWiWY8)m8$CV( zn@t|FjmX+9d+^Ol{QwW-^8pcd@Rg*vqHqB_0 z#c3j2S(dmsOI*-mTS<&C(6OJWP}4=sqgfuKGj}f2j&=KbEYKdZ$DUPG{e`1Z4g(1T zcQf~B|8R9S#aAIWRASKi=Z{vWVe6qeGE%cH-c9n4+~)j(Vq6}Cde$mqK?*@ zFz?84v!hLEtajeJf@tS}uhaf+tHHdoVAIb>1H0FyLqhJp9|t1l`>y=J+c`gs^vqJ( z72vq7w`=A1V8V#_@cl?kc|Y;~KcVk~5uhi9>ivjGzClamdlp@E^%D)w>M-krM-8!_=h(uWuj{#-BMJL8 zT!-BQ+`qyLBsNpxIEq|QXh`)=&aFw1j|?z`^q zd7kr}^ZfOk^ZWh!qhqE|*Y)1tulM_Ue=cF@*H>)EShj}co}>nkB4ZGX!=0RnsZON2 zQhX?ui#H-(wDOX)uddf}`PLgQPC0!V{r!LXpTklFUw z6(v$m2}M>=#+SrZB;!MIH1BV#4hP5l;D+@hQPNyxj{orfeF{+e=Ij`FEi|fSa-6`( zD?%GAWUMEcNxBABtOV*CI{VCpu8aqoO}L`Rs2`duH@lWincGyMNFLlW z08GDf&ZPz*P4}}H($$BhZHpm3(2GnR(3S2<^`$912e0>L?`7IT&C1J3zOAbY8}E^Z z2S&}X8{a2hS~$R)y1Jp$u3NRspL+4gtp2~+amA~0m9k#(QsobEfD9@Pw;)XE?&#U!%?7E z+Bg1*vDQ4$ccE;@*dEG{97|xtvjqBrm_=aV%~ccAdUT36+1Ke2bE-3QO%<8hKdtwmKbKC(K$ zzn+WWXI$?5z-leB?^m)OiP){;=nMa!4E_HNngkw|ci+~bW2e?u9XgV7n>q26W|I0MemF4X;9vHN%IgcStmit zY?R=q`?yjU0s0jEFZ{Wh04I=@yF0K94D92?6&5;5w(Up_2kX{@vFB*&x<+)*4=|s7 znt_4AWvn*%vK#S9vXZ_Q8DsN~1VWA!9X(!u#n>=5X4Qoc1y9H1TU2nuU@$s(&OTnA zRX9EVW3;wne5wo`bt;Nvn_yoFJF>n7rvQ%enu<$LU(nwGAko@ zi2et~5cY5N^qRtk`j|EJ6@B_t6S2gndAmCaK+>+Cg*W8kwl+3a_wVz~GMYwbX2a>F zgZILn?slyHhno#eZ-n1azX)mCdxL>)N!qOy6hkn6>*&QufD0ymyiX{7GOFB#hiOE| zXc!k*gbS!gT%7DgH|QpZ0PP7<__U*A?x;udgiEiP(yklQ(RXWWSiItE!G|TcKe4LY zByC+cyt)cRz+~HD9%Qw0s|)V{7JDSDn;KSV+u=w;`2Zz=QS&RajK&T^hd{t`RTvDS7?tl+s$P{Xl(=!jviWaNBw9K_Sw zh0ZI`HgU~nU%DNPHy}6lRMxU!F6%R$zgAjmj1q7mkgMZT(R5?XH7=l+oPZJA_T*sH zxG>A_m7;!H@2at~<2BeQAI!TqL^v)wFr_3wxxjzb-o6e9Sh2CSwZ;?`LtdSimv_L% z3O>Y;NTj!la`8mJA6H>?4#UvVf~Vj>GdA_+n$d}GT-d+W?KYKS1)EC6G;d2w6SSgx zl7VO?fcYO92V&ZNFu?`Laq0m!@G(eOpdBcrd4c|5D}6l~VZduBP;E6>A)5Z6jSblR z(-qKIHKi+wzQXQ<()9J(no1ddTJ3hJwW1%;A57S#=qA{Zj<5p23WB>2w$dqr0ccS2 zzb5IOjV^E(*E55w0NvU*f=*?gwD*AqEAOv-vcj5!F6QCt!}8od!!Yqwi$?^B4=}8G z*ckEFx;s+cL7Q(CWj4V88c>}lD_&$s8QPEBa4Z9zWrs**CEh$mYpM8kw18$#3^su) z>YEGP{`??AAn3xH(@vWvhg3xGesdepd+%a@AHFFw0XXc@;5iTWqT+7k?mQs?aq<1!al2d%b- zDPO1Gcdy)LalYa=?j)s#Htkn}F>p(rk6N#mKS`0$hR*b|j32I)jn2%9mWK&+$q?F) z!42B`eBC1R{qk=zmPk}OF4cAwI8BL**F906>~M>y-8TMKjQ20fU3FNz?*CmYnpy0p zbpJng^k||K?aDWFN1@Iv9GR?1tu`M*Mix z*3AY&#g6k@*{hEF6dGh*S;39wR=)97`6Jip6KYXXBdd8+BwOcRXdo0mawEg%SoM>?m-2=pP63_uUfI{S_%;igduYR+Oa_~ z;pi4yCrQ^lid69+SDadg11aJ2YNx6DK4-Fca_IZXuO65CD!ubJHbbSpDG-jURUpMR z!&?&2X3uT&|MAPtWEc3S*t9$CTbJhBr#feH%z}`|`nKGRqI)C1nQXSY>RWz0)?34SS6Fl}O)D#c?z!2~;({%W zWYpW!T)`{pwt25JlVAj+_*!5rV=l7sp%J5l!b=YB;c3IwMyqi}Sz$JKW1T(lf4 z{8wlQ%B;u5VN5O7Y+Xdv4tl3&6bl_8tvVbiao?=J6`uAum2)8o)LPs~%;qgS1#i=} z$$nYU2z5(`_nY0yNVobY8o~X;!rM#YL?+gvobAFl^D!JekYV!r8+S}c`+d!gNo+;2O&W@6mIn?COy#KD z@P<2GmUAj2lzU;#=Zl@$KQyFQq7_Y!kQyf$I{SXI3+Q*}MxZw;DV*a@+_nyO<&eQ6 z#rWwg{5(fF#iccC1@lOvNM-uTq_^K!j`8c1PTWr(M+s1|yGB8Z)YLofh4mAStZ?&A zcy^6*%?UmZn#rht!lX)JJ+7|HEsRlIQ3A&2om22qd%SbV#GNm>!`PgaJ>B}__H&o; zexAg+$ha(qSz%%8FNG2&V(gKVq04cP?CiozHiz$Epk>=7YZ9G(!#sI`%`{veZ!e@9 zz3Q#X-5F)+g{Qu8Y;rji8{* zJ8cP`6pHl9PZn)wgv42;&D-UK_uW$Zq%}qy&B_hxEy+Wgj33|FT8va&^1tH0{nfZd zcf(-*IUKyNqC|Err(*VgoyM?_=kX?o7NnM9$W*#pl54G}$HsZdHy3{TobjKV@8`dn z9J=MVoaKr0J80D*ZxNEV-4l43$@J%j=cYcSA(gIvzk}mZKP4)@0taMb@sntQ^B_Hr z)i&0yZ%5AAH70<|r&kEgS8!eI$P}kH+O{s*>$ApD=_8tod|ncqs*oYfa$loPZ%wwoWQq4Y(4*j8pE$=Ubst!}`>!vAE&kW@&Yt z0wI5U5ZPTLn^Gv&U+dUevMyKAJ5G2x>>ulbY%g>tZ7bnVX2_a*vRglyJ*Bd0?y}Z$ zqCf$y@gC04&u0Dk!*+Rx`ukfO2;^p6t;81hXD{61&Yp7*ufUuONWTNaR~c{ww%R!; zZ{&Ur&0!tOFlvTTJWxN~{9P7;W%M6aQ&Q^miWK304BOE zX6{3a6e-ktyu{6hTehU{^h^vHp;I~{Ah<<-3mWad4X8ZR=FqHchZ;$CB=l zU`a}F@*R>o$QeI7wx**GjLz=(I-#j#UJItWH5a?#RLA1k6 zFEM145Er}VM=FD7I9u)<&EI*P=Y7%Dc0*rJcSGHwcZ-+%x)^Wg>NJ0U8TqON#H0MiqVH41YxBqZ~cQQBwCY{Rgd%O7Jy8~TR7E;GN1o^zgc z4+4`D096M+EU4F+^j=*+PLH+iy6xKtMUYqK5hQH0E;GbDle+M!S-?xc>OCv;D;%-l zzm#y6(E>>}^?snu^M~?1q==;P!%S^$c<7nku4~QD0`gHObVAExe@a zj*@w(HoS)|9ZtG`S%z@O;&dpXdB=3-RHR{K>#>UeYHVXj!Pf}}{B>_TZqaW_EfbEF zs5d)m{Ia$W(-b69r!jdjY4AWczt!GxCos7XpC7nmT*+pEA>d|)`W0TtZc@GvbQQWA zRNz@+d4Gtqie7h^|Gv7l=M5zfN#-s#HA@bm_L*$${k)Mol>b8`- zF&QOBe8p_8cJoaRrNbBEw999oO{Q%xod5D_b-y&Lan`t*Y7# z-D~TgN#L0?^ExtPrerdNPKV#ST>qipFI`77As^Gv=e=zWiGxrH@~oC7AGgD^LVGOp z{Zrl>kH3ePfY44vHcD&TJa&{LCvq zQNaTdS2XXH4>8p3EtbiGVe_1%rn2j;-9AFfOpH?rUmRzTcOOXe3T25^moz+vVyTE# zKUU0WNJ-#?iyK!!QfeHMqqw}&Qfi{-7LT{%HULUMdJ(bN009ZMRgLt2UDJ#5(#qIrr-8ZR|B!l)8vo zZyZ)$zoDX{qvHIY{1t8tEo=bM?fANitq-Z#*}0-3DUIJNeCe96<(aJWwuD6)TC2=I z)k29cHasZE>ZrT8qMw2KQTANg4-@u}-BMp-$DMlXT>3{;bab%x7qX}NJSX(Rwe&Nj z2Ku?V9eZ_S?*_Gli&mN zN$47jA+)W$H-$K*Q|`Y+9jMrnU%{}KP(8Y#1S4a2{}Mx<8{Ny&1*POfZ&dr}Td{Bz zTa542Mp)kJddQ*}JOmPnMnc6svw-1FCf7vwE&VISpN$zoPN)pj&uOQ^4uB^k(S`+I z(GMm+1-acWt~%>oK^IleM6hVdO#^JW|!} z^9P0OlJ&X=y*tJ0jZ-=DB@ zW!yVkoGKQFa-6Xh zv%0M}>KeNocyVse#58*)6b*adbNH_6D17_OYANR_!B(lr?mUc!Zju+w6nw6XWeJC_ zlvV7EZ!o4+kY;l>d4iDC)lZ%iP2DRa*SkRoc}DzHU};W~f#X*|zL-hy%$zF@I-6q| z`f)pbYt^cJiAwpp!+mi4eFH$j1!)mgmXh^JyppQcH(w{2DtIakd*gv-;Bo*$aCw>I z+v4+GkgRVqGNhC$24P2s$wf_dK@wNiz_gEOuN_EH6^osEq-TVr0<^Ky(v1NG)~wAY$o zYJU57DCsP6k>$@mI27N|pWm5v*F&m4&VTL-o`*7Cx0+I(^@(FPzuZDMUm~Y~QFup` z{Q+u|TX#y0;4jzBi9lNPX?p{g@e6wC%87P8cne+8C(v#QE4* zTaiA!Eofkfi~N6Mx5{&D1I|VK45a^_SEMfyUX%=`T<27QeCM&4^4DkW38TA_s-&;OM&%u(SJ ze>{#}XM2?|hD9afvvgDurr`|LUBp%W3%L9f+}Dw01H$^qYR1#tlP0EOk!PCKmsEOp zWXv{9(f5~SWn97pKMZn51(XG&B#@-@|^Xv&)tTRlv{2T2p1)! ziN|G@nJfyw*8e$4Bwjz*%)YZE0cN_5ShRXex#~C;?a;I3Iayf_mz}(yIA^q%=V)2u z#1QHZh#t8`d#X9ix)b+pa0jzK=m&<5fO8~9Nh9xP*<-m0AIA@-#^rFrg^m2(dtt?w znNxae?B3r}nqCEP*p2EQ@j2`-F5jKr_7U$&-aGa=mBn*96{IV2Q*mk6a{HuR#p@sR zrb!ePtNS?cxdOKCdQUjf+N@U-cVkrZ&35d|hyQeMo*N&Y0F=}o zw>qSQCv!>3{b1qFlZfhwhhPTfe5@apZ{jb?O0g<(=XFMRsAGO`ruYd+DatbW<&heZ zo3#TsjGqC`bg`Q+=IJ#~^W(diuJ_7X>=vmrk0dNPra`-<4~(V>ypc86xycAuCc!pZm`F0;O4|AMO$)|LW9Fto!60O&OJFp&c?3A_GDKgzy$|;8|=7EZE zRqv5qcm#pUk&v8A@|fR6Ibcc~h};f{;MpT^!kbr_D!dB1GPZoH5;!Rnca1!+e6|Lw zcc3C=_@^S}s?pDS%Q?4OnqTiu^52;ps@Ui(bx+L`bB6L%I0lLoZPX7q>UK$;+{+C< zxYcQV?c+@i4X#R^T*G8l$R7|6k?O>=k$kn+hgaG2cXnaVokY+^{olF?dLMLv|9@ybXMYhh z7Klg=A{Oij_-~mqS(4RiG5Bx}uky!p@=Q!pG6+$%{Fz^1fr*MQmDe|pxRpjfb5(3{12l z=vY32X~h^J!oO9Sw>S;uVPb;P@HEqj&0__#XmuzjVyPu91hLu^KW!QuU-4(h3qcvFai^E^{@K35s}1%1{!_*R{tNGeWGO8{m0Q+KB;GqTY+liD zLeh}zX~gVWS`gwQ6-E5&>?`9xg@T4y?rg5D6pyQq#qgF!$9xS#pK41G)4b8~yMuog z8%$c&6`-{isFg3;@?*Br)XS%K`YS&={wPJqkv~A$@Um3YOp34QOAGQF&+VR-JL@bz zqCFnfs4qs-~c} zwK{Mg^lo%f@hLdmv)xQ{@Y3(&1>9Nqxb%Elqo~dK`D0v~hHagUneRej@2hJ{8KkG)_1^i&d^&QaIJQwj@BUHcbRw*TFeyS)}u2 zYTtl!1De{R;=8%rqF3g7u1dE^5O){s_8RPV8_ePSb5es#rw+N*(l$ne`gk4NRh^Up zc&E0r^9HB+5oSH7TAR+VX=&-#<5=NNd}HI55uWpVneZ^(wGNzCn-Z+jXFX%3FSuds zO+h(_t>T-PnK2KsH|*NYZ1XdF{zPT2flhsgihKnuB8@g z+^#qU*N>6zPY^rT`$u>33u9S9ewC*F=I@~!lqQQAr$QHa6CCJ(Zr9fM_e-^7GVGPn zCARgr7`JyEQp-_6l^ZopX~?0Oh$(wCX1R&@b2>F*7M3+ZmDlW&1Dm|2Z(^tZ=eSDt zXD}%!ZRbv{<*XKU4?HOn-Ai4ahB85Su-#H?bAbW0y;@yuU{c;i)=5QS#jTc+IyBKS zz>4iOTTI38SSiTC&gbKntqw<*fSDS{#NG89{)kI<0B*xi?X6)#WJ{A6hFBxe+8Cd8 z>y=IDwuyo)Li8ssHQE4-86QKt%8Vf!1gN8x8q~)(X1Uw6Fr+CbT&4`y9?Gh0>(W1f|}pbr_Bz?_WI50nerUs2yLi)J@YMLce5ww#DMq z%*#%%jCQDyQwS3sJ>0J9YtfaPflz|GN8HA+y*21&y z_1u^(MNc?Z(o_^+QxDQP~2`JMs_1k7jP;H z3dOj{jwYjkOD6m|*~{+&0!OT+@nfb_Cm{D^MYF~U(F7<*c%uIE=^DX8cRvA@l~B5SQcP2u9{6=?Yt z5<`ER7O9jTyzq+Kot_=i_^_@??Zb#`8qHeuxPU~@OX=h0O=&5oDl)v9@Q8)(m0oM< z!~T34%_jA@eXdhZ41nym_TS;msLVxROxiM(m_!pNG4#n7@2$rPAto6FR-%^5PZ(3& z3Nt0zONS<=ZmO44{F>4d2#+vLL;kd2;wI|$b4!lsZ_zHu;43hs5O61(KlULoHuOqh zcom4kfa~GGaJ04sl#23nq8e0NibQ+3*5l5)FPhXA_+J`>lnas8y13h9D6_ff#@$KO3pn9OB@ZhZ}cQua1kW?t$#ei{zjY1Zvk zI4^T5wEu$d!SGCpmeQes)Px8kW_Y4Q6MnIO(mfJ!_N*?qE@57^E26y=U3UehUk7|f z?B9%ZL7t#Q)2fBe-Jp)Si7os9KIu^T4U(#KC4QklGLt*r1mKcNjUKm3!-K2)O zsjs~(x52BASJ~1;*b2NA3{v=8SducOG@y!T(bY@B%*xYrB za0nn61`xCm51&S}aEk2}49O%X)stAaNzcF(9ATT6F(q?r&D$0p0LOV?l4 z?^3IsMpFsnRZL!Hf16oki*>xm4pCjFDz8qzmrq324g;A;nxUdcz`v%v1}|t`fx#~V zdrindTT*gaWT#&0Uomb9dII ziUaw^ZKv^oqe{>G7;Jw+W)IjHKxv&PQ(9%+{{)I4Zbd>WLT2n0j}CQD(a#H)36fqz zOHiJymUw1r^_!S_u;NS$f@5WRIGKC}#LsNvS{lWZ9^R@Tmo@F$OMPBlfk^{Pn7#S$ zxx2?gsn7DGP5%%t&6m5%dbHF0Xg38|K8@~*bJ;phcbZXkev7s2iH@uAi{LcCbM$V( zVG+BUQ*hY?&>u-gMHfZ=Ch-b^T4hjc>E*D>o~qeI+~pjx$RHr)HRoAv85G?W;{tzU zUdFrv8IC9aoQ{}Mp`^XBjLhvX5GDqSoO1+=MoGg-`cdns>DJho?B5H^5|mbZgO*Uj zq|kOS)bfu01O0P5O6Mm5!T&&`xOit(#WWwrNIO2$(qsxNuM@guEdsuK%Ox%FT>DWj|pxb zmediW*l4A-k{3%{G_zz((c2OB?93uyb64q^Rob|V`?vDnx@@tlMOXg7N`|44q(-=f z#^$_!S4l@H`q^=waN;l`mF$HyH_+PtJS1tcMYJ8O9jn_{c~vNjZ`>(`9u0wg!r%Tw zUevY=xHvNCpuZ3)v~{tz)U+GI{Z@+@YS`t`UTSLF{feJjKNJm}FL|S-nFbr$^Q@}84yJuTHWbsOGf11-~`USz8451Tu|Jn;Qi}q*|f`} z5Hrmosd0i_g`41*GwsPLSjgbq?3$ze_Aq2A6ct)J5C@6yHm>gM`GQy>v1x23hbTR8BJ-eqF;;`v=kq7DxSbd~9BsA_6E@=_s*_Dg^2ql?BpL}D?ql`&C8*`SCt|7uj%ryLSK{jPkPv5^M=xP zT50SZsaFz~**(TZC6gn0N%fv&9K_GQ1qw%OX{UwIzhDK?j&ffcywT*N-Cv+iUar)p z>S(_Jy0^1?f|o@=oUo-)BVYyBDJ^)M3sQ7I+&9yLu1#J8xwFBSmr zs#?1`X+sse%1*(ZXDw;BSEuiq0FzeG4o%y6<19oB#Jx>Mb)^8#niJ-M+2kj{jLQoD z^<;xE^fVj)CV6cFBG_GBioRdq1M=YLTx>w)kEPE5M(8fA^-~UxyH`Z&zgUdwm`u+q zgdBLKZsq1C_;TAPz2bGK*?W04ZBw#lbYEksX>S37k5njr1BgE^t4WwKd&hk#<=6JV zY_`7*B?hqeuK}dm5?*)#K8R>bgRinj*;!$6F%<~ngPgRIoY&uVFF;6W%WVVhrBTmy z@HW~!N5qi-6E7FJ`j=pGhd~KKN4a8(6yMq{>>KjkxU;~H8oC5&v-lv}n`yxBDD8CF zr@F|}A(JieXn2-9c-3t;+YD@u6Lt^)K{ggi5u65hU75juO^AXrMb>rBG*9y571=@^ zF!!Zi%A2O=Ay%_3Q+OUn#%)&RgpS?TIliT4Ys$Au@+~UzQ0W-)WS!rp+}1g|p`s4n zdLtvR zJR8c_XFWWuVPfJz*f9@P?R=r_vvE!?qT8mhD2Msr(XT5Uyxbv}_P$2=ado>kynbQ} zxzq;~pE!Wv?%RRz1Nh9~^_^>RS*+jKSGg=}+?9shfKA!&#Lv3W8Fim>`j`oY&-Z_Z zAtU~u$ z%3&A=XH#K}n=0zsO0M)X?8Jg`5m6(` zm{pkDB!9o65eeGj+&ySH9))$Fq~124YQWK^``#iP}7XVCzq-rzn%Tg)61gli4GL1Cuyrpt=|Xtu1@4;Sp6-8u3O2; zX7*CQ@mTrv{%u8E-@1kyl8qlfcv7H_v$FCs`x}A1okP7~w#Ih?OjfX)WK`tJzN~kk zJj***I8Gpwf+{JXk~Oz8IyVawYul~jVa9V;-j=AhV{?*GL%A`@D5g`~aFFz|j%OUf zIW~n>fgEea8PVqvT+PAX(>X9C;kMfp=Rd=iLrz$~&AMMGsQ#if;gSlqn>Q4+pi-8h zLEE`o)oe%u9{A`O6d7-ewgKW)S{a2_i=7E zSG0gq=vE~!dzzbWk)ZuA?m+RM+&Y4@Mv{lEVvH&dScI(%D^IxMq)Oi7^~G<3Ba3`; z&jT4kkO=)1_Lk-)yd>}9i#K0~#eW2WvVuBry(!Jq&X~^fA~n*P>hzp;;!>P6NJfOs zbE<$xwFYyLm*7bn-3eTJc*Ihk91PiuGM!E^qoL5ls5z{8aZJj;b5OM zSp}@=L5PbUgu?RZL8xq%WMy6uyW zEBWS*ynREg_~J1;jVe({l8N+zqsx5@10HDTXi}}N?FIM@&3It&;HVU`s6gn zJ;D~_y=s@Y3De6ysU#fu1sP_>k~U9A8Cp}8u#6r0T(c#mHc5?P9owtS@+4L(|A|-Z zR$R$;cST%%MmD@}MW-Eja0VKgZbw_D)^3k2`o$wdsq{4Kq>Gkv3iRZ#4&U>y9J|c&(4Cxce}O zo*lM<^UD+-Iw=v4N2ZJHJ$F<7u@S@POY+fO-=w^!GBuDWOPjI-{ z8i#uNU{aF)^VPO!)c4bP=Wrkxlsx=wN9r#LaJIhvj|A>FeP`NpM8+Dg^ z9m!&?tsCx_9VAsKU&(ET8c}x&miceEXp6Z7 zshxktD^_HeraGF!ExtJhIMNG6^)6nY+7ks7V=D=Z z*Qw4-XmO3dje3C6{v^l=u7^GRciK)cQB_J0&{JlKwRm|;L~wKK!Et`XF~}LTSTkdf zUU;UvU3)Y>Z!^vSv?6)MP1EYLT)CsV1?qPoTt8FvkWBf z5^jqIzZ8KR$A(%mx8;mWj>H{&=1gTKZt{;D)c#9X=&$dv5}s3r=w)6X3)Q)NSKrOz z8^jN*8^kBG*#4OJ-F_Hq<^cZ9l^`Oqzw(j?CG`r2lUltEyZF2je{sIgOZkiZesTIn zOc%8Nk{SPy@a;oQ_u(_CS;(_o?JM18LMQ9Ij^z!!&c<>d-IGRSTp>MF!^6dvXOE7E zG49=>ayAlij|dSfFLKO@1S&VtCW{@pFc7BeqrLLA4KmW~-f^hoeBms1Ozp?_{&L$X zX6t*yt@{Pf!4pueW-O1^Tle!%UCyLV8`{CI#eUoru+4_;#@{&DzK4EICg_fP~I#()!7x$;?U>DDb=8scOy zktl0?qtw5Hqb9s@z~HE@p`x1ZzMg~d$ww>B_@ST#-Qzva7TU}_n-=zoUKssy=ib-L zukT8E_`SaqKg`D1wP4LqAahu?+uyVJTB7UL3VW?>;wf^2^WU_MgCnOHzs#Tb;l>lR zcJ#R7^=k$tG8tbs&lB)SZrYcJDa$(2FI0=2bICOYJV4F+T9Z*v1%IiTIXoG4H2~Yo z2TMTjJCFE}maAKE>QoW`gp29M_&wOo6JOS^+`}`S`M4O$d|g0b;OAh#tK*Axc+XUJ zj2UOIC9l%E*{y4bnRs_}v>}pbd_o!G-0L)yI-d=)aNRebe*UnJf5SqUAr#k1C_WMUOe)csu8D_Z!r&;9v6{4>F;@GgC)l-cO}IbK1<|;%Gr8{%&+s;T)`|4MiDmWw@+&55&UWJ zF<85X#oE$$8f!%AvFm5p5AL~h*EqCbarg*$q`I(O!-fYdvF;aPKJ%-2|l=cquEscf}q-eRHh7m{}vBR3JDMXY-ctBiS3b^`K2>+f zS*Eh5oy0uh1Ow@qv)iT@1fqDi7#az0Nffyx%NKqrKw)B09wm@f;n|PRUob!tf7Za#k?2~;u}Jt>(L zE%F(gr*zK0lXdZ6&|3V=S$dzrRp^qdl&R6YqUZ_V4VJte$ z3pzYkh2OW5O8et$@+K~5QG{RTEE^bBm1Kxm8U|sLA3w02KI8n8bHRBolB8r_{P0d( z{EOsd1#!sQ{jofXdjGq3Js(CGgmPGBO;nzVJ`lQFgOu+wU-qtellSqeVcurHpw^7* z)`-i>PvNc(D#u4pZ5k@~yM{=>M)-$O?6;eqo5AZ(UTyY22-|N%7^rzL#mV>vF!%iz zbFSfWATOeFU8XL;n?Ao4`A_8InH>4eC}}utv2*3;m0I_ zn=!Nl%0%roeijSaDz6*8S4`AKwbXp6!za zQGL7JbnjbKeY4p;0=D-8(A@(gotXdR`q!>o4$RbEf-qrk3HJ|pyWH3OQC6jID_2If zKMwnM-_v$3iX6Jz8x)6vV)t#2d~(hGvfO@^c1_&!%jtsx+;)l^N{*9_Vj>O1n?twa zLaS32t!a{1E$&|TjSPIG9?E5RTdG@^ zt83q1=c5q~j`+5u9WCohTi(ec9zj0`PJeaCSMU)oe;K;Uvq$ zKVI|E2eork@k!v{akmsHv%F8gzw?)7`(F3#FANg#VOhw)S=VhAb|mFd(4@z%(p>L}WB{r*GwA4b8|SecK<>dChb z{S7RI;8)3%_QHD`4&UQ5+y}4Uvz(mQfcG?F=(wgx>BB6hH}JenXlWH{)@*c*Pe^)w z9#$tnm$)F)J%D7)=v|U-4OSj#Il^$O^zliLOCl&Db5wYMID9_wshBfc z+AHsb&5w2kw!Dmsd;ccy zmJwM&Yx`1bmCsCL|U+U}HDj7(0t1!CrHOYyA)R|l`ZSL@@jo6Xft49?ehnv>E! z9|fHGy9JlNF($3&09`eFx1Fi9cJXgvw7d(Y#UXI|Ss!(FLa#G}P3Z;d{uJ~0n_D0< z8q2*!ZS#8{ht*((>R*Bc<=O;*xn@ru*1Xc3PFN%=Q$exUj6CWYzWh+fLD62Vft*(d3GJ9iVqvN6K}l^2z}`q)(?6A~EC!-B1t zv#}4Sv>2p~p>NUm2+XQqek1fU@QXSW1^v(Ub_w^}L$9;Enc2V8?@`I`U8|A1eq?96 zTeLz?vHqT^OmhfBR8mU#Lb4gFI7HRm^!(ILSobZXAj4jBmfqS$PRBy@;Yu<1A&`pL)wMK}eLCX<{c!WsEmAki^P zY;s*_OQEna;l>%ou$k&Ztx`D@^3(dWTx^5+lv&Rkj{eGKF+J9gPu3($Kayh4%KSU(*wox$e6TnEk2jhug^ z_B25|=mNN*^5Imp)LYabuopr9JHM+3^JW}^8bO>iVCd%A|MF#ViurRX<|Cuv_QOEP zM-$H)F<>_FC(@q=oP%2q3MugxFISxVo?0{5F8TLQIA(v}hFE}YCL3m8hDFgrIcU$X zeGZ?89p+OD{9~2nSj9P(%4GY|4;Y4Z#z(Tqec5o4AjAqr#P?cnHC(bdln25mcoP^+ z#kADQsZW6pC3f=2eKvWtm}TFdY5)pFy^8`)>=#r4+7r?Tic}6e^hbtXsGZ!&v3UJr zKYZSImr4)mH&5$_dC0x>%%j>lgVd?T7wPKShl1Y(h``a_f6uemO=k{L&+DQSG?hJW z#4d*!4CTtQW(aezDw-&3B)`SbWp#IVlm95n3pKC9UimIZBJzPzVA~CU`qFa9Qq{=V z6U@Sg^$2B_ENM~pEz%D^R{v-`M0Fg}u7=%q?3YPq`+r;24rSUe?tjg2h?ioKbXT*P zG1ud;1Yu6)X-tx`JK zJA!jSwDfiHNm%}D(A`{Ov&-qTPxMw$@E#jUzFLt#;UX~>jr05NGZkuS(0gHHdaffV zfCS3tYIeio^5%*?idFAsqL`JfYS$+T){-lCKV=)L7bmb(1?S%^Z=r-Omm9QLax0zr zMTR@wdi1L4Li+oUkP2P5diRdS8x$A$GcC(}f(kHazejQ{-K|t6e#?nV>eyC|j5)z9 zkPU$YT)yJ8Al8PigG&}}f7J8SVO(DIuD`GsbJPP7HyO9hT z=?Dq_cQYfS&<^e5RxdU1&?(Yl)Qjr1+Y**`PA3#^Dr4>(=B=ZudiP|%qL|vNH^6n5S9)xf$rZw<<&<`)K0zBN=pu>g&)I@zI?)C z4VA%`l^7_a;;NY0^&#!maMgFWG zKwp3V|5(4)guXuY^DP|e^~X{K-eZ&@my=2zFilt2JQVzQcN|(k;QK2lmb3(|3VWp= zu6nqiudiI`>^-Ld>0S2YO0E0R7&PMojO}|2y*3fqW#NBp;X`w-gM7BX1G`P%VgT{p zkXW7b5?+D1u}j*$LD#JZ89>i9Me4mN48e&#=9AUZ`p58u2YT0n63#!Q+vgFG;^_ePlx zo${d9Y;xc?ig8$#fgIVb3Jm!y4?Wn`AsG__>K6p3z-w%?Ss zKmJ(AG~MTakXp^<;yo&pI0q@;{d_$oyv#p5;87rum#&{N*w(${zPqimRXwc4g1+l^ zeE*!BGzdV=zf>Xmy)~S1N|JA-=C>#0SP&%d3elMwcj!qv7@Q=e&Uo0;B({t=lT_B` z0CslQ=1zo^>F1fw1v$;;H3r~PpGU_fIDJ<2k3QD^Iph?+xckja$#2Snp#9Z8VKk+c4QZ+s~8WLu9O&U$> z_v%xU1r>lkbOpa>ogjGLsqi|X3cv~75-1h8veuCQQdQj=e(e8&Dt|tGa#v0*qkn?B zG*`grtwT%rdjx?*y7MBvdM9TQf@`HfZ5f^c{u9D&<)z-;j$Z~If4Tcv1E%}alcK8e z?au3%C1bnW0j*)@T5#M4>%i``<>%gOXF^1P`FaAK!W{}F3$3P@(@%GU63Hx`zZE+G zAZYs0KOuj^b!&Vp2*`xktKO5eUr(nwqOCgKNXPkmRtI^5stSD5rdFX;yV$Yte(t3zzQXT^dOF)VNA)fbP}0 z?fAsTM{it9{TuE`t~8enXu#!gw~IsU%}!}}+__&oIHJ-16n*LZtRMGi_e0e+rN2gA z35%V)i9X4ed#t_Zu|ZGFnO?$GquyGy*X!810G$1^UK{n>_Ghs&iK#xJwLyUQX=F&p zjVvBtb-Er5iY_sLPjNkVJ8;N2=;DJ4F=Q6hFp_#qHcpQlU!$X>+0Q>FT!7v9kAvEy zxQ_h2bc3m~NK}gE7tQXA16Un7&7qPsvSElis>AkN%?;(W+1jKlS zETDT>h6x(&0WFKq8e)S5bN9z(lE2O$5621D$!wz1z0&?FKjm>p{F2~9)~ZF1n%LMq zuiC(Q%=4J&mEMX2cfn5WZlwwqo;cM;9hdK%RI}PcZ@*#N5Ej6PSNxExk53&)w-pHz zJN7z7t7qP1tJMs|<`}Code}1vNZ{fMPD8^UO5SS)$t`jJA3NxEMP_INgY5aHMd$v0 zcY-(I{x;T=N6M6&$Q_Y|AJy0~XY{<wkh?IbU zfPf&Opi)W*QbVWGA<``k!_YnR+b+luD>GdFK5#m%TR_4q37I{iXFhF`|rfVh(;Zbre)KBr! zK5*Cuz{~v#sjIGMZp;HzM)-GJ0A|j#E;sRiyd{G)u%=R=RQGT{2ejThLp9w(-@;Uz zdh+RfXI_tMJ{e1#tTtA?>)hg)FUfJlfT?G|V=)H(2+E}itRBId!l-UeELg6HZ;6xQ zdj_hNAHhPJD@q>TT(POdLqvnmV840+);xyn_3!Xdu~Ht8nQF&nFpRl5tb0^+*?swQTotVjIy@T}DJ;c9#hr3>=?fQEKv_boAl(I>1jHWtE+pHU z$!uu(d+Vco(qi$Rn3}c9jzX$75x>lq7Z{XG9#e?c{~ z|3keQN--Rq>yV6@uSxUxKGa*TA>ws~zu_Wncez`3h5BS%%eM!~AYR+>X1Re#_j2Qd z0FlnfWM2-R@4}w!HP2U7LI-9P{5uy<>}V&J)?cMWp2H0FiI)m<%pD2%J!G(+FAGgH zz}(&ooAImat?4t|CZ%?WYH5?1*HHNy^hecEwjbc6J5D#E=fF-@cL;Cbminw)lp{UbYZ^1{Z)Q zIDDP;X4=*KP39@q%ts2H@y&h0@+hn69JQUNadQRN3h&T64e=Jf^T`^MtQ?YzjlK7I zD8^7^`h5}ZV3HY~zfN5oUS2kJvbB_+UV_Eu)hk(KkHs4CBG@jZRfJf1V2gZlxqGkZ zS@KM>bX-@i@7odnNm&!_*v&lBmvfDIVZeH6Oz_J}#g}{Mc^6;Kosx9F4QaPo^}D~t zJNOtNy=TZ1Ap0%YF}6sSR8jc@nUX~Gk_E&AvoySaz`%OI7MemfYy$)X&;q{}I8fA- zb2+=85P}7EYA+iV(QlmCd$ULybm-VmE2@doQxWk{(FtoD&vK(xxwcKNot0Enpy4@}xGm29%7#MpjEdF7(Od_VB z@%3#(r2nb|Bx9M-0pNjxKXyhoxax#4jUGSYb2XnotnU!HG~Z@i7xbr=%T`Dk%wvai z0Bq`^VB+sc?(>-6gSh>7dSQFg@4M)q=8l!^iA+c2T{KAXS5B1ZJdod-@#$fhrqHX` zY47#Qb>5Y7D^PR|vL$a0ValhVvr{SN@%s#%>+tiLO%23VO`|8zETukBaoct2{xI-- zzEsFEPL9>{BvzM>zQ1%aX>wvoCA2e5)+6^r&R*EOpHeNAhCWw{C^wHjT}sX{%KOv3 zbhmSPRJs&amzy7kcK-BUcSYS~$>Wf}s^&l5QDo(|sPyOlXv6$Yk1lW45-Onl zse2+2V_0N&Adj^Fj(EBvr>SfV`JidL7m@^^dtu9!AI@SS4F<40L2vF&i_dCocf4rm~E5) z)QR10r~F9uI&jG!3-9n0zDuZESC6n=VyHHav)XPBOs-fjpa8}dxcv0gTXrj&j=(33 z;Nu4^yuT<1piuWDav_7W9b-uX*7Mlxr;)eS%ZlDpsJvsm{iWEyc{?T-0fkWQa;Lj4 zT6dis;_Y7RM4y#R1~*)gr@AQR(wsIRyT^Oq(?CxnVb$r_SM6W?ekGa&iHe?7D%I zCS)pPRty#eIUeNGysXdx4FK5e+)$nX>M6gd)#^z7qn46;iVlFlhMFo5G7-ZfdJWVD zY<#kZ@A+KA_vKyh^Wm}7z)Dot$x`@#G^jq{(2OArZN`ph4(JFkq9(I2@ivmaSscw< z^_`Vs$?Z=0Qrmd_YY?U{qn=6v3)U+q%?dfFX30cI{1;j7&3EA5)(7!c7~VD4Ol3<@ zy&}Aa{=+OEBqGQ=xU{W_74-bKcIhB$=4*96wx_(P?x7$5{B&PlDD39KoYg>*%=EE# z5l=O*sik-em1zVHt*KxB^|N3D;C5gP6jH~RJD+4XXxb=1Y^h$^k{n{O6ywcVuH z4AWgO13cF@F)qjtF3K5KYD1eh>`q7ef7}%Rp-v1!7R8lj5VG9%(M^>g)jPO8z<0VM zB;0Q&N+|li@tTe-ck+)S>6v_b?}w}288DD~0SGMP3Qp;UExzI#k>+5PR#BM#WgS$5 zZJW!W2V#F!*Su2&GA8wtqr5;&;*R~UkfTuzipBa5rsO}CeX}1`tc@@;#tThj#&A45O`UMin1RE>bS*R{$1(~M1^Hbaz9@x389`4 zzD`sCcyu(_WSw=9dqNx9gv6$HSPW68vJpxs5``rW>HS0R@;ojsbk0ilcGYLh;w6d~hZ)||3LIBVA~-dJKd{>Fdni{DnHIo4QBr2- z4xp12Kt9L-3j=o0+vC&@8oi=B6}TbtJBU-qibB73h%mB${kI&jdxpMWZ^l3RXCmecgdV1$!I8}VV!1k>4` z==Y#{@uPe?VotXH?uV~e6})sv2}Iv~xJ*5LBDxqTRfZ)sI&*j>Oy84_zxrza*LGXA z1eUhU*9>3sdw1_Ae;PXhB@G}A1A8q<8v29jq(Bp{xcf~gxrM>c z(9q~Y;Wl1KsPkNvj}t9pC^B4IOBg;P}BG!Q-!DVFnR(bfd#;j-UI zTa1Bb)JAIQ8y@OlsnJ%n$>XX|A^VI(y-`$Ref0Ww)~-4oWKF!l^AR58`;=8bE;y@f z0L9E^$2maNXB_oUV`d4*T4u;3tweP~D%IX0!t*~_gkP2^ln~wcyxj35TVAad7fOgU zJXTzjQ*F#_WUEn^zJ2_n2!~NHmH3eGeQ>h*gu*)-bt)+#t!T#YrEK>b@yNK>&@if- z5Zch@@%rP%;0jw!x=H5IpqIsC)%?m(R8LoX>Uog9}PNCGQs0e`>&{;4=zNy%0kj$8ISIR2{C*DGLZLo79EWBp>ee5emy$ z9M}5)%cN|cPvz|IQVWPvH3^`qEHJf@y9eg+_|yAa`#@zt`C&yg@1>bd+7Ib(GDwA! zS>pYf|6lc35MR#AKpCWW%?$`30EXB(_{=ArFx++B6+v!Ly-(z9{h2`#2#JX*JOF!= z75jIqWiFU}=ezytG~VgZ)fZj{v&hk+;%g*x_Qh39%sK!}J6e6PQIVtT7!Lt8;!Z_+z*(JwbpSO2AXb}z z$tjj~iW&h*I0Jvjw$)=NwQ>|tc)x7)c>4a%{Pmd!;=)fz67wO%Z)2;#%k5R-2K9u$ zo0^oXE_vIgi{>)013C`8{C`ah#g3X9ihE7-e!1bLLqQTr`m$tf{1XKI?d;_Zyu#N~ zxW9HE1a9Bfc&*)&DF4(!2sY?20VTpeYCzrfK8`_joB zT);$7x~6cyD`=D;2?y-q&;9`0{w7rn(bi;-C?x=>PK~Qdx=xfJutRL&|6x`I-*{zn%8!mSMl;l)qfkI2Zg`{Rj+ZnVIVe&nYa`5zCgS)@3q zaobh3#;Kki$j%DCpfuNW9}FtnZZxQ&_mUX?^3^1yFVjS*hKX4Spc1fa1XU|rGayd^ zeRtdHM?!cRLe)2}S6QE&gQ8#VL7BjMGQX~xh7N$(f-BfggEF?46-A9>xPVx~e-V4B z00h1{n0;PIr1L@(+K{CgzmVnrYEaWU6O>t3HtA`W?Y^z8uqto^ea5ca*@Gaj{Kz4Hdz$8lPl05I=qnGlgiYGQ+2 zp@eYg>8OaxF8iNoF&&yi?%hGg3Vc&Xyli*W*h8fOg6pF~0j{pS?sa=S>G?~qsmO7F z*XKZh{$P@TE1^~haO41EJM+N77u0pbn0`Y`J1%9#M#ljCuQhx#0m%JPtHbLHU}MS^ zV}kQ5uv{+rr-HYQkmzGL^n!vK+{Gmw7$55+?8X~~@%a?M{rIh-&h%zN`2NqA5P&-J z73@FXK#e8q4-UfW<)oKu0Q#~CgXQ=4=RZTm0d!-#?J35N12A?2N6K_i4%pRmUy#pu z0Mg=VP(QIf=J@*yr-43mhq3%qg5Nw-Ya7RWA*+SBq_f-=tk9hQoqZaVPyCBr@_vH; zC3DCkZ%_{lfm!8AQC}1R?Z52OLIbFeyIVgCDnOk<_(=+6qj2`ObGW~s+3AV zr7N@61~C6nMeL=|54E4m1@Qbd+0+TZH*dc)6=AZm(SnIus;j%h&ULGblz`q9EdJoX zp62{rE;%h#)&B#~Khj1z$Z`7LpX;-|)rEg}-^7duu)PuNZ^h_1sGz_LJ2SPFGy}>m zOjFnOytlp>9R-1kmH)Iz^y#{qKye2Y@thl>YRQv-?9jKjV{40e`Pb@zNaaofD~p-Q z3^l9GK#4G9-9;`i?ak|-rJ-+g4*D@riD$0^zpEq{l>Ase2KXCSPa8r^2YE+ED=0RR z^+UY5hz~LS=ATSA!Mb^vwjZqb`CXYBRK-hKS#R_q|54z988G7VP6>KW1L}+`!@RQm z1F`seOG@A0R73TM<*|U}f%+gZR4u2zAn@ozCdXLfkXAZh?Z~`;UG&tX)pWS@f)3exH`$m(1 z&7A{fK&J{qtqt!vNov0H+eB%c%&hvi&5+3_&uF*c=XBGnj(4uXL@cCT&%7=w!-qDp zrw7*ta~f|TsgC(FgcWB%B`kqI+~5P?29HPK;bz7bJK?Va)-l93HKb_4LtjMiertEe zUX!T(JgbCEt7sh(W90 zJK04MwX+0Pmly5~iW?oT6GYmeo>ct^QVQwW-}WuB+b0X*6A7KH$$UqcK2mwzGo)oU zDuF$K9P|T337`UlQxfc^oJ|F(aCaU;ykGIPVRmhi)dsq7Ppp=hE4G*uQgTG5l1 zZqN6CA0oV@TGIJ#$aO}GA=&s8sHyD?+pNxEOw)x$*-rw#wV*ZP z)5Hk3v_|HJkxv;>3MaDyA)px4QoXQ)SpOWtEibYuA?7VM4a zRa5QYroSw5qA%+%GeUT&D0CNfk}a$nZEBUQ`@8h@cETmSD3}CMy`31;=G}T7AW&7% z;E`uWmi{s3c#sMEC@P2v+4HVgybS3>R{Z+m+@M$PO-dR$5zDuR>3+M!=Y>sVkD9*b ztNXsoF!n4}a*4#et;@M6{{pmd0R4Rs0O{|g-^O-+4%yh=#9u1pwO()rGe6~?tbMH#9tmq2B@Dx2my^lI;HV zsWyFkkH-h5L&d(0hbK_ODaJQN>RYlFwhj@_f`UU4Lit7(Xqz!-449t@tXu)P~ zdisZfO+>sQMTH$T@gv~w_=OEP=c5_x=`S%V9Obu8w|{P}@{Jrl)PC>bs;Vi^a>K@S z>tngKzjyCvo6+NIAxC^s{?b@!#XI0u0NY^xDyGRQsy9U|qU7=&$_+0N{C4E&6$#yE z9!6u=6iyI(+ZPhw{RTgkU-VEYT=}>^*7$J0sY$lZG#r>rR&+?_1GL^3(a6N+S*DIxZsloZfo8 z#&|#J=uIE!UTbd%A33p*xkMeb0sl7`{s*FzSXf&$Q+4Bi|w~ zhmcC6Y5pp$@i7xO-Y&-jwh)|5jN|z;oc13YClf#R%D~{8Ee=IEc)%5NvNE@sfQsbH z3h#Q*e&_Jpj+lU%)B7_TJ4PO$3i0a^Sgl=xpew(D;QHgn&D;#EaQOVPF@5=M-nLfI!7Bs#K%xkdjrlF^8 znaOl)sPqqZs4#NBj@nBH{eyqEb6yZK;CP7$;`}2jI_)<-!g#_LMPJ*8Z=NaV@w8Tos2xh}RUDjYC=Di$av;8M(s=dw4cXS9807AI^$Hsa=hfNQ4<1o)S?cTI%+0Ldd>Rb zMX-N!O)SKyR+wNJD?MA&nXhmfZ|twdh;1-NMmf}YSP%l(2Ummc@tUYJ(YiZKaffs~ zhw6?UZFY~x#h@ld(4>lm+EyJo=`w@!YwFXYbsGazZG5}}kllM16w{O3)Fg)qg$G`v zowJaWp;WMzx5d`0h@NnO?`01Ybq0S9#Z~t@5A0943Q*H~^S20u46Of?RB#_Ra}Qvm zcX>&$L;3lW0;$#CcF@VynP?rT!MT*}vkJV3S*7c4M27#&6q?YqLLQwXptCQN#RACGQ$)URVFy zSpFoRv{MU>cne2XZ{F$*LWC&mx8DRE>%jh6muPP79pjkcp;6e^NY7#g$+Ij<7h=16 z!TDD!Cdz(f#-U>s^}RLh0)csJ_G6;zZVVoDX~bYacH>!tW`#~b=m`z#S6&>izh2)D z9i&v%1&zr+`?YbOlR`+s%pZOIyf7m^Y|vjPiK(bTI=prpTzpuF_3Uh=6FT0E(5Ude zcZ+*oNml-)Wru<7${R%^pQe=wJcL7-%oJ^f(9K4 zQ+Js;Z~NS;tj@f+-a$i2NniF>mH*iXem+=~NyJbigEiG@BSX^pSIyYUO1Rjrez!w$ zsjMZ98TqS_S1jL)-&1pbqZ8;zCLjvh)3L!ptK6+4zvj+5k}V}y-)A*CQf^X|(>Y7PQxAZ_97-=j{;zX}tu81v6d- zae=5MpY@t6Zp?qdj(}c8y|3_Ga5xd1n|lofbz~jjEs!-1;x`cDHLB()T@o|G>2b9a zTHY$4mOaWj1X5^b@FKVnng17vwwr5a%je(eg;P!7lhp8e&X8+X7LL^54QUff#9aT? z3s7R_$t(0~KJC*sXoct#+^Dwp^06k==AjxAtSUctamSiCFU6B!S$_9QmE*l_KL$gQ zjoT@#G=u;;7CEziSoLWkq}v+X@w;i7j*m?8;26iTmmj;4s!-#gNn*fsO@xiJH9`8( z?KJ1{@VcaS>(Xox#fo`2>bHa(@z?fgm2em?W;SS?^&?qqg#Ys)S z^TlOTWSTUNv6t&ACaGq|wGQSQ@P2EWWWc~648)A4`+_2g_WW|OsH}&go1dh#fIEDB zgbG2;A_?(|UVFohiPqy+jKQlfitk))s$P{P@N8{=f2Qt8`d+`&^yl{(*%{cBaUZU$ zdRj0TX@Z6bJ?ZvQZozw>?>t{l+ob-66b9WAZ+%$&I;hI~R}1faaC-liB`^Ez#9hXA z9&W%3?95@>Zr8@icV}$Ps(nMA)ted*m6C$UI2g6CS&_DIw6eD-WpRdP=U#43X~F~Z zMQzu8XGceg2)Mu14daR<(Da4PAq!4cz0hdsU@MAqg0fpR&6gE;e_76hVhcFHNBkR8 z*aMEQ4^BP`f9rTiR*13L9}i5mc0vY&o>dJ2-kM-B_SG5N1S?pEb$T@pj#^^0xy-O1 zAx!s0YYA$iY(XSICq1Ct)TV|g`_fBvQ7+@4!*uG_A>4v!xkN{)b91-oomi*LT%+fM zJKomP7xb{u=fuK4^~KDTMDo=onWp96QhTHdis|*sHx(u zBwg6XgRi6Z4Hy=i$rH={Ra%xeqzUPgct%TYFJ1OhRo9+m$(?zCv;;@7>RFSBSZ#p) zP~!yrk^jk`v7knUKk8=ZuEHi|WeyX|T~F{23u@0u@146Q=yBHd+T(}<-j=1wOGgCr zH-RA3E75sLw95`6KqILOrRaI4IfC=j6d)mM>Sb48FN;F6^Te|juWv&ex|k70bY?$K)2 zwc;Lkd`O z!*V{H3jho)Etdag$(gCH)nUx6-N_ZyOQOX!rfNsdAY>z*CMHzloEaEGSLVscXJ=$H zVoPzsy=>-~JGveOQYgdR`@rV(Y1V#bD73ypXR zLkl#7k9vDVjV|^Tn>hJ!Pwh}Jcis7dE z(SfAOl;qZC|5Rbr z)VrHRD+#8dyW<+_hwWM{LiFW9M59#fw{xThPJ{n_?&*RuS0^kv|4j3d2A_Bz++(H6 z??`ch>Yfzr7se?^775431Holnqi0rll=DaWTBDgAK!f6isE+Wf>oTLG%8q$oe&2{d zyL4b$(s5A3o6XtwS9m}1s{!o1&ZxH~c8k6tZ-d_T$Kj2>Sl{|@x;a?gDu}T5Fdm2N zYsxj}q!A$UID-`wg4bIk#8hL9KrLAE+HrxA5LxFvow|6o4?H-&5p~2FyYY@lliV+N z6poO`YU}zw3mS9P+sD(Zw3xS#t^pA0L4N%;qfD@Z0ep1JzkcJ#(APX43!p~q!!40mcBc{afj zJ0$cB)|+YO5`*J2HO3O*O*v_X&Qc(gBdxl_G4CVT;xwt~hJ>jUFRHtqCZ|sO--em7 z_)~KlFBE)eJ@^aUp4It5;Y8k5@_l;5(&A!Hj$O0{ru=ia>ol8yc0`8d%A(eC4jT&5 zKXcbxxq!$jpxInGfw;AX)fW;3#%zkN7E3*qu=Z+?Ze(#Yh7av!@EBwtH(o6;Z>Nrs z$%@o+90>9-e0AUqHhoj(xX^M&+~ zF1M#956jwMjPKZ1Ec`SR!s!lKU^*8pd?L$vWu#enW%2y_@%N!Vgynp6syj8c=|#3P z-=3vEXiFp3;CSqrFp+F0-m2jmuY0yOfyC=PxFW!5K8mra|F92E2u~9UuVG_Sv|YkE z1(`=$!QL%;XoYo^1iQ3aEnq6Ib7feRYJ3zkDrThooxn;$rVp)GFf5D9tz z^`~43v5KvK_YQGZjp1G!@}{@O9P3TDN5<^%riB7b#JT1;aZz$x8n25X41u~3dH(+E z9r4O&yQbzrm)Tntu@uhv?MRmEtW1+;SN=xVk-!B zEgS9^)tNhAE;e5c<^BGytT|BlXsE$fO}@8;1@-xQxC`}PoWf6{WZ*%L8)igs2a!)` z4u`sm&y&}WkQ}`}=C3lS(?gH=GP=v?Qjbh*xP3UC3zo7HBJ!Jq?TLahRt5^-!V#>O zplOq^%>=Z_#3ylU3R(V?aWF}kN@bHxT=S?c_i`ui4QnKG^I!RWM(uPOY(lf<5t)?Nz) zS$UUQi=Pwmhu!{PG}zqKMMj;Uezu}N-JSEG1i-t;!74U)58Q?0$HJgjt<5R3TOkiV zM!#|I5417$rOu^iRfu3I3%s| z_>WGYNKK%rfN^9s-!vs(b>^*8o^T6_x$?fviD_GMxV+W+*8{7dBjdB$I^gaU!~fM? z4w9d0`XkOS>^ImdSB@5}7+hAZAbMuH6^(zW$wDW-^?uPT?hB}pX+ljn^pI13*E0Aw zN%=qibz6hdRahvWNFxZE8mQ@RWi1;?lK|YbxAuxF`9s>zXc|}34mKy}1RX=Qx>~|Q zsM$p`=FI5+=fI4fL*bDW~7VA10aFGm_KBCTp3$9hJI8(>; zQ@-BF?l_DeUzMe#Kee_U2nO`U1*HknpXL^0C#lK=czN*QzZE zMez5^CuuPJkpR?v%6dkS`gtDMblNPBk~?slKpot`;UeoFjczRQh&M6J!m=`E`>{8c z%7LM9I9?%%6j~wbB*E@A?s~V&``V+_mQwAqCgWZMot;$pre5%u&aX-y9>kjoAM4TY z(J$Bg^^8KSyd=JS{o1%G$izM|0(ZM`?v|gH3}Xg)OuiyTw!D6Cy z?!Y6s+Ld8|4gu@Me(aUd7q*)=#C|w<1)TfEdRYdQhq4k+fP|#p5C99+BZ| zT7Se4N+1cmhdRERmX>r$9=JMyvEAA(P}uG`l;4t%m(v>P$oh~Rcek7kYD~HxfCwTax9V9_OTYF z^z8ihQ?&cfJE@@C8O}&RB^Hq<@7w=&r*{9kb%G@Uf#u||1`Fbs(KUT_3rTUpO)3?W zkFh?Iozki#@W4S{se9kmK)34H*xM)ngNjMPfM@UFXxI}%B1auV#&g`G0j0Mn=JT)H zUyI_8B>e*FU4OmKxs*k1!hKwkcxySsw%4pydAs1c-8B#+DhLRI_X#DQ`~K{g?ZEmC zA7&;X8mpXGS10w}cNkz=LCiS<}$sCW=!n!MD9ZE{{GOqcYq2jso7`Gx% zbDVL-&(~>z%G`Q%F(&jm!EcwAM%0|RncfPJ%g3sWc-!r8+v0!5Q=e59!9zI$I z4G)M8lMK>-Qt94Bh;ijYLHsv_H|$O0_zsm#XhY0AkHCch9a?If?d{idz?~zvD?V3Y zd0D7B_*hN<2rj!!GN+~`Ei7N>0!#TzN5nT`fe^0#o)DQ~O9t6*roH{2kOoB61HJ(j z5D?Uj;r^>(M)*dBlweOFh;$;%!fhHx_P;G$6YODuUSB%e#EXbR%=`QPZ?&f+AQG1( ztFG^F398v4atFiF0tTn(8%3iF44g+BxZ8h9&A+=+Xn_p_aN1^xo-R3nOs@>}avmxh zOFWDYH}dRfj9g~M8_m_yH-0*{YG=9dBjcXe)!fl10+ZG$A)n+wQ@D8WqI(`?#jC(J%AJqqXI;G{w~`*A_&IQ||(M5OT!-2B6;!>BTt} z_IEtULykIkFlzEoOAE(RiG>n#nL+hZkn*=`J_D-hhBV{zeV8%-*%jl`E7uT28VH`` z0nEpNxlrUN$V={LBlNbT1(=)efv3_G}o<{SV-BTSW45%m1#@50*yuo2L> z{E=O!rb(BO882kc!R>sS9PVj~rJmJN3OM5%lSF!vECJ!#*zvCS3ux@<_{+p zY*Bq*HZLK9o>$zfpp&U$yd23|u%}EAhL?cot?zgj0}-6@Taj+R0IrUY!8o`-BA>G6 zo)%8U;$1gJPO6hk6#{`XJTME3Yy_pXaalM#Ei2^H#?rwl0hBzj%+MrN>sU~v4Ws%; z90D;v-F(ZF#2HZBo&we4ZF+v{6Bh6+&@p9UZTTACI{hRZwczvU{40aW2%tQ@atT4C zadj?YqAx4lGC*zY<{zh?!t{YlfuAsblS5L}IB7Y5mqRK{b-c=eQxGz<13vmbJCECQ zh#5v;P*v-PHG5*Cm56a~?=r+41=!2x7M0Jb7v1!4%FraWwnT}miWW8JUFvHwy5~ul z<@vR;@}bn_zp~!abBR-Y!wPFiQ6Lo7$0ojYF6<@&nOv-R(9kV&CB`8O%=;m;NN=;XfVT1V?3TdibLmoIMvmzh!z7s}1gupSk39 zxP?rKQDpM*I}hLMSCKnreRpjZ8NATZ$qDYxC;D|E|DF6aE>%3j@@6HN!atxU75`ji4clJFXj)Szlwop(NRxZ6hwnj7Pk-I zus)=<8Z$|WdbX=LnQFiWcW~135UG_Sj$XZeIDPs@UN|7F9*{Qn4{7v(G{A|lRI~Cc z8%$$&%ApU$JGC#jZ`|w?Y%fQ6GRS$bDy2ONw+AAdu_hqeE*fk_k(V`ZSPauDpQ^#k zj}A2fAUwskU(*zp%jpD80v$J!_`RtdZ`sxEToBmQjbrj);|1e7njIgZD7!gt#Y{+{ zt!}RkCvP_@^$B*CBg!RQ`=Q|!0>AEC2IJDZ+$>AFZ8!LwtIhl!Z(pd1-M*pNCkXDm zuh^A?JGzP0NNf}bSJ*>*`?1u0)T$dxB{J(^7?ESn zM8{P+7K9a1Gu}LW!+aG7T;x648}?>sbT_7{n^qmja>v=SgnubC^zC`ev5&@GWADBK zrfL6TTFbbOl!uKpq*A4mhapYyq4rN}Wi`yZCv&Z{LvJ?TGF^-njCB@EB1SGggBCfn zp#FXBxPj8yN!hxO1Yd==t=#A!r9w4O$Uytuuf;w?xWX*$y0>c`&_gTam}!37U1?7X zdPZ;FrO?N3pMmK;r5lNi;S6fE3H!7!L}b#vY**oE)3U%9x*N|BU+2K>)wkO8{~1=a zH>P%>W@g8e`z>a|c2*M;p@NA~Z3FX|en|PR-lTw|-YwQtvu_AJtXKj64e$09h+;^( zeHd+`tt5nGe+AuBe^u)DiVxhgG0j6;J0xE0>sPKV-@1E_7M7^q8g;v6k)-B_p<+ZG z?gJH7wpnD~7jThwe97_eWf85QdTfgp>glT4*A++nSLn;ZMp+h3aLGMSoVo)_#l|ud>@e> z)yM*FS*e@~kbbCPI$;OV}^MSzsYu0gcjBxcPfqX z-w$nm_-XxMXb`Pjl({r`5i?yJ>*0$Wv{)QX56`JLh()tJe~Swg#t|}5Xlso1>O{}; zoQSSbxr3I)+Px7PpN)EP4@7Ed;P6317l z?7<%H9o($pL{F&-h-}~On|!2FIrR+Do@o)<0@(C^Xlp96*Uv|7X2G&z$9Mjtzp!G8kp4=QGc5;0Ma0GFOR*9Ht){9%3SZtGe^Z3nS%w33zl*$IVQ65f)PV=>0owO zg3@pPExB(`+1%chVY1+trMWSApnG20$!~jNgFkaY$dUKRKD7)O4#*mvK5;5w#bQ5f z6jHyLo;2PNFk-2#{MGpT5O9vHz@G!65U=)N(tOXLAPRC>o*y?lt!iJ60d}tfvr=@F zXV5w&hB1P6wfN9UwYa3fi|w-Ov0TZ{Vz0m$p`6X%s~@9piGKSITed-tRxSUWAp28?iMT_Qkf9=kT)^)&npoFh}qof=yInProQQo6o8e|9kS(-{TZxX<=+C zxwrq}yg@AM=@&b|^R%sg@9$VJCsMs(&rCu#Auyg%H|Zbk1g|>%ViH7A z+y5r%eh7R(`P&XL5fMrpoQNZw0_bT=hlht5;*zD=3rOTRBJ%VLf`S)MaD2#X@h<3w z0A6Ik?>U|)A>lZw6=GGnRr2-gR~mYH<8MMRH;m`@?k-^Lt=JcyQZS_PcDnoC>M(gI zF~hAx)p*vcy}N6p)IPgN)#FRTnzVo^Pv1 zdoz{e(04tru>9%;aA8xq^&uxGXK`)KXj=$2*`xU^GLr3N4!q6=yzcHc!U{_@6i{f{ z8kOq2kD7jqDGOm$2^$z3q{b(vHwOQvJFVK3_&G%~-*4 zFt}lLWZ>2QXY1E4fYr=CyTmPNGCr~BNxE28wm$U9k%g1fwH6L4_!z^u93w*72TT#| zC1#SPM|iB|e(A25CCAUKt(9YEXOBgH0<^vzN5ERAYNneCWN_jw#)6+Mt*va0KrD5i zstW+ChzyJiiA){ zHM+IN?n|&yhZeihk;;?Eae-^srl>k&-&#!;S+s(+`Smv<>%Y>ZXOAUG z$qJlEKCZ5=PE%u5X;V1bTaQkaf+-b=-`x;`&C~@9eYQ0Kx9>M?%(lj%^>4#X+KYx(l!=FB7$7H48iOw3TRwFXd?mL4ENjoYjq z^Xlr1;nUO8iz_P;0RaKvnYWIQaIoe;p9jQqz!3B9G#LSH9(Hiy@mJuxL)7TSX~^-3 zTYyv|5m-Fj78VxHsHysw$&&Qs__3J#U|IDqrG+VHXJ^CUj##f#cGoAF$jQl7mpf#H z-NlLN#Yw?G34_DIpWeg2ry5_h=6g;*%ZGLP^Vc~V*qNUnwd=}>etvq6-D2|d(_@Nj zNbH{<-#&Jx{`u)L?lZ*CPgqy)jp6?Mc=OEvd*uH$ykr~S@NDOpIpi*Qs%k)SCB0jb zFFm>;+$;=cau87d@f}Mk8(QM0URWkNQ$Mw*bBuzS#6}n+rTHqZIE)OX?l1h*rRR#k z_>~|%f4pzcbgI$XqX_mqQd>)F{`ptU`{1u1raceex6jKgnhtOJN~4GK%oUg95UcOI zXpDPWePkUFRo5_N6{s|u3IEMKN1tQl{{Cl!CM#~fFnL+(3SVY@V-H1RzkY^|{aqco z?^Cm4t?v$st0s@xoR{VdnlE&w7IAOL;hbve;{&jxl-5Q(?TrQ3t(QGgXk1`^D~-+% z`KT+#*f!9S2x^po)a-joBCimXmGh`7zPVkM6cT~{^d)^|a30P!FDh1jU!FP$EqC_4Cm|i%h=|bGOju)wvPH@(LL@vvlhHJ=9e&dzz}6! z>kb>+JBjPQB70PB)OS?j>9cfFvr6ht#dduB96Z7L-e*$!z#k&X%@!?XJku zYnUxAxO6#}NjV^V^SkGcyWEZDP53{z+8b2z3Z1_5xh&9=l+c;wt%+C(>WX$*GCA;o zk=YYh8C$W$2xEVDY0o$5?GmlyUFG)`kLm+ z6xh+$pt|RzXOXLA)Dy0IIq8Fhh}q%qQZxDM>Avra{$}tUD5O_maQ0jJ-jO)|jW%$$ zQJ{RCr`F?pop*?;ENQe^$AWW>Gt5_dr~v?^BPS9 ziIiQQCZ>N|@N~wzzEdXa@*hTiUog4Y8UCyJk z#b6*);B2!>RF-_Ka{VqsYZfY8kb{NFaoYUE(0k2#2qL8wT|!ongTDR~a7 zy#b0R3kvwXJyxHMpWtZGGpMePjZ2ABNO>T`k;t^g_4Q~Fnl;tRVQKO;HZ~Ud>>(GC z!(>vhotBz6F-`D!T&%})02rkes)S3I)_y0iuJ(hX@8_%!C19&VMNov8#voTZh*EAR`(H zz`-|f?MfA>gjbncJ7DT27Dub4q8OwSwiEePw3{Wpw{2FJ*COld-!#F|5IsP_X#3;} z#XQ!L8i&??DzO(I+S&0O;^T3-%u^}1LR<(jQPF0Xa`|y{b*Q3$1qI%GqCU4@=h8Rz4DfDjmiU)w%<#O1NJtafaD9}DY_1K8_ih@-uxo*t(@xk*)! zzu=QFK9lj;ffm*uDuLKqgi&GA; zB?!FbSFQ{8`W%?`{OlS?V=bZl8KlK$uwEZSY=EBrcLoiD?-%JnTmMY9fh;$n=;Z%2 z;-0!hA>vY3GTGB3j2(y%v-CUOuQ8T_uqoF2U#Qc834us?=1{uZ($ z63RsC%z@%6y>J~{d-x&MXGlh^#>3Apf2eMhywhDThW}g3p?cmYR^Bz}r4Esld1X!S z%FZ{Jp7Z~)9f^?Xy=&%&6e=qe{0?KSMma>e>j`0c@|Z`+(RQpVLTs>kzsB3(f&G}C@#a@EtefLN^eE+qxx3Y#=U*ABHS?(k`KqT+GLO*@? z=I~g#;JE|&4|bCFA9zb!lb3yeo$;UlXl_|@ha2G#P6Fv^_6rm z&oozb`Fm-~#@%3(&b*B0{7t#@`J5i2ihlNbKwCJ!eQw(3PkomEeMhVI)8UUnO(W`+ zWT}~s0{PenTqc(2FKNvcZ02ozg5AQ0jT4@u%e+PAJ9*AqTUO;m{%L(8$Xx{swIyRC zuTtkdp7`kwpIm1vicP)V9?3yv#;4yymcJMbD5`entmk>0ELp=fN<{L*^hETuzAUhq z=`nnEx6Q1m=1@OKC))x}sWEmw(RFW|%kNK~aETz*sSp`{Cmr@lM7=$-E7TOD7HT^m z&WNU`i?mRgTlLQyuIJEna;rKT4Y({fPj;?k)s3UmPKvhlv~-N<27>!AX2pCDYHvH*j&~Hl)o*D#{@PupIe4l0>Ea_vuhAvn zH(a?7PLgxovrKvt-jc`j2~J)k?T(}mtLC7Oc>1(A3)Vd9FhprKDz&u|t<=geI>QUL zNPgdX?OaG=rvEH@2$eNDYd>fgrYcu1BU`mpx4lNWQ29k#kTJ5%F}lp8ScI>7e$I0} z3vZ^kx>em*wrs42vbN|U+;>i=pygd&S&O5bv#|L(dVfEwwAmK(6;?X;Up%SZuxm2F9h8Lu$6g~tSk!sWK4o&H_T;KkGuQ!e{dw=@ZR55uC- zATlLcN`*t-%A#X=69R7?MovvW68`SxdqgW4#^FUk&9}e0zByL^T0$oC^SqlaZtM?c zH!Jizvwls1Yi?trmZV(EP_~k1To32i56wAS2U9+7-IpIeDNO9onbc<&Sbe8(R9m2V zd`@4~2HwdD*Bv90%&Tls#8T%$)%kY$l;xMXhNNE0Jh-^&k`98KG$PeKHgU#cp9C~s z-r9B1%4>z(k<;xj{=1x+l|`^cQPSqHcFYNnDZb6KXd09;6djs0%0JP?6%~0le4dcp zuuCS?UdmnPrI}$)l~;37zC2AK`rf9d(`Zp}{{B}}~o($o(ii%jxNV1iy#mW_&o}$NmxK9~f z%+Lf^_c#{b{mwChJc7%ADf*LOt1zGgtpXYsS^tM}XYhN4$XTQ7$>diWTdZhOF&_Gdqo(r6=v|3GQm=F z8W!#OT@@tfT~l`;0~X{Vv+15;1YAs%&J&(!=XT8B0#`I@Euyn{7H%(dW?#x^R)wQ$ zpJ964xJO63QsmXmB$?sTO9%4~W4N6QbjA>*nbjogu{0v4$O+PN2J;p-EGy*LV9|&P zY>`{kGSr`9rb+tVXtV-pFAQPMNx{vfh&2ESwOCd_7n@@LIh zPl$3!p<{Wu-K75*z@nb0sDimy-K;ceTP99=%G0 zPPYM)Ng0BiRAH;M8IYO3J>#!%*Cou5v?zhjaNX{;oA-m2K@tt^A;P;htmM=@uOnJ= z$iF;(YNLI;w|QJMy*3{5vwHF1+(KqyzIS1>`3zJF=b!SGG@jtUtvZ$ahNke{s;z(> zHy|rZs8su+;MQjDMQ(v)kzUp2Q6nFBbnC$aPU-iLETp!qM#nYTxv^m`aPo3R9u_z; z{ezGtMryrL7f4K~-h#7CVe&&=qlk@WM($x%lGzFb_r<_mCt+1oHr^;OX}^(eC{4z<$cgZM6h=IgsuEwf=J(-lXdX?7RyyP zx5%1;v9rv`L5sX<6-?2oy~CodQ;$QbC|mZRXO>SwpRhwAd>CpMxR7Or~;&RMVbG!y(r57XA~ zG#0UbxwXEQ?#isF{35jPmAl`Y!+Q3A4+Ag{ia_%%0i~IVbq8wS7TUt2qivm_d$=(x zFe-lHdJ8%#^mJ0F=-34JYMq<2d4M*wZZlzG_w%M&D`VyKnOAIxhh#i*hnwA=m)>e# z&^(UHWkc*A}AvB>vPWDE^M?ZEjAYZcv3_vnV6R|fYi=*9xVPVL%H(6&$$~;H+_~14 zv>+o!ektRwWZ@#X@L`Y&^wL%+`(ed|9>a_|BY?_|LX)v?pqW+bQODg{k~dbI!(2a zm+IfhLRV|V*2qq!@xI(ubLMm6kUt zrL5Cek@AT7;nk)*%K+(y5t^q0rb@||`*c)ROOyaPM^jJl4E*G=W7aHumSa5YLu?la zh>KImASo*geU&e~s?;(zHFHF8qglzTT?#Z^0j|{n@tOqBS!a`}Xg)dV7QUl6%)?8) zsW!IpnQf{}6nmO&hu9e2lyO>KA^tnZRgG_UUu~co3pa%IZtjF{B?*h7l6l zh7g>xhpNs@lwRYdXsW0LEjRJ15gO+9lkhu}$D~qBt%*B4;kwkVVZV1(0yQl=Egr@y zBa8oY79b0qZHw}dxy3CnO=HU&k_gIHL*dBlQ;BHP-K3PjmN0m2mxK%)=2b`k zlu$i2>blOL?*@9bR0?-v+;#7ql}-IFqqcY4;;)3%e)l*dl%;{)V><5wf;hrj`=;)X zX~HnI2R3%nN7v;ggC5JSLrS}Rib@t)eQNd3Tinu zO>j|SRG?L8u`BEGD`wUDhJA}647o-b&g1jFCUQ_jxvGD z*9;cAPc8D|E{pIL{LeCa^~s#}pz*3v`;jr!XVbP2Lg((FEW@o#Ovn7gGmmqfTir3GwnQ+T;t|w9W z=vByQ>a(dsQGfcSMF18ceT0V?!KV?P?jiHIa!Z9;#uck1BLM{TYk|2%@E%^#Camv0 z@Gts$TyHY){M3g@P5N)89y^Bwc}9-9*4D5i9;urWz{%aA#!sP>l(Nut3?E6Nw>t3U z;P~KKM#g5?X*tQH@B38rPKo~&h2lyC0(aOhTlyXP=l32vbtUu(Yq5uGH$JnS)@TFA zhMxtzzc97hAWAChsSeaZQUIvAw-kO;)VU~3`O9RXccN;M>ne?t1zPmX_a5*G#5x|{ zY=QRix45BUi>t2vdid3C>gc2{JwlQo@)f(}cM;SD-L=OT95H{VvW@4MaHMJ-!}=TS zkTk&(u&BW=j$EQ#k0~z#p=C9>YpK#7|1CYLd7O2F6^4~Cg}Z32{R##?KP}-l7EEn9 z#-Ly|=*mEy%=!n@(CKcv#Q~+a7ljieYQwu8e+$Jku9LjFtIbXgDsK8kaHBNWe&u(R zwf(Dj*w~FJ1_({D!&RyA@Jq;JL)B)|=vuTa9ltplb)hAapZZH|9LPFbH!V0QSK9PD zl7xi*6s(84g1o|;@B6fRJi(#7f6pJjHdfcdFHXUzIvX6wSGD1DFWsw}CN!!X6TE+% zfwv7kSG#~9r1K+rIN=^v`GycsDJr65YJR z!g3t(QA5+Yd0gCk;b9|^YOpc?)}x9Kvh`)PIU`GrJqY~N>n|j0{J;Y@;|beM5{$tv zIFA*-Nq4NjK&SQ#A5dDmm?Jh#P^|=VrUzXnNpw}4-NVusLb{P_H=eL5XgGHKrH*mJ zG@;x2m<&>c6kgvv-bfvsPY<&O1)h2%E-n`w8t!IA-!@>3&ft`$-S~_Y%FkO09pT^o zB`&V{Cw*iHk=&uXNH-n2GTKAN1FA%HxWl6uv$ju9&s3aXc^~+?aWV+LVGnZR9(Jt) z-8j9k{s81Cf6m`K04tMMwINNR$ns01@H!0%0%|Q1J9heue(X1h2!9UWG-3Z%&I>+z zt9-1|PK?pjMF~+yrQQHFmjwj>CzkAN$-n(Al;Tn4er<}EYPZ4Rmk4nC$^^L>-SmCt z(^KBJF$n3RKEe;!TtsB%_o zrS&q_Us0?E8~r}B8Ea@sO%oI-qUqZ7R5K?{{@_kwsaIwwkVsb@^X>nN z-|T>~@d2)NINfK1!zYn*nqX4D_#-fL^^yIWrkn&=fn2YoMUOCh307zpRz*^KybeI_ z^9#@Z?V-NNT1DD1cdE=cSeM01K-O-tNmn#mqCW{PmV-}=Yzzg`rfdGy_$^YU0gWMw z1z`{E(fd12)Mu+lv7%F}7HQO`v7FZGK+8nMjT;enxHWel3prk~9aB`Ra#g3hn6&~S zDur!f6AeS*2A(69?H*bz6hOs}4S<9eQN z&)_O@N(_4DNA$L9K<7i}9z7m(PRrEkZ}83MgtPI6?Q&pasj6c+z!C0H#7^|}0IKn4 zw&jg}39(bFfdz`pjy9ZLAJ_|e0Sd|~3KdqGjdjTvIs>0yDCJe5R>1j@CBib{``=P9FFB zy*oliF$kvs`LgZsb)K*4gKVeY=Pny)xm1$h}kNBygd z3?7{n9~>m@`##!~COHs3k&4m0`8VXo@W5M+s8GK+$6y^&q(R{_q5xp|bV2Pn;ycV( z1G(A>6B}7#jcz-c>8ovB?(5w&27kI7QSr=tX310svo<>LI^4YEe6IU#SwLzz^Ch;a zY2UIgFR#34Dc{!r8x#nG~Vbe%tQdG6q_^;$O&htp&G)_>jaJ@og)ioJwdZv-_jpA8tf^OMG3IfUi%gKgP#^GkL)xT zru`k&{E7rRMd=Rxi7V$BxM*v|Btz#j8jm_mxEc9oy?P>86P>#P* zqtvElytW~U+B8xQDoMF~Ro-g+!YPCY$+`QzznOOguiSL-$riX;+Z;9`dB3^0r9%^{ z)4|y>q5>EZH=Fss0OL(*@i%uM7_*biMU14=*EOH?rr}p|s%AGxU(<8%4w}|nQ#@Ks zH0;GGoAw{YC!1#0JI}=sF%!9xiHjaPA8i_yb~|Qp=yCv$!|_H^z&iV`)H*+xfE#t1 zTipLCJkG*l!zb5eCICqODK3`uG0~bbbet0CfjYH8H1tv6P1E1>%hM0cT$cxie>OMl z1IG2{B}bj*FYw7(yY`>uNXFypy6Or@LL7cL;`a7pReuF)l}Ki?q*BQPQjG=4pSPaP zR;=W(cFzZ-biOO(Ujm_yE(uRS$xc9IkERLZt+g#&4LCM{{vg;RM{1l3AZS1xWs`O z$u+5ZB~(8*(f(}i@tko|n`%RY4*@-E?k-wie0S1!Wb{&&-+(hNw!0zsD8@XvTzJ9t z<+qN~l1nndT3xatbPjp0tdgafQCwWqNOR})Nuj%u;_?JHs@ulA(MY@|c}%lb8#HFS z91kAIdfCsmTgc@s{Cu)O2;;F6MNp^nxsCu$=B7pI*MDG-Zn{HYxI}0DZ5I7S<%3Dq=UQjOY)NWj1y-T-rT+R?dpoB+gxDq#^?3?s+HxiW_FGY z)_eL`kz~`+%=&s^Q%-!AoYH1xvP02F85wXWb0RtvYnVs{UoZoCRn|jrR~kCb#Ca;K z7z2FEY%B*_^H2YB!jT_@r_l9+r0{Y_@NLf&W(#R~^@sqK!y1vcgC~)59nxw-*{)Rx zFA=bz01Cv0dwH~-@z%E5hBKSJ=uc3?va6h&x`Dp;N+pt)oU;mEM+IfbEe%wts`a*B z?(1xLBY$+|)!{wP)f{rLUodYHS2qDU%3U^TWXSI0oRVq%eP(sV!IZtwsUY(;PPO6g z$qFLgn(X!r#I_yOr7-HVBkrIaP3nw{On*zkb7J>^&)nwInt{Po;;>ryy-O|Qle=GL za7D9kL2(=KTw}6UpMYa=;OlP|PB|<8h=C-JorUgD7=`T{?5)KS(D4(acmuCR@+hI! zV6Qjf4d^Vp%?5ug8a1BQy_V%_uQ2VfITt9hq+BL$psQ8XsyjL5G25D42JU!)#uod4 zFM1ZOe4D`)&VtH1-|xAue$WlK+}(o0T-icvt9$^~^=xi& z(6GHD!1ZgBu>Le*!LLyi7EkrBFb8dHk*NrsaEr@oc@1pLpQI|;mn7&cD*Qa_(y|&G z7dyIMRv3f5UTc0D-bQd&SeqS^5<@Ld#%_9dqJPk_LiKJF{&F?)0}5kjF%&{X&0zD~ z?tb~KA3{}Oak(iG9THW(MNXlWRx0LSpUrjPv+U*uVk)#bc5C8U1%XJ1!A{+zB6Uw5 z9mIUgq}H0~SCZG9lVjY(&!=ljFE)?&BVSXW4VUi@8y<7VNKZ}D5RI$B=b6kBH%?W7 z;n`SN%NIbt@UoZVk8u4Lnf6vfl@Ui;Bq-aBS+v?IXZb3%Uckgm2F%IdE6bO%tooP8 z_guiF)R)6p)>6|MU((7fWzc=yX{C14iJ7@&^11E}@N=f=brPOCQfmFZ^40{djaQB2 z7Zwf!!zs(gT>YSodG?o9W^E-SSnInKm=lYf@OILOgWU9|+UvGtKXZRC9hxNlItZcIHPOpB(JvE^K)`I4Fe}yo#*A=T?j^dA81Z+n(ey8<#NkY+XE` zC)1ZBDCN3%2(K+i#@AJF%i21R$5-$Obg<=#g-blNh&mSgi`eT+n%6%4e)g>L6S1z- zzcs$TarSuA2X=u5jk7H}E+n0RbfqA6`Sn*bc)?(P7kD{C${*dr7u|$D-hSFtSni?bVV26T zwWS6q0hj@;+`Wvw)wb(SuGS#tSC88hPrc-t#U0#=jUwH>zb>y|$&(Wsq{W(-kI|Od zmUk*`wmBx_+(hE2ICWRM#PA>LDl9d%Tlnuc$Eh1$n#kpw_+a6r;0N>UxAE@cTjo}Z zS0?_c#*!!8!EffW!Dz^sjo0F&dex*r{qA$gYjItPGb%`R=OgtwMafrbmB?4bPi`MD zA8O2hs9(%LYm_IgV|3v!ze>1Y_3HilewZo0wwZz4^l+Z6>cu3H;;U_(^_JD!(0imq8j|pv!2M47;!a9`Vv(t>=MvKCV%q3G$C4Vzo_{(RfSGyAbB}b z+Vrlw%oDGRTI{0*RIj^^uLV^g;G3rSeG@jNgonT3pd7dC5EEFViTwQ4K_8de9+`yJ zvh`nWc~{a%DX9gq?#Zh+%~8o`b6#1XMGsE2>uJlO-WA@~5@Ji5r+Laqo(o?1ok9~a zp^{{>KflNsi1oFM+B_bnvZZPN!Yz=-AH4hR)j*)dhwA09!<>JlC_0CQb$NyLw}+qv zOZUFQGzDH)@%{KfLTxbZ!eD8c;#kEB2qvW~(UEEDROh3&bhck?^^)c412=;QSn4Zj z9!<9n9v0XRU2+f~-Q2F18xM3*Kl}n_K={O-y!0_LEFVc6?1ex){Ga5s-U;{ZT8H4oK)+e=F8=d3|5MLPUE~oe=|kJ^h^WLv z^v#v}N?0VTGLGL!f-Rt=5xhy`mtR6z5^5i58JiI%D!S>926J~T1ZhF9ygyG7Bj;aF z2iKGHps2xB7tft5DOyLeC*BU1dZsw6AIu#&p| z{#u52KUmh9lC2uF;kR-$4<!u{O4%-kKJdS)vV@iZTLj)K z_#Th{jJ{=XQ2Jb*C4t_8UfEGHqf@zh^lOj9yh6@Is+2=^D@6jWLWp$xHc_sL_cZZ4 z2NmHLx5h5sdAVgC2HyJe%P&XSgy6p>zW*>L95h6KKlogCTxi8#zO*9J%MvnN66H4T z61?Di>)sc9Wt-BKZpdmxja@}2{ULi#;Y&G2QIvcj=ZvUnaqIZ6KHG;im-Mw(Ooc6$ zpyv`s4@o=FdiV@04rzu67YMZv?wb2wJBLJM_*S-T?Thit>qon!LnpTG#Q%7BjpvQSDm`^;l}&@TFRU1TwpU4^2nnLSzU>*(I38ug zbk9je8IxE(MW_{cY0NLbH12D&_{e{}VQhsr?o{=1-)k%b+EXJCOD7||I&SzGV~2JM z@H+i<-%DAfj`CDm(AOI`#(GgD`r49t;mgiOgkClk;u|l`Nw?w#p9){xmU$;uJ23v> z!9q!CEw_SpXm@94H^buHlh#~}BF7ZDeRS3>j1^rGIF42CI52d_xD}tLvw(CHteRk9 zFTNO7Qm=)}nLj@NU{AU?EuI_?!=8%52O)0Ag%tJl-4gEwhp8oJF^X<_PkcXtQ(DPy z_tDCSD1o_o?BZZ+08!g8ed(S<&xONR{0i>nppCxCd?C_Pk0i5DMk>&C>Lh1)p?tz< z`KrN>r#HQ{Y#+aLlF!*TJvobpe!1VS`|PO3rZ+}jQius3_1EqpC{Fnf)|wVjc*&WA zFAR4Fc%T+MKRyUZJ6u0rX%V2YWgZ|R2HuPVEcwWv85!yeo-$_>AXIJ2mq``UIy(DT zxOTnrms{k{lC%Mqk6|07#VIE>V)&nwrP~(w@C4pnj8Z(edY1RXQu$!P=D+l0eVS~&hopZ75BS`-t24_FWo z^z;?BN7E~rqBR>|Gx9&+RSF@->+gxbI@AT{=eGLh^XGhjYZB9!+4@9*wC{+U#Oc@A zw|C`7a|k2HXA`4dWy@ETy}Mz!(mNLQdQ*HAToOmz4z%KxU?P!Jp1>nHiY8H<*2F?B+EAEj(y=P0pN9B%G|^ zAR=_vQ0s*5tD_xXW(n|w(be$v?JO&(IZP&@D8M<2*l^l?GI-Hs)HZkiB}yyx#UB3L z=h@5G$}!q7a+vqGmfjZ}TA%)9sV4TUrzg;NLewv@zI4<#Dc-`&b!8q`QjDS<@Es^{ zaExw+%jB22-{o93(g&E6=EvFM;O0fQo&#||H2B+WtLSCuTU}0<$^6V5_J-SEg_59c za(K{FucR$$7i{?7MD{hYmC0PiEe{Om9j!jU5y$Sqq+ z$alZ>@yp!!Q1`?73c~gF@$1=>jtq z;b9l7Omi zPN;>_>uL1Uq6}{+6)&UvVX2rD_^(xgN=2vIx-E0%v(JC_6S#_g(UO|h;E+ML%LBA6W46J~lJPZP7; zPKVgm);&GSvImN+&yw{1=PbZ4e*$E+C>*z~frY=KJ$~=FN-Zy^&F=QQ^33O3ckK1I zw;uFPl#w9BBZr5 zwj*z~<UeH4 zz@wJ<34Gk7N{`xtSB!~mT48GET`7t^<#2>)z;?xMe>=Z_7Cswc-^+;)?kTUg5O7UQ zI4a)qvv9uza~hBg|DSojF@>VXFM~thi`G ztzhf&jz;gn)+wlH;_O~<$L0zLhiKUxjVbuK0#%E^(?@KPmt9OdP`iDtIm5oxP^PeZ zs9FTHx3Lt0qsb^5#Ia|dVRBH7xgh`9u!Y`H!J-|FSV*N$*~*9G%5$fGDixu4&z%JM z6}IQvWXj3){Mfd#nc4Xwwinvumc;Zj3q2rX%tqUIrOqOE`iDtDZBklcPF2dZz95G{ zmzU}4a8NqY(y^y>qO7t_^N*xk0L_7Q=Ro&r&R5cAG5Koy#h2W=Rnz>mUa^)7_P?_b z1>*6=V0lt(>kHS!xTE4PvZZLj#L^B6O`fW~w}g+< zO$&Yg`N5xkcFvVazaNgwUuy@imi(*u9IKioBx_Q>JkW=%TUk?>t0`Z+h5s<~>lpRdp7BBJ!cDowAb{B{4HyM8Ub0teJ&Zd*Hm-&sjWGIaa@n-)3pN6tuzHG5GvW3U0-3jQnWm>Ha81huS!Bt6*$T+c>d* zo04;7)KVPAD{hN&RfsxsOZ&X^x-5iUbILR5N{WB5tUjRz$8Dbn>g!6(xL3LVuzqE zcpR>JdI{_)y- zxc~#IM z5&rWRpJy+7?mQb@*}21>P%H%=?vnsYS^!S+N76vnp7Q?)p~P7NOGy=TS$XU=Gxp>9 z^b)r`;`vhjRblL;?-}6Ai?)fiJ4QpRNtga*%9J#%Sz??iCDz4n-1iFjg`aULLKLp+ zGs=53TOX|GXd|1L;u-XB&K-`{mtxW0Eu;r5yY2>XAJ7;C9&iMXWu$=y6V1D!7 z^ZsMGbo8EdAxPn8U*?>Yt#lZ`P~W2|#cVIr3LpciT{VY&r0~1X-35)kpB)jdy(vQ>zY$Q}LLZXI#(l>+0Ut*x_$FH#L0D*LX;T+m)L$vN1(Ir=(V8_3g(wZgi~ z^$$2!Ub;9}H$HA#Z!hO_kF@VVA&26i;{xVS8~nLhy4Em8`=M}MaVFP(PoCM1Uzy_2 zXDcQz7Fo8)jK!^;-+VL8<(5o4AYEkeyd^6l{xAok*e@oS@e>K2#B8NBTG;F@eglKMV;eh7pmcVX@9z}^_f0fL?K7sx7dVS z$tdVBee+VsCoADCzw(E+U3YW-NRqpP84D%}gRIIoBS=EorY;_Q6jFhx{@Kaa`K!XE4LkJgIN)EOVKyIjgo3E1z{f8K371gUgcIS&#TBa(E7mfEfIAIEu+17#-z3QkH}z_ zc-x#S7tp4}obZavpH-uZGvF9Zh8yePo4Q_k! zY8))!lhHb}Xz5?)*!s0qUpqMILr-vPaf)Br!C5=o%j5WH8DR_7vV^ZN-a#+RnA5Q_ zZR0QJmv^-Dq*t#o^~Q&|o2{nk7@l>#qh7p#Ij)#^{qRry!)X|S{v(lT_V0gWX17+s zSD0G!2|pfWXg#}GR?`}{xPCcUqXUE7u>Uq~@^0$;&^hwhT@$CfDBK0zxuG@8&8Bei z^2_qjCR>D|!LDKI3Kte@fFARXQgC$C)P-fIj>TUsJaSd?$7FDL!n;0L#>*al(*@$! zvWK$^MEY&_SQ9yNeI`a%y_0OTAnci3(LVIZRF&9!>?a1b8)e;M4P9pp(2{D z7QZv9z#40b2X90oMPm+We48aGMvVadd>&Rt*nG=C^)h|jbT|wgMOTDo&L7YFsarUZ z)i(b4<|4PoHQ?9B0v&x%PHTL7TtC3lqysuI{%oVp-pTSe5zsQBY!S~9=mhTjKCPovhw-#aA6@+u6%6?k%lOS&4TA1@{B&LmxTIP!{W-k|Y9 zH`+!^Qv{wk;SADuJ%g*g|H*Zoi^sc>f!=AvhQ&tQ65ft+^YByVKCJWSw*GcvZAbAo zP@#UUCdu^Zg<+q}4)WWf{0sH=$Mp)|y!g_F?ka5=Tx?&rdnTZ$rykN$*hkzQJYnt@ z&?WS&fTIn+?&RU4?!?V?JnC@FtqptsmZ+Y5lNgaG_{LkAzVFb9DIww3wJVB>7K@IS z{t7(8LPwl}uGcM4v%GTYJJG$mB7I-Y1CwuV-r33j7Ckt9Z-6u?RMaWEdO6dGRMtDY z?iU}8F~&667Px)i&DhhDk?|2R={Iq@_XLVo#ENs`g|RE z(9ovM*||$${0g5}aIEez|C`DMof@$%vBfWkU&b#T=oggvav{oI#cpvX*}K2kz=(`N z!@d?i6U3iLp8KJF37|PE)*1_!yI0=L)aOJ)MN0s1q6F^ZoPIot>x81rfmr2#vR4s% z+y@g?b*Ujqa!0ei`SrL58!tD`&D~I5I??f3_Pt%j@AF#=9ZRNVABWzW5dAm&6__B9 zJ@;93P)LLKj5yg-iuBUo$25izEud(YBjr<2Xq;bk2wi`(Ou4`^RU}G4J3Qe;8|+?2 z&)6MOPwypORfE{9^73bzs8p89Ztp_$iLJg0BG|KxNScJVbc5s~PT zxYu&sULl$Dm(27E=QZ~lzDIud!4~#u_bh>?JH&KfKT-;~PZAcit%3hyB|uTil z!%j>N_DOtkJkP>bVl?<^ZqdD~>}HEyHP3yQ0|k;2+K#MwXUe5dI6p8=7S{^l2)fdD zH#b#vaU-Bkv+Zk7Yw|(i^&DppRdv0>)(<^1wf6%QiCDOykdY~Qs$1Uxg-mfENNkiD z%-CJI&>&&vw@yUQ;Q=t5O1dphN> zI&8c(DG=>6nwwHElr;BCy?e{Dxm=C6=>iC3TC5Ax4$%3X0{)X_faPJ@A>9Cy%Cy5G z=39aR{-3O}H--Y6Wnxm0a}v|-B#_zzFPe0UAiH+TOOm5+WvhKw5A948Z_A7HWPsPb zHtVkw-RnPhz4b@r6$)wb=+=1R?XW9#+VAfqO+@P}h?vHSt-STmeM&VEg4?$>4GyoS z>6~>Chq78-R13fvg91S9PGDiz69{nIc#0~FTmDah0_T6HgjfkQFjnoBZbZzbTl!Bh zb82dz`^9V>3ASW(S6E~cf%asCP_6!gP^}s)F~02A@Z?akK(>~x$s(w|-K`%E8V(v1 zW=cZCdlWYAz@Nqm_Pm`^WnyBEZTyu59IE%N{|sjsDmo*Wwp;~Ijx#6F>GLZ)Is%cE zDTVvRVj}4fd~k2rPQ21B@C~VJ)Ad>0lB5*hJ!MHStoXxg~fya|0Et;5FLf3l$lzm;V0lHhu%1b)bgA!;) zZ=_b8RZP5iOAqr8A^z1ieqe(j#>}p&dU_1;K`FbSo)v~`oX9vW8GEMJ$L&UHw9Jpx z$kIc}W`*(7T-@S;L9O{Z?LLg`6Xt{?xR6=5cawL7LrVd{SiGYxFcA+%B7iM^ePZ<= zQS-?$Nx=9+>mBaUZlU05+r2a%OMk z-SWY-g*UUml9Q#bZ<5aE zLt10>W#FCwT74}3yhqw!5>y#Z%W)o&42iRTLba=>c@>y|5 z(SHv%^L9z@y(R8&Ny07{&v>>JSKB2|_nDm1GlW8Qjr6l>p6|j~t^u>~Qk|J*S&{>r zfZH496fve_l#o`p_U!WC12k_;ZNmuDF%eCBz>;MqvzHJH(O-aFibCdWIj*dIlsnwH z*qzc({P^SyuYB^M%2oaT8opW44t>iBy_0c8gCz+KZ`^yw@8-um$uX@dzfmZ-FL}4W zAsBCH%=4yKS7R#frB}#Yd(XFh(`0j4oEi@)j$^(Jnm6OQ^8q~yu+U}9jTuO-DS$f2 zW#=8Okv;E|IUo5HmGbm|X)%~IE3ls`Op+N(tAfanOf1Zc?09Gs`AJ2>0aCuqC#BeM z>z0_JXG*6V#%Z7>P4VysN3qc?;gKBWcYb1ij&E^-2vP88o9pjfUx);l{i87fLzUxdE^zd#cp%aYl>#{fh)Y@#(JI@iV|Z2 zvFe?9Q7ruW@!*$ibq_%Dmo6*{Gh0FE)|id^Yb(eD{UeHB@&!e!|L+E2*}$l6 zN~M#aBW+P;MuF!h!IT*V=mALlpB1ms|0hoG^MYp;rXPerz5uW%5J;C-$tw8na$jjf z*@1jRp^&*~{I8Z7)@Fl?%j?p6J@~B__`=oz`pWhH;|bVU=VJ|ZClUC+J7;#reWtr1 z7}{QZroa#)On>)yg>C-KICRgtF&@!wmg)-*B;|wp!(`x@lHI+oKw)z_C&rd6VDk1$ zp?F_)Yu?BI2cs^@-X9uI@92R2i@RV2Fx(o#h?7&Ax%&j|D{}2CjTw|m$m!XqePCen z-y4{itp?{6w(zuSF&t~;-EN`e(O`{B4!P+FsnO!x!Yh03hQ)5NmFm4t4DC?zq9CM3^mL3M^R*&d1 zR}9Vi7jB!`FBCI-5hvCEoM|4IZX1tiV)ib(Zjw;esq3ui0gYfk6$ZG^nD?eRWB@s+aQecUuL~x@*j!+F*yPZ1a|ELGp^U@Cm;4M>%K2DQq>AK zXsFdl3l8bIUjPfT>lAPQ|kTb|6s60;bX9=fv9eghR|3t9Ztsx#HK+ zAGv@$ccEqR7s8Hk>`M0apY8WL>oS?uTA|vCYtx_T2|8IKGKkv#^u}ExA-9#UcvNCt zodVfkU{rYD5tT5P_%4W7?MLha;7Tm65YaxXr0nw5_ruAr-;`k~aYWQ&pXw|dV8Fo9 z0^p>d31{G>Dta^h^-w+>sUzq0$$v@xH;J#3cKx$4w;yM9z2qJY;Q7 ztbGwV0_fuJ$YyhG_4a(ofJ?Bt%Vz*BdxWd_mD({HV*^mKd5{g^GC+&kclVkVfsbwo zlI*B0V2^*MdI90beME~njsjjrZn`sB&rTUjzY#LfXeVLPy*2_+<}n}I#y`Jc(!3Mb zZ7M}BF4g(e^a7eU8%@ zEiQ>MM~~mq^Tklw-IzQ#BM?1Y^ZH#ZWhtCV_l`#LmRe{ks~`G_stKzWf+G!FkU-ZE zvkoSUT?;0hfc;&IO67@p9mk|z-sp!TK(1*XYGU_JlZ+P1%@1(U{3SXlB} zB2w@fDXTzbj(wD;0?Z4l7iGX}HqYmS+j9OMDdU(@LKF8C ze___@k{EmRxV2sYhN6X~Asi1P4dUM$@EkT>P0XbZj#B>o@lP4V2X58Ws5y@V^Mbez z`S!sV=C8r2Am(t$b9!_1uhqq&oi^;nn+pXqMj1u%fP;+`t!Sep$3;%B
Nl(pr^}gl5B>V^Eh^2f#pU41=B6)A~|QVr|UU}p(^#c7Bg$B`U;6;&_&khvOh~)7O=VG>qc|KYx z%gMPv_>}cTm_skz35a#G8diA4&z7oo2GUz1K`|L>5>!OH58N1~uQM382Q@5ccXEhy zS?JEgdJAPe@t+4nRUpuUDZZ3_)5gKGMvE(R>%18Zc` zS?0%N%@V!UPhNvEkZ#_d$^Mmch-75{4h+$0C3WDumv*ZtoQ9AJtrt zvr{yl3C4>jevV2o42@3PW@+grf33=1s#(v2jE&}33M+MG*m7w14DKoiInDN@`fskY zIt49fpmjMHusy>Wx^BpJ^4fLNDBi;(f|t+RbOMioz=1`!@N9j>EM0|6 z33tT|0F^0yY^FTb5JZLN1HK>Ur6#?I*_^x$(|T!$#fJ4V`$NyakeeEyv*U4`_PAX? zAIxk45cFr75KL{W@}T52+z2lp?&6B+A~YrEQ*?&iMTKmA(TU=Z8*Jw9y%j)byFa|- zuHT~zDtBzEcd|L5meRIqY~zSh9Tzj{AEB9{($d^LEP_0h5Oq`-yw?;k!zLv{=WRri zINHWXHCJ}}hl9kR0fipaD?3#U`B`k{N60|C|Mw zt5wRG_=u6vEq@;1)9a2Zoq*bxEx#H+C8+s_$MJuf8XD6;Wv7J9oW+NEf2woxkibE!RpQ9N_)j{*&egDO9f|1b95Gpwm>?H`^QM;$9FDoPzIqX-Bn9im845l~P-s#29|CE{e_hY}etJKg{RNWjz1Ldz zy36k_Yb`a9OjpLbW3lGcZtMX)!3x((W_z|Z+?`$;@#`D%F18#=3X}~TrWCs75x?$#Cy{48hM0Qt6w#?p=e|D7@z`@|=#GZA-Iw2SQr6mz@>*Tl33`Zf< zXnzL21O%566(bbFD&mXAIynw{)6a%+%Uxc~czl^yayN|e4t2shc?bD0s3nk!J)i1^ zXH<#v-#K4^`90pS!6e5e#MUv`JE-oN>TWGDF3kP5PI$2{eiDL7fn!@DXS9KqnfQ(VsUoSCG?3jtn}5WduOkEh84 z(vt`0h%>_(5`9mg}Ln;n+V`dAb&j zO*rR?^AE%)gF1}1MqB#D-flsAB$gd+8AdI9#TYwK6PyUCsRFyYRl8-q&Yyk2tkQfu zCB8{)dMd&>!>Uut#{D(CyOoKXk&^Ajg80Q)($9KBRh3sk#jeI)1=C-?3w=N21ptny z?5F>}1ZrG`g2%fhA0IY4cr!b4=|>r*Z=JrCI$xi?6PHMETfA>Kv&R-1o7b>0Mfr1^ z%zDa@ej?E2u)4DndJSDOkC(iab$#m_?(dKn6`7zU=alb4nhe9(e{!uPHTQq6jKO}L zsuF&F8z1C?f6E>8lPzE;F|^8gNxk0vLsvBfX=a}Ag@Mt+Qe_w?IJoQEQ*nbQdTVrA z(&Gug3D(^Q?F{a#h3tvm%D^F4+BV%n!2J^;pS22##*c3UYvxdqtiyn;19itg*v>`4 zoXT^CG>{NM`irxCT8`sj;%}p2rEM<3CgQqE#K-cEVXi9(tWpzn9KN2?`1;`Cv!L^i z7nVa3voSn*jq`#zis#2)#IgorXL4zu-wHiutFYcSw?*YY0ReDKWrLhZn|?~YHMLO5 z#F2W!uF4S`MlN>qoq-v)9qIWTxCy#e*`5Cw0K0QOOc)$1b5h7)m?}4g(vM|rp5ayq z2d5rCUGKjT%ML?SYBo&TMJG0@3Yvb>D`Zb(lx>nxMSQ7@IVHWxzVwap1`GqO&TP-( zI7+eK)GH~U1IdA$W3MKz;_A=b@5lm$QT%*JW$rpq5n8?SV-ak;e*ySO#0vdaAHa?S z4*Hzy-@0;aD}3dE(poz?QSdn*6$kYLV7&rZ%%@iK+rUG$vvEFu zzMJi5R|4XU@q6~_rS4d_7Vq6xgsoHT)zROBJ)5dw)lha-8!vx*;q?nWsR3K=*E+E@ zdBqU2JB-}|H&bHo30_;kV* zJtIVlNlvx&Kr?FB{f=WSFF+qH>_Y~FpNvp$`nJqPNof;bQUqAjVJaU`WV$~dCSQ

H5{VW#< zET(DRB<_C9E~~!7=D<=8nqWL9PHP77TD&T_J=_tsgHLK@y$54*3HwqpXqq9dqvgDz zs8*G%xmNZ+Pxu9AkGvb)LrU^;l0tA_l8ofa;k3-d#QTqMdl& za5>&zTke+Q%8{Z4mD?d9<2PeA4qUIg_@k-GHnT$3h{2GI*=}GA#uI;{)#Q#Z#t#U% z*jsg+@sEMeu0pG?0FPKlR#k{Bl)d7%u-r9BS>PO>Q?Ru2SlQT_Q{>LWJ?P9kchkS% z(@~kM)16pY^07Y36+82qu7r|vAf172xdb$9FhxK6!m|B7if5?>O;9 zuw2;tA`tO$mshBn$&iD$kQMPq!IP4sd=;d9FCx4Gz|6N!!V48ffHmPa@Z3OM0I0JX zJQGg96cW|#N*C|{pT_KX!HzRd*m#|>{OFneiEMqfdE2CiU5(d^0H&+a|CrU)b9%_@ z+xXY!fgzV=B;y)O&&IxDDQG(hT4at5A_3{8hp_$2S43-Y+OOq4))GtePb$Wx znDH&yA1v*pH+GJl*fZ4s+T%%BO`=7tNzD8BF31zl3`E6h!Z}6Q*r&Z*1v1UmbzucK zpJa%Rqb$;9e|mhfy+gswhD5mlZ$JguE!*X)icUW3tFq8~R4~u|uq{`wsMbV?WOuWs ze@;=p(-|Cc=<9)CefzZCo^5Gel`)v|dx?P&^8;PmBRt?OS#UZKgx7b9g=bgeH?3>& z#U^J_d97T-fyD!Z!NP;5PbEMu2`h(!7X-@oat_9)eVm}N03&ABNy=*$oxG9r8W=?O zh8!t`K!zW&yy$WUCG1bDetOQF(VKnj@>Ud<-0=iu$Yz%!{=^`!$zj_@f(bad{% zF#7oCz^C%ZdcRv{bnvUlXjhoz$vH)EGc5=FTN&Dfq5Q=-xluXmF6gi>^OuyR$Im2B z=2E%K{$|?6%lS`zmq`}>v0)#>Ie56Db!1$J`{yhxjm{{xsh0DFgtLJ*MSDYaFLtM| zygqG}eK25AX>FCTfqG+?DYXhl+c5c5O?~ACBn&8<#w?8Y&+hHs7<~ z$k=>mdQtM8J;j<9X5SiVLL;49*5^-~hJ&nna=QI-M6{^1<{~HLnSP|%pVP=Q7ftP7 zw}j@;+YG&KcxgMLkJR0-FtB65!qCI~{An%Bg(!+qzPR$ApyrBsASgriZQ!-pip#;l z(Vwh6+Nm-;y9d@szpPJ3i6(fUU<45Zf|$2S^^lPLQ<~3Hf}LxGT6330#;yu`oC%f{ zsqsqs!#RbeLw!XezX;PR(TXS+m3a@w<2@be_l`QV2KKlz-|xoKPqfpgilEmX zG&o0utUP>)`FcPRkG5xId3;>CO!=|BqIq}h?ax`qlC!h;D(#UzL7yE`sZU`Uc}Bf^ zkus=0kkdQ0l+vFCV@wMo#=TD~NO&hHn>itEZext>8sFNLRgIypoo>W9X2- zUBg}v>alm8N3u}U#UHIlLn~P0XREF{XO(rdgcjeb`=?$I3ndWG-VwFPzMf)* zlJ>&cdIYn%b-ZEgABG@^ebmvi?0bf*nV^4pyg((T>Aqf`6??Ue!uhM-AwN#kTL`AD z`xv4fj>`uehJW>=r>e)dt5xQH-8KMG4SMgjFu7Qferm;EA8xFnkM-?+yabk!?M^g2 zfsyPxoN|`+(u_*1cRsF=@@Y(;K|-3wt0rvAh>hQM!m0o^z8e|8*Zq>tt(;>A5PRDl zpB^j8Skd9}5J&cur!H?id?D$)ZJ{&9IcAH#8^21kJeTENeyw{<@j^tyD`)zd(h5`c&DE{*h%X9QZ&i5>#vsS z!{v;g=x(*ti#&CUVU&LCidcpO?LAA5E~O>oHd?$z4)yishR(ySr(TC7!N#ZFl&Y@h zj|57dLOR6v974)F*0Z7E4SDIDcH$k|(kqh=1T3rFbiiePO}7r^%BNA`=$#V0HPTt7}ntsglj%eBpDDGa+a9 z|D&WK7(iL?<0j@3MM;O$&9U>(MHZEPHgDhn^;3Jlb!1i7Y=x!U)cd}I7PX`okHf_1 zmrVvN2I}TjX*F+-y$QdkovSE~*!Di@p}NM#UCUw3;J}a0dR{>t%R4V>a*q|{E^^&Gja6g9c5>;5R)F5qV6AI$JiqTvF$?{vD&5d=a4Jul-1m1_l| z-gsd1i@_*Mvy5E7jRSA>b{Q}uV_`BrI{)&VoHGAR_nV{pSa7{}U7M;ueC$cXKcrn5 zX3__*v+jf;J}uu+8Tr}T;iW4Lo8LvH_l~T?pCU-LoW{GHcl+(t<#yTZFs5J4GvY}` zdA_&7x32bqDp-6^1MW!A*7QD`^HzeUKS37mv$v%-C`f>RSCG)Tm-f8A#$aSR@07y;NJX8P0c$LC-%B z-N+cZ5%Kt!OVkB=a4o{fqx%w=Y0hcd`hElXLam7L`#;M)ZQPpCw)_8BDKTQ!PW*QH zVU@H^e`ry0Nr`+((G|yYD;4XeY5}ckl1V=N zz`bd&L13U3q4;tOU}bO1SKp6RRS}F7u;Jjw_&?J?pwE|Qb8s1Gd?ydC)PPw;#>e0O z->nD!b6V`er2;bHxmH!s{GWCDLlP57Ci)WtIL_?`=qeupiSgrC?bQ^;ZW)aZA0paV zq*rPWaui~7GN1jkyrB&Q`R~W{&;Q9D-1z9v9$vZCVO_U>brEA-{E$5L{FYUvPol}r z(;uCy?UK>!W@e?H^%tg$*4Q=lSDZP4+VAsuIp3(*YyYziV1-~>1+#ws#u>qi!JLl< zhq7zkZMFiQnyjH`mH&=~eO9(`t6U;2M-f4LhV(n(=Rm)hm9xL?&=GT-?p_g$`HvO7 zPke#mK39mG{w9-ZC#U+p2{_0-Uy3~N*v*yhpf)9+pM6yYfBFYcQ{=dEN^ilEY~Y1| zt>NXg+{s)#zGt`fZJ!jv)%1#&+1YtQ^yT%*<_L50V4cV!$k!?Y_^<^=19Cm*95rkp z%5US=23p)e7kkq+6w1UTzd8}&>cfIP5B1cxWysHabanb5rCc}sZ`b3}o#@8z&v{{} zUbNh%JEA~e(H-G_Ja$7RSfu%n#fNPTgydJX^O83bjhb1O0RR-aSJ z%SQWPS{Z6)a3y%OZ$HiVr+KQxZBO3EV+Tt%Z@D_sU*=fCs<~@XXm_{F=E9X1aTf<~ zd-h$5k>9DR<>v&3a|R!|K1KPBVE}|b4;bzuFiZCS}#S1tm;xR z*{`x7E?xHR^2bGcgx`havn<;UIs;eH)=TRrG8SJY_7MsyimYiDZ9*Hc`F&&kd-IgAqVa)vbf4K^_k|1LWLPIHFHIK0VQRp1da>sVbzUAM| zh5zReLC*DpHk(Ww+?bSxHP>_Y;VIH}M<7)ix4Hx)v)vW{pDG77wG#vP>%%SIy;LYg zsJljP-s|`RgqZMP8{+>Qdoj?&MRS$*z$H)-R@(@`{NgYDft!=Q@N6+Ui6LXO0nd3I z;F~nhntz5m?lA(w7@+e?$aBL_ zI+kGx@A;lS*!)cgE`T(WRiP(iFD-W{O>UI|?;gE>_{!Q`@BoNVp6c%_5FrV%V@VAl z+;fpnz%Ts3o=De|&h$n!xfaa)6EG^=}&(jfCYlyNU{- z*EYn11j~A0=L12Wv2U5GVQEFJimoMLz>{l}20BzsumsskNcSPwkGe>y=;PTvB(aTG`T#CH6Kx z+$(DQ(ps%{)fuRPFKr(jq9oMFlIZ)7N8Sf$EZ>Rq=y>2gyUW01?O-}$Cdy9*Y;)S% zn6??b==`ah^-}f?cgt!8ONrynpq*W2Yv|^J0sM5kj!~UB2Fqr@IQj$!Y)ap^k*Bq! zjQfvw|I$tz?gMahJIEliyTcC0g7653mg$RC+;rgB+T>oE1(1x*oZKD|Rq{jpxrt_{ zG4Y%3?zjAu!}njE2ZT`cT(mg`!VR?Cr8f$q%-m_r4c^@OUoN~@!v)RZ_5d9KX?%)j zm5FKJ?2h$q_rY!hZGlRHz;2Nuj4yv97!lJE!OVM!QMIH8pqJkbA2&g_ZEz-)g5<(r zOwRc%QIcV->fNF}a>tWDZr0OIeDJg=p14OV1 zyd09jI?`C~ma))!14XzGcH)-<$3RZD3*@_s__4XRjE(0XB^Ku%7paTdL-$|Z`i`(b zN!@;3XlBAdcP;PO&HRvb?*0z2UdLOh&^h9vnrDY=){&?k-))NU6(G7(0jGM3z==Jp zxX0+`=Q#-)h^8h=A6(6aRPCP%u?LFX7i;n7YmrF;h}{?4^veO(uWPvKYYLzN=rPEu z=Ci;4mbC>a6cC%o`yVs-sJp4%krjJC2IRrI%Q#!odakgoqGJqdN!IrthpwH`J9xm_ zKmz-nmJZR*S#~&c~v4C2513z`9gsCtx!#1?)(e+*u!xkF)_3GaAX;VK4~< z=ih6J-*>h<-X8yLEV0m!V%K==IlykxWv0Kx+S}5P9u;{Oz1ySo9 zX7F&!hkzkJP-OsogXdqeQ|%c>em!-^&w*?;W$XU?I~2YjRMl$T1nHYE?cDIvELi_p z0_rI6%BK%Bw*cZuZxV~{uko${lV{5?V~M=^;5oZhT+wd!3ltQzQG>;9{7)^wzh~`_ z3BSL(XYbeZ0fqad{kHZs zv!YST*!%YZV%O-uHZuaq;XVKW4rmm~|PxKQ}XiHZmD>@NPon7lWx5 zv07GS`i>`8zaMU(MV;`G$R`BSb35Wr=H?7Wy&WKp75I8CHF1Z563}_$7O&lrqY9C) zMM?y2_jbz(=jV$!p%G9Dwa)5*Z`PK(ybBn*6ei`oZ@*>*FrH^L(nZdEts?5TAUD)p z>cbrd9$VXq{cV8RX8;Hn*|#z36Elz~pe>kspC;fC_?-q%bp9>AWML%?QF%pfF^3aK zMF&)EoNL($zv3=8T{;|JeEoL5p*FHPugbDyta{*L*;iTJ=Jx-uWD?l zyJMFcR3ja&(JP)O^mbklc4CWp-Po}Gn)CiHvkbvedcxuW&p9T2q(EM@;W|4O{dgCd zJ~;QTgP6wspzO*`Rn}P9-xL8^cG;S{Y@xywW7N&QO+OMq_M6wpY}zGy>sG;>X|S-q zZs36vX^$&{qoD$0$<6THHPlLOk-@GGS99yO96LZC^bliow+1m{pgg`1bs%z@!21M2 zz8HeFObJIN)Yf6kIH^M&vqkcB^}$KpMhaa%8_JR(C1Qk&$}@sM)@?TEecV@PjC8aD z_TfgWJhosyBVCW(4EBx@UvE%E>LUQ01bOjRZE3hp~_qRnQR{ ze?m>IWO+?95qH&Lw6IGnUsF{A=rKt;0*33CkKj;ftUH;7^&f7pk-hIQP<4 zDCueF;HEKWNwq4)+`7ziy|j9%z9zX=u8C0Zfd#*?j=3zfN>vNzMJ}{_6fBge%tM5x zgr&Me9{NIF$Vmz!HT^opLbP-Cj5tg*<(}{@VhmhUQcjwnZ{wA^`S^W2G&VL#xa8~t zX3J!;&^ZANWj8-Y5WFC_Jk-OS`tJ&5rR8Lr$KStU8z5+ze?Hhw0NF_J}REl)*3(^+G0lU)Y?` ziOE{X70@8|EHxA-8G#|IMWNYxddGo+BZ{v)B^!|q* zKHmbQihbXFHCzyi$QH83z6yAKb#o_9X&{aZDxiF&vbN)I?EDGNJDgVbX_RR<52>sXr!C?LQ2EM#pUH#ZbN$d z^-dVIEBoU_Rt?x;%>FE3gEr)&=0CqYH#N#gzwV_Dfyin2k39;HJbbj!i=)QzyLoWK zhK-c2Y#p{>R~l&FZOfJ|;D~O?sHk&S($Y$K2qDm0hjzgZL>n6$=V7rBKN3d9%F3#1 z{Iput13aI{arN*x+KR)u-n#Xhu^*|tZ6eJE9SA$_*giYm@7a(x}Z#OU|K!4Zrf&rKp?hm-TK3s zbD}%9iizR4-0X~;GIS2u3i(j3T&$0}R8&+{uyFZ@Gc{YcZ#P!YOh`(?Ls2KMaB}Ox zlue1)S#+L`T!X@h>tw3`(m;DKmdzyg z<=QNy9dZ`oX{Am^{xfv~{Zwd^@odb|C-3*s`&Yvc^pL8$C>PHZ!WcvOy@S9|za)R?xGl)@~P@Bc8M6T2U~Ypp?+qNfLHm zSpp)64ynI#ZtGZfrj8nndavdyi&LUp z(paTfp3LOBO(ZhS4{k)twJR<2AijL&V=*@%&I4uyK^Vk5xM z9EVfB_?^yzF#E|^#QC^y#@_%bI3a(M}A%rY6Xo@$B| z^d)SB%6gjWV&7LA!j!jhc}>GHle6)8)AdvreEE>;>ntinYcCeTg5YeNhIisKa^eeo z@sy=(G#L#E#gH=WN5X3g(zAUD=hc)AbM`e<~~pU#ZDt7r1vf9jo=V zUlcO9=2>Vx8F3WkQIoQueYkQTBEA~|_aR{p<&c)0OY>Bzo~A-%u#j)>^QisRzHlGsyUutl=d0Sch`$)9 zKeKL2kyR+6NnOjar4F4_0H~5{tTL>W(DkMFb%I{g0@al{T8`^( zx=lq<2KwY$8F1XEaDiNFd%V#6uHXwQ{z~WxK@pA3rQ6&EgIHPF&&B-3W;14l=>Cxv z_w*r$jF7h(sqRkQwZrUDstS|`{hbK@QRw~_;cLUJRbJ5)+>XLY*7NaPIyt>cC-NKK zUFf4grWdzgN@cIe;fOM%NS$)x*vgRj>I9w_1BP^}?Ot$OBKOlhH6~BWRV9FOu`%$5 z&8%&3W-_!o3m5qwPInS?d&_z!P*bBP@HQ`58%Yl(V0%ebciFx+PNN}P$aGf8L0EdX zkh9S#EWBunn&E=$a%7gtNyoyJs51h-$npB&2VE(^E_otR*!5$zj~V)96{-<87DQl@p7Yl>zQN3vZp(wnDb}v}J0wtuwB`yoyvpt4nEV{~~wUej@i;!*m^b_HAo- zMcu1_V@Q7<*&+o}h+`->s?u{}E5JcU?XGj5O!dW@7JKumyfpT}+QS6i2@3*sC*G&U zmK*%+sjv+g&(-(;z6{>qQr^VQ9=_hTztK#Gg7%NF>v8qdrkhW`WGR>-0L92htl_RBmc!K zriAEf8s9evV;NpCI)?}96JLu<%vNqeIW3L6{oy*syJ9w68s-m~u5XfYCROSl*HDBz zj{>nr$;A-L8FL{k)NaP3Y@OPcKr_5tgt-DK5T;$ucN>8d)P0duXRcS{-B9hLN~o5u zUAe+q866kAB_V>rEY>3-HdO59*i4U2BJ0~bJhWDDqe`PI6V0J=6=003gVY4(jpEO*kiM~Ax4pu&- zrGa7ISRs@S7pi7t)Z$Qs4hCT-^uy+KD!r+R!-ESz2_g<`cTf^kA;K6qCR^fe^I}24 ztHjd*|%{-yhXHjlAjufzZ@iu}e-B`?Xeys>X2+E6z7 z3+_(90ZJ2HMMqYnM&Q50zl+X=5nYde5P6BB>&#CN|7A;l*!1gvZ~TiW|2Ogei; zBswTb0EF2?BFU{=x9-p5d_Er>X+j<>3m0K;9#ls~YfoODD>9K7hKTrb{j{d$zIq2G zKV)J{^Y~RFl32;qfzqtOIj>o{^>6M;Y4|mN`*sIB8e24--XJHMjBlj?4@9>zcDvlU zbJCC4um@mk=9hO-C#%>R8X6Mf;^Il29)|!P-hI?dE)IAMF5xTY02{Y(xgi~$oh=_? z#Ay6{6}SiI+t&{wq|Ib9_en~|RWg}rS;Y~*9lvy`r8Dybc!{fv%fZRX$r;hz1su>s zT1G~kJ<87rpyuiH^akm_x&w5DyD^U5{N?jy0N49@FqlUyVQT6Y;iHGQWQcsB$3ckd zF5p8fq^firACB56MxN}OT#S(+lUG^c!p352KHjjZ|iWUW2=U zXLJ3f25?=@f%WP-8a5oEq6mF;|0Hs)?))YNqZ5iajHwPu7eIVtKcw#x)IKdO?%lhy zp0gR(Zi>n3K79A?T}D!cDooU4!DD1hz9UA_-CIirUtwS{Kytu?UeL7bm)+Z)^#)o zy%G2+p2;AXlhnBl9AN{a@!?uk4@N(KzD%gssm#aG%j{7uetzX+xy9E%`1tuL`4LA) z>)=$np#$bW8s7?Ms)@!8B`vtPH8w)rN4ogzmKy=8sIo zmD!i4+_dhD6_McbVY01fwJi~_cu}j|2a7NOUtUZyp40k*ofv-_ z7tk}NwyxdJhVI=Q#%b!IH5=m?y=Lk>yB#}OOLYMSffG=8qk_IYL(^iZnds$H5?Om~ zUL{knHZ>;O2 zW)mnw*8Bq0XPFq)GH7vsj3Q#iqFgU*#mZ#SxPV>u8~ecR+&X*O1Z5U;$xYRS>=OG> zML5E|)#>)q-8UlP32y%7`{KuzW8Tf$oTjfL!uUU1vU{_yb}`tPQ#1C_W8+KCXp3fF zWj7Sv)l59@)BYD}AYjLNr%z3M@x-}nxvnPONA0#tBk2mcEq|Wzci@d*lD-W_@S>cZ z7aE7Kj$b2i`Kb{2ud0f;ysMj!mviGsn+mOS`Bo3xqfSai*p zC84u<3}v00o`Wnu*Mg|MLU4qifPCGV%ayF`iKyUcSN1UNC%xajb2vMHC|X4Ol%8`|T|`LGLmYj23A=z8%}8K+8S! zl%c&NeVrq+>(-}Sy&dU?B!&cU)yX~S+A=oknV!IvWbIVTZDBU052J!oC}B`oslxVW zZ0=qVkB^LpqI9HewC!KAxiu|cEW>jNha_<1i_}&qsvka;(g^l4J7g^l(+JBR{=!w{ z)!fkE&?Os}a_OiYrv}GVBSP~vNS{3!dUMUhLj0h>r)1pqlU8lJo`}YL3Bg+E<-kzLXE8-J6<~v=vG;vOqTnuU+w+e0s}&M8fl8 zQ_@(ka#)EB?2t?3mrK$gtBtA22G_v=c;~BYcay9t^J@;NPYoAk1A$R&Ayz&Nw~_uR z{jfZ|xg$9dsG8#&4(9BG4Plh2t*J^%@^n8zuuEQ@J>B~(RBfr7Odhf733YR>_E1f_ zt+%_-8cVG;x?jh;il5K*O%A`bgu7dhYoGLY=GA2u{AbT=Wrc^q34LxG%Z*?-%q_j3 zqx$$S60f71q$#>0_{uT0 zN`IA?BcDWK@U~8h#T>DR=jBtbN|T0m$>i=n*Z!1Dw{}ViWmSk<)SY1UIo%CDDkY)A zF)qkgE6->BjNK+rx5ktSN37d$SMT~j>_C4Xpp-!aiq{%W1ja>vFUTn1uQfjC@}zX! zyHs6W5xD<`g?mQ@2G~WR1V0rkty*yTf3OAtB+n z=H$e|kF!LnGMYp2{6%n!ovE(it=eJViDsgme<&g0;rkZN-Y2mgn5xR4-W!e-dV#aN zx^`rHxMG@ev+Ygaqzr8D&h(C?y5T=Pnb)+TsNMmxr~MH*tJX?KI@5BIS<_a>n+gn9 z2(uya$?ipBWqcRo(SIl-n=7E9k9S*MTr!oeuUky5P_xm_JJKhc`|Q#2=(>=@;&9WZ zHqWmYgQ`7VPMq-!a$GvGVZ#P;m4YL5<&3x6_F&v6lj9n6?)m=7z7g!~K$XXJ1NIfJw z#NdbH)S53meSnX!Y37K2M$ew)szvmfzdRh2zK9-|B^ zaYByqxX1NVQ@Y}T=}B#?h)_c6<4`YocK%zpF0|HIbQ!`$$~oAmsKh}z!oltz1keb~ zS6h^wiDO#?9cz}CDTBU(&neDJ;Pcpjjv_nn%EU$BOdWCprd29rkWD6oyy(0BLD&J= zjf>zo#-rk8a4{olx3O_VkI;rD~9slU@D z0`S$i8Tf5-HCFzY#{BQ?08oEVnS}axfBa7^z`yLuf2s5zRQiiDz0xp=y?e=HO>h-G zJ(;IZpQ@;+?2I?2*vByuEiXOvdyX<$6T+4j9T~%TARDVdNuX zX2QyB(AI8q6F-l*<5D@1<(&FaARdv zdc7heF=N7I@7hzMci6wksSqdovDJBBFt2%!>a^7MREg1tc=j%)qWu34XOcwTT|u3W z25@5UB;94}_f=baFVxX&T@(gbJUc?fve{U!#NAvK4bK9XxA%m90Cy0;6OkKcXh){6 ztTb|djM#AL(xqlTFCk*X6+>5?sM#_n&@8>Ldq29noV>qLY=*D+_J}CI`xhWPe~u8r z{dSY+x?TbJ*Kfv1d+i&H6VQoAyov@_ADk1sKX;R}A2_bZ>B^_Zx}EuCaE-Y#OlVK~h)^drnB(Q)2y4h(B^Qs1`h)Ir zV|_Skr|5yO*Aw6Y`z6^EC;Ij5-iC_p-3z*DHSo7Xc`A&Motaqz&w5@B=gUibztAZf<5apl5!0bYUT=39DD@lduo) zO8+@UXZdF0Ck<`tla33jcl~R}NUGPe|0Zf4j@Z`L)_~h|F*7Txl!L;hlzrFR`KrEP zu@oPt$l6Llz?#Vb&wT_vnumAJ82Q5Uy{eMB?10q0{APb|(938gJE8j`+Yr@)` zudp)%BVs2eKdVSO`fuJiK!5V!mK7})eOa$20}yLQ=6Gs&1|!x+`0Z@?T$B~FMa{oe zVk}ZGM~7*5s)=tL{x#c`DS_3OA~i0cZ*`BwVJ^zLF7$CHc{uVGf9y_#K(LY7*YhdY z+gachK1ayxSy+@}Qn3QFEJ+EN!rzp*UuP=$(yUCLZouyMBKu90`1dO|wo@*~L69*4eC#(s3BV+4uZCz0HojJAA!B zX+v?LwKz<{+3`I+#3GzU98ySZP{`7jfk-OpYJJ2w&QP3@Snh|*AiUqlEg9ehPHOZh z(ydSZo1Hg7Q%@OY+JW+jnW6!}7dEUnI$FC)5S00F1h128$%(1tSm-h7ca-#HoAwYt z@S(**ua$4)3Ud6BE=&Zy*_%nw@uU<=VHk5^P)A*`#jFZ`R2AEI9!80`-u zD_ylHI|?x5Xe-g65ze%2`?&0h6=<3#K)!AzyuaMI+@pNa=~Mmmkd&iKD1gqoJkEfb ztWGycV*cK*>u5r=9aw$A(^y*bdy7g=XwmCnWBqVBkGJsc>6QU?6<@Ir| z63V96^oUsajFz}a1mTUG8=Rgg$rFYzPVP;$kbXq$?Cco~Jr=M>-_LodXPDTivpolc zc{f+gvQ1c>Ka{HLkOfXK8JzfHQm;~Y$0Tc(9=oFUt;v3iDQ-!y4asV?DTzfVS9m~S z^I!%~-($16?T}6u=n3Z7_GCYR)&Cx+e*U|1 z%|@q3b~i1u8l4^*ypT7iUyr+%4XuBVYx;}{k=xkqzr(lW?@mQgxBHQ8KN;d<+qdls z*_c-nVR4F~zptYiJJ9=BfkMy&B9MNZolY1#u~ zEt##X$RVyB{3bXk&_?&bg>mSCwX$Hp%~d6(+a$6kClGo^#dvNyTskknrW+UQiX#&y z-o?pP@UARqNkmBz7N_M(R91!2x`06twEPa&YzR=mQUfDwDB--E7R1=zLf(v!&s$J3 z!jZk3-vyQ+dphN)3FWKOQTE4p1p?+Xm;V@2CmCS@&1E=+1%my&L3o{7A5~`){PhA-TjtNW&~IS=SCp3(dr!-`{UK+60pL98fv>Cx~N4yJaY`N z*E?%M*;*V)EIYY($U@1em=A66oS3jSZE~jf=E~>~i7(~QHK9R>S-&nr7QI$;7^sSNIeh~$9XyPZ4-8iR0c}by@g0$iF2ji zvT+`-$VDbb!Cz`UjU~7F6P ziDjj%#KaH2NbKE>c#7N5K*oCND&y5`dV+Fg@VqH>EFZU-B7*&&cO+Q%QJb90Z zumT*n-O4+clSh$mrs1;-m?Vn=@QhsJJMnyH_HhB$1`(+haXrOGIdgsq@m1<+6{F z?VX5hEK>pAV7zZdS4+P|n@!9i*zVq3U$;DEOO%l>PvNE2YYKm(-z|I8I|Mq_9{tpaiZL*56-WDk$QJ+Hrr2T+gOTpn&s zjO66B?0Xv9A#jCi*|fTrg<;3ugJ`Owwl{O-i&cbTPR(Bu6iSBE{epCpweK#QLmC}=xxXZOrL3Y$swgOO?9N6_N0ZAGcS!6w&0+#AC?y&&K%Y)VA=JVfuhWTYfSb9-m-xd4ffVdr{4NG^D7lylD`c5_?)`D&q?1L<3D zezHSK==E>Mq1Pwhz1z~WG^KYI|C06o%cQI+f%q2SilQ(=*}~fn3vpPg-lSjvS>HM_ zRSF72X)38CMsGgY+MZ}4m;C}g#`8l?guO(&GF1me%5X#2|Ma$87#_>1icpT!zdjw2 z5-CSgcEs`*pfHc)0t*tH>FGVz&FKV)a1Rs}x0b@WgSHNOwF^0QJjytG`XR(=b6KCraARUUO$B6ge93<9#j>z1 zuF#@D4n+;GEVj41xSL}L!%--;T>XY?ap>r9hpAgmytL@beT}1gl?Z4nhm(rG>oykS3opc8+@^3*)4VhmiXA%)wO^D1LNHX`NA7`7YiFW=8OlF-??n@lu4(xo2B zW7j0v5z0c=%oN>fMn{5|yWo@>UpamYrUa^C9c%*!3B~OvG*Y?T$q!HrgGniGLK^ID z4I{7g5EaOmitx!R!v;57z?LK3RIgnu$zVW%4c#&h!70m6%Xs|8!w9X!nlhLJJ@Eq- zo)hAX%wrYT!Go_8=B_VN>rLCc3c3vo>H$dyJzO}I?MNk}{&3B#o^K|nS@1!ohiLPz z(yrB23HxXz0F57Y;q=mQ12q-?ooG%o-MzxXLf=&Ly2ziOD7j9^PLH#aORjq~uS2C= z9r0w0#WgXom_^JOc9*bld`=-2-GW={sW8<|th29K>kC*MgB{RbEKN9^f6x*a?Q(yb zrY(uigyG%=ntJw@>7J{oDAX~RCd#2R<5ebZ;M(f?HEPLFUYDHG818KqGj0RreI>sV z&iOhuqrkRp7x;AI7LA5_h&_!wFnbsy=L&5jkw;VZnGJ9yY!wnkWUi!Hk|^FlI->is zp>@6%r<7%Fcu3iJR_aELVCPj7PVB5KY=XPHbvnj%>2>xH?jBUCz(~U}@(mVuo4?kA z2KE_qEi^`Tjn%35uE@P^C}K%i)}# zJAmr zuKew`-WJUiOj$-@|9Ro;5H>a!SuWw3YC!wT-MUX4dO00cLd&Y*JrfD-@&kmp^KKZ* zZ7r)-ogw&E|Jw!kl7R(2J;(eINOPRw{*Q~;^tX$6?*C!$y`!4iy1r2xq9CB6Al(Ym zQJU1KC`w0ZA|)VFq=Zgr0TlsJASx0%i1aQXH6$oidhZEEdJ9rQAhf&UdCrmZzPF5V z|GM}4UdHewCs|p0uDNEPzqR+D6fvzgC~K*L86s@ER;s}aT#MH7GGvzzd!C?+_}2x- zf|l3@KLL6EJ4KAH$46!SIO{nMsXzyj3h=>jpR;*W2@ZAkXMe(A7P3CO4`vHPYw?Z$ z%5&IyeeGN7dea%n$_Dr|Ey+x6IY$Jw<-X%0w z#Ik%PGGUdZ66b2zfCxgLx+ zHe9i9gyTI#vA@i|aN36QG;|GMJR_o~}?zbi2$ z6Vt^1UO{{Pno=U91|`CHSToVB5Qf$66#dlCbU{)1J%=I**i78FGfn zI;^ezMvp;JkaFRqe~Q39IPaq`xkC_jgw8)fB`6+Wy2!-D^u*1rm~iTnpoOKSnJHlF z-k?o6U&s=?1y|@1YZ2d{Ag0_EHosfC^BRg|`e#^TFi5~-CFAIy* zzrbGLh)qCXi3CAiRsG(`bOJa+CT^1+5*%DJ0bquElH$OAQE=hB;OGkr0^!qPtD6H3 z3f&Qk7+Nud1HfQ#XlU77yWEC&@+NpNPUA!Bf-Sx{BAZnXW~ zHyhnC0Ev78jxKTYq*;3|P&{FwDnKi;a-bOj@DrSbn%gEw(p<7|4@WNp=%^k{kLxiz9@qOP?Yz7fkrd7 z@&T+d*q~(P+Kn4CrT%o3uK@pX<>7g=QS0+8Y?X|Xfq`6@)b6eM!)=+nySqOoohU?V zb$zBlfU|$wJ@Dp#7j*C*#A}HYZ{ab$^~Ozl@GCmWjVMNtvRR63If(1&>SkvOZgUBo zyxt-Jm(UM$o9Px*t!ICHzf9nE=k<8rGt}qiZjRn~;ig(un|P#I(2@Is<8h@}lxEy!T(@|zw1Yw+b>f|%CdSb+Vz{CjokYu!VhJ_D}h-o<*u`pz!I zpW=hAwny2S_l^8K2?XZJ4+d6kM3cAC0`bRqP^XN+D(q3lB9}|KZ|v)Re<VP)`P}yGnVXWSg)W<}4Ayv`+s1eP{MFd1fPqs4zpXK_&Gh=hCzK(zNDbk(UzsvIhDpK2~iSC>4xq5}U8@Z_7Wae)KG+h1RRurQ8DD&ZAMZ7FO z`wd^c`46Qi9lcjp*!W=K?kyu3cyR?|e8iYTiS!u) zLEq7Q#;2HnxVK}GVQx;Ua01-lH>QNor6P@$xb|~tZe^fw0zC1P*wR@`nKNC#1Wmx) zmR}Mu(sI6Bm(S7B)z^%I_sZ%lag9vJ*3vO@!kw0A%Qxqwq9<1y$BDB)%ODSlG4}Ng zaHM!98MPTLI>eJ#&p(na6%DWETa;#UH98${mbTt4(9xsU%n7NKT6I}{VBF3Uj-Qnv9PL4tURfiif(zO|`Dn8D|c3IFxAJBlXz~^n^v2`*;q| z>`oabHeEu6uD2K@CDlvJ3=X_+x_6H=OCv(qhJ9$aOAomV>qUN*Blj1NWa@JwW#jeB zH(P!nKBZpO!vmOD(*11y*Wit??E-W+Q-{uV2%%TIWlM zbB@dGm9%Q3j+>iZ>|X8LP^|8fdR(!4-zs%EqeKTmTJbf>`mwNFj<_E0><2n#FI=9MvN_s1!+O?#sp7Tl zZ3brCrf_WW`mrR&s+*IkoD zGmU(A&i`TIXEq??k7ren!N+mV@DHcHPuG&vD(V-8uSCmv3iNd=LY6+EjAh9cS$)Af z+Y_kyiI|fU>o%*dg>@*CVP;I5L+RGknXPEXvjjzU1H<}Op6^oY>!6Lue~I9_(6az! zZSiOL;}Vkl={|=2dU}_lr{ZF`xG?3?tzxG7V{k7|25bF0C%rcM`C5npRl_#cGUH34 zPoR1lgMIIh56KP=K`xw#hudQ$?1PGLq2=#?sl1BBmMN;(N9HvNuirKFO_<7c_c~e; zfAY_TuKl&Xjfa(8G;jo@bNviy(W*3NrJ(tOM(!SAW&uACEor~zE@XTitLmJMP$cks z>Q8A2&&(ZZx(;PW*k;6XRR2zd@kqA2O7e=xk3qYD#rF#4`AF0u8)g%O~Vq3l!t4=dJfP zi;eqLX;AC(OpMLfjc9(?)g1OJw>O$Gz9*%vDt0hH^o28F{3;JyM&9jze8TXw*JebkPr>NIv8*DUZ{=EB>@lg?mIr9UeQM|DTiZSnDuZ}-&`erjg*bb^5@$hHu}V^V9KzYs}uloG{_+ZaQG`Qx_Bbnm~!A z-y7lOq@9xQf=UUjkMn?{^Hg(Gd&!$ZaW`~%Pj7Es^Wo>uPM$al-lpaf2-zX{-d^1} zDd)OHEozbIu`yH1ig&-?0)+ehvw{XUFuSM%Fm!LXH>|SC%gb@OQU{z~j@KjSCo)=t zkwb-Y2=c}_GU~;F(E~4T-sJM#cGR^v9VdIXypQXEY65`(i<5Tc<1ajw9&s?%&y(ew zEO^s=IRAG@h>z^J8L2r+2$g=w;ayjn#(Z;B zZZHxLu34DO|6JjS-z|z@t!#Qg3sMVYxkNBGju=Jy}~JT0Rhuj{pSyu^m? zdF+LAC+4adkWalAic1nSq0oe(G}?EfYeZrOX6H^_Jt2^b({W4tpwpW$9*xWr$-=_d z6k7ekjHDplVnB$@&<&+g)&C~IPMvD_ZOmK#pd* zXGK{!&|+B!Vz02ZWNM|g&D0#X*gJUR_?Xc1sDFNWl5lbG%HO}^jMh0Yb*qr(8wh^> z!-wAt0bCHG(EQ%w?DN(3>_Z|9V4%hAQd$#kAU9JK0pfmze(k0NL??)H#XvC7gEEk@ z%IJV-;@?7i0ce&A5CD~AeX3DeFtFJV42(KSI23stEW?9B6(H}k5hVh<*ur;UI#Hj> zgp)Gxl>_r%ETrr^An(*7B{)C*O!wdo1~72-6Br0+095@g&9?zD5r8VxeXt-8E8T;U z)L@|K1ss(KBM{70ieLir?w~39eg`b5RRIi?r40PPWKp!ok(Zt5#m=|BA5fJS@Z}Hq zd~TDg4tFwhz037fCN~7MFBxxZ&E$V~hH;7Cxn0<(4y-_EG2DuTwXho?qT&a>>M+O> zD_|Lh83z1ZT9aKxnFAZq#S5M)XmEdTE3d%TII~}^XRLGwl+K@Q|L)f^_;prC4r^UR z*sYZ#8_$x6MJmEwDG^4wom_@l2_vp0oY11jF%p#U31kj*~K<&%8RW`0eh z(p^N5D<`Mx1p}mWwEfFanwhv*)`F>t$xZtOPc2$|tbU-^%aTOnV(K~=;U>nGVMpQ8pxef) zTn~!~Svd9`s!z61Wr#jObFck1xSHHPxy7YeYLdsAW~s}Ux5t_i?fhigvl|gdj|Q%7 z@aLs+%+#$e>lycaJ3rFya5!40OvBzjk4bR%+29M9EVJNlhNqVoUS7`T0L8ErP}Zrr$!rBoELz0PnHf-He&b|!rJc;E zdpg_V;URjf$hI>5z(2aKvp%qbT^sNcKmCi~vj2h7o%Tco$!tIzRju zNjx+K!S%HiG1z;vkWUgkpYBthH_?WL!L8b7G7H+ZOh`3uJ>A_@MrGDVpB~}-_U5lx zn0_UX4cLMb`~Iw(@2>O~9{gjQG8fuqt{Sbq_WBO%f6F;$Tru$6LWeNQ#o8IClVwQj zRz0j=^u}x1;v5hZ1>h%g1+aXRH`kq;xVn5j)^!j+dmu9vYQFC*wUT6GSc#Sz-SgW} z?X(IE|J%Hu#ufU{!S2m)$)-`MbTPmIjrTuz9(~yreZ17<88vCO`4FJ=uvs4`pfqs! z`zfQZ3p#x-@n4t)y~4po5ANew)HFt`)3TuS#HzN>l=1A%z#+XWC5igsY+vK%x{*u1 zHAEB11@L+&ha(M#6_BDx+Nd9ce0N0UN>6fCpDn`=*0fI(5QK_QGDRv&Pvm=u~ zNFe$pe*Qe$fBR)V=EtQwDrkYA_4F; zZZA)`j1ydQw-Q@(V)(>9f5PW{f;w3x6UX2*zB!rMe(fc2iq~V_-@Lh3@iQp7s`m;~ zd;UdQyv6`{lg9B2mFIo?AdGM7hFDg!g}eKsT0Mkw<0qmPn=b?ivf>Y~;d03|+>*}7 zHX9v7*O$g4uh15vr*EV!;ozO`Z}PC8T$GZX=wAojk1*Cm3y*v@m7lgavVZTB7S56m<1#9I;)e8iB@^|{C9?YL)%l+04CV7LBDxp* zQ_#LfVQbjWh$nap>b7&2qjgdXH_{+6PQ|&?Ejg|JmIzCsW+g1hdhqEi@8>rr=(A4%nVUy8&)WmeCm)7Eb8vnZ;bjX_zkD8!&EYF^qk4Vj+!i{86FiMStTh2n z@{i)3M-kMm=c)jwBgi9Il!*4u_DcPPhnK?COZ)@KCYg=Ak^@z77a&$5S{9qaolg>? zn?m8+p+|14@=Lpnzv&t*Mf=(gA?*o0A9^gsDnD1hM=ZG4FZ~Q}R7;O&@z1vr?rxeY z@PTH{f43{h9qF4}pKO%c=hLLx^efjgpru@c-1BKZ7l@9u8utK8xetQ^Cp2F+!$h3D zIaTFp>Ch5aH&}y`6b^%ZQg$@((Nqtwm2Q-hh6YloV&+55_uQ~1k@~`X<30N&-!8%F zR*iGNjNLn~%q=Y?kZaCAI|gq_?&Io)4$EVre43zAS)@?49r=ynd{g|YE$Qo_&y^Jz zwZjUy>MkWf_p5vxNgxnTy^w5;@V1Jrg}PO(N#P88tD40ol-53mJH^|}Pa6Irhwzv! zna#Rc9v-H$Df9|);)vFc@D32o=@`{6rpM16W#n?v=`~lJ0;NE zPh8kxKum9hKfZ`W{Yc`X-(Dhf?G>IUIPT2U`NN>au`eC^RGH)lStNt?i&E}+(bLUR zH>uZd@2u#xW?G&ndaZCQov><{6TMcVpIKalLkdk#-2QVcEsbh7k#ZUY-*?1w8-@+_cmHm z{WU;C?F4T>}Q_#b=u+Tu{oAwp?F_W zPnN#o*5{nYaJPlw*qDoiA&;)c)_l9WyRyx7_?>8IM`FDsDRjrSi{Jy6d2uX%$J$II zAomSIQ#gj&j2Q^n_&S}J5yP`C;xuuo9I@$ibf1A~y>{bb+_b}}besdpnWVxj8@r8d zMXRum(YA!%ENm1AxOa%R4HX9~-5TWDO$WAyaTN}>CfQr|#d$w?IauFYa37nRrfZgD zdGrz_P1w$t7xo2xhZFBa*nZU{iVO}eMX)#@sxm4($NHd?)M!{hR>iS+w@I$4(KuHn zeh}k4=^qE}xHd+5zeazAM^66zrGtc#*&{$BzV}lFc@Bsjz4uaDxaq|LRV6NY9_r0M zIgQWHf7aR7ie9A(`6bnNYQKiplMl}ZmSkMlDcvgDN=YqlH_L-YY%kk-jFiorih@mg z()NN>$O)dxJlCti`6#i-pm<)pZ$POMit%w)u3sf=ajDO{Keq^f*1fl0RGK)OU^fuH ztdC9@F27{@g>9Y9_iC_LtPCqF4jU|Wa4c6J7@!1~lN9e*{%o@5O0yUB%gje?Uh5`L z51g?N>U|`7a2(Gi7LQ)n@|8MBEYKHmyY<;vB80g0xKMs*Jv2mZ@C$^vqx@!bRj{Sr z2>YgNUx>mtU7F0d;~+_nFW1`f%5;Fwt_RhlY`<+yW-b_J83tN}>u;~V;VIw*k0FTn z3+ybfhY2+4$&UejWCJ$gfp?E&Ttd;-lrDl?rWRJbIXf+(R_eRN1NFU>VFJ$_Kx_ZotsJZwNKXzPUTcQ>UvHu&Xn zpUoD+m$$v&0lT5ZKYSlnce7_{gllMTnxHSNM6Mf`;pP~Mh_H8@=(pV$lZK0)po%qe z^T_noI7=vwjdJ%k+HJQTej57h^1C=2R1=V>!1p)jRIbaMB?L&hPmD(vh&j6fD@_kz z4UU%8o_%&Ia^3j75As{x&W

xCL}X{)S0X+wSqs?s>4i^$!A^*xJcQ^4KZ&{toY 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 PAjf&S`njxgN@xNAvadyV diff --git a/webui/.dockerignore b/webui/.dockerignore deleted file mode 100644 index 8e8fdce7b..000000000 --- a/webui/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -# compiled output -/dist - -# dependencies -/node_modules diff --git a/webui/.editorconfig b/webui/.editorconfig index 9d08a1a82..cb5b5bbaa 100644 --- a/webui/.editorconfig +++ b/webui/.editorconfig @@ -1,9 +1,22 @@ +# Editor configuration, see http://editorconfig.org root = true [*] charset = utf-8 + +[*.{js,ts,tsx}] indent_style = space indent_size = 2 -end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab + +[{package.json}] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/webui/.env.sample b/webui/.env.sample new file mode 100644 index 000000000..0fe8436ee --- /dev/null +++ b/webui/.env.sample @@ -0,0 +1,2 @@ +VITE_APP_BASE_API_URL=/api +VITE_APP_BASE_URL= diff --git a/webui/.eslintignore b/webui/.eslintignore deleted file mode 100644 index 9f81cf845..000000000 --- a/webui/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -/dist -/src-capacitor -/src-cordova -/.quasar -/node_modules -.eslintrc.cjs -/quasar.config.*.temporary.compiled* diff --git a/webui/.eslintrc.cjs b/webui/.eslintrc.cjs deleted file mode 100644 index 331093689..000000000 --- a/webui/.eslintrc.cjs +++ /dev/null @@ -1,68 +0,0 @@ -module.exports = { - root: true, - - parserOptions: { - parser: '@babel/eslint-parser', - ecmaVersion: 2021, // Allows for the parsing of modern ECMAScript features - }, - - env: { - node: true, - browser: true, - 'vue/setup-compiler-macros': true - }, - - extends: [ - // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention - // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. - 'plugin:vue/vue3-essential', - 'plugin:vue/vue3-recommended', - 'standard' - ], - - // required to lint *.vue files - plugins: [ - 'vue', - ], - - globals: { - ga: 'readonly', // Google Analytics - cordova: 'readonly', - __statics: 'readonly', - __QUASAR_SSR__: 'readonly', - __QUASAR_SSR_SERVER__: 'readonly', - __QUASAR_SSR_CLIENT__: 'readonly', - __QUASAR_SSR_PWA__: 'readonly', - process: 'readonly', - Capacitor: 'readonly', - chrome: 'readonly' - }, - - // add your custom rules here - rules: { - // allow async-await - 'generator-star-spacing': 'off', - // allow paren-less arrow functions - 'arrow-parens': 'off', - 'one-var': 'off', - 'no-void': 'off', - 'multiline-ternary': 'off', - - 'import/first': 'off', - 'import/named': 'error', - 'import/namespace': 'error', - 'import/default': 'error', - 'import/export': 'error', - 'import/extensions': 'off', - 'import/no-unresolved': 'off', - 'import/no-extraneous-dependencies': 'off', - 'prefer-promise-reject-errors': 'off', - 'vue/multi-word-component-names': 'off', - - // allow console.log during development only - //'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - // allow debugger during development only - //'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' - } -} - diff --git a/webui/.gitignore b/webui/.gitignore index db32ba46c..7f7b4c885 100644 --- a/webui/.gitignore +++ b/webui/.gitignore @@ -1,32 +1,61 @@ -.quasar -.DS_Store -.thumbs.db -node_modules +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output /dist -/dev_local -/src-cordova/node_modules -/src-cordova/platforms -/src-cordova/plugins -/src-cordova/www +/build +/dist-server +/tmp +/out-tsc -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* +# dependencies +/node_modules +.yalc -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace -# local env files -.env.local -.env.*.local +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json -# static assets (ignore all except the DO NOT EDIT file) +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db + +# env +.env + +# yarn berry with no zero-installs +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# static assets static/* -!static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md diff --git a/webui/.nvmrc b/webui/.nvmrc index 8b0beab16..26600046d 100644 --- a/webui/.nvmrc +++ b/webui/.nvmrc @@ -1 +1 @@ -20.11.0 +v22.15.1 diff --git a/webui/.postcssrc.cjs b/webui/.postcssrc.cjs deleted file mode 100644 index 1174fe52b..000000000 --- a/webui/.postcssrc.cjs +++ /dev/null @@ -1,8 +0,0 @@ -// https://github.com/michael-ciniawsky/postcss-load-config - -module.exports = { - plugins: [ - // to edit target browsers: use "browserslist" field in package.json - require('autoprefixer') - ] -} diff --git a/webui/.prettierrc.json b/webui/.prettierrc.json new file mode 100644 index 000000000..7933dbd7b --- /dev/null +++ b/webui/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "semi": false, + "trailingComma": "all", + "singleQuote": true, + "printWidth": 120 +} \ No newline at end of file diff --git a/webui/.stylintrc b/webui/.stylintrc deleted file mode 100644 index ce38d777e..000000000 --- a/webui/.stylintrc +++ /dev/null @@ -1,35 +0,0 @@ -{ - "blocks": "never", - "brackets": "never", - "colons": "never", - "colors": "always", - "commaSpace": "always", - "commentSpace": "always", - "cssLiteral": "never", - "depthLimit": false, - "duplicates": true, - "efficient": "always", - "extendPref": false, - "globalDupe": true, - "indentPref": 2, - "leadingZero": "never", - "maxErrors": false, - "maxWarnings": false, - "mixed": false, - "namingConvention": false, - "namingConventionStrict": false, - "none": "never", - "noImportant": false, - "parenSpace": "never", - "placeholder": false, - "prefixVarsWithDollar": "always", - "quotePref": "single", - "semicolons": "never", - "sortOrder": false, - "stackedProperties": "never", - "trailingWhitespace": "never", - "universal": "never", - "valid": true, - "zeroUnits": "never", - "zIndexNormalize": false -} diff --git a/webui/.yarnrc.yml b/webui/.yarnrc.yml new file mode 100644 index 000000000..3186f3f07 --- /dev/null +++ b/webui/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/webui/Dockerfile b/webui/Dockerfile deleted file mode 100644 index 283101452..000000000 --- a/webui/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM node:22.9-alpine3.20 -# Current Active LTS release according to (https://nodejs.org/en/about/releases/) - -ENV WEBUI_DIR=/src/webui -RUN mkdir -p $WEBUI_DIR - -COPY package.json $WEBUI_DIR/ -COPY yarn.lock $WEBUI_DIR/ - -WORKDIR $WEBUI_DIR -RUN yarn install - -COPY . $WEBUI_DIR/ - -EXPOSE 8080 - -RUN yarn lint diff --git a/webui/babel.config.cjs b/webui/babel.config.cjs deleted file mode 100644 index cd63d3933..000000000 --- a/webui/babel.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ - -module.exports = api => { - return { - presets: [ - [ - '@quasar/babel-preset-app', - api.caller(caller => caller && caller.target === 'node') - ? { targets: { node: 'current' } } - : {} - ] - ] - } -} - - diff --git a/webui/buildx.Dockerfile b/webui/buildx.Dockerfile new file mode 100644 index 000000000..09b65ab81 --- /dev/null +++ b/webui/buildx.Dockerfile @@ -0,0 +1,18 @@ +FROM node:22.15.1-alpine3.20 + +ENV WEBUI_DIR=/src/webui +RUN mkdir -p $WEBUI_DIR + +COPY package.json yarn.lock .yarnrc.yml $WEBUI_DIR/ + +ENV VITE_APP_BASE_URL="" +ENV VITE_APP_BASE_API_URL="/api" + +WORKDIR $WEBUI_DIR + +RUN corepack enable +RUN yarn workspaces focus --all --production + +COPY . $WEBUI_DIR/ + +EXPOSE 8080 diff --git a/webui/dev/scripts/transfer.js b/webui/dev/scripts/transfer.js deleted file mode 100644 index eaa02bceb..000000000 --- a/webui/dev/scripts/transfer.js +++ /dev/null @@ -1,17 +0,0 @@ -const fs = require('fs-extra') - -const folder = process.argv[2] - -async function execute () { - try { - await fs.emptyDir('./static') - await fs.outputFile('./static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md', 'For more information see `webui/readme.md`') - console.log('Deleted static folder contents!') - await fs.copy(`./dist/${folder}`, './static', { overwrite: true }) - console.log('Installed new files in static folder!') - } catch (err) { - console.error(err) - } -} - -execute() diff --git a/webui/eslint.config.mjs b/webui/eslint.config.mjs new file mode 100644 index 000000000..51edbb887 --- /dev/null +++ b/webui/eslint.config.mjs @@ -0,0 +1,57 @@ +import js from '@eslint/js' +import eslintConfigPrettier from 'eslint-config-prettier' +import importPlugin from 'eslint-plugin-import' +import jsxA11y from 'eslint-plugin-jsx-a11y' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import globals from 'globals' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + plugins: { + react: react, + 'react-hooks': reactHooks, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "@typescript-eslint/no-explicit-any": "warn", + }, + }, + eslintConfigPrettier, + { + files: ['**/*.{ts,tsx}'], + extends: [importPlugin.flatConfigs.recommended, importPlugin.flatConfigs.typescript], + rules: { + 'import/order': [ + 'error', + { + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + 'newlines-between': 'always', + }, + ], + }, + settings: { + 'import/resolver': { + typescript: true, + node: true, + }, + }, + }, + jsxA11y.flatConfigs.recommended, +) diff --git a/webui/index.dev.html b/webui/index.dev.html new file mode 100644 index 000000000..215a1a4a8 --- /dev/null +++ b/webui/index.dev.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + Traefik Proxy + + + +
+ + + diff --git a/webui/index.html b/webui/index.html index 654437a27..4b5b2e2a0 100644 --- a/webui/index.html +++ b/webui/index.html @@ -1,32 +1,31 @@ - + {{if .APIUrl}} {{end}} - <%= productName %> - - - - - - - - - - - - - - - - + + + + + + + + Traefik Proxy - + +
+ diff --git a/webui/jsconfig.json b/webui/jsconfig.json deleted file mode 100644 index 456944a5e..000000000 --- a/webui/jsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "src/*": [ - "src/*" - ], - "app/*": [ - "*" - ], - "components/*": [ - "src/components/*" - ], - "layouts/*": [ - "src/layouts/*" - ], - "pages/*": [ - "src/pages/*" - ], - "assets/*": [ - "src/assets/*" - ], - "boot/*": [ - "src/boot/*" - ], - "stores/*": [ - "src/stores/*" - ], - "vue$": [ - "node_modules/vue/dist/vue.runtime.esm-bundler.js" - ] - } - }, - "exclude": [ - "dist", - ".quasar", - "node_modules" - ] -} \ No newline at end of file diff --git a/webui/package.json b/webui/package.json index 7cd74012b..d74a586b8 100644 --- a/webui/package.json +++ b/webui/package.json @@ -1,62 +1,101 @@ { - "name": "traefik-ui", - "version": "2.0.0", - "description": "Traefik UI", - "productName": "Traefik", - "cordovaId": "io.traefik.traefik", + "name": "traefik-proxy-dashboard", + "version": "0.1.0", "private": true, + "homepage": ".", "scripts": { - "transfer": "node dev/scripts/transfer.js", - "lint": "eslint src/**/*.{js,vue}", - "dev": "APP_ENV=development quasar dev", - "build-quasar": "quasar build", - "build-staging": "NODE_ENV=production APP_ENV=development yarn build-quasar", - "build": "NODE_ENV=production APP_ENV=production yarn build-quasar && yarn transfer spa", - "build:nc": "yarn build", - "test": "echo \"See package.json => scripts for available tests.\" && exit 0", - "test:unit": "vitest", + "build": "vite build", + "build:prod": "yarn test && yarn tsc && yarn lint && yarn build", + "dev": "vite", + "format": "prettier './src/**/*.{ts,tsx}' --config .prettierrc.json --write", + "lint": "eslint './src/**/*.{ts,tsx}'", + "lint:fix": "eslint --fix './src/**/*.{ts,tsx}'", + "preview": "vite preview", + "test": "vitest run", + "test:coverage": "vitest run --coverage", + "test:watch": "vitest", "test:unit:ci": "vitest run" }, + "lint-staged": { + "**/*.{ts,tsx}": [ + "yarn format", + "eslint --fix", + "git add" + ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "type": "module", "dependencies": { - "@quasar/extras": "^1.16.12", - "axios": "^1.7.4", + "@eslint/js": "^9.23.0", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", + "@traefiklabs/faency": "11.1.4", + "@types/lodash": "^4.17.16", + "@types/node": "^22.15.18", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.19", + "@types/react-router-dom": "^5.1.3", + "@typescript-eslint/parser": "^8.29.0", + "@vitejs/plugin-react": "^4.2.1", + "@vitest/coverage-v8": "^1.3.1", "chart.js": "^4.4.1", - "core-js": "^3.35.1", - "dot-prop": "^8.0.2", - "lodash.isequal": "4.5.0", - "moment": "^2.30.1", - "quasar": "^2.16.6", - "query-string": "^8.1.0", - "vue": "^3.0.0", - "vue-chartjs": "^5.3.0", - "vue-router": "^4.0.12", - "vuex": "^4.1.0", - "vuex-map-fields": "^1.4.1" + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.0.2", + "eslint-import-resolver-typescript": "^3.8.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.1.0", + "framer-motion": "^11.18.2", + "globals": "^16.0.0", + "jest-extended": "^4.0.2", + "jsdom": "^24.0.0", + "lodash": "^4.17.21", + "msw": "^2.1.7", + "query-string": "^6.9.0", + "react": "^18.2.0", + "react-chartjs-2": "^5.2.0", + "react-dom": "^18.2.0", + "react-error-boundary": "^4.0.12", + "react-helmet-async": "^2.0.4", + "react-icons": "^5.0.1", + "react-infinite-scroll-hook": "^4.1.1", + "react-router-dom": "6.22.1", + "swr": "^2.2.4", + "typescript": "^5.2.2", + "typescript-eslint": "^8.24.1", + "usehooks-ts": "^2.14.0", + "vite": "^5.1.4", + "vite-tsconfig-paths": "^4.3.1", + "vitest": "^1.3.1", + "vitest-canvas-mock": "^0.3.3" }, "devDependencies": { - "@babel/core": "^7.23.9", - "@babel/eslint-parser": "^7.23.10", - "@quasar/app-vite": "^2.0.0-beta.15", - "@quasar/babel-preset-app": "^2.0.3", - "@quasar/quasar-app-extension-testing-unit-vitest": "^1.0.0", - "@vue/test-utils": "^2.4.4", - "autoprefixer": "^10.4.2", - "eslint": "^8.11.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.19.1", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-vue": "^9.0.0", - "postcss": "^8.4.14", - "vitest": "^1.6.0" + "husky": "^3.1.0", + "lint-staged": "^9.5.0", + "prettier": "^3.5.3" }, - "resolutions": { - "cookie": "^0.7.0" + "msw": { + "workerDirectory": [ + "public" + ] }, - "engines": { - "node": "^22 || ^20 || ^18 || ^16", - "npm": ">= 6.13.4", - "yarn": ">= 1.22.22" - }, - "packageManager": "yarn@1.22.22" + "packageManager": "yarn@4.9.1" } diff --git a/webui/postcss.config.cjs b/webui/postcss.config.cjs deleted file mode 100644 index 94b7b1c85..000000000 --- a/webui/postcss.config.cjs +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable */ -// https://github.com/michael-ciniawsky/postcss-load-config - -module.exports = { - plugins: [ - // https://github.com/postcss/autoprefixer - require('autoprefixer')({ - overrideBrowserslist: [ - 'last 4 Chrome versions', - 'last 4 Firefox versions', - 'last 4 Edge versions', - 'last 4 Safari versions', - 'last 4 Android versions', - 'last 4 ChromeAndroid versions', - 'last 4 FirefoxAndroid versions', - 'last 4 iOS versions' - ] - }) - - // https://github.com/elchininet/postcss-rtlcss - // If you want to support RTL css, then - // 1. yarn/npm install postcss-rtlcss - // 2. optionally set quasar.config.js > framework > lang to an RTL language - // 3. uncomment the following line: - // require('postcss-rtlcss') - ] -} diff --git a/webui/public/app-logo-128x128.png b/webui/public/app-logo-128x128.png deleted file mode 100755 index af9348b104c3a5504549aaeb1283486f9cb13c7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18503 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

{middleware.name}

} + + {(middleware.type || middleware.plugin) && ( + + {parseMiddlewareType(middleware)} + + )} + {middleware.provider && ( + + + {middleware.provider} + + )} + + {middleware.status && ( + + + + )} + {middleware.error && ( + + + + )} + {middleware.plugin && + Object.keys(middleware.plugin).map((pluginName) => ( + + ))} + {filterMiddlewareProps(middleware).map((propName) => ( + + ))} + +) + +const MiddlewarePanel = ({ data }: { data: RouterDetailType }) => ( + } title="Middlewares"> + {data.middlewares ? ( + data.middlewares.map((middleware, index) => ( + + + {data.middlewares && index < data.middlewares.length - 1 && } + + )) + ) : ( + + + + + + There are no +
+ Middlewares configured +
+
+ )} +
+) + +export default MiddlewarePanel diff --git a/webui/src/components/resources/ProviderIcon.tsx b/webui/src/components/resources/ProviderIcon.tsx new file mode 100644 index 000000000..949d1f390 --- /dev/null +++ b/webui/src/components/resources/ProviderIcon.tsx @@ -0,0 +1,74 @@ +import { useMemo } from 'react' + +import Consul from 'components/icons/providers/Consul' +import Docker from 'components/icons/providers/Docker' +import ECS from 'components/icons/providers/ECS' +import Etcd from 'components/icons/providers/Etcd' +import File from 'components/icons/providers/File' +import Http from 'components/icons/providers/Http' +import Hub from 'components/icons/providers/Hub' +import Internal from 'components/icons/providers/Internal' +import Kubernetes from 'components/icons/providers/Kubernetes' +import Nomad from 'components/icons/providers/Nomad' +import Plugin from 'components/icons/providers/Plugin' +import Redis from 'components/icons/providers/Redis' +import Zookeeper from 'components/icons/providers/Zookeeper' + +type ProviderIconProps = { + name: string + size?: number +} + +export const ProviderIcon = ({ name, size = 32 }: ProviderIconProps) => { + const Icon = useMemo(() => { + if (!name || typeof name !== 'string') return Internal + + const nameLowerCase = name.toLowerCase() + + if (['consul', 'consul-', 'consulcatalog-'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Consul + } + if (['docker', 'swarm'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Docker + } + if (['ecs'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return ECS + } + if (['etcd'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Etcd + } + if (['file'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return File + } + if (['http'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Http + } + if (['hub'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Hub + } + if (['kubernetes'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Kubernetes + } + if (['nomad', 'nomad-'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Nomad + } + if (['plugin', 'plugin-'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Plugin + } + if (['redis'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Redis + } + if (['zookeeper'].some((prefix) => nameLowerCase.startsWith(prefix))) { + return Zookeeper + } + return Internal + }, [name]) + + return ( + + ) +} diff --git a/webui/src/components/resources/RenderUnknownProp.spec.tsx b/webui/src/components/resources/RenderUnknownProp.spec.tsx new file mode 100644 index 000000000..917936547 --- /dev/null +++ b/webui/src/components/resources/RenderUnknownProp.spec.tsx @@ -0,0 +1,162 @@ +import { RenderUnknownProp } from './RenderUnknownProp' + +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('renders a string correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('StringPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('string prop value') + }) + + it('renders a number correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('NumberPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('123123') + }) + + it('renders false correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('BooleanPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-false') + expect(container.querySelector('div > div')?.innerHTML).toContain('False') + }) + + it('renders boolean true correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('BooleanPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-true') + expect(container.querySelector('div > div')?.innerHTML).toContain('True') + }) + + it('renders boolean false correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('BooleanPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-false') + expect(container.querySelector('div > div')?.innerHTML).toContain('False') + }) + + it('renders string `true` correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('StringBoolPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-true') + expect(container.querySelector('div > div')?.innerHTML).toContain('True') + }) + + it('renders string `false` correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('StringBoolPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-false') + expect(container.querySelector('div > div')?.innerHTML).toContain('False') + }) + + it('renders empty object correctly', () => { + const { container } = renderWithProviders() + + expect(container.querySelector('div > span')?.innerHTML).toContain('EmptyObjectPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('enabled-true') + expect(container.querySelector('div > div')?.innerHTML).toContain('True') + }) + + it('renders list of strings correctly', () => { + const { container } = renderWithProviders( + , + ) + + expect(container.querySelector('div > span')?.innerHTML).toContain('StringListPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('string1') + expect(container.querySelector('div > div')?.innerHTML).toContain('string2') + expect(container.querySelector('div > div')?.innerHTML).toContain('string3') + }) + + it('renders list of objects correctly', () => { + const { container } = renderWithProviders( + , + ) + + expect(container.querySelector('div > span')?.innerHTML).toContain('ObjectListPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('{"array":[]}') + expect(container.querySelector('div > div')?.innerHTML).toContain('{"otherObject":{}}') + expect(container.querySelector('div > div')?.innerHTML).toContain('{"word":"test"}') + expect(container.querySelector('div > div')?.innerHTML).toContain('{"number":123}') + expect(container.querySelector('div > div')?.innerHTML).toContain('{"boolean":false,"or":true}') + }) + + it('renders recursive objects correctly', () => { + const { container } = renderWithProviders( + , + ) + + expect(container.querySelector('div:first-child > span')?.innerHTML).toContain( + 'RecursiveObjectPropName > parent Property > child Property > value Property1', + ) + expect(container.querySelector('div:first-child > div')?.innerHTML).toContain('test') + expect(container.querySelector('div:first-child ~ div > span')?.innerHTML).toContain( + 'RecursiveObjectPropName > parent Property > child Property > value Property2', + ) + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item1') + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item2') + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item3') + }) + + it('renders recursive objects removing title prefix correctly', () => { + const { container } = renderWithProviders( + , + ) + + expect(container.querySelector('div:first-child > span')?.innerHTML).toContain( + 'parent Property > child Property > value Property1', + ) + expect(container.querySelector('div:first-child > div')?.innerHTML).toContain('test') + expect(container.querySelector('div:first-child ~ div > span')?.innerHTML).toContain( + 'parent Property > child Property > value Property2', + ) + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item1') + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item2') + expect(container.querySelector('div:first-child ~ div > div')?.innerHTML).toContain('item3') + }) + + it(`renders should not remove prefix if there's no child`, () => { + const { container } = renderWithProviders( + , + ) + + expect(container.querySelector('div > span')?.innerHTML).toContain('RecursiveObjectPropName') + expect(container.querySelector('div > div')?.innerHTML).toContain('DummyValue') + }) +}) diff --git a/webui/src/components/resources/RenderUnknownProp.tsx b/webui/src/components/resources/RenderUnknownProp.tsx new file mode 100644 index 000000000..580c89f2c --- /dev/null +++ b/webui/src/components/resources/RenderUnknownProp.tsx @@ -0,0 +1,76 @@ +import { Text } from '@traefiklabs/faency' +import { ReactNode } from 'react' + +import { BooleanState, ItemBlock } from './DetailSections' +import GenericTable from './GenericTable' +import IpStrategyTable, { IpStrategy } from './IpStrategyTable' + +import Tooltip from 'components/Tooltip' + +type RenderUnknownPropProps = { + name: string + prop?: unknown + removeTitlePrefix?: string +} + +export const RenderUnknownProp = ({ name, prop, removeTitlePrefix }: RenderUnknownPropProps) => { + const wrap = (children: ReactNode, altName?: string, key?: string) => ( + + {children} + + ) + try { + if (typeof prop !== 'undefined') { + if (typeof prop === 'boolean') { + return wrap() + } + + if (typeof prop === 'string' && ['true', 'false'].includes((prop as string).toLowerCase())) { + return wrap() + } + + if (['string', 'number'].includes(typeof prop)) { + return wrap( + + {prop as string} + , + ) + } + + if (JSON.stringify(prop) === '{}') { + return wrap() + } + + if (prop instanceof Array) { + return wrap( + (['number', 'string'].includes(typeof p) ? p : JSON.stringify(p)))} />, + ) + } + + if (prop?.constructor === Object) { + return ( + <> + {Object.entries(prop).map(([childName, childProp]) => { + const spacedChildName = childName.replace(/([a-z0-9])([A-Z])/g, '$1 $2') + let title = `${name} > ${spacedChildName}` + if (removeTitlePrefix) { + title = title.replace(new RegExp(`^${removeTitlePrefix} > `, 'i'), '') + } + + switch (childName) { + case 'ipStrategy': + return wrap(, title, title) + default: + return + } + })} + + ) + } + } + } catch (error) { + console.log('Unable to render plugin property:', { name, prop }, { error }) + } + + return null +} diff --git a/webui/src/components/resources/ResourceCard.tsx b/webui/src/components/resources/ResourceCard.tsx new file mode 100644 index 000000000..4e6b040be --- /dev/null +++ b/webui/src/components/resources/ResourceCard.tsx @@ -0,0 +1,26 @@ +import { Card, CSS, Flex, Text } from '@traefiklabs/faency' +import { ReactNode } from 'react' + +type ResourceCardProps = { + children: ReactNode + css?: CSS + title?: string + titleCSS?: CSS +} + +const ResourceCard = ({ children, css, title, titleCSS = {} }: ResourceCardProps) => { + return ( + + + {title && ( + + {title.toUpperCase()} + + )} + {children} + + + ) +} + +export default ResourceCard diff --git a/webui/src/components/resources/ResourceStatus.tsx b/webui/src/components/resources/ResourceStatus.tsx new file mode 100644 index 000000000..51e3a7e81 --- /dev/null +++ b/webui/src/components/resources/ResourceStatus.tsx @@ -0,0 +1,71 @@ +import { Flex, styled, Text } from '@traefiklabs/faency' +import { ReactNode } from 'react' + +import { colorByStatus, iconByStatus, StatusType } from 'components/resources/Status' + +export const StatusWrapper = styled(Flex, { + height: '32px', + width: '32px', + padding: 0, + borderRadius: '4px', +}) + +type Props = { + status: StatusType + label?: string + withLabel?: boolean +} + +type Value = { color: string; icon: ReactNode; label: string } + +export const ResourceStatus = ({ status, withLabel = false }: Props) => { + const valuesByStatus: { [key in StatusType]: Value } = { + info: { + color: colorByStatus.info, + icon: iconByStatus.info, + label: 'Info', + }, + success: { + color: colorByStatus.success, + icon: iconByStatus.success, + label: 'Success', + }, + warning: { + color: colorByStatus.warning, + icon: iconByStatus.warning, + label: 'Warning', + }, + error: { + color: colorByStatus.error, + icon: iconByStatus.error, + label: 'Error', + }, + enabled: { + color: colorByStatus.enabled, + icon: iconByStatus.enabled, + label: 'Success', + }, + disabled: { + color: colorByStatus.disabled, + icon: iconByStatus.disabled, + label: 'Error', + }, + } + + const values = valuesByStatus[status] + + if (!values) { + return null + } + + return ( + + + {values.icon} + + {withLabel && values.label && ( + {values.label} + )} + + ) +} diff --git a/webui/src/components/resources/RouterPanel.tsx b/webui/src/components/resources/RouterPanel.tsx new file mode 100644 index 000000000..c380df50e --- /dev/null +++ b/webui/src/components/resources/RouterPanel.tsx @@ -0,0 +1,76 @@ +import { Badge, Text } from '@traefiklabs/faency' +import { FiInfo } from 'react-icons/fi' + +import { DetailSection, ItemBlock, LayoutTwoCols, ProviderName } from './DetailSections' +import GenericTable from './GenericTable' +import { ResourceStatus } from './ResourceStatus' + +import ProviderIcon from 'components/icons/providers' +import Tooltip from 'components/Tooltip' +import { ResourceDetailDataType } from 'hooks/use-resource-detail' + +type Props = { + data: ResourceDetailDataType +} + +const RouterPanel = ({ data }: Props) => ( + } title="Router Details"> + + {data.status && ( + + + + )} + {data.provider && ( + + + {data.provider} + + )} + {data.priority && ( + + + {data.priority.toString()} + + + )} + + {data.rule ? ( + + + {data.rule} + + + ) : null} + {data.name && ( + + + {data.name} + + + )} + {!!data.using && data.using && data.using.length > 0 && ( + + {data.using.map((ep) => ( + + {ep} + + ))} + + )} + {data.service && ( + + + {data.service} + + + )} + {data.error && ( + + + + )} + +) + +export default RouterPanel diff --git a/webui/src/components/resources/Status.tsx b/webui/src/components/resources/Status.tsx new file mode 100644 index 000000000..d67c126e9 --- /dev/null +++ b/webui/src/components/resources/Status.tsx @@ -0,0 +1,68 @@ +import { Box, CSS } from '@traefiklabs/faency' +import { ReactNode } from 'react' +import { FiAlertCircle, FiAlertTriangle, FiCheckCircle } from 'react-icons/fi' + +export type StatusType = 'info' | 'success' | 'warning' | 'error' | 'enabled' | 'disabled' + +export const iconByStatus: { [key in StatusType]: ReactNode } = { + info: , + success: , + warning: , + error: , + enabled: , + disabled: , +} + +// Please notice: dark and light colors have the same values. +export const colorByStatus: { [key in StatusType]: string } = { + info: 'hsl(220, 67%, 51%)', + success: '#30A46C', + warning: 'hsl(24 94.0% 50.0%)', + error: 'hsl(347, 100%, 60.0%)', + enabled: '#30A46C', + disabled: 'hsl(347, 100%, 60.0%)', +} + +type StatusProps = { + css?: CSS + size?: number + status: StatusType +} + +export default function Status({ css = {}, size = 20, status }: StatusProps) { + const Icon = ({ size }: { size: number }) => { + switch (status) { + case 'info': + return + case 'success': + return + case 'warning': + return + case 'error': + return + case 'enabled': + return + case 'disabled': + return + default: + return null + } + } + + return ( + + + + ) +} diff --git a/webui/src/components/resources/TlsPanel.tsx b/webui/src/components/resources/TlsPanel.tsx new file mode 100644 index 000000000..a5890d707 --- /dev/null +++ b/webui/src/components/resources/TlsPanel.tsx @@ -0,0 +1,77 @@ +import { Badge, Box, Flex, Text } from '@traefiklabs/faency' +import { FiShield } from 'react-icons/fi' + +import { BooleanState, DetailSection, EmptyPlaceholder, ItemBlock } from './DetailSections' + +import { EmptyIcon } from 'components/icons/EmptyIcon' +import { RouterDetailType } from 'hooks/use-resource-detail' + +type Props = { + data: RouterDetailType +} + +const TlsPanel = ({ data }: Props) => ( + } title="TLS"> + {data.tls ? ( + + + + + {data.tls.options && ( + + {data.tls.options} + + )} + + + + {data.tls.certResolver && ( + + {data.tls.certResolver} + + )} + {data.tls.domains && ( + + + {data.tls.domains?.map((domain) => ( + +
+ + {domain.main} + + + {domain.sans?.map((sub) => ( + + {sub} + + ))} + + ))} + + + )} + + ) : ( + + + + + + There is no +
+ TLS configured +
+
+ )} + +) + +export default TlsPanel diff --git a/webui/src/components/resources/TraefikResourceStatsCard.spec.tsx b/webui/src/components/resources/TraefikResourceStatsCard.spec.tsx new file mode 100644 index 000000000..c5ca06117 --- /dev/null +++ b/webui/src/components/resources/TraefikResourceStatsCard.spec.tsx @@ -0,0 +1,53 @@ +import TraefikResourceStatsCard from './TraefikResourceStatsCard' + +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the component and show the expected data (success count is zero)', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('success-pc').innerHTML).toContain('0%') + expect(getByTestId('success-count').innerHTML).toContain('0') + expect(getByTestId('warnings-pc').innerHTML).toContain('60%') + expect(getByTestId('warnings-count').innerHTML).toContain('3') + expect(getByTestId('errors-pc').innerHTML).toContain('40%') + expect(getByTestId('errors-count').innerHTML).toContain('2') + }) + + it('should render the component and show the expected data (success count is not zero)', async () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('success-pc').innerHTML).toContain('14%') + expect(getByTestId('success-count').innerHTML).toContain('1') + expect(getByTestId('warnings-pc').innerHTML).toContain('57%') + expect(getByTestId('warnings-count').innerHTML).toContain('4') + expect(getByTestId('errors-pc').innerHTML).toContain('29%') + expect(getByTestId('errors-count').innerHTML).toContain('2') + }) + + it('should not render the component when everything is zero', async () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(() => { + getByTestId('success-pc') + }).toThrow('Unable to find an element by: [data-testid="success-pc"]') + expect(() => { + getByTestId('success-count') + }).toThrow('Unable to find an element by: [data-testid="success-count"]') + expect(() => { + getByTestId('warnings-pc') + }).toThrow('Unable to find an element by: [data-testid="warnings-pc"]') + expect(() => { + getByTestId('warnings-count') + }).toThrow('Unable to find an element by: [data-testid="warnings-count"]') + expect(() => { + getByTestId('errors-pc') + }).toThrow('Unable to find an element by: [data-testid="errors-pc"]') + expect(() => { + getByTestId('errors-count') + }).toThrow('Unable to find an element by: [data-testid="errors-count"]') + }) +}) diff --git a/webui/src/components/resources/TraefikResourceStatsCard.tsx b/webui/src/components/resources/TraefikResourceStatsCard.tsx new file mode 100644 index 000000000..15dfa4508 --- /dev/null +++ b/webui/src/components/resources/TraefikResourceStatsCard.tsx @@ -0,0 +1,216 @@ +import { Box, Card, Flex, H3, Skeleton, styled, Text } from '@traefiklabs/faency' +import { Chart as ChartJs, ArcElement, Tooltip } from 'chart.js' +import { ReactNode, useEffect, useMemo, useState } from 'react' +import { Doughnut } from 'react-chartjs-2' +import { FaArrowRightLong } from 'react-icons/fa6' +import { Link as RouterLink, useNavigate } from 'react-router-dom' + +import Status, { colorByStatus, StatusType } from './Status' + +import { capitalizeFirstLetter } from 'utils/string' + +ChartJs.register(ArcElement, Tooltip) + +const Link = styled(RouterLink, { + textDecoration: 'none', + + '&:hover': { + textDecoration: 'none', + }, +}) + +type StatsCardType = { + children: ReactNode +} + +const StatsCard = ({ children, ...props }: StatsCardType) => ( + + {children} + +) + +export type TraefikResourceStatsType = { + title?: string + errors: number + total: number + warnings: number +} + +export type TraefikResourceStatsCardProps = TraefikResourceStatsType & { + linkTo: string +} + +export type DataType = { + datasets: { + backgroundColor: string[] + data: (string | number)[] + }[] + labels?: string[] +} + +const getPercent = (total: number, value: number) => (total > 0 ? ((value * 100) / total).toFixed(0) : 0) + +const STATS_ATTRIBUTES: { status: StatusType; label: string }[] = [ + { + status: 'enabled', + label: 'success', + }, + { + status: 'warning', + label: 'warnings', + }, + { + status: 'disabled', + label: 'errors', + }, +] + +const CustomLegend = ({ + status, + label, + count, + total, + linkTo, +}: { + status: StatusType + label: string + count: number + total: number + linkTo: string +}) => { + return ( + + + + + {capitalizeFirstLetter(label)} + + {getPercent(total, count)}% + + + + {count} + + + + ) +} + +const TraefikResourceStatsCard = ({ title, errors, total, warnings, linkTo }: TraefikResourceStatsCardProps) => { + const navigate = useNavigate() + + const defaultData = { + datasets: [ + { + backgroundColor: [colorByStatus.enabled], + data: [1], + }, + ], + } + const [data, setData] = useState(defaultData) + + const counts = useMemo( + () => ({ + success: total - (errors + warnings), + warnings, + errors, + }), + [errors, total, warnings], + ) + + useEffect(() => { + if (counts.success + counts.warnings + counts.errors === 0) { + setData(defaultData) + return + } + + const newData = { + datasets: [ + { + backgroundColor: [colorByStatus.enabled, colorByStatus.warning, colorByStatus.error], + data: [counts.success, counts.warnings, counts.errors], + }, + ], + labels: ['Success', 'Warnings', 'Errors'], + } + + setData(newData) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [errors, warnings, total, counts]) + + const options = { + animation: { + duration: 1000, + }, + plugins: { + legend: { + display: false, + }, + }, + tooltips: { + enabled: true, + }, + maintainAspectRatio: false, + onClick: (_, activeEl) => { + navigate(`${linkTo}?status=${STATS_ATTRIBUTES[activeEl[0].index].status}`) + }, + } + + if (!errors && !total && !warnings) return null + + return ( + + {title && ( + + {title && ( + +

{title}

+ + + + Explore + + + +
+ )} +
+ )} + + + + + + {STATS_ATTRIBUTES.map((i) => ( + + ))} + + +
+ ) +} + +export const StatsCardSkeleton = () => { + return ( + + + + + + + + + + + ) +} + +export default TraefikResourceStatsCard diff --git a/webui/src/components/resources/UsedByRoutersSection.tsx b/webui/src/components/resources/UsedByRoutersSection.tsx new file mode 100644 index 000000000..5eec1e465 --- /dev/null +++ b/webui/src/components/resources/UsedByRoutersSection.tsx @@ -0,0 +1,146 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTh, AriaThead, AriaTr, Box, Flex, styled } from '@traefiklabs/faency' +import { orderBy } from 'lodash' +import { useContext, useEffect, useMemo } from 'react' +import { useSearchParams } from 'react-router-dom' + +import { SectionHeader } from 'components/resources/DetailSections' +import SortableTh from 'components/tables/SortableTh' +import { ToastContext } from 'contexts/toasts' +import { MiddlewareDetailType, ServiceDetailType } from 'hooks/use-resource-detail' +import { makeRowRender } from 'pages/http/HttpRouters' + +type UsedByRoutersSectionProps = { + data: ServiceDetailType | MiddlewareDetailType + protocol?: string +} + +const SkeletonContent = styled(Box, { + backgroundColor: '$slate5', + height: '14px', + minWidth: '50px', + borderRadius: '4px', + margin: '8px', +}) + +export const UsedByRoutersSkeleton = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) + +export const UsedByRoutersSection = ({ data, protocol = 'http' }: UsedByRoutersSectionProps) => { + const renderRow = makeRowRender(protocol) + const [searchParams] = useSearchParams() + const { addToast } = useContext(ToastContext) + + const routersFound = useMemo(() => { + let routers = data.routers?.filter((r) => !r.message) + const direction = (searchParams.get('direction') as 'asc' | 'desc' | null) || 'asc' + const sortBy = searchParams.get('sortBy') || 'name' + if (sortBy) routers = orderBy(routers, [sortBy], [direction || 'asc']) + return routers + }, [data, searchParams]) + + const routersNotFound = useMemo(() => data.routers?.filter((r) => !!r.message), [data]) + + useEffect(() => { + routersNotFound?.map((error) => + addToast({ + message: error.message, + severity: 'error', + }), + ) + }, [addToast, routersNotFound]) + + if (!routersFound || routersFound.length <= 0) { + return null + } + + return ( + + + + + + + + {protocol !== 'udp' ? : null} + {protocol !== 'udp' ? : null} + + + + + + + + {routersFound.map(renderRow)} + + + ) +} diff --git a/webui/src/components/tables/SortableTh.tsx b/webui/src/components/tables/SortableTh.tsx new file mode 100644 index 000000000..831e9df0a --- /dev/null +++ b/webui/src/components/tables/SortableTh.tsx @@ -0,0 +1,56 @@ +import { AriaTh, CSS, Flex, Label } from '@traefiklabs/faency' +import { useCallback, useMemo } from 'react' +import { useSearchParams } from 'react-router-dom' + +import SortButton from 'components/buttons/SortButton' + +const STYLE_BY_ALIGN_VALUE = { + left: {}, + center: { + justifyContent: 'center', + }, + right: { + justifyContent: 'flex-end', + }, +} + +type SortableThProps = { + label: string + isSortable?: boolean + sortByValue?: string + align?: 'left' | 'center' | 'right' + css?: CSS +} + +export default function SortableTh({ label, isSortable = false, sortByValue, align = 'left', css }: SortableThProps) { + const wrapperStyle = useMemo(() => STYLE_BY_ALIGN_VALUE[align], [align]) + + const [searchParams, setSearchParams] = useSearchParams() + + const isActive = useMemo(() => (searchParams.get('sortBy') || 'name') === sortByValue, [searchParams, sortByValue]) + + const order = useMemo(() => (searchParams.get('direction') as 'asc' | 'desc' | '') || 'asc', [searchParams]) + + const onSort = useCallback(() => { + if (!sortByValue) return + const direction = searchParams.get('direction') || 'asc' + const sortBy = searchParams.get('sortBy') || 'name' + if (!sortBy || sortBy !== sortByValue || direction === 'desc') { + setSearchParams({ ...Object.fromEntries(searchParams.entries()), sortBy: sortByValue, direction: 'asc' }) + } else { + setSearchParams({ ...Object.fromEntries(searchParams.entries()), sortBy: sortByValue, direction: 'desc' }) + } + }, [sortByValue, searchParams, setSearchParams]) + + return ( + + + {isSortable ? ( + + ) : ( + + )} + + + ) +} diff --git a/webui/src/contexts/toasts.tsx b/webui/src/contexts/toasts.tsx new file mode 100644 index 000000000..f28ac82cc --- /dev/null +++ b/webui/src/contexts/toasts.tsx @@ -0,0 +1,40 @@ +import * as React from 'react' + +import { ToastState } from 'components/Toast' + +function handleHideToast(toast: ToastState): (t: ToastState) => ToastState { + return (t: ToastState): ToastState => { + if (t === toast) { + t.isVisible = false + } + return t + } +} + +interface ToastProviderProps { + children: React.ReactNode +} + +interface ToastContextProps { + toasts: ToastState[] + addToast: (toast: ToastState) => void + hideToast: (toast: ToastState) => void +} + +export const ToastContext = React.createContext({} as ToastContextProps) + +export const ToastProvider = (props: ToastProviderProps) => { + const [toasts, setToastList] = React.useState([]) + + const addToast = React.useCallback((toast: ToastState) => { + setToastList((toasts) => [...toasts, toast]) + }, []) + + const hideToast = React.useCallback((toast: ToastState) => { + setToastList((toasts) => toasts.map(handleHideToast(toast))) + }, []) + + const value: ToastContextProps = { toasts, addToast, hideToast } + + return {props.children} +} diff --git a/webui/src/css/fonts/nunito-v11-latin-600.eot b/webui/src/css/fonts/nunito-v11-latin-600.eot deleted file mode 100644 index 0c44db500b594d5e711f0b40ba894838ec4af40a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23216 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

s6onGMkk<4DmvbHcU{=+rf9tKql<2V- z<$_i|To}7qqG2KcJl~>`gfH4U|N33QOrvu~#TP1k7>de=XJb!#;BBt~!q)CIko5a0 zG1Ve)?MHd@j>ryie#0pZ#QNeUD z^rc5Q1>7C`tf8b`bR6)I=jA*>l-qt#96o&dj9VVIfHaB2oF`y`h9;y+5-A927eHqf zcbik4gJl(gd3dL%T)IOn&D&6;8I7k5ZgPGN_DSQk=g=y}yuaGtT{xU~Qt7!xILo1t zgd>}`L6>$uRamy0T`KrR)k=eX|Lk*(5u|Pz9;~*kkepsFOo3OcHWX<)wkT?)ZH)T- zmrJo+C5Y_bL}Wghm>_{;3Pe=RpbWTK6;7g5xG1VzC6`S^8XEEic0lX-r`Xq%5V|yd3ZTlq=Ay=Csg;+a>wmiH0i^F)uDrh>e`mRi_Z^< z@n|XV<^kuPFE)g?s|ey21|=QMRF_Lq-P_aaIu;tJzi?*1s}ggcM&cf9ktF9#cz(cF zc$G&9=EJP$fPafg9*$5^xH5#<--qLE)XNiK6L#}hUGn}}VX2o7n#bc~)-MH&si!6_ zIRZRZa|SdbH?0P;#y!?sW!?Tu5DJh>_EWhzO#us95dabA<;gHDgP(nI$u!ONK5!K) zzwte6DQ6;<;4azPA}C9JFgN&X$fAE4oB>f=e9XRZa!5qu^6T$ZJD2gSFeefC*A*or z4g=6omlGq0<-nE8$L>+eGS2m({v)su>}hXT6iZf?eTo!&!O|H)dV3yU;5+eGs^ft` z030<_gk54*t;(b%p}M-aHS9m)|E?ejTz(qbNEATLxh^MrQ);s@vubUk-&3Te1n^jrMZgA**}ci*BjD zmWG=kYMHbdY&6lFurM;P>z*C3aheNb`~zEF&m(HPXn zCx`bs`1C1^l%5*wBcHkVF+$HJk85S z<@BV(SjJ*?sv8QYiV!XHFn7xa6yLV;3-9w?Q)u6>NXcq-1*%Yxj)ULbXD90z8Q9R;DNgON0+bwGxX8Pr&d^vekNDBJ();+WH_CSh2LAhj*CrT{Kw-R~_pk1l$+42{>H@8FG zOgC$4vpj~(6Syjj6)PxkQYhRnvhR?Yx$!FNzyDNKgr7lO`oSLx222KgU-ZA4R^u-c z;tTCx*$=M{Ll2oFC!+;e=AsoS>6M?JaSy9ymXhJ562jPiNb2DxR~i{3Z9Yas8)938 zYdq;WAg{(YkE7qB!Un;|ONG-@#zY+1WMd&bQT9xqA>*M<%E#N7nVOB%utRGpHh`SSxSy$fN+!KKg`A zxafN%n*qN;cl;AP49`H5-gU1}D)9FHV@NAX9+|y#;fzRS(-A_Cze&*Y`_%PV73}0PH1ooJS6Rd zmjj$el8&Y6U4XpF>0KZxpl?ZNsd{w1*UacEN&=_vgQpqH6w?nPfCrpO3IBRNq~;@* zLTAS3G)ec zzv`Y#8&G4=Qc*+xt62ODt1}Ydp;ZwJ+yC&-crjCS*yxCIi0q;ek0!6AxqeIV?t%|a z%srii&uFj)wb9{wT2)N{6IOAO{q~bJr}ZW%uZqdmx7h$0>sz0TWF4O(qJEcF&!!k< zECDGk5fh@sK8dTzpt2lMbif@&bgetLEzW0bwQ1l(QOx2?Nq`n^_`IqvD!yD&QcPo` z3I`Vog8CmxR~~OWMEYkhFlq0IJQjde-)0BRxmd(xKO#zgN&{Du0wPC0$8@7KNJ{sud@^%t!xtrZeJWsy& z$c-BcV*_p?*t#8nl7E{e(Gtma{bi8D^LW$I^#(WS1+1Cm{DSnS6(g$@jYVkKIpP&J zCBw=Z$+DD$Pr|g?x1%jB6K}Vi!!H05d011`9?w3ZfaN|s82yhV2Tdtj7}M-R4&6Lr zOALnpxYESwHxCIx9q2(3bVBvF(#lojO1xauoRaP>6o>2XU!%!^gNvPtvF(MRAVZt( zX_D%g`KAN!Ixq~+{?B(v!Z&w2PrJTI%Z3Xa6WcQF$17l%B$AUE#Au16YoHc}4@*1( zbt6&Kw8QGf63tiT%i^T9`|%ax3@EZeWW5fC3|U=G-P0cjFNzyw*rWQ=ADKx=h?e@x zras!USVy`3R%)9A#Y413b0{O3+bZoc`QMp^Af6ROE9hKYPkm4(6}}E!Pr;61c)Zi^ zNrU7be#=yZcJds^g;TqC`E}PPI|XWTW-FZ30Ob#=w=;vOC6MiWcHB#QJCx$RUF)F7 zcJv>vC#<>QvI+?VZ{JQIha?UJp!}_nTGsLz6+IuX=H(GnVt(DSg-$}ZE)>l&1m;nX ze;Cp1`84*Gb(D%V&Y3Cpd@30_spEI3QP>p zx-plB(T1tO;m$eA&S&Ksn-0CD5`E+7$-mmj|?wsTub-} z80PtBCYyn%Pi2($f>p;ZA*kfa5=vSRHxBPlViFs+gkgzz$amVTkAZ-Y>83gAf#$_y z1j|)UD0kMw&(rhLkp@#Grxn#{s9w6RelU!10vK%^U<8MTSXgs*bjb69FR@W(rMCOI z@mYesM(YX8oEVx_VjZ&(a37-H_EF_CE&j))18=sH&3`elnt5yHxFHNNM z@TBts%h^jRd!Oi*`I5SKn-{+*xPm-XsgS3hF36?6CtM3lzbLGv`wXXymkuC~mP+V; z);+oU-Xc&VF!X6VjlUA+@zY;eatJDILnn^vPs^5M&jUkE%d}A}YR9I`KLoIR7$qJz zdydb^5S~G{{lV{?hWMQnOe%ORBzZQOWIdofj$)pz6PXKnXqPg`8VHBI-+*1V)9vlT z%ph@RPtD%}CcCpYU3ap;U8R@OzaJqu>lbd#a>;iMFS(Edym+34ii@}BgMc)aGqq;q z;0|Qu%ZrL=0xZB5i99#CNCr}?TtAyM*~l>0PRv<$Y56iqhSp3h_;J_F)#>Msb7oQeD^@|sSkmEdt`z^5LKvC604#cUO5%~26wgSXN zdt(is8;4KqC7+HRwE?FSCC6}Xt#2KHTy_vp(Im*fai&a;IVh<(+_M5PK#N^wf8Vd*DD`c#Hn zYByA6;1Yff8kuWo&?Zm+CKwIYg<5BWQ%8jGZLkMtCYDOr>>#&4T}qg)>JM zm$Y`@ia;3CC_XP*&U{}b$o;}z&C&yDo3qwTf6**A+uye2OuCAssd%~d=a@kb&+S#L zfs&CFwP7O91n{7u5|F_5*%g=_IQ}^u8znGpF6%DE6gJ}}yyJ7=sn)P(fZ>Xw@F1e6 zdzDJml=bpA<}ur8%}zu>1|#EMp_cvDPC>cfZ27wR*v_2E?TkQ z)Xps=&DL5QIRW;d4xVRd68S&th{`~V1N|T?sm@+#b99i8+?G%%BT%JG=f2z8UsAc-!Jti>wJHj+Z?~_`&fZ2l78E zeyP5LECr4XdUJQUM1n=m!_41wZN*g{7@YL`eh>zXVO2YN#fvbF^yH&1vdI6qw(454n8Lcav4O%D;Ey!BFG^q z{GuRA*ik{}r9l>r_#0N$D$3_OE4nbz2(^AO5><~nu@!=Tqm$-dZ1FLVaEY>>3N})9 zh@@yi0yX*P2}?5>YszVTSWy@^J`9cEwY23J3&Pr#bWXhJY!iD53^YY%tVHelNbb}% z2vXFh0@|Z61zkkWDRa`Yer`H|y1W-LhU3rowbkcbd52lb{t6I|IP)+gi(qD^PMiws z@c#)c8q?(#NBQ7UQw=s%d-?eQ{{8U}BOQam$RK=Epy8$;y2a;cPteD6%@%nsE}X;BH$sz$F}EZC}~u%~t;!DuF{TiK^gz~XvGNlx4bsAts1^co974j{O}#hm6)9csbY zHn4SYz0I2{TyJq(V!*4iY(VCC8GH<${v!H;!jB2xpJ!4BP!UPH$@4^UA(;;k5uUVu zwx)5v!Kc)N1)tz>hXEZ~UnC53pClr^*2Ut144|)DBq$d5{D<*ni9_^c-AguL7aoIR z6P7j(go1uj(05Uv#RAy+i|v;vPr5!s*z2XQ$x{q9ZDhJF?=hI#XnZ`GQE~+ zST5vCA85ErXDKH|jHkA3BMn&SJrM_Ku zpD4%B@Grz1b#bZ05;1KoCLFMleh4@>(hdXiFA%dL>!Ax=81eGS2L;r-F3kj==JGtR zZJw@Ii=Zs-t!VhPxD2EpJE$M;yq0t=wq?h}7sMwbR;Z+fM1B0S}|{dNqTjlN#~p z$meX$V`%%myInR6uww*$GaG)31- z){_WRxLh4g=7Ty{2HF`4onp0M!NZ>lmh-7T_XppMs1CL39id=iAQ0ivaObNCRoctMnS;ri%eCHWJ>GE93`Jvs}1kztgN zP*%+R)!&OVAcK&sk>&*E=Yp~x+60hFC=Nlm9da@qnX4v4{aZ`HC^mzm%Ad>7Y`lpK z=mxgoEdfIUr=51apOvm-=$2*>&Lv5o_Ga?WVVk|JFN2 zcM;n@NHP0AV+YjPS@h4ls*6L0j1;1TWwWM#f?k%4?G~Vdq%;H%d=v(d^mYFMS?`RI}9)ax`@=&(VdD)<6OBAAtNL;9j%t z{^{*rW9XV1;jhPDaQ1(XI^F^QYJ1Ppe44tg^ef_plU_os835`Q9w`9^UL-K{X#U+e z)Mm;Gc;i89RWg@Mh7lvo##C*8s8+JcR?4@9X)iu8YscE~R!|_5+A@G+o z((}V&fcj5`CQer7%~+=d>6r}Et*PGIsc=~+t&7}}H|e1pF0lY`ly7p$7}TyvZzP$H z(l&pvU4S>Gw8q(Ddep9$TF=l=Lj7&(V_i_0h;?9iXj;VkwqR(<2|a5(h$_h;KIxok z6t0%9K+S`lV1q1@58rOsgElZ&ki{Uczp!)lGl%gigf5kjyy7DBb+9x=SU6 zLgZ>P-M?(ms)tPPI>wh(ELV(P%p$^~A0KY{0SA{Duo?B4@5rgJCGb$UYbh z$IJC&<@z{DK3sgb^M_0J%9guj0Vlt_N%h!dzR(zhFfnutllZ|Wwr7>=&5KFyq<9F6 z<#ccSlrPtCmCKL9KDxPi4=s4PZ-hLUk6@IC@%K1d$bhGcU=$GV*WDT@1l}uQr>7qy zBr_r!Rq6$Uf_BqKhEeHaU-!enwqVk?Ngwv4_g5qrq<$aU)u$471AF=HuK)MPqh>yw z-r=>y*Ydtv5=*)@Jn+HS@Ohk(K>gOUkxhQmEBQ>-0jH7+lz7b=|L8EKf;I0$dF6%R zgwmTc1= zwo6*_?2q9cqpM+_1&EQDgvkNj8NWftUSto{Z;gh`W#9k@tFth#F0HJqrlpn2WYW=P zB`IB)NFzZ^u!@L8J|pQNww94XG?rz;fs$wxRxu*8tF)BHBROp=IhcmcTB;~Kf$Pm= z_q}+@m_H*ij*&1tM>uhHh^{q8%`pXpPgb!;CKN7oFyN6~45s>$EcAtJIJWJa-HcXm zJv`Fc-iTpsT>_w#SHt&mfYpFbyjqaSEr^IP zBmoep8EAWw@Aln%kyM5*|EElJK4dx&APD3S76Lmp1_F=f-tELJB4Ti4$_6Bzf+U1p zQ4Pc_G^7y0Wrdi4RNT(cDnLxMjU#Mg&H3n13XjD?f*}!b9k9I*9O4mH5g=WYyErgW`gx^kg+EYiWz?Qad>PE@~ ztr5q<1upfQmlNAN3rQh3*8IM?RL57b4RX!V?yNETX?c%>wwCe5xV#qjdv4Rs=rsYk z7c1DnHd;_^;;$Z6Ge$lsa$=Leb9UjpjYYyiPNbF$5v#+zkx|iGM}0Aatw>U8%^@C7 zgw~&2GOy)5AeCKLmoq{fg~8LFnbP3*09tTR*uIjzmKWcf5NooH2$>^||F7MY^|JnY zy=(}rgG}rSf*V7HA)^F=5mvjIMk|CkYJ`xtpah{VfdQ7N9{Omz=<$_jn^ysJNMNTY zB<46X3i4Kki*&(@sIQflv>^zh2Y&b4!CKPLGXz4Q6E-LWr9J*Qi5Ca5ihkEN&75bI zU2?QO`YQST}Mq^Dgl)wxgT~PXJ1~p{;awEdc3HT+Rary7p)@hm=s{0FO#N`(1kE8>oUT zg=4_YWMtbm#Y%{*V`7d%WCL*f&!)2OQ~eQ7M_9uyJt2Gfw{lb8P>prpd>~?Ji|OCD zV;m7vwjI*O54#R;?u`!$bWY9&0TvfD8G18A+PC&lxDLWBg5rpkn#?mQ2MmLse*(-> zy3h{wZiJHIK+0)ua*(l@GXe~y4md?gh=K$wQutcQk($!t&;a+XOo!Eb3(>`e9=+Z} zL^_5|j2<51QG)%egaA*SaABmm^oj7H?((-8Da|H=i%iH)gl4b}$|%~$d4%53BSjoG z<~o1ktDS+>QQjog;#ljkXX6M_AyjXvJCtE`Y*43Z9$cJo>N7trW>UXE?jYU*m_$Q! zG^YV_&n=G8MqZBv)T&}g1G=m{K-PRD{2=;Rw4sRNcaYDY=G@Ok8Zt1 z;ukMa^f3=-JaU9ZJaq_rmbD99I)ZE4OoRws3dw|JNwOrr{6mN#l+us=XB5M}*fgTL zWCOzpor(pvcT*!hd1yJ zr#g)AODavuD9!KDnc1U7H4YOj6TnI>sHG}84JNKcBr=DJ*%5@=O)x{DcZz#17Rv}h zp%91|gXSg!09US*%J9DeiN&G$yRr~_Gm@6zv8QG)Ih9*{B2*L+*7opdG}<-5c%aZn z19`uIFg}$D5yfx5jKRL74Pv2SC`GD1v=OIikui{xBv}CBE-^mrltZy7!To;K3tiM# z&R(blIbULDuR?0ZWcor$AgG1tu>S#_fJ`XBQ-3(G&O3G*gOS-Yhs)Ty!Avj%=8*ij z(WTi+!uAc^I12;z4nHoT-)ZP`%S=G(xU`bXk`8k6An-;I@SN)jEmx>lgc`xlCr9uM ze6c8NeMGzFz|&_M8y!?Cdq4ve(8S52)jF`X5R52n%PL)9A|hB*ND}QRd6@G7M!vWBIjz-KB^sOaNBl4gpEmud#*GQg7e-DEy#dnNRp)r6_#3Kkka6A_< zgxKe>NTeAIfG-Nczln{xAGNf=|_%Ru_xmwNOUJfgWVr zfj+}+%SB$>W_etkk`APm2xCWEMSfiy-4HM&06s_LP9xOAE~2a5y3Z7t5^aaO8|X`7eXETYIrXRP9~hwb}(Rx{?j{bi}p|^8iP#7vuapHUqYG zMl){U&>%OHF33HrNWE2Nemekw$iaRnmF$`+Q+a??jOSISUadS#f2~R&ZC8Z9hzejY_ z78C--c^&*zjH4@;tPqznY5}HMNKWL9sC5F8%DmDGR-XX6s}!E3f*KPLu6xb!xkxMD zc{Y$>1>gV>nJYVOqdmd3m&s=IMTLDbMFOIdxxq|kk@zW>bAoe`VCdNBY|&_FaKcP$ zh(?Yh<6+6&W?_UO0Bn+E-EqR%!F$;!J7DY_r9WecLK$JkoTQ>II2@I^>p*JDZOA;B zQ}Jw6k#te2j=*YRw%d*7jt7Ks?0jHYg%`0fO_mz5mJGw#m&UD^rT1WbqjyO&7Kq#m z&BNZYWY-)P?loue$j*rx>IF)&^k+LT5IXIx2&~EE#g(Drvjo38#26#lkG`q}y}lhw zX+E0keRDn4CJ-Er{S)fgn3Fn#4Ii-ou!O1{4c}<+AC2WLE{?_!dnoJ1c{`9ardjCk z5_tIVE$n@}UiJdZ)zNQ46kCZK2_OTagxi;ab^126E)a4jsFNowfKcVcE|nNbFNzef zhe4RG!04={^+Hj7h8YiCHtRhRtF7k-Xht#7C6<(0dxKEbma8qqpDPoK-v+fDR!S}wzxt|h4 zj_M7VFv150?3nh*C@ilzJCwS{@d?GC6Iv$04OJ0Zz~>Sii}E)lZU-fA@wVLZ)FsRZ zm|Ay_(?)m!QL#eofe579pe3~)S-n$dip2#&lfi}6b7yIt3}>$?#<;`;cuen23h1!{ z=h1BtOn9=6fNg?;&X}Eh%$ES?4Rd;tSz#X9T(2yQ;N4}?IcdSH500?nGAU`D;I6fI z7MdhK6?w20O9}!kml|dHSvN9c2}WcB(Y?sPwNR8~J_N+mRO57Ofajo-7Qhh)W;ue> z12bg|GjAa0aD|IL7j=Kq&aME}Kp?HA9x@L<8;c-bJ6OOot}T)KpE&Fwh^7j?U`N%- z*05Xuc&ue|fJi76vHeZo4mdG!ch=A*#X5xpC^~gcsGQt>MT$ak)}C{cjm}xMfYN@Z z_l{*fH;2v`5eHL;50x`N|KqB9o@y@jl{Lk3%Qp`)nkZ{@?mkxW9F1T}hxMO3aSK)1d0*iy@wT z)B;H{Uy?p{^|JpKcxg|=7~U9_MKw300QwV8{fJ2BpKKU8WTBk-x>AjiV`YDfaW>_sK;`6Z<{by zFJguRiM)}>c4TmK??9tO71;uxX?LfI5ky>_sm4o0r2wXV1L4pIZ`&0x-=c8~R=4}* zw1wWJD4nDJ0w6Z1J)RN&zl83(9!KDh77v ziL%F%jWodK41x;995X#xip-<8Bb1VeaL!;I4Pd!KIsCAfyKJmSzE%b9h7X>+_3}lr zpjb6;bY}kXOQ95dVb-eH!_cDIWos0jop7j5cYQe`f`Fi+qOzSp#@i1L}M}Vrflws0Igt_)KJ89C~JpRA@Fy0D3-}8zwEF&WzEH5gYVe!Fy{4CWbSlXc;HrK%oGU15%Asw6^gr5bC7Pz*VfLbfM*5w~n$ z&}mUvwE__6Ayw82Jtd3-1J;LS+jnnMIn)6mwUm4g`aO=CJjjI`?Ar;g{YyIcywHtG z-F+-jowzK+0DO|}!#4Io!+@N$0R!Ug$4bfnMu#oxsZw(;wt7qC-MOO3N4o8|>5dBUNNYG^V(=>^l0+PgW627v)1G-J8PI6c#(C8# zDjC{%z<&x-|I1YB5DudP&?fo~zLYP>4!>e3-DiCmT`lxY&Jq_@vJbMAx}qlGn#}!p z2a7Y!E?U4^0o`qH(U*+LUJ9#)t2nMaa8`lc_iL1&>t_(xCr$uU4F3BT`&%xY)?7{~^n z;o8__4ufdHi!q4(PN-ykPYseiTOmcN@X6d^{7P9i%wW~b$`47>sKQtxRwm55J@DC8 z##nSx3@a)?#^}N-H4qU4CTo_$IiZ7TseW)|LDVus87XHO%Bbv)Nq@wT+iv+!_!L&@Yplz)kr^(}^ zlQ?)ka^$MQM)BslXI+;90_wh=Ra!<05@Ae~l$@RyUX1>W&?Z)_1S|(-vJJ||bcHjy zu;yQjvVWtS+u;&#xpF*5w)2IE%Lo<}V`*r%ZNObkj%c!st13i&0X1|M&(1sr#p$6( z>1squ6~5Iyj36g+Hl0Zz_1$~5?i8sK6aB;iLq7DscF=vxztI7PbBax+imb4{x0HE) z4y_)~r{)lD@k(;%Py(cKyuZ1`h6|c%0VVB?}8a z>{8LEuf1+MpGCnfUwFhE`{I8c}Jkv;pH4tELrJh!O_MT?~g_Nyno+UCDVJnO(P0bxG)x)}x6q7s7v zuS^76jre$A4KYR9r*E5IX`vI8B^ju9B?5{y5MG57R%1ff0gv?@5hoijxRb+Ez4R(j zW2NKP5OvdB3DFdJf-Uh!U|Qm=Si*IS#Q(7K21I3Z#QQqBx(DQsr_rIwi{64fM|L0Q@Wp4C(}s7;_v5Wvqmf$h_WV zBYa6VO0lyUmJ4PrpaFb`jzT6eA7q4G#?++vx4Ghh^8l)+dFvjxnJ@;(q7p?Dyamn> zu?g$-=U{Uo^1a>q?B!ad0}&zq$fn1_D@efr6{hjSK?rIjBa3+|D{k=-LN!~r(jaJpI+I&4Po{q^2k2)=RC&o;!v_W2#!F|U$ah&X zQ`rdYlH#ZasoLuCm3k3>9T`%W!$u%Ljr^SFL1N|zT6-vz1+GbUh+ C#lkKC diff --git a/webui/src/css/fonts/nunito-v11-latin-600.svg b/webui/src/css/fonts/nunito-v11-latin-600.svg deleted file mode 100644 index 5c546d9a0..000000000 --- a/webui/src/css/fonts/nunito-v11-latin-600.svg +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/webui/src/css/fonts/nunito-v11-latin-600.ttf b/webui/src/css/fonts/nunito-v11-latin-600.ttf deleted file mode 100644 index 967721db56d535108b7a0bf2706f74100428082a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48128 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

}FPT)S$It*huJLeAKJ4n5owzg2R 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 diff --git a/webui/src/css/fonts/nunito-v11-latin-600.woff b/webui/src/css/fonts/nunito-v11-latin-600.woff deleted file mode 100644 index 8185efb42cbc5ae5f73f403a9e8544eddeeb4e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24668 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 diff --git a/webui/src/css/fonts/nunito-v11-latin-600.woff2 b/webui/src/css/fonts/nunito-v11-latin-600.woff2 deleted file mode 100644 index e6e9d35ecdafb22ba1af8be5eea4dc2ffcf300f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20084 zcmV)EK)}CuPew8T0RR9108VrO5dZ)H0KDh`08S790RR9100000000000000000000 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/webui/src/css/fonts/nunito-v11-latin-700.ttf b/webui/src/css/fonts/nunito-v11-latin-700.ttf deleted file mode 100644 index 9282bf63a749f3a057095a9e2f697cf3ad022f05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47456 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 diff --git a/webui/src/css/fonts/nunito-v11-latin-700.woff b/webui/src/css/fonts/nunito-v11-latin-700.woff deleted file mode 100644 index 7d113391c146a84f6e436f61477137cb4c1be984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24656 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 t6X#eU*zDBrIV<&qp_({B0Hc*_6) diff --git a/webui/src/css/fonts/nunito-v11-latin-regular.svg b/webui/src/css/fonts/nunito-v11-latin-regular.svg deleted file mode 100644 index 399883392..000000000 --- a/webui/src/css/fonts/nunito-v11-latin-regular.svg +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/webui/src/css/fonts/nunito-v11-latin-regular.ttf b/webui/src/css/fonts/nunito-v11-latin-regular.ttf deleted file mode 100644 index fad846cecb11716bf289da346293812e5d42e749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47680 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 diff --git a/webui/src/css/fonts/nunito-v11-latin-regular.woff2 b/webui/src/css/fonts/nunito-v11-latin-regular.woff2 deleted file mode 100644 index 3d2b9e75cff278f856d777ab15da10c4e9cb320e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19976 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 Xl2d%ET+;t|l0OM&2cGEtgiRd)hK-8b diff --git a/webui/src/css/quasar.variables.scss b/webui/src/css/quasar.variables.scss deleted file mode 100644 index a5bb5d289..000000000 --- a/webui/src/css/quasar.variables.scss +++ /dev/null @@ -1,22 +0,0 @@ -// Quasar Stylus Variables -// -------------------------------------------------- -// To customize the look and feel of this app, you can override -// the Stylus variables found in Quasar's source Stylus files. - -// Check documentation for full list of Quasar variables - -// It's highly recommended to change the default colors -// to match your app's branding. -// Tip: Use the "Theme Builder" on Quasar's documentation website. - -$primary : #06102a; -$secondary : #2A2A2B; -$accent : #1e54d5; - -$positive : #00a697; -$negative : #ff0039; -$info : #31CCEC; -$warning : #db7d11; - -$separator-color : rgba(0, 0, 0, .12); -$separator-dark-color : rgba(255, 255, 255, .28); diff --git a/webui/src/css/sass/_fonts.scss b/webui/src/css/sass/_fonts.scss deleted file mode 100644 index 45346f514..000000000 --- a/webui/src/css/sass/_fonts.scss +++ /dev/null @@ -1,39 +0,0 @@ -/* nunito-regular - latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url('../fonts/nunito-v11-latin-regular.eot'); /* IE9 Compat Modes */ - src: local('Nunito Regular'), local('Nunito-Regular'), - url('../fonts/nunito-v11-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/nunito-v11-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/nunito-v11-latin-regular.woff') format('woff'), /* Modern Browsers */ - url('../fonts/nunito-v11-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/nunito-v11-latin-regular.svg#Nunito') format('svg'); /* Legacy iOS */ -} -/* nunito-600 - latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url('../fonts/nunito-v11-latin-600.eot'); /* IE9 Compat Modes */ - src: local('Nunito SemiBold'), local('Nunito-SemiBold'), - url('../fonts/nunito-v11-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/nunito-v11-latin-600.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/nunito-v11-latin-600.woff') format('woff'), /* Modern Browsers */ - url('../fonts/nunito-v11-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/nunito-v11-latin-600.svg#Nunito') format('svg'); /* Legacy iOS */ -} -/* nunito-700 - latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 700; - src: url('../fonts/nunito-v11-latin-700.eot'); /* IE9 Compat Modes */ - src: local('Nunito Bold'), local('Nunito-Bold'), - url('../fonts/nunito-v11-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/nunito-v11-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/nunito-v11-latin-700.woff') format('woff'), /* Modern Browsers */ - url('../fonts/nunito-v11-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/nunito-v11-latin-700.svg#Nunito') format('svg'); /* Legacy iOS */ -} diff --git a/webui/src/css/sass/_mixins.scss b/webui/src/css/sass/_mixins.scss deleted file mode 100644 index efbef0dd1..000000000 --- a/webui/src/css/sass/_mixins.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import "./variables"; - -$breakpoints: ( - 'xs': 0, - 'sm': $screen-xs-min, - 'md': $screen-sm-min, - 'lg': $screen-md-min, - 'xl': $screen-lg-min -); - -@mixin respond-to($breakpoint, $type:'min') { - // Retrieves the value from the key - $value: map-get($breakpoints, $breakpoint); - - @if $type == 'max' { - $value: $value - 1 - } - - // If the key exists in the map - @if $value != null { - // Prints a media query based on the value - @media (#{$type}-width: $value) { - @content; - } - } - // If the key doesn't exist in the map - @else { - @warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. " - + "Please make sure it is defined in `$breakpoints` map."; - } -} diff --git a/webui/src/css/sass/_variables.scss b/webui/src/css/sass/_variables.scss deleted file mode 100644 index 1a25552f6..000000000 --- a/webui/src/css/sass/_variables.scss +++ /dev/null @@ -1,31 +0,0 @@ -// App -$screen-xs-min: 600px; -$screen-sm-min: 1024px; -$screen-md-min: 1440px; -$screen-lg-min: 1920px; - -$app-bg: #f2f3f5; -$app-bg-dark: #1A1A1A; -$app-text-dark: #fafafa; -$app-text-caption-dark: rgba(255,255,255,0.7); - -// Custom colors -$app-text-white: #ffffff; -$app-text-grey: #737373; -$app-text-purple: #9d0fb0; -$app-text-green: #24a1c1; -$app-text-green-2: #06a21d; -$app-text-marine: #06102a; - -// Quasar -$primary: #06102a; -$secondary: #2A2A2B; -$accent: #1e54d5; - -$positive: #00a697; -$negative: #ff0039; -$info: #31CCEC; -$warning: #db7d11; - -$separator-color: rgba(0, 0, 0, .12); -$separator-dark-color: rgba(255, 255, 255, .28); diff --git a/webui/src/css/sass/app.scss b/webui/src/css/sass/app.scss deleted file mode 100644 index 7157a171f..000000000 --- a/webui/src/css/sass/app.scss +++ /dev/null @@ -1,212 +0,0 @@ -@import "./fonts"; -@import "./variables"; -@import "./mixins"; - -// width -::-webkit-scrollbar { - width: 8px; -} - -// Track -::-webkit-scrollbar-track { - border-left: 1px solid #404141; - background: #2E2E2E; -} - -// Handle -::-webkit-scrollbar-thumb { - border-radius: 4px; - background: #6D6D6D; -} - -// Handle on hover -::-webkit-scrollbar-thumb:hover { - background: #979797; -} - -body { - /* If you need to support browser without CSS var support (<= IE11) */ - min-height: calc(100vh - var(--vh-offset, 0px)); - /* enable vh fix */ - - font-family: 'Nunito', 'Roboto', sans-serif; - - background-color: $app-bg; -} - -// Custom colors -.text-app-grey { - color: $app-text-grey; -} - -.bg-app-toggle { - background-color: rgba( $accent, .1 ); -} -.body--dark .bg-app-toggle { - background-color: rgba( $accent, .3 ); -} - -// Helps -.xs-text-center { - @include respond-to(sm, max) { - text-align: center; - } -} - -// Commons -.q-icon.eva{ - margin-bottom: 1.5px; -} - -.app-title { - font-size: 20px; - font-weight: 700; - .q-icon { - font-size: 24px; - } - &-label { - font-size: inherit; - font-weight: inherit; - &-sub { - font-size: 16px; - font-weight: 600; - } - } - .q-icon + &-label { - margin-left: 8px; - } -} - -// Boxed -.app-boxed { - margin-left: auto; - margin-right: auto; - &-md { - max-width: 100%; - @include respond-to(sm) { - max-width: 600px; - } - } - &-lg { - max-width: 100%; - @include respond-to(md) { - max-width: 1024px; - } - } - &-xl { - max-width: 100%; - @include respond-to(lg) { - max-width: 1440px; - } - } -} - -// Section -.app-section { - display: block; - &-wrap { - display: block; - } -} - -// Toolbar -.q-toolbar { - padding: 0 16px; - overflow-x: auto; - overflow-y: hidden; -} - -// Card -.q-card { - border-radius: 8px; -} - -.app-card-as-chip { - box-shadow: none; - - .q-card__section { - padding: 5px !important; - } -} - -// Chips -.app-chip { - border-radius: 8px; - font-weight: 600; - font-size: 14px; - &-wrap { - height: 100%; - flex-wrap: wrap; - .q-chip__content{ - white-space: normal; - } - } - &-overflow { - max-width: 90%; - - .q-chip__content{ - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } - &-accent, &-rule { - color: $accent; - background-color: rgba($accent, 0.1); - } - &-green, &-entry-points { - color: $app-text-green; - background-color: rgba($app-text-green, 0.1); - } - &-purple, &-name { - color: $app-text-purple; - background-color: rgba($app-text-purple, 0.1); - } - &-warning, &-service { - color: $warning; - background-color: rgba($warning, 0.1); - } - &-negative, &-error { - color: $negative; - background-color: rgba($negative, 0.1); - } - &-green-2, &-options { - color: $app-text-green-2; - background-color: rgba($app-text-green-2, 0.1); - } - &-marine, &-interval { - color: $app-text-marine; - background-color: rgba($app-text-grey, 0.1); - } -} -.body--dark .app-chip { - &-accent, &-rule { - background-color: rgba($accent, 0.25); - color: lighten($accent, 25%); - } - &-green, &-entry-points { - background-color: rgba($app-text-green, 0.25); - color: lighten($app-text-green, 25%); - } - &-purple, &-name { - background-color: rgba($app-text-purple, 0.25); - color: lighten($app-text-purple, 25%); - } - &-warning, &-service { - background-color: rgba($warning, 0.25); - color: lighten($warning, 25%); - } - &-negative, &-error { - background-color: rgba($negative, 0.25); - color: lighten($negative, 25%); - } - &-green-2, &-options { - background-color: rgba($app-text-green-2, 0.25); - color: lighten($app-text-green-2, 25%); - } - &-marine, &-interval { - background-color: rgba($app-text-grey, 0.25); - color: lighten($app-text-grey, 25%); - } -} diff --git a/webui/src/hooks/use-fetch-with-pagination.spec.tsx b/webui/src/hooks/use-fetch-with-pagination.spec.tsx new file mode 100644 index 000000000..3ad3c1aed --- /dev/null +++ b/webui/src/hooks/use-fetch-with-pagination.spec.tsx @@ -0,0 +1,195 @@ +import { act, fireEvent, renderHook, waitFor } from '@testing-library/react' +import { http, HttpResponse } from 'msw' +import { SWRConfig } from 'swr' + +import useFetchWithPagination from './use-fetch-with-pagination' + +import { server } from 'mocks/server' +import { renderWithProviders } from 'utils/test' + +const renderRow = (row) => ( +

  • + {row.id} +
  • +) + +const wrapper = ({ children }) => ( + + {children} + +) + +describe('useFetchWithPagination Hook', () => { + it('should fetch 1st page per default', async () => { + server.use( + http.get('/api/http/routers', () => { + return HttpResponse.json([{ id: 1 }], { status: 200 }) + }), + ) + + const { result } = renderHook(() => useFetchWithPagination('/http/routers', { renderRow }), { + wrapper, + }) + + await waitFor(() => { + expect(result.current.pages).not.toBeUndefined() + }) + }) + + it('should work as expected passing rowsPerPage property', async () => { + let perPage + + server.use( + http.get('/api/http/routers', ({ request }) => { + const url = new URL(request.url) + perPage = url.searchParams.get('per_page') + return HttpResponse.json([{ id: 1 }], { status: 200 }) + }), + ) + + const { result } = renderHook(() => useFetchWithPagination('/http/routers', { renderRow, rowsPerPage: 3 }), { + wrapper, + }) + + await waitFor(() => { + expect(result.current.pages).not.toBeUndefined() + }) + + expect(perPage).toBe('3') + }) + + it('should work as expected requesting page 2', async () => { + server.use( + http.get('/api/http/routers', ({ request }) => { + const url = new URL(request.url) + const page = url.searchParams.get('page') + if (page === '2') { + return HttpResponse.json([{ id: 3 }], { + headers: { + 'X-Next-Page': '1', + }, + status: 200, + }) + } + return HttpResponse.json([{ id: 1 }, { id: 2 }], { + headers: { + 'X-Next-Page': '2', + }, + status: 200, + }) + }), + ) + + const TestComponent = () => { + const { pages, pageCount, loadMore, isLoadingMore } = useFetchWithPagination('/http/routers', { + renderLoader: () => null, + renderRow, + rowsPerPage: 2, + }) + + return ( + <> +
      {pages}
    + {isLoadingMore ?
    Loading...
    : } +
    {pageCount}
    + + ) + } + + const { queryAllByTestId, getByTestId, getByText } = renderWithProviders() + + await waitFor(() => { + expect(() => { + getByTestId('loading') + }).toThrow('Unable to find an element by: [data-testid="loading"]') + }) + + act(() => { + fireEvent.click(getByText(/Load More/)) + }) + + await waitFor(() => { + expect(() => { + getByTestId('loading') + }).toThrow('Unable to find an element by: [data-testid="loading"]') + }) + + expect(getByTestId('pageCount').innerHTML).toBe('2') + + const items = await queryAllByTestId('listRow') + expect(items).toHaveLength(3) + }) + + it('should work as expected requesting an empty page', async () => { + server.use( + http.get('/api/http/routers', ({ request }) => { + const url = new URL(request.url) + const page = url.searchParams.get('page') + if (page === '2') { + return HttpResponse.json( + // Response body should be { message: 'invalid request: page: 2, per_page: 4' }, resulting in a type error. + // If I type the response body accordingly, allowing both an array and an object, MSW breaks, so I replaced + // the object with an empty array, and that'd be enough for testing purpose. + [], + { + headers: { + 'X-Next-Page': '1', + }, + status: 200, + }, + ) + } + return HttpResponse.json([{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }], { + headers: { + 'X-Next-Page': '2', + }, + status: 200, + }) + }), + ) + + const TestComponent = () => { + const { pages, pageCount, loadMore, isLoadingMore } = useFetchWithPagination('/http/routers', { + renderLoader: () => null, + renderRow, + rowsPerPage: 4, + }) + + return ( + <> +
      {pages}
    + {isLoadingMore ?
    Loading...
    : } +
    {pageCount}
    + + ) + } + + const { queryAllByTestId, getByTestId, getByText } = renderWithProviders() + + await waitFor(() => { + expect(() => { + getByTestId('loading') + }).toThrow('Unable to find an element by: [data-testid="loading"]') + }) + + act(() => { + fireEvent.click(getByText(/Load More/)) + }) + + await waitFor(() => { + expect(() => { + getByTestId('loading') + }).toThrow('Unable to find an element by: [data-testid="loading"]') + }) + + expect(getByTestId('pageCount').innerHTML).toBe('2') + + const items = await queryAllByTestId('listRow') + expect(items).toHaveLength(4) + }) +}) diff --git a/webui/src/hooks/use-fetch-with-pagination.tsx b/webui/src/hooks/use-fetch-with-pagination.tsx new file mode 100644 index 000000000..83f0a2e6f --- /dev/null +++ b/webui/src/hooks/use-fetch-with-pagination.tsx @@ -0,0 +1,89 @@ +import { AriaTd, AriaTr } from '@traefiklabs/faency' +import { stringify } from 'query-string' +import { ReactNode } from 'react' +import useSWRInfinite, { SWRInfiniteConfiguration } from 'swr/infinite' + +import { fetchPage } from 'libs/fetch' + +export type RenderRowType = (row: Record) => ReactNode + +export type pagesResponseInterface = { + pages: ReactNode + pageCount: number + error?: Error | null + isLoadingMore: boolean + isReachingEnd: boolean + isEmpty: boolean + loadMore: () => void +} +type useFetchWithPaginationType = ( + path: string, + opts: SWRInfiniteConfiguration & { + rowsPerPage?: number + renderRow: RenderRowType + renderLoader?: () => ReactNode + listContextKey?: string + query?: Record + }, +) => pagesResponseInterface + +const useFetchWithPagination: useFetchWithPaginationType = (path, opts) => { + const defaultLoadingFunction = () => ( + + Loading... + + ) + const { rowsPerPage = 10, renderLoader = defaultLoadingFunction, renderRow, query } = opts + + const getKey = ( + pageIndex: number, + previousPageData: { data?: unknown[]; nextPage?: number } | null, + ): string | null => { + if (previousPageData && (!previousPageData.data?.length || previousPageData.nextPage === 1)) return null + + return `${path}?${stringify({ + page: pageIndex + 1, + per_page: rowsPerPage, + ...query, + })}` + } + + const { data: res, error, size, setSize } = useSWRInfinite<{ data?: unknown[]; nextPage?: number }>(getKey, fetchPage) + + const isLoadingInitialData = !res && !error + const isEmpty = !res?.[0]?.data || (Array.isArray(res?.[0]?.data) && res?.[0]?.data.length === 0) + const isLoadingMore = isLoadingInitialData || (size > 0 && res && typeof res[size - 1] === 'undefined') || false + const nextPage = res?.[size - 1]?.nextPage + const isReachingEnd = !nextPage || nextPage === 1 + + const loadMore = (): void => { + if (!isLoadingMore) { + setSize(size + 1) + } + } + + const data = res?.reduce((acc: unknown[], req) => { + if (req.data) { + acc.push(...req.data) + } + return acc + }, [] as unknown[]) + + let pages: ReactNode = null + + if (!error) { + pages = !data ? renderLoader() : (data as Record[]).map(renderRow) + } + + return { + pages, + pageCount: size, + isEmpty, + error, + isLoadingMore, + isReachingEnd, + loadMore, + } +} + +export default useFetchWithPagination diff --git a/webui/src/hooks/use-overview-totals.tsx b/webui/src/hooks/use-overview-totals.tsx new file mode 100644 index 000000000..42d896cf4 --- /dev/null +++ b/webui/src/hooks/use-overview-totals.tsx @@ -0,0 +1,36 @@ +import useSWR from 'swr' + +type TotalsResultItem = { + routers: number + services: number + middlewares?: number +} + +type TotalsResult = { + http: TotalsResultItem + tcp: TotalsResultItem + udp: TotalsResultItem +} + +const useTotals = (): TotalsResult => { + const { data } = useSWR('/overview') + + return { + http: { + routers: data?.http?.routers?.total, + services: data?.http?.services?.total, + middlewares: data?.http?.middlewares?.total, + }, + tcp: { + routers: data?.tcp?.routers?.total, + services: data?.tcp?.services?.total, + middlewares: data?.tcp?.middlewares?.total, + }, + udp: { + routers: data?.udp?.routers?.total, + services: data?.udp?.services?.total, + }, + } +} + +export default useTotals diff --git a/webui/src/hooks/use-previous.tsx b/webui/src/hooks/use-previous.tsx new file mode 100644 index 000000000..946d00805 --- /dev/null +++ b/webui/src/hooks/use-previous.tsx @@ -0,0 +1,13 @@ +import { useEffect, useRef } from 'react' + +function usePrevious(value: T): T | undefined { + const ref = useRef() + + useEffect(() => { + ref.current = value + }, [value]) + + return ref.current +} + +export default usePrevious diff --git a/webui/src/hooks/use-resource-detail.spec.tsx b/webui/src/hooks/use-resource-detail.spec.tsx new file mode 100644 index 000000000..d78ddc89e --- /dev/null +++ b/webui/src/hooks/use-resource-detail.spec.tsx @@ -0,0 +1,60 @@ +import { renderHook, waitFor } from '@testing-library/react' +import { SWRConfig } from 'swr' + +import { useResourceDetail } from './use-resource-detail' + +import fetch from 'libs/fetch' + +describe('useResourceDetail', () => { + it('should fetch information about entrypoints and middlewares', async () => { + const { result } = renderHook(() => useResourceDetail('server-redirect@docker', 'routers'), { + wrapper: ({ children }) => ( + + {children} + + ), + }) + + await waitFor(() => { + expect(result.current.data).not.toBeUndefined() + }) + + const { data } = result.current + expect(data?.name).toBe('server-redirect@docker') + expect(data?.service).toBe('api2_v2-example-beta1') + expect(data?.status).toBe('enabled') + expect(data?.provider).toBe('docker') + expect(data?.rule).toBe('Host(`server`)') + expect(data?.tls).toBeUndefined() + expect(data?.error).toBeUndefined() + expect(data?.middlewares?.length).toBe(1) + expect(data?.middlewares?.[0]).toEqual({ + redirectScheme: { + scheme: 'https', + }, + status: 'enabled', + usedBy: ['server-mtls@docker', 'server-redirect@docker', 'orphan-router@file'], + name: 'redirect@file', + type: 'redirectscheme', + provider: 'file', + }) + expect(data?.hasValidMiddlewares).toBeTrue() + expect(data?.entryPointsData?.length).toBe(1) + expect(data?.entryPointsData?.[0]).toEqual({ + address: ':80', + transport: { + lifeCycle: { graceTimeOut: 10000000000 }, + respondingTimeouts: { idleTimeout: 180000000000 }, + }, + forwardedHeaders: {}, + name: 'web-redirect', + }) + expect(data?.using?.length).toBe(1) + expect(data?.using?.[0]).toEqual('web-redirect') + }) +}) diff --git a/webui/src/hooks/use-resource-detail.tsx b/webui/src/hooks/use-resource-detail.tsx new file mode 100644 index 000000000..df6e38941 --- /dev/null +++ b/webui/src/hooks/use-resource-detail.tsx @@ -0,0 +1,180 @@ +import useSWR from 'swr' + +import fetchMany from 'libs/fetchMany' + +export type EntryPoint = { + name: string + address: string + message?: string +} + +type JSONObject = { + [x: string]: string | number +} +export type ValuesMapType = { + [key: string]: string | number | JSONObject +} + +export type MiddlewareProps = { + [prop: string]: ValuesMapType +} + +export type Middleware = { + name: string + status: 'enabled' | 'disabled' | 'warning' + provider: string + type?: string + plugin?: Record + error?: string[] + routers?: string[] + usedBy?: string[] +} & MiddlewareProps + +type Router = { + name: string + service?: string + status: 'enabled' | 'disabled' | 'warning' + rule?: string + priority?: number + provider: string + tls?: { + options: string + certResolver: string + domains: TlsDomain[] + passthrough: boolean + } + error?: string[] + entryPoints?: string[] + message?: string +} + +type TlsDomain = { + main: string + sans: string[] +} + +export type RouterDetailType = Router & { + middlewares?: Middleware[] + hasValidMiddlewares?: boolean + entryPointsData?: EntryPoint[] + using?: string[] +} + +type Mirror = { + name: string + percent: number +} + +export type ServiceDetailType = { + name: string + status: 'enabled' | 'disabled' | 'warning' + provider: string + type: string + usedBy?: string[] + routers?: Router[] + serverStatus?: { + [server: string]: string + } + mirroring?: { + service: string + mirrors?: Mirror[] + } + loadBalancer?: { + servers?: { url: string }[] + passHostHeader?: boolean + terminationDelay?: number + healthCheck?: { + scheme: string + path: string + port: number + interval: string + timeout: string + hostname: string + headers?: { + [header: string]: string + } + } + } + weighted?: { + services?: { + name: string + weight: number + }[] + } +} + +export type MiddlewareDetailType = Middleware & { + routers?: Router[] +} + +export type ResourceDetailDataType = RouterDetailType & ServiceDetailType & MiddlewareDetailType + +type ResourceDetailType = { + data?: ResourceDetailDataType + error?: Error +} + +export const useResourceDetail = (name: string, resource: string, protocol = 'http'): ResourceDetailType => { + const { data: routeDetail, error } = useSWR(`/${protocol}/${resource}/${name}`) + const { data: entryPoints, error: entryPointsError } = useSWR(() => ['/entrypoints/', routeDetail.using], fetchMany) + const { data: middlewares, error: middlewaresError } = useSWR( + () => [`/${protocol}/middlewares/`, routeDetail.middlewares], + fetchMany, + ) + const { data: routers, error: routersError } = useSWR(() => [`/${protocol}/routers/`, routeDetail.usedBy], fetchMany) + + if (!routeDetail) { + return { error } + } + + const firstError = error || entryPointsError || middlewaresError || routersError + const validMiddlewares = (middlewares as Middleware[] | undefined)?.filter((mw) => !!mw.name) + const hasMiddlewares = validMiddlewares + ? validMiddlewares.length > 0 + : routeDetail.middlewares && routeDetail.middlewares.length > 0 + + if (resource === 'routers') { + return { + data: { + name: routeDetail.name, + service: routeDetail.service, + status: routeDetail.status, + provider: routeDetail.provider, + rule: routeDetail.rule, + tls: routeDetail.tls, + error: routeDetail.error, + middlewares: validMiddlewares, + hasValidMiddlewares: hasMiddlewares, + entryPointsData: entryPoints, + using: routeDetail.using, + }, + error: firstError, + } as ResourceDetailType + } + + if (resource === 'middlewares') { + return { + data: { + ...routeDetail, + routers, + }, + error: firstError, + } as ResourceDetailType + } + + return { + data: { + name: routeDetail.name, + status: routeDetail.status, + provider: routeDetail.provider, + type: routeDetail.type, + loadBalancer: routeDetail.loadBalancer, + mirroring: routeDetail.mirroring, + serverStatus: routeDetail.serverStatus, + usedBy: routeDetail.usedBy, + weighted: routeDetail.weighted, + routers, + }, + error: firstError, + } as ResourceDetailType +} diff --git a/webui/src/hooks/use-theme.ts b/webui/src/hooks/use-theme.ts new file mode 100644 index 000000000..4eccbc911 --- /dev/null +++ b/webui/src/hooks/use-theme.ts @@ -0,0 +1,49 @@ +import { useMemo } from 'react' +import { useLocalStorage } from 'usehooks-ts' + +const SYSTEM = 'system' +const DARK = 'dark' +const LIGHT = 'light' + +type ThemeOptions = 'system' | 'dark' | 'light' +const THEME_OPTIONS: ThemeOptions[] = [SYSTEM, DARK, LIGHT] + +type UseThemeRes = { + selectedTheme: ThemeOptions + appliedTheme: ThemeOptions + setTheme: () => void +} + +export const useTheme = (): UseThemeRes => { + const [selectedTheme, setSelectedTheme] = useLocalStorage('selected-theme', SYSTEM) + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches + + const appliedTheme = useMemo(() => { + if (selectedTheme === SYSTEM) { + if (prefersDark) return DARK + return LIGHT + } + + return selectedTheme + }, [selectedTheme, prefersDark]) + + return { + selectedTheme, + appliedTheme, + setTheme: () => { + setSelectedTheme((curr: ThemeOptions): ThemeOptions => { + const currIdx = THEME_OPTIONS.indexOf(curr) + const nextIdx = currIdx + 1 + if (nextIdx === THEME_OPTIONS.length) return SYSTEM + + return THEME_OPTIONS[nextIdx] + }) + }, + } +} + +export const useIsDarkMode = () => { + const { appliedTheme } = useTheme() + + return appliedTheme === DARK +} diff --git a/webui/src/hooks/use-version.tsx b/webui/src/hooks/use-version.tsx new file mode 100644 index 000000000..a00b97acd --- /dev/null +++ b/webui/src/hooks/use-version.tsx @@ -0,0 +1,13 @@ +import { useMemo } from 'react' +import useSWR from 'swr' + +export default function useVersion() { + const { data: version } = useSWR('/version') + + const showHubButton = useMemo(() => { + if (!version) return false + return !version?.disableDashboardAd + }, [version]) + + return { showHubButton, version } +} diff --git a/webui/src/index.tsx b/webui/src/index.tsx new file mode 100644 index 000000000..a1f1b753d --- /dev/null +++ b/webui/src/index.tsx @@ -0,0 +1,21 @@ +import { createRoot } from 'react-dom/client' + +import App from './App' + +async function enableMocking() { + if (import.meta.env.MODE !== 'development') { + return + } + + const { worker } = await import('./mocks/browser') + + // `worker.start()` returns a Promise that resolves + // once the Service Worker is up and ready to intercept requests. + return worker.start() +} + +enableMocking().then(() => { + const container = document.getElementById('root') + const root = createRoot(container!) + root.render() +}) diff --git a/webui/src/layout/Container.tsx b/webui/src/layout/Container.tsx new file mode 100644 index 000000000..b3330c652 --- /dev/null +++ b/webui/src/layout/Container.tsx @@ -0,0 +1,13 @@ +import { Flex, styled } from '@traefiklabs/faency' + +import breakpoints from 'utils/breakpoints' + +export default styled(Flex, { + flexGrow: 1, + margin: '0 24px', + + [`@media (min-width: ${breakpoints.laptopL})`]: { + maxWidth: `calc(${breakpoints.laptopL} - 96px)`, + margin: '0 auto', + }, +}) diff --git a/webui/src/layout/EmptyPlaceholder.tsx b/webui/src/layout/EmptyPlaceholder.tsx new file mode 100644 index 000000000..e81ace9df --- /dev/null +++ b/webui/src/layout/EmptyPlaceholder.tsx @@ -0,0 +1,9 @@ +import { Flex, Text } from '@traefiklabs/faency' +import { FiAlertTriangle } from 'react-icons/fi' + +export const EmptyPlaceholder = ({ message = 'No data available' }: { message?: string }) => ( + + + {message} + +) diff --git a/webui/src/layout/ErrorFallback.tsx b/webui/src/layout/ErrorFallback.tsx new file mode 100644 index 000000000..f5a591ea9 --- /dev/null +++ b/webui/src/layout/ErrorFallback.tsx @@ -0,0 +1,20 @@ +import { Box, Button, Text } from '@traefiklabs/faency' +import { FallbackProps } from 'react-error-boundary' + +const ErrorFallback = ({ error, resetErrorBoundary }: FallbackProps) => { + return ( + + + Something went wrong: + + + {error.message} + + + + ) +} + +export default ErrorFallback diff --git a/webui/src/layout/ErrorSuspenseWrapper.tsx b/webui/src/layout/ErrorSuspenseWrapper.tsx new file mode 100644 index 000000000..aec0e35cc --- /dev/null +++ b/webui/src/layout/ErrorSuspenseWrapper.tsx @@ -0,0 +1,26 @@ +import { ComponentType, ReactNode, Suspense } from 'react' +import { ErrorBoundary, FallbackProps } from 'react-error-boundary' + +import ErrorFallback from './ErrorFallback' + +type SuspenseWrapperProps = { + suspenseFallback?: ReactNode + errorFallback?: ComponentType + silentFail?: boolean + children?: ReactNode +} + +const ErrorSuspenseWrapper = ({ + errorFallback = ErrorFallback, + suspenseFallback = null, + silentFail = false, + children, +}: SuspenseWrapperProps) => { + return ( + null : errorFallback}> + {children} + + ) +} + +export default ErrorSuspenseWrapper diff --git a/webui/src/layout/Navigation.spec.tsx b/webui/src/layout/Navigation.spec.tsx new file mode 100644 index 000000000..d19ab884a --- /dev/null +++ b/webui/src/layout/Navigation.spec.tsx @@ -0,0 +1,21 @@ +import { SideNav, TopNav } from './Navigation' + +import { renderWithProviders } from 'utils/test' + +describe('Navigation', () => { + it('should render the side navigation bar', async () => { + const { container } = renderWithProviders( {}} />) + + expect(container.innerHTML).toContain('HTTP') + expect(container.innerHTML).toContain('TCP') + expect(container.innerHTML).toContain('UDP') + expect(container.innerHTML).toContain('Plugins') + }) + + it('should render the top navigation bar', async () => { + const { container } = renderWithProviders() + + expect(container.innerHTML).toContain('theme-switcher') + expect(container.innerHTML).toContain('help-menu') + }) +}) diff --git a/webui/src/layout/Navigation.tsx b/webui/src/layout/Navigation.tsx new file mode 100644 index 000000000..778ba3cab --- /dev/null +++ b/webui/src/layout/Navigation.tsx @@ -0,0 +1,357 @@ +import { + Badge, + Box, + Button, + DialogTitle, + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuPortal, + DropdownMenuTrigger, + elevationVariants, + Flex, + Link, + NavigationLink, + SidePanel, + styled, + Text, + Tooltip, + VisuallyHidden, +} from '@traefiklabs/faency' +import { useEffect, useMemo, useState } from 'react' +import { BsChevronDoubleRight, BsChevronDoubleLeft } from 'react-icons/bs' +import { FiBookOpen, FiGithub, FiHelpCircle } from 'react-icons/fi' +import { matchPath, useHref } from 'react-router' +import { useLocation } from 'react-router-dom' +import { useWindowSize } from 'usehooks-ts' + +import Container from './Container' +import { DARK_PRIMARY_COLOR, LIGHT_PRIMARY_COLOR } from './Page' + +import IconButton from 'components/buttons/IconButton' +import Logo from 'components/icons/Logo' +import { PluginsIcon } from 'components/icons/PluginsIcon' +import ThemeSwitcher from 'components/ThemeSwitcher' +import TooltipText from 'components/TooltipText' +import useTotals from 'hooks/use-overview-totals' +import { useIsDarkMode } from 'hooks/use-theme' +import useVersion from 'hooks/use-version' +import { Route, ROUTES } from 'routes' + +export const LAPTOP_BP = 1025 + +const NavigationDrawer = styled(Flex, { + width: '100%', + maxWidth: '100%', + height: 64, + p: 0, + variants: { + elevation: elevationVariants, + }, + defaultVariants: { + elevation: 1, + }, +}) + +const BasicNavigationItem = ({ + route, + count, + isSmallScreen, + isExpanded, +}: { + route: Route + count?: number + isSmallScreen: boolean + isExpanded: boolean +}) => { + const { pathname } = useLocation() + const href = useHref(route.path) + + const isActiveRoute = useMemo(() => { + const mainPath = matchPath(route.path, pathname) + + if (mainPath) return true + + if (route.activeMatches) { + return route.activeMatches.some((path) => matchPath(path, pathname)) + } + }, [pathname, route.activeMatches, route.path]) + + if (isSmallScreen && !isExpanded) { + return ( + {route.label}} side="right"> + + + + + ) + } + + return ( + + {route.label} + {!!count && ( + + {count} + + )} + + ) +} + +export const SideBarPanel = ({ + isOpen, + onOpenChange, +}: { + isOpen: boolean + onOpenChange: (isOpen: boolean) => void +}) => { + const windowSize = useWindowSize() + + return ( + + + side navigation + + onOpenChange(false)} /> + + ) +} + +export const SideNav = ({ + isExpanded, + onSidePanelToggle, + isResponsive = false, +}: { + isExpanded: boolean + onSidePanelToggle: () => void + isResponsive?: boolean +}) => { + const windowSize = useWindowSize() + const { version } = useVersion() + + const { http, tcp, udp } = useTotals() + + const [isSmallScreen, setIsSmallScreen] = useState(false) + + useEffect(() => { + setIsSmallScreen(isResponsive && windowSize.width < LAPTOP_BP) + }, [isExpanded, isResponsive, windowSize.width]) + + const totalValueByPath = useMemo<{ [key: string]: number }>( + () => ({ + '/http/routers': http?.routers, + '/http/services': http?.services, + '/http/middlewares': http?.middlewares as number, + '/tcp/routers': tcp?.routers, + '/tcp/services': tcp?.services, + '/tcp/middlewares': tcp?.middlewares as number, + '/udp/routers': udp?.routers, + '/udp/services': udp?.services, + }), + [http, tcp, udp], + ) + + return ( + div:nth-child(1)': { + marginLeft: 0, + paddingRight: 0, + }, + } + : undefined, + transition: '150ms cubic-bezier(0.22, 1, 0.36, 1)', + '&[data-collapsed="true"]': { + marginLeft: -32, + }, + }} + > + : } + onClick={onSidePanelToggle} + css={{ + display: 'none', + position: 'absolute', + top: 3, + right: isExpanded ? 12 : 4, + color: '$hiContrast', + [`@media (max-width:${LAPTOP_BP}px)`]: { display: 'inherit' }, + p: '$1', + '&:before, &:after': { borderRadius: '10px' }, + height: 16, + }} + /> + + + + {!!version && !isSmallScreen && ( + + )} + + {ROUTES.map((section, index) => ( + + {section.sectionLabel && ( + + {section.sectionLabel} + + )} + {section.items.map((item, idx) => ( + + ))} + + ))} + + } + css={{ + mt: '$3', + whiteSpace: 'nowrap', + }} + href="https://plugins.traefik.io/" + target="_blank" + > + {!isSmallScreen || isExpanded ? 'Plugins' : ''} + + + + + ) +} + +export const TopNav = () => { + const { showHubButton, version } = useVersion() + const isDarkMode = useIsDarkMode() + + const parsedVersion = useMemo(() => { + if (!version?.Version) { + return 'master' + } + if (version.Version === 'dev') { + return 'master' + } + const matches = version.Version.match(/^(v?\d+\.\d+)/) + return matches ? 'v' + matches[1] : 'master' + }, [version]) + + return ( + + {showHubButton && ( + + + + )} + + + + + + + + + + + + + + Documentation + + + + + + + + Github Repository + + + + + + + + + ) +} diff --git a/webui/src/layout/Page.spec.tsx b/webui/src/layout/Page.spec.tsx new file mode 100644 index 000000000..2334cdc31 --- /dev/null +++ b/webui/src/layout/Page.spec.tsx @@ -0,0 +1,10 @@ +import Page from './Page' + +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render an empty page', () => { + const { getByTestId } = renderWithProviders() + expect(getByTestId('Test page')).toBeInTheDocument() + }) +}) diff --git a/webui/src/layout/Page.tsx b/webui/src/layout/Page.tsx new file mode 100644 index 000000000..f11afa091 --- /dev/null +++ b/webui/src/layout/Page.tsx @@ -0,0 +1,70 @@ +import { Flex, globalCss, styled } from '@traefiklabs/faency' +import { ReactNode, useState } from 'react' +import { Helmet } from 'react-helmet-async' + +import Container from './Container' +import { LAPTOP_BP, SideBarPanel, SideNav, TopNav } from './Navigation' + +import { ToastPool } from 'components/ToastPool' +import { ToastProvider } from 'contexts/toasts' + +export const LIGHT_PRIMARY_COLOR = '#217F97' +export const DARK_PRIMARY_COLOR = '#2AA2C1' + +export const globalStyles = globalCss({ + '.light': { + '--colors-primary': LIGHT_PRIMARY_COLOR, + }, + + '.dark': { + '--colors-primary': DARK_PRIMARY_COLOR, + }, + + body: { + backgroundColor: '$contentBg', + m: 0, + }, +}) + +const PageContainer = styled(Container, { + py: '$5', + px: '$5', + m: 0, + '@media (max-width:1440px)': { + maxWidth: '100%', + }, +}) + +export interface Props { + title?: string + children?: ReactNode +} + +const Page = ({ children, title }: Props) => { + const [isSideBarPanelOpen, setIsSideBarPanelOpen] = useState(false) + + return ( + + {globalStyles()} + + {title ? `${title} - ` : ''}Traefik Proxy + + + + setIsSideBarPanelOpen(true)} isResponsive /> + + + + {children} + + + + + + ) +} + +export default Page diff --git a/webui/src/layouts/Default.vue b/webui/src/layouts/Default.vue deleted file mode 100644 index 83b50598a..000000000 --- a/webui/src/layouts/Default.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/webui/src/libs/fetch.ts b/webui/src/libs/fetch.ts new file mode 100644 index 000000000..8a03fd87b --- /dev/null +++ b/webui/src/libs/fetch.ts @@ -0,0 +1,24 @@ +import { BASE_PATH } from './utils' + +export default async function (input: RequestInfo, init?: RequestInit): Promise { + const res = await fetch(`${BASE_PATH}${input}`, init) + if (!res.ok) throw new Error(res.statusText) + return await res.json() +} + +export const fetchPage = async function ( + input: RequestInfo, + init?: RequestInit, +): Promise { + const res = await fetch(`${BASE_PATH}${input}`, init) + + if (!res.ok) throw new Error(res.statusText) + + return res.json().then((data) => { + return { + ...res, + data, + nextPage: parseInt(res.headers.get('X-Next-Page') || '1'), + } + }) +} diff --git a/webui/src/libs/fetchMany.ts b/webui/src/libs/fetchMany.ts new file mode 100644 index 000000000..0771c1932 --- /dev/null +++ b/webui/src/libs/fetchMany.ts @@ -0,0 +1,16 @@ +import { Key } from 'swr' + +import { BASE_PATH } from './utils' + +export default async function (key: Key): Promise { + const [baseUrl, params, init] = key as Array + + if (!params || !Array.isArray(params)) return + + const requests = params.map((param) => { + const apiUrl = `${BASE_PATH}${baseUrl}${param}` + return fetch(apiUrl, init as RequestInit).then((res) => res.json()) + }) + + return await Promise.all(requests) +} diff --git a/webui/src/libs/objectHandlers.ts b/webui/src/libs/objectHandlers.ts new file mode 100644 index 000000000..59c3bcf0c --- /dev/null +++ b/webui/src/libs/objectHandlers.ts @@ -0,0 +1,8 @@ +type ObjectWithMessage = { + message?: string +} + +export const getValidData = (data?: T[]): T[] => + data ? data.filter((item) => !item.message) : [] +export const getErrorData = (data?: T[]): T[] => + data ? data.filter((item) => !!item.message) : [] diff --git a/webui/src/libs/parsers.ts b/webui/src/libs/parsers.ts new file mode 100644 index 000000000..26f2ed107 --- /dev/null +++ b/webui/src/libs/parsers.ts @@ -0,0 +1,14 @@ +import { Middleware } from 'hooks/use-resource-detail' + +export const parseMiddlewareType = (middleware: Middleware): string | undefined => { + if (middleware.plugin) { + const pluginObject = middleware.plugin || {} + const [pluginName] = Object.keys(pluginObject) + + if (pluginName) { + return pluginName + } + } + + return middleware.type +} diff --git a/webui/src/libs/utils.ts b/webui/src/libs/utils.ts new file mode 100644 index 000000000..e149fc1d8 --- /dev/null +++ b/webui/src/libs/utils.ts @@ -0,0 +1,8 @@ +const getBasePath = () => { + const { VITE_APP_BASE_API_URL } = import.meta.env + const basePath = window.APIUrl || VITE_APP_BASE_API_URL || '' + + return basePath.endsWith('/') ? basePath.slice(0, -1) : basePath +} + +export const BASE_PATH = getBasePath() diff --git a/webui/src/mocks/browser.ts b/webui/src/mocks/browser.ts new file mode 100644 index 000000000..49b16dbde --- /dev/null +++ b/webui/src/mocks/browser.ts @@ -0,0 +1,5 @@ +import { setupWorker } from 'msw/browser' + +import { getHandlers } from './handlers' + +export const worker = setupWorker(...getHandlers(false)) diff --git a/webui/src/mocks/data/api-entrypoints.json b/webui/src/mocks/data/api-entrypoints.json new file mode 100644 index 000000000..456477530 --- /dev/null +++ b/webui/src/mocks/data/api-entrypoints.json @@ -0,0 +1,144 @@ +[ + { + "address": ":8080", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "traefik" + }, + { + "address": ":8000", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "web" + }, + { + "address": ":8443", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "web-mtls" + }, + { + "address": ":80", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "web-redirect" + }, + { + "address": ":443", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "web-secured" + }, + { + "address": ":8100", + "transport": { + "lifeCycle": { + "graceTimeOut": 10000000000 + }, + "respondingTimeouts": { + "idleTimeout": 180000000000 + } + }, + "forwardedHeaders": {}, + "name": "web-tcp" + }, + { + "address": ":8002", + "transport": { + "lifeCycle": { + "requestAcceptGraceTimeout": 42000000000, + "graceTimeOut": 42000000000 + }, + "respondingTimeouts": { + "readTimeout": 42000000000, + "writeTimeout": 42000000000, + "idleTimeout": 42000000000 + } + }, + "forwardedHeaders": {}, + "name": "web2" + }, + { + "address": ":8003", + "transport": { + "lifeCycle": { + "requestAcceptGraceTimeout": 42000000000, + "graceTimeOut": 42000000000 + }, + "respondingTimeouts": { + "readTimeout": 42000000000, + "writeTimeout": 42000000000, + "idleTimeout": 42000000000 + } + }, + "forwardedHeaders": {}, + "name": "web3" + }, + { + "address": ":65535/udp", + "transport": { + "lifeCycle": { + "requestAcceptGraceTimeout": 42000000000, + "graceTimeOut": 42000000000 + }, + "respondingTimeouts": { + "readTimeout": 42000000000, + "writeTimeout": 42000000000, + "idleTimeout": 42000000000 + } + }, + "forwardedHeaders": {}, + "name": "a-port-with-a-very-long-name" + }, + { + "address": ":65535/tcp", + "transport": { + "lifeCycle": { + "requestAcceptGraceTimeout": 42000000000, + "graceTimeOut": 42000000000 + }, + "respondingTimeouts": { + "readTimeout": 42000000000, + "writeTimeout": 42000000000, + "idleTimeout": 42000000000 + } + }, + "forwardedHeaders": {}, + "name": "supercalifragilisticexpialidocious" + } +] diff --git a/webui/src/mocks/data/api-http_middlewares.json b/webui/src/mocks/data/api-http_middlewares.json new file mode 100644 index 000000000..a8737d28e --- /dev/null +++ b/webui/src/mocks/data/api-http_middlewares.json @@ -0,0 +1,418 @@ +[ + { + "addPrefix": { + "prefix": "/foo" + }, + "status": "enabled", + "usedBy": ["web@docker"], + "name": "add-foo@docker", + "type": "addprefix", + "provider": "docker" + }, + { + "redirectScheme": { + "scheme": "https" + }, + "status": "enabled", + "usedBy": ["server-mtls@docker", "server-redirect@docker", "orphan-router@file"], + "name": "redirect@file", + "type": "redirectscheme", + "provider": "file" + }, + { + "chain": { + "middlewares": ["whitelist", "simple-auth"] + }, + "status": "enabled", + "name": "secure-chain@file", + "type": "chain", + "provider": "file" + }, + { + "basicAuth": { + "usersFile": ".htpasswd", + "removeHeader": true + }, + "status": "enabled", + "name": "simple-auth@file", + "type": "basicauth", + "provider": "file" + }, + { + "ipWhiteList": { + "sourceRange": ["127.0.0.1/6", "172.8.8.1"], + "ipStrategy": { + "depth": 3, + "excludedIPs": ["172.0.0.1/31"] + } + }, + "status": "enabled", + "name": "whitelist@file", + "type": "ipwhitelist", + "provider": "file" + }, + { + "addPrefix": { + "prefix": "/path", + "aCustomObject": { + "array of arrays": [[1, 2], [3, 4]], + "array of objects": [{ "some": "value" }, { "another": "value" }], + "array of booleans": [true, false, true], + "array of numbers": [10, 100, 1000], + "array of strings": ["value1", "value2"] + } + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware00@docker", + "provider": "docker", + "type": "addprefix" + }, + { + "buffering": { + "maxRequestBodyBytes": 42, + "memRequestBodyBytes": 42, + "maxResponseBodyBytes": 42, + "memResponseBodyBytes": 42, + "retryExpression": "IsNetworkError() && Attempts() < 2", + "oauthIntrospection > clientConfig > url": "https://keycloak.traefiklabs.tech/realms/keycloak-demo/protocol/openid-connect/token/introspect", + "oauthIntrospection > clientConfig > headers > authorization": "Basic UZShXHjj2XcRSL8PZjuVDRqyqJ7ThjaZiSwJMoQeMJ2yHTgRyhAgLmfT4A1PvHGh" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware02@docker", + "provider": "docker", + "type": "buffering" + }, + { + "errors": { + "status": ["500-599", "400-405", "300"], + "service": "service@docker", + "query": "/{status}.html" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware07@docker", + "provider": "docker", + "type": "errors" + }, + { + "inFlightReq": { + "amount": 42, + "sourceCriterion": { + "ipStrategy": { + "depth": 42, + "excludedIPs": ["10.0.0.1", "11.0.0.1", "12.0.0.1", "13.0.0.1"] + }, + "requestHeaderName": "X-Host-IP", + "requestHost": true + } + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware11@docker", + "provider": "docker", + "type": "inflightreq" + }, + { + "redirectScheme": { + "scheme": "https", + "port": "80", + "permanent": true + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware15@docker", + "provider": "docker", + "type": "redirectscheme" + }, + { + "retry": { + "attempts": 42 + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware18@docker", + "provider": "docker", + "type": "retry" + }, + { + "basicAuth": { + "users": ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP4HxwgUir3HP4EsggP/QNo0"], + "usersFile": "/etc/foo/my/file/path/.htpasswd", + "realm": "Hello you are here", + "removeHeader": true, + "headerField": "X-WebAuth-User" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware01@docker", + "provider": "docker", + "type": "basicauth" + }, + { + "chain": { + "middlewares": [ + "middleware01@docker", + "middleware021@docker", + "middleware03@docker", + "middleware06@docker", + "middleware10@docker" + ] + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware03@docker", + "provider": "docker", + "type": "chain" + }, + { + "compress": {}, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware05@docker", + "provider": "docker", + "type": "compress" + }, + { + "digestAuth": { + "users": ["test:traefik:a2688e031edb4be6a3797f3882655c05", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"], + "usersFile": "/etc/foo/my/file/path/.htpasswd", + "realm": "Hello you are here", + "removeHeader": true, + "headerField": "X-WebAuth-User" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware06@docker", + "provider": "docker", + "type": "digestauth" + }, + { + "forwardAuth": { + "address": "https://authserver.com/auth", + "tls": { + "ca": "path/to/local.crt", + "caOptional": true, + "cert": "path/to/foo.cert", + "key": "path/to/foo.key", + "insecureSkipVerify": true + }, + "trustForwardHeader": true, + "authResponseHeaders": ["X-Auth-User", "X-Secret"] + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware08@docker", + "provider": "docker", + "type": "forwardauth" + }, + { + "passTLSClientCert": { + "pem": true, + "info": { + "notAfter": true, + "notBefore": true, + "sans": true, + "subject": { + "country": true, + "province": true, + "locality": true, + "organization": true, + "commonName": true, + "serialNumber": true, + "domainComponent": true + }, + "issuer": { + "country": true, + "province": true, + "locality": true, + "organization": true, + "commonName": true, + "serialNumber": true, + "domainComponent": true + } + } + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware12@docker", + "provider": "docker", + "type": "passtlsclientcert" + }, + { + "stripPrefix": { + "prefixes": ["/foobar", "/fiibar"] + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware19@docker", + "provider": "docker", + "type": "stripprefix" + }, + { + "stripPrefixRegex": { + "regex": ["^/foo/(.*)", "/b/{regex}/", "/c/{category}/{id:[0-9]+}/"] + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware20@docker", + "provider": "docker", + "type": "stripprefixregex" + }, + { + "redirectRegex": { + "regex": "^http://localhost/(.*)", + "replacement": "http://mydomain/${1}", + "permanent": true + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware14@docker", + "provider": "docker", + "type": "redirectregex" + }, + { + "replacePathRegex": { + "regex": "^/foo/(.*)", + "replacement": "/bar/$1" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware17@docker", + "provider": "docker", + "type": "replacepathregex" + }, + { + "circuitBreaker": { + "expression": "LatencyAtQuantileMS(50.0) > 100" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware04@docker", + "provider": "docker", + "type": "circuitbreaker" + }, + { + "headers": { + "customRequestHeaders": { + "X-Script-Name1": "test", + "X-Script-Name2": "test" + }, + "customResponseHeaders": { + "X-Script-Name1": "test", + "X-Script-Name2": "test" + }, + "accessControlAllowCredentials": true, + "accessControlAllowHeaders": ["origin", "X-Forwarded-For"], + "accessControlAllowMethods": ["GET", "OPTIONS"], + "accessControlAllowOrigin": "origin-list-or-null", + "accessControlExposeHeaders": ["origin", "X-Forwarded-For"], + "accessControlMaxAge": 42, + "addVaryHeader": true, + "allowedHosts": ["foo.com", "bar.com"], + "hostsProxyHeaders": ["X-Forwarded-Host", "X-Foo"], + "sslRedirect": true, + "sslTemporaryRedirect": true, + "sslHost": "ssl.example.com", + "sslProxyHeaders": { + "X-Forwarded-Proto": "https", + "X-Name1": "foobar" + }, + "sslForceHost": true, + "stsSeconds": 42, + "stsIncludeSubdomains": true, + "stsPreload": true, + "forceSTSHeader": true, + "frameDeny": true, + "customFrameOptionsValue": "foobar", + "contentTypeNosniff": true, + "browserXssFilter": true, + "customBrowserXSSValue": "1; report=https://example.com/xss-report", + "contentSecurityPolicy": "default-src 'self'", + "publicKey": "pin-sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000; includeSubdomains; report-uri=\"https://www.example.com/hpkp-report\"", + "referrerPolicy": "same-origin", + "featurePolicy": "vibrate 'none';", + "isDevelopment": true + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware09@docker", + "provider": "docker", + "type": "headers" + }, + { + "ipWhiteList": { + "sourceRange": ["127.0.0.1/32", "192.168.1.7"], + "ipStrategy": { + "depth": 42, + "excludedIPs": ["10.0.0.1", "11.0.0.1", "12.0.0.1", "13.0.0.1"] + } + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware10@docker", + "provider": "docker", + "type": "ipwhitelist" + }, + { + "rateLimit": { + "average": 42, + "burst": 42, + "sourceCriterion": { + "ipStrategy": { + "depth": 42, + "excludedIPs": ["10.0.0.1", "11.0.0.1", "12.0.0.1", "13.0.0.1"] + }, + "requestHeaderName": "X_Foo_Host", + "requestHost": true + } + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware13@docker", + "provider": "docker", + "type": "ratelimit" + }, + { + "replacePath": { + "path": "/foobar/goo" + }, + "error": ["message 1", "message 2"], + "status": "enabled", + "usedBy": ["foo@docker", "bar@file"], + "name": "middleware16@docker", + "provider": "docker", + "type": "replacepath" + }, + { + "addPrefix": { + "prefix": "/foo" + }, + "status": "enabled", + "usedBy": ["web@docker"], + "name": "whoami-app-hello-tls-jwt-ef36e528ebdc93bc4f2a-service-middleware", + "type": "whoami-app-hello-tls-jwt-ef36e528ebdc93bc4f2a-service-middleware", + "provider": "docker" + } +] diff --git a/webui/src/mocks/data/api-http_routers.json b/webui/src/mocks/data/api-http_routers.json new file mode 100644 index 000000000..227aa7cc3 --- /dev/null +++ b/webui/src/mocks/data/api-http_routers.json @@ -0,0 +1,171 @@ +[ + { + "service": "jaeger_v2-example-beta1", + "rule": "Host(`jaeger-v2-example-beta1`)", + "status": "enabled", + "name": "jaeger_v2-example-beta1@docker", + "using": [ + "web-secured", + "web" + ], + "priority": 10, + "provider": "docker" + }, + { + "service": "unexistingservice", + "rule": "Path(`somethingreallyunexpectedbutalsoverylongitgetsoutofthecontainermaybe`)", + "error": [ + "the service \"unexistingservice@file\" does not exist", + "the service \"unexistingservicewithaveryveryveryveryveryverylongname@file2\" does not exist and the error message is really long" + ], + "status": "disabled", + "name": "orphan-router@file", + "middlewares": [ + "middleware00@docker", + "middleware01@docker", + "middleware02@docker", + "middleware03@docker", + "middleware04@docker", + "middleware05@docker", + "middleware06@docker", + "middleware07@docker", + "middleware08@docker", + "middleware09@docker", + "middleware10@docker", + "middleware11@docker", + "middleware12@docker", + "middleware13@docker", + "middleware14@docker", + "middleware15@docker", + "middleware16@docker", + "middleware17@docker", + "middleware18@docker", + "middleware19@docker", + "middleware20@docker" + ], + "using": [ + "web-secured", + "web", + "traefik", + "web2", + "web3" + ], + "priority": 30, + "provider": "file" + }, + { + "entryPoints": [ + "web-mtls" + ], + "service": "api3_v2-example-beta1", + "rule": "Host(`server`) \u0026\u0026 Path(`/mtls`)", + "tls": { + "options": "foo@file", + "certResolver": "acme-dns-challenge", + "domains": [ + { + "main": "example.com", + "sans": [ + "foo.example.com", + "bar.example.com" + ] + }, + { + "main": "domain.com", + "sans": [ + "foo.domain.com", + "bar.domain.com" + ] + }, + { + "main": "my.domain.com", + "sans": [ + "foo.my.domain.com", + "bar.my.domain.com" + ] + } + ] + }, + "status": "enabled", + "priority": 42, + "name": "server-mtls@docker", + "provider": "docker", + "using": [ + "web-mtls" + ] + }, + { + "entryPoints": [ + "web-redirect" + ], + "middlewares": [ + "redirect@file" + ], + "service": "api2_v2-example-beta1", + "rule": "Host(`server`)", + "status": "enabled", + "name": "server-redirect@docker", + "using": [ + "web-redirect" + ], + "priority": 9223372036854776000, + "provider": "docker" + }, + { + "entryPoints": [ + "web-secured" + ], + "service": "api2_v2-example-beta1", + "rule": "Host(`server`)", + "tls": {}, + "status": "enabled", + "name": "server-secured@docker", + "using": [ + "web-secured" + ], + "provider": "docker" + }, + { + "service": "traefik_v2-example-beta1", + "rule": "Host(`traefik-v2-example-beta1`)", + "status": "enabled", + "name": "traefik_v2-example-beta1@docker", + "using": [ + "web-secured", + "web" + ], + "provider": "docker" + }, + { + "entryPoints": [ + "web" + ], + "middlewares": [ + "add-foo" + ], + "service": "api_v2-example-beta1", + "rule": "Host(`jorge.dockeree.containous.cloud`)", + "status": "enabled", + "name": "web@docker", + "using": [ + "web" + ], + "provider": "docker" + }, + { + "entryPoints": [ + "web" + ], + "middlewares": [ + "whoami-app-hello-tls-jwt-ef36e528ebdc93bc4f2a-service-middleware" + ], + "service": "whoami-app-hello-tls-jwt-ef36e528ebdc93bc4f2a-service", + "rule": "Host(`jorge.dockeree.containous.cloud`)", + "status": "enabled", + "name": "whoami-app-hello-tls-jwt-ef36e528ebdc93bc4f2a@kubernetescrd", + "using": [ + "web" + ], + "provider": "docker" + } +] diff --git a/webui/src/mocks/data/api-http_services.json b/webui/src/mocks/data/api-http_services.json new file mode 100644 index 000000000..41edc7076 --- /dev/null +++ b/webui/src/mocks/data/api-http_services.json @@ -0,0 +1,245 @@ +[ + { + "loadBalancer": { + "servers": [ + { + "url": "http://10.0.1.12:80" + } + ], + "passHostHeader": true + }, + "status": "enabled", + "usedBy": [ + "server-redirect@docker", + "server-secured@docker" + ], + "serverStatus": { + "http://10.0.1.12:80": "UP" + }, + "name": "api2_v2-example-beta1@docker", + "type": "loadbalancer", + "provider": "docker" + }, + { + "loadBalancer": { + "servers": [ + { + "url": "http://10.0.1.20:80" + }, + { + "url": "http://10.0.1.21:80" + }, + { + "url": "http://10.0.1.22:80" + }, + { + "url": "http://10.0.1.23:80" + }, + { + "url": "http://10.0.1.24:80" + }, + { + "url": "http://10.0.1.25:80" + }, + { + "url": "http://10.0.1.26:80" + }, + { + "url": "http://10.0.1.27:80" + }, + { + "url": "http://10.0.1.28:80" + }, + { + "url": "http://10.0.1.29:80" + }, + { + "url": "http://10.0.1.30:80" + }, + { + "url": "http://10.0.1.31:80" + }, + { + "url": "http://10.0.1.32:80" + }, + { + "url": "http://10.0.1.33:80" + }, + { + "url": "http://10.0.1.34:80" + }, + { + "url": "http://10.0.1.35:80" + } + ], + "passHostHeader": true, + "responseForwarding": { + "flushInterval": "6s" + }, + "stickiness": { + "cookieName": "mycoockie", + "secureCookie": true, + "httpOnlyCookie": true + }, + "healthCheck": { + "scheme": "https", + "path": "/health", + "port": 80, + "interval": "5s", + "timeout": "10s", + "hostname": "domain.com", + "headers": { + "X-Custom-A": "foobar,gi,ji;ji,ok", + "X-Custom-B": "foobar foobar foobar foobar foobar" + } + } + }, + "status": "enabled", + "usedBy": [ + "server-mtls@docker" + ], + "serverStatus": { + "http://10.0.1.20:80": "UP", + "http://10.0.1.21:80": "UP", + "http://10.0.1.22:80": "UP", + "http://10.0.1.23:80": "UP", + "http://10.0.1.24:80": "UP", + "http://10.0.1.25:80": "UP" + }, + "name": "api3_v2-example-beta1@docker", + "type": "loadbalancer", + "provider": "docker" + }, + { + "loadBalancer": { + "servers": [ + { + "url": "http://10.0.1.11:80" + } + ], + "passHostHeader": true + }, + "status": "enabled", + "usedBy": [ + "web@docker" + ], + "serverStatus": { + "http://10.0.1.11:80": "UP" + }, + "name": "api_v2-example-beta1@docker", + "type": "loadbalancer", + "provider": "docker" + }, + { + "loadBalancer": { + "servers": [ + { + "url": "http://10.0.1.20:5775" + } + ], + "passHostHeader": true + }, + "status": "enabled", + "usedBy": [ + "jaeger_v2-example-beta1@docker" + ], + "serverStatus": { + "http://10.0.1.20:5775": "UP" + }, + "name": "jaeger_v2-example-beta1@docker", + "type": "loadbalancer", + "provider": "docker" + }, + { + "loadBalancer": { + "servers": [ + { + "url": "foo" + } + ], + "passHostHeader": false + }, + "status": "enabled", + "name": "orphan-service@file", + "type": "loadbalancer", + "provider": "file" + }, + { + "loadBalancer": { + "servers": [ + { + "url": "http://10.0.1.10:80" + } + ], + "passHostHeader": true + }, + "status": "enabled", + "usedBy": [ + "traefik_v2-example-beta1@docker" + ], + "serverStatus": { + "http://10.0.1.10:80": "UP" + }, + "name": "traefik_v2-example-beta1@docker", + "type": "loadbalancer", + "provider": "docker" + }, + { + "name": "canary1@docker", + "provider": "docker", + "status": "enabled", + "type": "weighted", + "usedBy": [ + "foo@docker" + ], + "weighted": { + "sticky": { + "cookie": { + "httpOnly": true, + "name": "chocolat", + "secure": true + } + } + } + }, + { + "name": "canary2@docker", + "provider": "docker", + "status": "enabled", + "type": "weighted", + "usedBy": [ + "fii@docker" + ], + "weighted": { + "sticky": { + "cookie": {} + } + } + }, + { + "mirroring": { + "mirrors": [ + { + "name": "two@docker", + "percent": 10 + }, + { + "name": "three@docker", + "percent": 15 + }, + { + "name": "four@docker", + "percent": 80 + } + ], + "service": "one@docker" + }, + "name": "mirror@docker", + "provider": "docker", + "status": "enabled", + "type": "mirroring", + "usedBy": [ + "foo@docker" + ] + } +] diff --git a/webui/src/mocks/data/api-overview.json b/webui/src/mocks/data/api-overview.json new file mode 100644 index 000000000..d01f3b403 --- /dev/null +++ b/webui/src/mocks/data/api-overview.json @@ -0,0 +1,73 @@ +{ + "http": { + "routers": { + "total": 126, + "warnings": 42, + "errors": 42 + }, + "services": { + "total": 126, + "warnings": 38, + "errors": 5 + }, + "middlewares": { + "total": 126, + "warnings": 10, + "errors": 15 + } + }, + "tcp": { + "routers": { + "total": 126, + "warnings": 20, + "errors": 32 + }, + "services": { + "total": 126, + "warnings": 8, + "errors": 7 + }, + "middlewares": { + "total": 126, + "warnings": 23, + "errors": 11 + } + }, + "udp": { + "routers": { + "total": 0, + "warnings": 0, + "errors": 0 + }, + "services": { + "total": 0, + "warnings": 0, + "errors": 0 + } + }, + "features": { + "tracing": "Prometheus", + "metrics": "", + "accessLog": true + }, + "providers": [ + "Consul", + "ConsulCatalog", + "Docker", + "ECS", + "etcd", + "File", + "Http", + "Hub", + "Internal", + "Kubernetes", + "KubernetesCRD", + "KubernetesGateway", + "KubernetesIngress", + "Nomad", + "Plugin", + "Redis", + "Swarm", + "ZooKeeper" + ] +} diff --git a/webui/src/mocks/data/api-tcp_middlewares.json b/webui/src/mocks/data/api-tcp_middlewares.json new file mode 100644 index 000000000..be0cd8029 --- /dev/null +++ b/webui/src/mocks/data/api-tcp_middlewares.json @@ -0,0 +1,32 @@ +[ + { + "inFlightConn": { + "amount": 10 + }, + "status": "enabled", + "usedBy": ["tcp-all@docker"], + "name": "test-inflightconn", + "type": "inflightconn", + "provider": "docker" + }, + { + "ipWhiteList": { + "sourceRange": ["127.0.0.1/32", "192.168.1.7"] + }, + "status": "enabled", + "usedBy": ["tcp-all@docker"], + "name": "test-ipwhitelist", + "type": "ipwhitelist", + "provider": "docker" + }, + { + "ipAllowList": { + "sourceRange": ["127.0.0.1/32", "192.168.1.7"] + }, + "status": "enabled", + "usedBy": ["tcp-all@docker"], + "name": "test-ipallowlist", + "type": "ipallowlist", + "provider": "docker" + } +] diff --git a/webui/src/mocks/data/api-tcp_routers.json b/webui/src/mocks/data/api-tcp_routers.json new file mode 100644 index 000000000..f908f66a8 --- /dev/null +++ b/webui/src/mocks/data/api-tcp_routers.json @@ -0,0 +1,18 @@ +[ + { + "entryPoints": [ + "web-tcp" + ], + "service": "tcp-all", + "rule": "HostSNI(`*`)", + "status": "enabled", + "middlewares": ["test-inflightconn", "test-ipwhitelist", "test-ipallowlist"], + "name": "tcp-all@docker", + "using": [ + "web-secured", + "web" + ], + "priority": 10, + "provider": "docker" + } +] diff --git a/webui/src/mocks/data/api-tcp_services.json b/webui/src/mocks/data/api-tcp_services.json new file mode 100644 index 000000000..0912dc1b6 --- /dev/null +++ b/webui/src/mocks/data/api-tcp_services.json @@ -0,0 +1,19 @@ +[ + { + "loadBalancer": { + "terminationDelay": 10, + "servers": [ + { + "address": "10.0.1.14:8080" + } + ] + }, + "status": "enabled", + "usedBy": [ + "tcp-all@docker" + ], + "name": "tcp-all@docker", + "type": "loadbalancer", + "provider": "docker" + } +] diff --git a/webui/src/mocks/data/api-udp_routers.json b/webui/src/mocks/data/api-udp_routers.json new file mode 100644 index 000000000..4135dfc12 --- /dev/null +++ b/webui/src/mocks/data/api-udp_routers.json @@ -0,0 +1,15 @@ +[ + { + "entryPoints": [ + "udp" + ], + "service": "whoami", + "status": "enabled", + "using": [ + "udp" + ], + "name": "to-whoami-a@file", + "priority": 10, + "provider": "file" + } +] diff --git a/webui/src/mocks/data/api-udp_services.json b/webui/src/mocks/data/api-udp_services.json new file mode 100644 index 000000000..5a24ab917 --- /dev/null +++ b/webui/src/mocks/data/api-udp_services.json @@ -0,0 +1,52 @@ +[ + { + "loadBalancer": { + "servers": [ + { + "address": "172.17.0.6:8080" + }, + { + "address": "172.17.0.4:8080" + } + ] + }, + "status": "enabled", + "name": "whoami-a@file", + "provider": "file", + "type": "loadbalancer" + }, + { + "loadBalancer": { + "servers": [ + { + "address": "172.17.0.5:8080" + } + ] + }, + "status": "enabled", + "name": "whoami-b@file", + "provider": "file", + "type": "loadbalancer" + }, + { + "weighted": { + "services": [ + { + "name": "whoami-a", + "weight": 3 + }, + { + "name": "whoami-b", + "weight": 1 + } + ] + }, + "status": "enabled", + "usedBy": [ + "to-whoami-a@file" + ], + "name": "whoami@file", + "provider": "file", + "type": "weighted" + } +] diff --git a/webui/src/mocks/data/api-version.json b/webui/src/mocks/data/api-version.json new file mode 100644 index 000000000..d4577bdbf --- /dev/null +++ b/webui/src/mocks/data/api-version.json @@ -0,0 +1,6 @@ +{ + "Version": "3.4.0", + "Codename": "montdor", + "disableDashboardAd": false, + "startDate": "2025-03-28T14:58:25.8937758+01:00" +} \ No newline at end of file diff --git a/webui/src/mocks/data/ee-api-errors.json b/webui/src/mocks/data/ee-api-errors.json new file mode 100644 index 000000000..682b976f0 --- /dev/null +++ b/webui/src/mocks/data/ee-api-errors.json @@ -0,0 +1,23 @@ +[ + { + "status": "error", + "protocol": "tcp", + "type": "service", + "name": "service-one", + "message": "Error message" + }, + { + "status": "warning", + "protocol": "tcp", + "type": "service", + "name": "service-two", + "message": "Warning message" + }, + { + "status": "error", + "protocol": "http", + "type": "service", + "name": "service-three", + "message": "Error message" + } +] \ No newline at end of file diff --git a/webui/src/mocks/handlers.ts b/webui/src/mocks/handlers.ts new file mode 100644 index 000000000..505506730 --- /dev/null +++ b/webui/src/mocks/handlers.ts @@ -0,0 +1,32 @@ +import { http, passthrough } from 'msw' + +import apiEntrypoints from './data/api-entrypoints.json' +import apiHttpMiddlewares from './data/api-http_middlewares.json' +import apiHttpRouters from './data/api-http_routers.json' +import apiHttpServices from './data/api-http_services.json' +import apiOverview from './data/api-overview.json' +import apiTcpMiddlewares from './data/api-tcp_middlewares.json' +import apiTcpRouters from './data/api-tcp_routers.json' +import apiTcpServices from './data/api-tcp_services.json' +import apiUdpRouters from './data/api-udp_routers.json' +import apiUdpServices from './data/api-udp_services.json' +import apiVersion from './data/api-version.json' +import eeApiErrors from './data/ee-api-errors.json' +import { listHandlers } from './utils' + +export const getHandlers = (noDelay: boolean = false) => [ + ...listHandlers('/api/entrypoints', apiEntrypoints, noDelay, true), + ...listHandlers('/api/errors', eeApiErrors, noDelay), + ...listHandlers('/api/http/middlewares', apiHttpMiddlewares, noDelay), + ...listHandlers('/api/http/routers', apiHttpRouters, noDelay), + ...listHandlers('/api/http/services', apiHttpServices, noDelay), + ...listHandlers('/api/overview', apiOverview, noDelay), + ...listHandlers('/api/tcp/middlewares', apiTcpMiddlewares, noDelay), + ...listHandlers('/api/tcp/routers', apiTcpRouters, noDelay), + ...listHandlers('/api/tcp/services', apiTcpServices, noDelay), + ...listHandlers('/api/udp/routers', apiUdpRouters, noDelay), + ...listHandlers('/api/udp/services', apiUdpServices, noDelay), + ...listHandlers('/api/version', apiVersion, noDelay), + http.get('*.tsx', () => passthrough()), + http.get('/img/*', () => passthrough()), +] diff --git a/webui/src/mocks/server.ts b/webui/src/mocks/server.ts new file mode 100644 index 000000000..ebbd4971e --- /dev/null +++ b/webui/src/mocks/server.ts @@ -0,0 +1,5 @@ +import { setupServer } from 'msw/node' + +import { getHandlers } from './handlers' + +export const server = setupServer(...getHandlers(true)) diff --git a/webui/src/mocks/utils.ts b/webui/src/mocks/utils.ts new file mode 100644 index 000000000..472128e4f --- /dev/null +++ b/webui/src/mocks/utils.ts @@ -0,0 +1,66 @@ +import { chunk, cloneDeep, orderBy } from 'lodash' +import { http, HttpResponse } from 'msw' + +const waitAsync = (noDelay = false) => { + if (noDelay) return Promise.resolve() + let delay = Math.random() + 0.5 + if (delay > 1) delay = 1 + return new Promise((res) => setTimeout(res, delay * 1000)) +} + +interface DataItem { + name: string + status?: string +} + +export const listHandlers = ( + route: string, + data: DataItem[] | Record | null = null, + noDelay: boolean = false, + skipPagination = false, +) => [ + http.get(route, async ({ request }) => { + await waitAsync(noDelay) + const url = new URL(request.url) + const direction = (url.searchParams.get('direction') as 'asc' | 'desc' | null) || 'asc' + const search = url.searchParams.get('search') + const sortBy = url.searchParams.get('sortBy') || 'name' + const status = url.searchParams.get('status') + let results = cloneDeep(data) + if (Array.isArray(results)) { + if (search) results = results.filter((x) => x.name.toLowerCase().includes(search.toLowerCase())) + if (status) results = results.filter((x) => x.status === status) + if (!results.length) return HttpResponse.json([], { headers: { 'X-Next-Page': '1' }, status: 200 }) + + if (sortBy) results = orderBy(results as DataItem[], [sortBy], [direction || 'asc']) + const page = +(url.searchParams.get('page') || 1) + const pageSize = +(url.searchParams.get('per_page') || 10) + const chunks = skipPagination ? [results] : chunk(results, pageSize) + const totalPages = chunks.length + const nextPage = page + 1 <= totalPages ? page + 1 : 1 // 1 means "no more pages". + return HttpResponse.json(chunks[page - 1], { headers: { 'X-Next-Page': nextPage.toString() }, status: 200 }) + } + return HttpResponse.json(results, { status: 200 }) + }), + http.get(`${route}/:name`, async ({ params }) => { + await waitAsync(noDelay) + + if (!Array.isArray(data)) { + return HttpResponse.json({}, { status: 501 }) + } + + const { name } = params + const res = data.find((x) => x.name === name) + if (!res) { + const parts = route.split('/') + const lastPart = parts[parts.length - 1] + return HttpResponse.json( + { + message: `${lastPart.substring(0, lastPart.length - 1)} not found: ${name}`, + }, + { status: 404 }, + ) + } + return HttpResponse.json(res, { status: 200 }) + }), +] diff --git a/webui/src/pages/NotFound.tsx b/webui/src/pages/NotFound.tsx new file mode 100644 index 000000000..51a130c4c --- /dev/null +++ b/webui/src/pages/NotFound.tsx @@ -0,0 +1,24 @@ +import { Box, Button, Flex, H1, Text } from '@traefiklabs/faency' +import { useNavigate } from 'react-router-dom' + +import Page from 'layout/Page' + +export const NotFound = () => { + const navigate = useNavigate() + + return ( + + + +

    404

    +
    + + I'm sorry, nothing around here... + + +
    +
    + ) +} diff --git a/webui/src/pages/_commons/Error404.vue b/webui/src/pages/_commons/Error404.vue deleted file mode 100644 index 67db5cd01..000000000 --- a/webui/src/pages/_commons/Error404.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/webui/src/pages/_commons/MiddlewareDetail.vue b/webui/src/pages/_commons/MiddlewareDetail.vue deleted file mode 100644 index 912e9971f..000000000 --- a/webui/src/pages/_commons/MiddlewareDetail.vue +++ /dev/null @@ -1,239 +0,0 @@ - - - - - diff --git a/webui/src/pages/_commons/RouterDetail.vue b/webui/src/pages/_commons/RouterDetail.vue deleted file mode 100644 index c2bfd317b..000000000 --- a/webui/src/pages/_commons/RouterDetail.vue +++ /dev/null @@ -1,428 +0,0 @@ - - - - - diff --git a/webui/src/pages/_commons/ServiceDetail.vue b/webui/src/pages/_commons/ServiceDetail.vue deleted file mode 100644 index ef925d757..000000000 --- a/webui/src/pages/_commons/ServiceDetail.vue +++ /dev/null @@ -1,353 +0,0 @@ - - - - - diff --git a/webui/src/pages/dashboard/Dashboard.tsx b/webui/src/pages/dashboard/Dashboard.tsx new file mode 100644 index 000000000..9100823eb --- /dev/null +++ b/webui/src/pages/dashboard/Dashboard.tsx @@ -0,0 +1,234 @@ +import { Card, CSS, Flex, Grid, H2, Text } from '@traefiklabs/faency' +import { ReactNode, useMemo } from 'react' +import useSWR from 'swr' + +import ProviderIcon from 'components/icons/providers' +import FeatureCard, { FeatureCardSkeleton } from 'components/resources/FeatureCard' +import ResourceCard from 'components/resources/ResourceCard' +import TraefikResourceStatsCard, { StatsCardSkeleton } from 'components/resources/TraefikResourceStatsCard' +import Page from 'layout/Page' +import { capitalizeFirstLetter } from 'utils/string' + +const RESOURCES = ['routers', 'services', 'middlewares'] + +const SectionContainer = ({ + title, + children, + childrenContainerCss, + css, +}: { + title: string + children: ReactNode + childrenContainerCss?: CSS + css?: CSS +}) => { + return ( + + +

    {title}

    +
    + + {children} + +
    + ) +} + +type ResourceData = { + errors: number + warnings: number + total: number +} + +export const Dashboard = () => { + const { data: entrypoints } = useSWR('/entrypoints') + const { data: overview } = useSWR('/overview') + + const features = useMemo( + () => + overview?.features + ? Object.keys(overview?.features).map((key: string) => { + return { name: key, value: overview.features[key] } + }) + : [], + [overview?.features], + ) + + const hasResources = useMemo(() => { + const filterFn = (x: ResourceData) => !x.errors && !x.total && !x.warnings + return { + http: Object.values(overview?.http || {}).filter(filterFn).length !== 3, + tcp: Object.values(overview?.tcp || {}).filter(filterFn).length !== 3, + udp: Object.values(overview?.udp || {}).filter(filterFn).length !== 2, + } + }, [overview]) + + // @FIXME skeleton not correctly displayed if only using suspense + if (!entrypoints || !overview) { + return + } + + return ( + + + + {entrypoints?.map((i, idx) => ( + + {i.address} + + ))} + + + + {overview?.http && hasResources.http ? ( + RESOURCES.map((i) => ( + + )) + ) : ( + No related objects to show. + )} + + + + {overview?.tcp && hasResources.tcp ? ( + RESOURCES.map((i) => ( + + )) + ) : ( + No related objects to show. + )} + + + + {overview?.udp && hasResources.udp ? ( + RESOURCES.map((i) => ( + + )) + ) : ( + No related objects to show. + )} + + + + {features.length + ? features.map((i, idx) => { + return + }) + : null} + + + + {overview?.providers?.length ? ( + overview.providers.map((p, idx) => ( + + + + {p} + + + )) + ) : ( + No related objects to show. + )} + + + + ) +} + +export const DashboardSkeleton = () => { + return ( + + + + {[...Array(5)].map((_, i) => ( + + ))} + + + + {[...Array(3)].map((_, i) => ( + + ))} + + + + {[...Array(3)].map((_, i) => ( + + ))} + + + + {[...Array(3)].map((_, i) => ( + + ))} + + + + {[...Array(3)].map((_, i) => ( + + ))} + + + + {[...Array(3)].map((_, i) => ( + + ))} + + + + ) +} diff --git a/webui/src/pages/dashboard/Index.vue b/webui/src/pages/dashboard/Index.vue deleted file mode 100644 index 806cb6da0..000000000 --- a/webui/src/pages/dashboard/Index.vue +++ /dev/null @@ -1,386 +0,0 @@ - - - - - diff --git a/webui/src/pages/http/HttpMiddleware.spec.tsx b/webui/src/pages/http/HttpMiddleware.spec.tsx new file mode 100644 index 000000000..d7a7c39bb --- /dev/null +++ b/webui/src/pages/http/HttpMiddleware.spec.tsx @@ -0,0 +1,481 @@ +import { HttpMiddlewareRender } from './HttpMiddleware' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render a simple middleware', () => { + const mockMiddleware = { + addPrefix: { + prefix: '/foo', + }, + status: 'enabled', + usedBy: ['router-test-simple@docker'], + name: 'middleware-simple', + provider: 'docker', + type: 'addprefix', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['middleware-simple'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test-simple@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-simple') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.innerHTML).toContain('addprefix') + expect(middlewareCard.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(middlewareCard.innerHTML).toContain('Success') + expect(middlewareCard.innerHTML).toContain('/foo') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test-simple@docker') + }) + + it('should render a plugin middleware', () => { + const mockMiddleware = { + plugin: { + jwtAuth: {}, + }, + status: 'enabled', + usedBy: ['router-test-plugin@docker'], + name: 'middleware-plugin', + provider: 'docker', + type: 'plugin', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['middleware-plugin'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test-plugin@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-plugin') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.innerHTML).toContain('jwtAuth') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test-plugin@docker') + }) + + it('should render a complex middleware', async () => { + const mockMiddleware = { + name: 'middleware-complex', + type: 'sample-middleware', + status: 'enabled', + provider: 'the-provider', + usedBy: ['router-test-complex@docker'], + redirectScheme: { + scheme: 'redirect-scheme', + }, + addPrefix: { + prefix: 'add-prefix-sample', + }, + basicAuth: { + users: ['user1', 'user2'], + usersFile: 'users/file', + realm: 'realm-sample', + removeHeader: true, + headerField: 'basic-auth-header', + }, + chain: { + middlewares: ['chain-middleware-1', 'chain-middleware-2', 'chain-middleware-3'], + }, + buffering: { + maxRequestBodyBytes: 10000, + memRequestBodyBytes: 10001, + maxResponseBodyBytes: 10002, + memResponseBodyBytes: 10003, + retryExpression: 'buffer-retry-expression', + }, + circuitBreaker: { + expression: 'circuit-breaker', + }, + compress: {}, + error: ['error-sample'], + errors: { + status: ['status-1', 'status-2'], + service: 'errors-service', + query: 'errors-query', + }, + forwardAuth: { + address: 'forward-auth-address', + tls: { + ca: 'tls-ca', + caOptional: true, + cert: 'tls-certificate', + key: 'tls-key', + insecureSkipVerify: true, + }, + trustForwardHeader: true, + authResponseHeaders: ['auth-response-header-1', 'auth-response-header-2'], + }, + headers: { + customRequestHeaders: { + 'req-header-a': 'custom-req-headers-a', + 'req-header-b': 'custom-req-headers-b', + }, + customResponseHeaders: { + 'res-header-a': 'custom-res-headers-a', + 'res-header-b': 'custom-res-headers-b', + }, + accessControlAllowCredentials: true, + accessControlAllowHeaders: ['allowed-header-1', 'allowed-header-2'], + accessControlAllowMethods: ['GET', 'POST', 'PUT'], + accessControlAllowOrigin: 'allowed.origin', + accessControlExposeHeaders: ['exposed-header-1', 'exposed-header-2'], + accessControlMaxAge: 10004, + addVaryHeader: true, + allowedHosts: ['allowed-host-1', 'allowed-host-2'], + hostsProxyHeaders: ['host-proxy-header-a', 'host-proxy-header-b'], + sslRedirect: true, + sslTemporaryRedirect: true, + sslHost: 'ssl.host', + sslProxyHeaders: { + 'proxy-header-a': 'ssl-proxy-header-a', + 'proxy-header-b': 'ssl-proxy-header-b', + }, + sslForceHost: true, + stsSeconds: 10005, + stsIncludeSubdomains: true, + stsPreload: true, + forceSTSHeader: true, + frameDeny: true, + customFrameOptionsValue: 'custom-frame-options', + contentTypeNosniff: true, + browserXssFilter: true, + customBrowserXSSValue: 'custom-xss-value', + contentSecurityPolicy: 'content-security-policy', + publicKey: 'public-key', + referrerPolicy: 'referrer-policy', + featurePolicy: 'feature-policy', + isDevelopment: true, + }, + ipWhiteList: { + sourceRange: ['125.0.0.1', '125.0.0.4'], + ipStrategy: { + depth: 10006, + excludedIPs: ['125.0.0.2', '125.0.0.3'], + }, + }, + inFlightReq: { + amount: 10007, + sourceCriterion: { + ipStrategy: { + depth: 10008, + excludedIPs: ['126.0.0.1', '126.0.0.2'], + }, + requestHeaderName: 'inflight-req-header', + requestHost: true, + }, + }, + rateLimit: { + average: 10009, + burst: 10010, + sourceCriterion: { + ipStrategy: { + depth: 10011, + excludedIPs: ['127.0.0.1', '127.0.0.2'], + }, + requestHeaderName: 'rate-limit-req-header', + requestHost: true, + }, + }, + passTLSClientCert: { + pem: true, + info: { + notAfter: true, + notBefore: true, + sans: true, + subject: { + country: true, + province: true, + locality: true, + organization: true, + commonName: true, + serialNumber: true, + domainComponent: true, + }, + issuer: { + country: true, + province: true, + locality: true, + organization: true, + commonName: true, + serialNumber: true, + domainComponent: true, + }, + }, + }, + redirectRegex: { + regex: '/redirect-from-regex', + replacement: '/redirect-to', + permanent: true, + }, + replacePath: { + path: '/replace-path', + }, + replacePathRegex: { + regex: 'replace-path-regex', + replacement: 'replace-path-replacement', + }, + retry: { + attempts: 10012, + }, + stripPrefix: { + prefixes: ['strip-prefix1', 'strip-prefix2'], + }, + stripPrefixRegex: { + regex: ['strip-prefix-regex1', 'strip-prefix-regex2'], + }, + plugin: { + ldapAuth: { + source: 'plugin-ldap-source', + baseDN: 'plugin-ldap-base-dn', + attribute: 'plugin-ldap-attribute', + searchFilter: 'plugin-ldap-search-filter', + forwardUsername: true, + forwardUsernameHeader: 'plugin-ldap-forward-username-header', + forwardAuthorization: true, + wwwAuthenticateHeader: true, + wwwAuthenticateHeaderRealm: 'plugin-ldap-www-authenticate-realm', + }, + inFlightReq: { + amount: 10013, + sourceCriterion: { + ipStrategy: { + depth: 10014, + excludedIPs: ['128.0.0.1', '128.0.0.2'], + }, + requestHeaderName: 'plugin-inflight-req-header', + requestHost: true, + }, + }, + rateLimit: { + average: 10015, + burst: 10016, + sourceCriterion: { + ipStrategy: { + depth: 10017, + excludedIPs: ['129.0.0.1', '129.0.0.2'], + }, + requestHeaderName: 'plugin-rate-limit-req-header', + requestHost: true, + }, + }, + }, + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['middleware-complex'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test-complex@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-complex') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.innerHTML).toContain('Success') + expect(middlewareCard.innerHTML).toContain('the-provider') + expect(middlewareCard.innerHTML).toContain('redirect-scheme') + expect(middlewareCard.innerHTML).toContain('add-prefix-sample') + expect(middlewareCard.innerHTML).toContain('buffer-retry-expression') + expect(middlewareCard.innerHTML).toContain('circuit-breaker') + expect(middlewareCard.innerHTML).toIncludeMultiple(['replace-path-regex', 'replace-path-replacement']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['/redirect-from-regex', '/redirect-to']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['127.0.0.1', '127.0.0.2', 'rate-limit-req-header']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['126.0.0.1', '126.0.0.2', 'inflight-req-header']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['125.0.0.1', '125.0.0.2', '125.0.0.3', '125.0.0.4']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['ssl.host', 'ssl-proxy-header-a', 'ssl-proxy-header-b']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['host-proxy-header-a', 'host-proxy-header-b']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['allowed-host-1', 'allowed-host-2']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['exposed-header-1', 'exposed-header-2']) + expect(middlewareCard.innerHTML).toContain('allowed.origin') + expect(middlewareCard.innerHTML).toContain('custom-frame-options') + expect(middlewareCard.innerHTML).toContain('content-security-policy') + expect(middlewareCard.innerHTML).toContain('public-key') + expect(middlewareCard.innerHTML).toContain('referrer-policy') + expect(middlewareCard.innerHTML).toContain('feature-policy') + expect(middlewareCard.innerHTML).toIncludeMultiple(['GET', 'POST', 'PUT']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['allowed-header-1', 'allowed-header-2']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['custom-res-headers-a', 'custom-res-headers-b']) + expect(middlewareCard.innerHTML).toIncludeMultiple(['custom-req-headers-a', 'custom-req-headers-b']) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'forward-auth-address', + 'auth-response-header-1', + 'auth-response-header-2', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'error-sample', + 'status-1', + 'status-2', + 'errors-service', + 'errors-query', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'chain-middleware-1', + 'chain-middleware-2', + 'chain-middleware-3', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'user1', + 'user2', + 'users/file', + 'realm-sample', + 'basic-auth-header', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'strip-prefix1', + 'strip-prefix2', + 'strip-prefix-regex1', + 'strip-prefix-regex2', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + '10000', + '10001', + '10002', + '10003', + '10004', + '10005', + '10006', + '10007', + '10008', + '10009', + '10010', + '10011', + '10012', + ]) + expect(middlewareCard.innerHTML).toIncludeMultiple([ + 'plugin-ldap-source', + 'plugin-ldap-base-dn', + 'plugin-ldap-attribute', + 'plugin-ldap-search-filter', + 'plugin-ldap-forward-username-header', + 'plugin-ldap-www-authenticate-realm', + 'plugin-inflight-req-header', + 'plugin-rate-limit-req-header', + '10013', + '10014', + '10015', + '10016', + '10017', + ]) + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test-complex@docker') + }) + + it('should render a plugin middleware with no type', async () => { + const mockMiddleware = { + plugin: { + jwtAuth: { + child: {}, + sibling: { + negativeGrandChild: false, + positiveGrandChild: true, + }, + stringChild: '123', + arrayChild: [1, 2, 3], + }, + }, + status: 'enabled', + name: 'middleware-plugin-no-type', + provider: 'docker', + routers: [], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-plugin-no-type') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.innerHTML).toContain('Success') + expect(middlewareCard.innerHTML).toContain('jwtAuth > child') + expect(middlewareCard.innerHTML).toContain('jwtAuth > sibling > negative Grand Child') + expect(middlewareCard.innerHTML).toContain('jwtAuth > sibling > positive Grand Child') + expect(middlewareCard.innerHTML).toContain('jwtAuth > string Child') + expect(middlewareCard.innerHTML).toContain('jwtAuth > array Child') + + const childSpans = Array.from(middlewareCard.querySelectorAll('span')).filter((span) => + ['0', '1', '2', '3', '123'].includes(span.innerHTML), + ) + expect(childSpans.length).toBe(7) + }) +}) diff --git a/webui/src/pages/http/HttpMiddleware.tsx b/webui/src/pages/http/HttpMiddleware.tsx new file mode 100644 index 000000000..4b2fe7e2a --- /dev/null +++ b/webui/src/pages/http/HttpMiddleware.tsx @@ -0,0 +1,73 @@ +import { Box, Card, H1, Skeleton, styled, Text } from '@traefiklabs/faency' +import { useParams } from 'react-router-dom' + +import { DetailSectionSkeleton } from 'components/resources/DetailSections' +import { RenderMiddleware } from 'components/resources/MiddlewarePanel' +import { UsedByRoutersSection, UsedByRoutersSkeleton } from 'components/resources/UsedByRoutersSection' +import { ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { NotFound } from 'pages/NotFound' +import breakpoints from 'utils/breakpoints' + +const MiddlewareGrid = styled(Box, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(400px, 1fr))', + + [`@media (max-width: ${breakpoints.tablet})`]: { + gridTemplateColumns: '1fr', + }, +}) + +type HttpMiddlewareRenderProps = { + data?: ResourceDetailDataType + error?: Error | null + name: string +} + +export const HttpMiddlewareRender = ({ data, error, name }: HttpMiddlewareRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Middleware right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + +

    {data.name}

    + + + + + + +
    + ) +} + +export const HttpMiddleware = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'middlewares') + return +} + +export default HttpMiddleware diff --git a/webui/src/pages/http/HttpMiddlewares.spec.tsx b/webui/src/pages/http/HttpMiddlewares.spec.tsx new file mode 100644 index 000000000..1f4ce2607 --- /dev/null +++ b/webui/src/pages/http/HttpMiddlewares.spec.tsx @@ -0,0 +1,129 @@ +import { HttpMiddlewares as HttpMiddlewaresPage, HttpMiddlewaresRender, makeRowRender } from './HttpMiddlewares' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the middleware list', () => { + const pages = [ + { + addPrefix: { prefix: '/foo' }, + status: 'enabled', + usedBy: ['web@docker'], + name: 'add-foo@docker', + provider: 'docker', + type: 'addprefix', + }, + { + addPrefix: { prefix: '/path' }, + error: ['message 1', 'message 2'], + status: 'disabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware00@docker', + provider: 'docker', + type: 'addprefix', + }, + { + basicAuth: { + users: ['test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/', 'test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0'], + usersFile: '/etc/foo/my/file/path/.htpasswd', + realm: 'Hello you are here', + removeHeader: true, + headerField: 'X-WebAuth-User', + }, + error: ['message 1', 'message 2'], + status: 'enabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware01@docker', + provider: 'docker', + type: 'basicauth', + }, + { + buffering: { + maxRequestBodyBytes: 42, + memRequestBodyBytes: 42, + maxResponseBodyBytes: 42, + memResponseBodyBytes: 42, + retryExpression: 'IsNetworkError() \u0026\u0026 Attempts() \u003c 2', + }, + error: ['message 1', 'message 2'], + status: 'enabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware02@docker', + provider: 'docker', + type: 'buffering', + }, + { + chain: { + middlewares: [ + 'middleware01@docker', + 'middleware021@docker', + 'middleware03@docker', + 'middleware06@docker', + 'middleware10@docker', + ], + }, + error: ['message 1', 'message 2'], + status: 'enabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware03@docker', + provider: 'docker', + type: 'chain', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('HTTP Middlewares page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(5) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('add-foo@docker') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('addprefix') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('middleware00@docker') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('addprefix') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('middleware01@docker') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('basicauth') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('middleware02@docker') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('buffering') + expect(tbody.querySelectorAll('a[role="row"]')[3].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[4].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[4].innerHTML).toContain('middleware03@docker') + expect(tbody.querySelectorAll('a[role="row"]')[4].innerHTML).toContain('chain') + expect(tbody.querySelectorAll('a[role="row"]')[4].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/http/HttpMiddlewares.tsx b/webui/src/pages/http/HttpMiddlewares.tsx new file mode 100644 index 000000000..f61a4ed6b --- /dev/null +++ b/webui/src/pages/http/HttpMiddlewares.tsx @@ -0,0 +1,125 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' +import { parseMiddlewareType } from 'libs/parsers' + +export const makeRowRender = (): RenderRowType => { + const HttpMiddlewaresRenderRow = (row) => { + const middlewareType = parseMiddlewareType(row) + + return ( + + + + + + + + + + + + + + + + + + + + + + + ) + } + return HttpMiddlewaresRenderRow +} + +export const HttpMiddlewaresRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const HttpMiddlewares = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/http/middlewares', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/http/HttpRouter.spec.tsx b/webui/src/pages/http/HttpRouter.spec.tsx new file mode 100644 index 000000000..a7f1e3ad7 --- /dev/null +++ b/webui/src/pages/http/HttpRouter.spec.tsx @@ -0,0 +1,121 @@ +import { HttpRouterRender } from './HttpRouter' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import apiEntrypoints from 'mocks/data/api-entrypoints.json' +import apiHttpMiddlewares from 'mocks/data/api-http_middlewares.json' +import apiHttpRouters from 'mocks/data/api-http_routers.json' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render the router details', async () => { + const router = apiHttpRouters.find((x) => x.name === 'orphan-router@file') + const mockData = { + ...router!, + middlewares: apiHttpMiddlewares.filter((x) => router?.middlewares?.includes(x.name)), + hasValidMiddlewares: true, + entryPointsData: apiEntrypoints.filter((x) => router?.using?.includes(x.name)), + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const routerStructure = getByTestId('router-structure') + expect(routerStructure.innerHTML).toContain(':80') + expect(routerStructure.innerHTML).toContain(':443') + expect(routerStructure.innerHTML).toContain(':8080') + expect(routerStructure.innerHTML).toContain(':8002') + expect(routerStructure.innerHTML).toContain(':8003') + expect(routerStructure.innerHTML).toContain('orphan-router@file') + expect(routerStructure.innerHTML).toContain('middleware00') + expect(routerStructure.innerHTML).toContain('middleware01') + expect(routerStructure.innerHTML).toContain('middleware02') + expect(routerStructure.innerHTML).toContain('middleware03') + expect(routerStructure.innerHTML).toContain('middleware04') + expect(routerStructure.innerHTML).toContain('middleware05') + expect(routerStructure.innerHTML).toContain('middleware06') + expect(routerStructure.innerHTML).toContain('middleware07') + expect(routerStructure.innerHTML).toContain('middleware08') + expect(routerStructure.innerHTML).toContain('middleware09') + expect(routerStructure.innerHTML).toContain('middleware10') + expect(routerStructure.innerHTML).toContain('middleware11') + expect(routerStructure.innerHTML).toContain('middleware12') + expect(routerStructure.innerHTML).toContain('middleware13') + expect(routerStructure.innerHTML).toContain('middleware14') + expect(routerStructure.innerHTML).toContain('middleware15') + expect(routerStructure.innerHTML).toContain('middleware16') + expect(routerStructure.innerHTML).toContain('middleware17') + expect(routerStructure.innerHTML).toContain('middleware18') + expect(routerStructure.innerHTML).toContain('middleware19') + expect(routerStructure.innerHTML).toContain('middleware20') + expect(routerStructure.innerHTML).toContain('unexistingservice') + expect(routerStructure.innerHTML).toContain('HTTP Router') + expect(routerStructure.innerHTML).not.toContain('TCP Router') + + const routerDetailsSection = getByTestId('router-detail') + + const routerDetailsPanel = routerDetailsSection.querySelector(':scope > div:nth-child(1)') + expect(routerDetailsPanel?.innerHTML).toContain('orphan-router@file') + expect(routerDetailsPanel?.innerHTML).toContain('Error') + expect(routerDetailsPanel?.querySelector('svg[data-testid="file"]')).toBeTruthy() + expect(routerDetailsPanel?.innerHTML).toContain( + 'Path(`somethingreallyunexpectedbutalsoverylongitgetsoutofthecontainermaybe`)', + ) + expect(routerDetailsPanel?.innerHTML).toContain('unexistingservice') + expect(routerDetailsPanel?.innerHTML).toContain('the service "unexistingservice@file" does not exist') + + const middlewaresPanel = routerDetailsSection.querySelector(':scope > div:nth-child(3)') + const providers = Array.from(middlewaresPanel?.querySelectorAll('svg[data-testid="docker"]') || []) + expect(middlewaresPanel?.innerHTML).toContain('middleware00') + expect(middlewaresPanel?.innerHTML).toContain('middleware01') + expect(middlewaresPanel?.innerHTML).toContain('middleware02') + expect(middlewaresPanel?.innerHTML).toContain('middleware03') + expect(middlewaresPanel?.innerHTML).toContain('middleware04') + expect(middlewaresPanel?.innerHTML).toContain('middleware05') + expect(middlewaresPanel?.innerHTML).toContain('middleware06') + expect(middlewaresPanel?.innerHTML).toContain('middleware07') + expect(middlewaresPanel?.innerHTML).toContain('middleware08') + expect(middlewaresPanel?.innerHTML).toContain('middleware09') + expect(middlewaresPanel?.innerHTML).toContain('middleware10') + expect(middlewaresPanel?.innerHTML).toContain('middleware11') + expect(middlewaresPanel?.innerHTML).toContain('middleware12') + expect(middlewaresPanel?.innerHTML).toContain('middleware13') + expect(middlewaresPanel?.innerHTML).toContain('middleware14') + expect(middlewaresPanel?.innerHTML).toContain('middleware15') + expect(middlewaresPanel?.innerHTML).toContain('middleware16') + expect(middlewaresPanel?.innerHTML).toContain('middleware17') + expect(middlewaresPanel?.innerHTML).toContain('middleware18') + expect(middlewaresPanel?.innerHTML).toContain('middleware19') + expect(middlewaresPanel?.innerHTML).toContain('middleware20') + expect(middlewaresPanel?.innerHTML).toContain('Success') + expect(providers.length).toBe(21) + + expect(getByTestId('/http/middlewares/middleware00@docker')).toBeInTheDocument() + + expect(getByTestId('/http/middlewares/middleware01@docker')).toBeInTheDocument() + + expect(getByTestId('/http/services/unexistingservice@file')).toBeInTheDocument() + }) +}) diff --git a/webui/src/pages/http/HttpRouter.tsx b/webui/src/pages/http/HttpRouter.tsx new file mode 100644 index 000000000..dbb493e4d --- /dev/null +++ b/webui/src/pages/http/HttpRouter.tsx @@ -0,0 +1,152 @@ +import { Flex, styled, Text } from '@traefiklabs/faency' +import { useContext, useEffect, useMemo } from 'react' +import { FiGlobe, FiLayers, FiLogIn, FiZap } from 'react-icons/fi' +import { useParams } from 'react-router-dom' + +import { CardListSection, DetailSectionSkeleton } from 'components/resources/DetailSections' +import MiddlewarePanel from 'components/resources/MiddlewarePanel' +import RouterPanel from 'components/resources/RouterPanel' +import TlsPanel from 'components/resources/TlsPanel' +import { ToastContext } from 'contexts/toasts' +import { EntryPoint, ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { getErrorData, getValidData } from 'libs/objectHandlers' +import { parseMiddlewareType } from 'libs/parsers' +import { NotFound } from 'pages/NotFound' + +const CardListColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(4, 1fr)', + marginBottom: '48px', +}) + +type DetailProps = { + data: ResourceDetailDataType + protocol?: string +} + +export const RouterStructure = ({ data, protocol = 'http' }: DetailProps) => { + const { addToast } = useContext(ToastContext) + const entrypoints = useMemo(() => getValidData(data.entryPointsData), [data?.entryPointsData]) + const entrypointsError = useMemo(() => getErrorData(data.entryPointsData), [data?.entryPointsData]) + + const serviceSlug = data.service?.includes('@') + ? data.service + : `${data.service ?? 'unknown'}@${data.provider ?? 'unknown'}` + + useEffect(() => { + entrypointsError?.map((error) => + addToast({ + message: error.message, + severity: 'error', + }), + ) + }, [addToast, entrypointsError]) + + return ( + + {entrypoints.length > 0 && ( + } + title="Entrypoints" + cards={data.entryPointsData?.map((ep: EntryPoint) => ({ + title: ep.name, + description: ep.address, + }))} + /> + )} + } + title={`${protocol.toUpperCase()} Router`} + cards={[{ title: 'router', description: data.name, focus: true }]} + /> + {data.hasValidMiddlewares && ( + } + title={`${protocol.toUpperCase()} Middlewares`} + cards={data.middlewares?.map((mw) => ({ + title: parseMiddlewareType(mw) ?? 'middleware', + description: mw.name, + link: `/${protocol}/middlewares/${mw.name}`, + }))} + /> + )} + } + title="Service" + cards={[{ title: 'service', description: data.service, link: `/${protocol}/services/${serviceSlug}` }]} + /> + + ) +} + +const SpacedColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', + gridGap: '16px', +}) + +const RouterDetail = ({ data }: DetailProps) => ( + + + + + +) + +type HttpRouterRenderProps = { + data?: ResourceDetailDataType + error?: Error | null + name: string +} + +export const HttpRouterRender = ({ data, error, name }: HttpRouterRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Router right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + + + + + ) +} + +export const HttpRouter = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'routers') + return +} + +export default HttpRouter diff --git a/webui/src/pages/http/HttpRouters.spec.tsx b/webui/src/pages/http/HttpRouters.spec.tsx new file mode 100644 index 000000000..bdddd21b4 --- /dev/null +++ b/webui/src/pages/http/HttpRouters.spec.tsx @@ -0,0 +1,109 @@ +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { HttpRouters as HttpRoutersPage, HttpRoutersRender, makeRowRender } from 'pages/http/HttpRouters' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the routers list', () => { + const pages = [ + { + service: 'jaeger_v2-example-beta1', + rule: 'Host(`jaeger-v2-example-beta1`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'jaeger_v2-example-beta1@docker', + provider: 'docker', + }, + { + middlewares: ['middleware00@docker', 'middleware01@docker', 'middleware02@docker'], + service: 'unexistingservice', + rule: 'Path(`somethingreallyunexpected`)', + error: ['the service "unexistingservice@file" does not exist'], + status: 'disabled', + using: ['web-secured', 'web'], + name: 'orphan-router@file', + provider: 'file', + }, + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + status: 'enabled', + using: ['web-redirect'], + name: 'server-redirect@docker', + provider: 'docker', + }, + { + entryPoints: ['web-secured'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-secured'], + name: 'server-secured@docker', + provider: 'docker', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('HTTP Routers page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(4) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).not.toContain('testid="tls-on"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('Host(`jaeger-v2-example-beta1`)') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toIncludeMultiple(['web-secured', 'web']) + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('jaeger_v2-example-beta1@docker') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('jaeger_v2-example-beta1') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).not.toContain('testid="tls-on"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('Path(`somethingreallyunexpected`)') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toIncludeMultiple(['web-secured', 'web']) + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('orphan-router@file') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('unexistingservice') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="file"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).not.toContain('testid="tls-on"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('Host(`server`)') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toIncludeMultiple(['web-redirect']) + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('server-redirect@docker') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('api2_v2-example-beta1') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('testid="tls-on"') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('Host(`server`)') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toIncludeMultiple(['web-secured']) + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('server-secured@docker') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('api2_v2-example-beta1') + expect(tbody.querySelectorAll('a[role="row"]')[3].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/http/HttpRouters.tsx b/webui/src/pages/http/HttpRouters.tsx new file mode 100644 index 000000000..d646b8f42 --- /dev/null +++ b/webui/src/pages/http/HttpRouters.tsx @@ -0,0 +1,146 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency' +import { useMemo } from 'react' +import { FiShield } from 'react-icons/fi' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { Chips } from 'components/resources/DetailSections' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (protocol = 'http'): RenderRowType => { + const HttpRoutersRenderRow = (row) => ( + + + + + + + + + {protocol !== 'udp' && ( + <> + + {row.tls && ( + + + + + + )} + + + + + + )} + {row.using && row.using.length > 0 && } + + + + + + + + + + + + + + + + + + ) + return HttpRoutersRenderRow +} + +export const HttpRoutersRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const HttpRouters = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/http/routers', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/http/HttpService.spec.tsx b/webui/src/pages/http/HttpService.spec.tsx new file mode 100644 index 000000000..781d43099 --- /dev/null +++ b/webui/src/pages/http/HttpService.spec.tsx @@ -0,0 +1,220 @@ +import { HttpServiceRender } from './HttpService' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render a service with no health check or mirrors', async () => { + const mockData = { + loadBalancer: { + servers: [ + { + url: 'http://10.0.1.12:80', + }, + ], + passHostHeader: true, + }, + status: 'enabled', + usedBy: ['router-test1@docker', 'router-test2@docker'], + serverStatus: { + 'http://10.0.1.12:80': 'UP', + }, + name: 'service-test1', + provider: 'docker', + type: 'loadbalancer', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test1@docker', + provider: 'docker', + }, + { + entryPoints: ['web-secured'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-secured'], + name: 'router-test2@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'service-test1') + expect(titleTags.length).toBe(1) + + const serviceDetails = getByTestId('service-details') + expect(serviceDetails.innerHTML).toContain('Type') + expect(serviceDetails.innerHTML).toContain('loadbalancer') + expect(serviceDetails.innerHTML).toContain('Provider') + expect(serviceDetails.innerHTML).toContain('docker') + expect(serviceDetails.innerHTML).toContain('Status') + expect(serviceDetails.innerHTML).toContain('Success') + expect(serviceDetails.innerHTML).toContain('Pass Host Header') + expect(serviceDetails.innerHTML).toContain('True') + + const serversList = getByTestId('servers-list') + expect(serversList.childNodes.length).toBe(1) + expect(serversList.innerHTML).toContain('http://10.0.1.12:80') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(2) + expect(tableBody?.innerHTML).toContain('router-test1@docker') + expect(tableBody?.innerHTML).toContain('router-test2@docker') + + expect(() => { + getByTestId('health-check') + }).toThrow('Unable to find an element by: [data-testid="health-check"]') + + expect(() => { + getByTestId('mirror-services') + }).toThrow('Unable to find an element by: [data-testid="mirror-services"]') + }) + + it('should render a service with health check', async () => { + const mockData = { + loadBalancer: { + servers: [ + { + url: 'http://10.0.1.12:81', + }, + ], + passHostHeader: true, + healthCheck: { + scheme: 'https', + path: '/health', + port: 80, + interval: '5s', + timeout: '10s', + hostname: 'domain.com', + headers: { + 'X-Custom-A': 'foobar,gi,ji;ji,ok', + 'X-Custom-B': 'foobar foobar foobar foobar foobar', + }, + }, + }, + status: 'enabled', + usedBy: [], + serverStatus: { + 'http://10.0.1.12:81': 'UP', + }, + name: 'service-test2', + provider: 'docker', + type: 'loadbalancer', + routers: [], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const healthCheck = getByTestId('health-check') + expect(healthCheck.innerHTML).toContain('Scheme') + expect(healthCheck.innerHTML).toContain('https') + expect(healthCheck.innerHTML).toContain('Interval') + expect(healthCheck.innerHTML).toContain('5s') + expect(healthCheck.innerHTML).toContain('Path') + expect(healthCheck.innerHTML).toContain('/health') + expect(healthCheck.innerHTML).toContain('Timeout') + expect(healthCheck.innerHTML).toContain('10s') + expect(healthCheck.innerHTML).toContain('Port') + expect(healthCheck.innerHTML).toContain('80') + expect(healthCheck.innerHTML).toContain('Hostname') + expect(healthCheck.innerHTML).toContain('domain.com') + expect(healthCheck.innerHTML).toContain('Headers') + expect(healthCheck.innerHTML).toContain('X-Custom-A: foobar,gi,ji;ji,ok') + expect(healthCheck.innerHTML).toContain('X-Custom-B: foobar foobar foobar foobar foobar') + + expect(() => { + getByTestId('mirror-services') + }).toThrow('Unable to find an element by: [data-testid="mirror-services"]') + }) + + it('should render a service with mirror services', async () => { + const mockData = { + mirroring: { + service: 'one@docker', + mirrors: [ + { + name: 'two@docker', + percent: 10, + }, + { + name: 'three@docker', + percent: 15, + }, + { + name: 'four@docker', + percent: 80, + }, + ], + }, + status: 'enabled', + usedBy: [], + name: 'service-test3', + provider: 'docker', + type: 'mirroring', + routers: [], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const mirrorServices = getByTestId('mirror-services') + const providers = Array.from(mirrorServices.querySelectorAll('svg[data-testid="docker"]')) + expect(mirrorServices.childNodes.length).toBe(3) + expect(mirrorServices.innerHTML).toContain('two@docker') + expect(mirrorServices.innerHTML).toContain('three@docker') + expect(mirrorServices.innerHTML).toContain('four@docker') + expect(mirrorServices.innerHTML).toContain('10') + expect(mirrorServices.innerHTML).toContain('15') + expect(mirrorServices.innerHTML).toContain('80') + expect(providers.length).toBe(3) + + expect(() => { + getByTestId('health-check') + }).toThrow('Unable to find an element by: [data-testid="health-check"]') + + expect(() => { + getByTestId('servers-list') + }).toThrow('Unable to find an element by: [data-testid="servers-list"]') + }) +}) diff --git a/webui/src/pages/http/HttpService.tsx b/webui/src/pages/http/HttpService.tsx new file mode 100644 index 000000000..4e74c552f --- /dev/null +++ b/webui/src/pages/http/HttpService.tsx @@ -0,0 +1,314 @@ +import { Badge, Box, Flex, H1, Skeleton, styled, Text } from '@traefiklabs/faency' +import { useMemo } from 'react' +import { FiGlobe, FiInfo, FiShield } from 'react-icons/fi' +import { useParams } from 'react-router-dom' + +import ProviderIcon from 'components/icons/providers' +import { + BooleanState, + Chips, + DetailSection, + DetailSectionSkeleton, + ItemBlock, + ItemTitle, + LayoutTwoCols, + ProviderName, +} from 'components/resources/DetailSections' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { UsedByRoutersSection, UsedByRoutersSkeleton } from 'components/resources/UsedByRoutersSection' +import Tooltip from 'components/Tooltip' +import { ResourceDetailDataType, ServiceDetailType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { NotFound } from 'pages/NotFound' + +type DetailProps = { + data: ServiceDetailType + protocol?: string +} + +const SpacedColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', + gridGap: '16px', +}) + +const ServicesGrid = styled(Box, { + display: 'grid', + gridTemplateColumns: '2fr 1fr 1fr', + alignItems: 'center', + padding: '$3 $5', + borderBottom: '1px solid $tableRowBorder', +}) + +const ServersGrid = styled(Box, { + display: 'grid', + alignItems: 'center', + padding: '$3 $5', + borderBottom: '1px solid $tableRowBorder', +}) + +const MirrorsGrid = styled(Box, { + display: 'grid', + gridTemplateColumns: '2fr 1fr 1fr', + alignItems: 'center', + padding: '$3 $5', + borderBottom: '1px solid $tableRowBorder', + + '> *:not(:first-child)': { + justifySelf: 'flex-end', + }, +}) + +const GridTitle = styled(Text, { + fontSize: '14px', + fontWeight: 700, + color: 'hsl(0, 0%, 56%)', +}) + +type Server = { + url: string + address?: string +} + +type ServerStatus = { + [server: string]: string +} + +function getServerStatusList(data: ServiceDetailType): ServerStatus { + const serversList: ServerStatus = {} + + data.loadBalancer?.servers?.forEach((server: Server) => { + serversList[server.address || server.url] = 'DOWN' + }) + + if (data.serverStatus) { + Object.entries(data.serverStatus).forEach(([server, status]) => { + serversList[server] = status + }) + } + + return serversList +} + +export const ServicePanels = ({ data, protocol = '' }: DetailProps) => { + const serversList = getServerStatusList(data) + const getProviderFromName = (serviceName: string): string => { + const [, provider] = serviceName.split('@') + return provider || data.provider + } + const providerName = useMemo(() => { + return data.provider + }, [data.provider]) + + return ( + + } title="Service Details"> + + {data.type && ( + + {data.type} + + )} + {data.provider && ( + + + {providerName} + + )} + + {data.status && ( + + + + )} + {data.mirroring && data.mirroring.service && ( + + {data.mirroring.service} + + )} + {data.loadBalancer && ( + <> + {data.loadBalancer.passHostHeader && ( + + + + )} + {data.loadBalancer.terminationDelay && ( + + {`${data.loadBalancer.terminationDelay} ms`} + + )} + + )} + + {data.loadBalancer?.healthCheck && ( + } title="Health Check"> + + + {data.loadBalancer.healthCheck.scheme && ( + + {data.loadBalancer.healthCheck.scheme} + + )} + {data.loadBalancer.healthCheck.interval && ( + + {data.loadBalancer.healthCheck.interval} + + )} + + + {data.loadBalancer.healthCheck.path && ( + + + {data.loadBalancer.healthCheck.path} + + + )} + {data.loadBalancer.healthCheck.timeout && ( + + {data.loadBalancer.healthCheck.timeout} + + )} + + + {data.loadBalancer.healthCheck.port && ( + + {data.loadBalancer.healthCheck.port} + + )} + {data.loadBalancer.healthCheck.hostname && ( + + + {data.loadBalancer.healthCheck.hostname} + + + )} + + {data.loadBalancer.healthCheck.headers && ( + + entry.join(': '))} + /> + + )} + + + )} + {!!data?.weighted?.services?.length && ( + } title="Services" noPadding> + <> + + Name + Weight + Provider + + + {data.weighted.services.map((service) => ( + + {service.name} + {service.weight} + + + + + ))} + + + + )} + {Object.keys(serversList).length > 0 && ( + } title="Servers" noPadding> + <> + + {protocol === 'http' && Status} + URL + + + {Object.entries(serversList).map(([server, status]) => ( + + {protocol === 'http' && } + + + {server} + + + + ))} + + + + )} + {data.mirroring?.mirrors && data.mirroring.mirrors.length > 0 && ( + } title="Mirror Services" noPadding> + + Name + Percent + Provider + + + {data.mirroring.mirrors.map((mirror) => ( + + {mirror.name} + {mirror.percent} + + + ))} + + + )} + + ) +} + +type HttpServiceRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const HttpServiceRender = ({ data, error, name }: HttpServiceRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Service right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + +

    {data.name}

    + + +
    + ) +} + +export const HttpService = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'services') + return +} + +export default HttpService diff --git a/webui/src/pages/http/HttpServices.spec.tsx b/webui/src/pages/http/HttpServices.spec.tsx new file mode 100644 index 000000000..720fc2549 --- /dev/null +++ b/webui/src/pages/http/HttpServices.spec.tsx @@ -0,0 +1,101 @@ +import { HttpServices as HttpServicesPage, HttpServicesRender, makeRowRender } from './HttpServices' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the services list', () => { + const pages = [ + { + loadBalancer: { servers: [{ url: 'http://10.0.1.12:80' }], passHostHeader: true }, + status: 'enabled', + usedBy: ['server-redirect@docker', 'server-secured@docker'], + serverStatus: { 'http://10.0.1.12:80': 'UP' }, + name: 'api2_v2-example-beta1@docker', + provider: 'docker', + type: 'loadbalancer', + }, + { + loadBalancer: { + servers: [{ url: 'http://10.0.1.11:80' }, { url: 'http://10.0.1.12:80' }], + passHostHeader: true, + }, + status: 'enabled', + usedBy: ['web@docker'], + serverStatus: { 'http://10.0.1.11:80': 'UP' }, + name: 'api_v2-example-beta2@docker', + provider: 'docker', + type: 'loadbalancer', + }, + { + weighted: { sticky: { cookie: { name: 'chocolat', secure: true, httpOnly: true } } }, + status: 'enabled', + usedBy: ['foo@docker'], + name: 'canary1@docker', + provider: 'docker', + type: 'weighted', + }, + { + weighted: { sticky: { cookie: {} } }, + status: 'enabled', + usedBy: ['fii@docker'], + name: 'canary2@file', + provider: 'file', + type: 'weighted', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('HTTP Services page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(4) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('api2_v2-example-beta1@docker') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('api_v2-example-beta2@docker') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('2') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('canary1@docker') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('weighted') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('0') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('canary2@file') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('weighted') + expect(tbody.querySelectorAll('a[role="row"]')[3].innerHTML).toContain('0') + expect(tbody.querySelectorAll('a[role="row"]')[3].querySelector('svg[data-testid="file"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/http/HttpServices.tsx b/webui/src/pages/http/HttpServices.tsx new file mode 100644 index 000000000..6febd6b1f --- /dev/null +++ b/webui/src/pages/http/HttpServices.tsx @@ -0,0 +1,124 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex, Text } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (): RenderRowType => { + const HttpServicesRenderRow = (row) => ( + + + + + + + + + + + + + + + + {row.loadBalancer?.servers?.length || 0} + + + + + + + + + + ) + return HttpServicesRenderRow +} + +export const HttpServicesRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const HttpServices = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/http/services', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/http/Middlewares.vue b/webui/src/pages/http/Middlewares.vue deleted file mode 100644 index 3780d5702..000000000 --- a/webui/src/pages/http/Middlewares.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/webui/src/pages/http/Routers.vue b/webui/src/pages/http/Routers.vue deleted file mode 100644 index e23dde540..000000000 --- a/webui/src/pages/http/Routers.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/webui/src/pages/http/Services.vue b/webui/src/pages/http/Services.vue deleted file mode 100644 index cf5a59fae..000000000 --- a/webui/src/pages/http/Services.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/webui/src/pages/http/index.ts b/webui/src/pages/http/index.ts new file mode 100644 index 000000000..1c40ff67b --- /dev/null +++ b/webui/src/pages/http/index.ts @@ -0,0 +1,6 @@ +export { HttpMiddleware } from './HttpMiddleware' +export { HttpMiddlewares } from './HttpMiddlewares' +export { HttpRouter } from './HttpRouter' +export { HttpRouters } from './HttpRouters' +export { HttpService } from './HttpService' +export { HttpServices } from './HttpServices' diff --git a/webui/src/pages/index.ts b/webui/src/pages/index.ts new file mode 100644 index 000000000..3a84749a9 --- /dev/null +++ b/webui/src/pages/index.ts @@ -0,0 +1,7 @@ +import * as HTTPPages from './http' +import * as TCPPages from './tcp' +import * as UDPPages from './udp' + +export { Dashboard } from './dashboard/Dashboard' +export { NotFound } from './NotFound' +export { HTTPPages, TCPPages, UDPPages } diff --git a/webui/src/pages/tcp/Middlewares.vue b/webui/src/pages/tcp/Middlewares.vue deleted file mode 100644 index 711b589b2..000000000 --- a/webui/src/pages/tcp/Middlewares.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/webui/src/pages/tcp/Routers.vue b/webui/src/pages/tcp/Routers.vue deleted file mode 100644 index 0d169cf29..000000000 --- a/webui/src/pages/tcp/Routers.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/webui/src/pages/tcp/Services.vue b/webui/src/pages/tcp/Services.vue deleted file mode 100644 index bbd88e180..000000000 --- a/webui/src/pages/tcp/Services.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/webui/src/pages/tcp/TcpMiddleware.spec.tsx b/webui/src/pages/tcp/TcpMiddleware.spec.tsx new file mode 100644 index 000000000..b783e0958 --- /dev/null +++ b/webui/src/pages/tcp/TcpMiddleware.spec.tsx @@ -0,0 +1,128 @@ +import { TcpMiddlewareRender } from './TcpMiddleware' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render a simple middleware', async () => { + const mockData = { + inFlightConn: { + amount: 10, + }, + status: 'enabled', + usedBy: ['router-test-simple@docker'], + name: 'middleware-simple', + provider: 'docker', + type: 'addprefix', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['middleware-simple'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test-simple@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-simple') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(middlewareCard.innerHTML).toContain('Success') + expect(middlewareCard.innerHTML).toContain('inFlightConn') + expect(middlewareCard.innerHTML).toContain('amount') + expect(middlewareCard.innerHTML).toContain('10') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test-simple@docker') + }) + + it('should render a complex middleware', async () => { + const mockData = { + name: 'middleware-complex', + type: 'sample-middleware', + status: 'enabled', + provider: 'the-provider', + usedBy: ['router-test-complex@docker'], + inFlightConn: { + amount: 10, + }, + ipWhiteList: { + sourceRange: ['125.0.0.1', '125.0.0.4'], + }, + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['middleware-complex'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test-complex@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'middleware-complex') + expect(titleTags.length).toBe(1) + + const middlewareCard = getByTestId('middleware-card') + expect(middlewareCard.innerHTML).toContain('Success') + expect(middlewareCard.innerHTML).toContain('the-provider') + expect(middlewareCard.innerHTML).toContain('inFlightConn') + expect(middlewareCard.innerHTML).toContain('amount') + expect(middlewareCard.innerHTML).toContain('10') + expect(middlewareCard.innerHTML).toContain('ipWhiteList') + expect(middlewareCard.innerHTML).toContain('source Range') + expect(middlewareCard.innerHTML).toContain('125.0.0.1') + expect(middlewareCard.innerHTML).toContain('125.0.0.4') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test-complex@docker') + }) +}) diff --git a/webui/src/pages/tcp/TcpMiddleware.tsx b/webui/src/pages/tcp/TcpMiddleware.tsx new file mode 100644 index 000000000..f3637a46d --- /dev/null +++ b/webui/src/pages/tcp/TcpMiddleware.tsx @@ -0,0 +1,73 @@ +import { Card, Box, H1, Skeleton, styled, Text } from '@traefiklabs/faency' +import { useParams } from 'react-router-dom' + +import { DetailSectionSkeleton } from 'components/resources/DetailSections' +import { RenderMiddleware } from 'components/resources/MiddlewarePanel' +import { UsedByRoutersSection, UsedByRoutersSkeleton } from 'components/resources/UsedByRoutersSection' +import { ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { NotFound } from 'pages/NotFound' +import breakpoints from 'utils/breakpoints' + +const MiddlewareGrid = styled(Box, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(400px, 1fr))', + + [`@media (max-width: ${breakpoints.tablet})`]: { + gridTemplateColumns: '1fr', + }, +}) + +type TcpMiddlewareRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const TcpMiddlewareRender = ({ data, error, name }: TcpMiddlewareRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Middleware right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + +

    {data.name}

    + + + + + + +
    + ) +} + +export const TcpMiddleware = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'middlewares', 'tcp') + return +} + +export default TcpMiddleware diff --git a/webui/src/pages/tcp/TcpMiddlewares.spec.tsx b/webui/src/pages/tcp/TcpMiddlewares.spec.tsx new file mode 100644 index 000000000..3da9cfc5b --- /dev/null +++ b/webui/src/pages/tcp/TcpMiddlewares.spec.tsx @@ -0,0 +1,67 @@ +import { makeRowRender, TcpMiddlewares as TcpMiddlewaresPage, TcpMiddlewaresRender } from './TcpMiddlewares' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the middlewares list', () => { + const pages = [ + { + inFlightConn: { amount: 10 }, + status: 'enabled', + usedBy: ['web@docker'], + name: 'inFlightConn-foo@docker', + provider: 'docker', + type: 'inFlightConn', + }, + { + ipWhiteList: { sourceRange: ['125.0.0.1', '125.0.0.4'] }, + error: ['message 1', 'message 2'], + status: 'disabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'ipWhiteList@docker', + provider: 'docker', + type: 'ipWhiteList', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('TCP Middlewares page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(2) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('inFlightConn-foo@docker') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('inFlightConn') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('ipWhiteList@docker') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('ipWhiteList') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/tcp/TcpMiddlewares.tsx b/webui/src/pages/tcp/TcpMiddlewares.tsx new file mode 100644 index 000000000..c736d4c47 --- /dev/null +++ b/webui/src/pages/tcp/TcpMiddlewares.tsx @@ -0,0 +1,125 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' +import { parseMiddlewareType } from 'libs/parsers' + +export const makeRowRender = (): RenderRowType => { + const TcpMiddlewaresRenderRow = (row) => { + const middlewareType = parseMiddlewareType(row) + + return ( + + + + + + + + + + + + + + + + + + + + + + + ) + } + return TcpMiddlewaresRenderRow +} + +export const TcpMiddlewaresRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const TcpMiddlewares = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/tcp/middlewares', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/tcp/TcpRouter.spec.tsx b/webui/src/pages/tcp/TcpRouter.spec.tsx new file mode 100644 index 000000000..bd5fe7059 --- /dev/null +++ b/webui/src/pages/tcp/TcpRouter.spec.tsx @@ -0,0 +1,102 @@ +import { TcpRouterRender } from './TcpRouter' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render the router details', async () => { + const mockData = { + entryPoints: ['web-tcp'], + service: 'tcp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'tcp-all@docker', + provider: 'docker', + middlewares: [ + { + status: 'enabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware00@docker', + provider: 'docker', + type: 'middleware00', + }, + { + status: 'enabled', + usedBy: ['foo@docker', 'bar@file'], + name: 'middleware01@docker', + provider: 'docker', + type: 'middleware01', + }, + ], + hasValidMiddlewares: true, + entryPointsData: [ + { + address: ':8000', + name: 'web', + }, + { + address: ':443', + name: 'web-secured', + }, + ], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const routerStructure = getByTestId('router-structure') + expect(routerStructure.innerHTML).toContain(':443') + expect(routerStructure.innerHTML).toContain(':8000') + expect(routerStructure.innerHTML).toContain('tcp-all@docker') + expect(routerStructure.innerHTML).toContain('tcp-all') + expect(routerStructure.innerHTML).toContain('TCP Router') + expect(routerStructure.innerHTML).not.toContain('HTTP Router') + + const routerDetailsSection = getByTestId('router-details') + const routerDetailsPanel = routerDetailsSection.querySelector(':scope > div:nth-child(1)') + + expect(routerDetailsPanel?.innerHTML).toContain('Status') + expect(routerDetailsPanel?.innerHTML).toContain('Success') + expect(routerDetailsPanel?.innerHTML).toContain('Provider') + expect(routerDetailsPanel?.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(routerDetailsPanel?.innerHTML).toContain('Name') + expect(routerDetailsPanel?.innerHTML).toContain('tcp-all@docker') + expect(routerDetailsPanel?.innerHTML).toContain('Entrypoints') + expect(routerDetailsPanel?.innerHTML).toContain('web div:nth-child(3)') + const providers = Array.from(middlewaresPanel?.querySelectorAll('svg[data-testid="docker"]') || []) + expect(middlewaresPanel?.innerHTML).toContain('middleware00') + expect(middlewaresPanel?.innerHTML).toContain('middleware01') + expect(middlewaresPanel?.innerHTML).toContain('Success') + expect(providers.length).toBe(2) + + expect(getByTestId('/tcp/services/tcp-all@docker')).toBeInTheDocument() + }) +}) diff --git a/webui/src/pages/tcp/TcpRouter.tsx b/webui/src/pages/tcp/TcpRouter.tsx new file mode 100644 index 000000000..1bdac707c --- /dev/null +++ b/webui/src/pages/tcp/TcpRouter.tsx @@ -0,0 +1,82 @@ +import { Flex, styled, Text } from '@traefiklabs/faency' +import { useParams } from 'react-router-dom' + +import { CardListSection, DetailSectionSkeleton } from 'components/resources/DetailSections' +import MiddlewarePanel from 'components/resources/MiddlewarePanel' +import RouterPanel from 'components/resources/RouterPanel' +import TlsPanel from 'components/resources/TlsPanel' +import { ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { RouterStructure } from 'pages/http/HttpRouter' +import { NotFound } from 'pages/NotFound' + +type DetailProps = { + data: ResourceDetailDataType +} + +const SpacedColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', + gridGap: '16px', +}) + +const RouterDetail = ({ data }: DetailProps) => ( + + + + + +) + +type TcpRouterRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const TcpRouterRender = ({ data, error, name }: TcpRouterRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Router right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + + + + + ) +} + +export const TcpRouter = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'routers', 'tcp') + return +} + +export default TcpRouter diff --git a/webui/src/pages/tcp/TcpRouters.spec.tsx b/webui/src/pages/tcp/TcpRouters.spec.tsx new file mode 100644 index 000000000..60acab68e --- /dev/null +++ b/webui/src/pages/tcp/TcpRouters.spec.tsx @@ -0,0 +1,85 @@ +import { makeRowRender, TcpRouters as TcpRoutersPage, TcpRoutersRender } from './TcpRouters' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the routers list', () => { + const pages = [ + { + entryPoints: ['web-tcp'], + service: 'tcp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'tcp-all@docker00', + provider: 'docker', + }, + { + entryPoints: ['web-tcp'], + service: 'tcp-all', + rule: 'HostSNI(`*`)', + status: 'disabled', + using: ['web-secured', 'web'], + name: 'tcp-all@docker01', + provider: 'docker', + }, + { + entryPoints: ['web-tcp'], + service: 'tcp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'tcp-all@docker02', + provider: 'docker', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('TCP Routers page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(3) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('HostSNI(`*`)') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toIncludeMultiple(['web-tcp']) + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('tcp-all@docker00') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('HostSNI(`*`)') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toIncludeMultiple(['web-tcp']) + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('tcp-all@docker01') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('HostSNI(`*`)') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toIncludeMultiple(['web-tcp']) + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('tcp-all@docker02') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/tcp/TcpRouters.tsx b/webui/src/pages/tcp/TcpRouters.tsx new file mode 100644 index 000000000..de8319e79 --- /dev/null +++ b/webui/src/pages/tcp/TcpRouters.tsx @@ -0,0 +1,142 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency' +import { useMemo } from 'react' +import { FiShield } from 'react-icons/fi' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { Chips } from 'components/resources/DetailSections' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (): RenderRowType => { + const TcpRoutersRenderRow = (row) => ( + + + + + + + + + + {row.tls && ( + + + + + + )} + + + + + {row.entryPoints && row.entryPoints.length > 0 && } + + + + + + + + + + + + + + + + + + ) + return TcpRoutersRenderRow +} + +export const TcpRoutersRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const TcpRouters = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/tcp/routers', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/tcp/TcpService.spec.tsx b/webui/src/pages/tcp/TcpService.spec.tsx new file mode 100644 index 000000000..4860bd9e8 --- /dev/null +++ b/webui/src/pages/tcp/TcpService.spec.tsx @@ -0,0 +1,163 @@ +import { TcpServiceRender } from './TcpService' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render the service', async () => { + const mockData = { + loadBalancer: { + servers: [ + { + address: 'http://10.0.1.12:80', + }, + ], + passHostHeader: true, + terminationDelay: 10, + }, + status: 'enabled', + usedBy: ['router-test1@docker'], + name: 'service-test1', + provider: 'docker', + type: 'loadbalancer', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test1@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'service-test1') + expect(titleTags.length).toBe(1) + + const serviceDetails = getByTestId('service-details') + expect(serviceDetails.innerHTML).toContain('Type') + expect(serviceDetails.innerHTML).toContain('loadbalancer') + expect(serviceDetails.innerHTML).toContain('Provider') + expect(serviceDetails.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(serviceDetails.innerHTML).toContain('Status') + expect(serviceDetails.innerHTML).toContain('Success') + expect(serviceDetails.innerHTML).toContain('Pass Host Header') + expect(serviceDetails.innerHTML).toContain('True') + expect(serviceDetails.innerHTML).toContain('Termination Delay') + expect(serviceDetails.innerHTML).toContain('10 ms') + + const serversList = getByTestId('servers-list') + expect(serversList.childNodes.length).toBe(1) + expect(serversList.innerHTML).toContain('http://10.0.1.12:80') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test1@docker') + }) + + it('should render the service servers from the serverStatus property', async () => { + const mockData = { + loadBalancer: { + terminationDelay: 10, + }, + status: 'enabled', + usedBy: ['router-test1@docker', 'router-test2@docker'], + serverStatus: { + 'http://10.0.1.12:81': 'UP', + }, + name: 'service-test2', + provider: 'docker', + type: 'loadbalancer', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test1@docker', + provider: 'docker', + }, + { + entryPoints: ['web-secured'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-secured'], + name: 'router-test2@docker', + provider: 'docker', + }, + ], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const serversList = getByTestId('servers-list') + expect(serversList.childNodes.length).toBe(1) + expect(serversList.innerHTML).toContain('http://10.0.1.12:81') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(2) + expect(tableBody?.innerHTML).toContain('router-test1@docker') + expect(tableBody?.innerHTML).toContain('router-test2@docker') + }) + + it('should not render used by routers table if the usedBy property is empty', async () => { + const mockData = { + status: 'enabled', + usedBy: [], + name: 'service-test3', + provider: 'docker', + type: 'loadbalancer', + routers: [], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + expect(() => { + getByTestId('routers-table') + }).toThrow('Unable to find an element by: [data-testid="routers-table"]') + }) +}) diff --git a/webui/src/pages/tcp/TcpService.tsx b/webui/src/pages/tcp/TcpService.tsx new file mode 100644 index 000000000..6c1d262b5 --- /dev/null +++ b/webui/src/pages/tcp/TcpService.tsx @@ -0,0 +1,66 @@ +import { Flex, H1, Skeleton, styled, Text } from '@traefiklabs/faency' +import { useParams } from 'react-router-dom' + +import { DetailSectionSkeleton } from 'components/resources/DetailSections' +import { UsedByRoutersSection, UsedByRoutersSkeleton } from 'components/resources/UsedByRoutersSection' +import { ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { ServicePanels } from 'pages/http/HttpService' +import { NotFound } from 'pages/NotFound' + +const SpacedColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', + gridGap: '16px', +}) + +type TcpServiceRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const TcpServiceRender = ({ data, error, name }: TcpServiceRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Service right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + +

    {data.name}

    + + +
    + ) +} + +export const TcpService = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'services', 'tcp') + return +} + +export default TcpService diff --git a/webui/src/pages/tcp/TcpServices.spec.tsx b/webui/src/pages/tcp/TcpServices.spec.tsx new file mode 100644 index 000000000..cd838bee4 --- /dev/null +++ b/webui/src/pages/tcp/TcpServices.spec.tsx @@ -0,0 +1,82 @@ +import { makeRowRender, TcpServices as TcpServicesPage, TcpServicesRender } from './TcpServices' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the services list', () => { + const pages = [ + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'enabled', + usedBy: ['tcp-all@docker'], + name: 'tcp-all@docker00', + provider: 'docker', + type: 'loadbalancer', + }, + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'disabled', + usedBy: ['tcp-all@docker'], + name: 'tcp-all@docker01', + provider: 'docker', + type: 'loadbalancer', + }, + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'enabled', + usedBy: ['tcp-all@docker'], + name: 'tcp-all@docker02', + provider: 'docker', + type: 'loadbalancer', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('TCP Services page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(3) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('tcp-all@docker00') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('tcp-all@docker01') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('tcp-all@docker02') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/tcp/TcpServices.tsx b/webui/src/pages/tcp/TcpServices.tsx new file mode 100644 index 000000000..a56027b61 --- /dev/null +++ b/webui/src/pages/tcp/TcpServices.tsx @@ -0,0 +1,124 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex, Text } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (): RenderRowType => { + const TcpServicesRenderRow = (row) => ( + + + + + + + + + + + + + + + + {row.loadBalancer?.servers?.length || 0} + + + + + + + + + + ) + return TcpServicesRenderRow +} + +export const TcpServicesRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const TcpServices = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/tcp/services', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/tcp/index.ts b/webui/src/pages/tcp/index.ts new file mode 100644 index 000000000..551a7fe63 --- /dev/null +++ b/webui/src/pages/tcp/index.ts @@ -0,0 +1,6 @@ +export { TcpMiddleware } from './TcpMiddleware' +export { TcpMiddlewares } from './TcpMiddlewares' +export { TcpRouter } from './TcpRouter' +export { TcpRouters } from './TcpRouters' +export { TcpService } from './TcpService' +export { TcpServices } from './TcpServices' diff --git a/webui/src/pages/udp/Routers.vue b/webui/src/pages/udp/Routers.vue deleted file mode 100644 index 7d075c4de..000000000 --- a/webui/src/pages/udp/Routers.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/webui/src/pages/udp/Services.vue b/webui/src/pages/udp/Services.vue deleted file mode 100644 index e1e2c1aa2..000000000 --- a/webui/src/pages/udp/Services.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/webui/src/pages/udp/UdpRouter.spec.tsx b/webui/src/pages/udp/UdpRouter.spec.tsx new file mode 100644 index 000000000..65aa5567d --- /dev/null +++ b/webui/src/pages/udp/UdpRouter.spec.tsx @@ -0,0 +1,80 @@ +import { UdpRouterRender } from './UdpRouter' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render the router details', async () => { + const mockData = { + entryPoints: ['web-udp'], + service: 'udp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'udp-all@docker', + provider: 'docker', + middlewares: undefined, + hasValidMiddlewares: undefined, + entryPointsData: [ + { + address: ':443', + name: 'web-secured', + }, + { + address: ':8000', + name: 'web', + }, + ], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const routerStructure = getByTestId('router-structure') + expect(routerStructure.innerHTML).toContain(':443') + expect(routerStructure.innerHTML).toContain(':8000') + expect(routerStructure.innerHTML).toContain('udp-all@docker') + expect(routerStructure.innerHTML).toContain('udp-all') + expect(routerStructure.innerHTML).toContain('UDP Router') + expect(routerStructure.innerHTML).not.toContain('HTTP Router') + + const routerDetailsSection = getByTestId('router-details') + const routerDetailsPanel = routerDetailsSection.querySelector(':scope > div:nth-child(1)') + + expect(routerDetailsPanel?.innerHTML).toContain('Status') + expect(routerDetailsPanel?.innerHTML).toContain('Success') + expect(routerDetailsPanel?.innerHTML).toContain('Provider') + expect(routerDetailsPanel?.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(routerDetailsPanel?.innerHTML).toContain('Name') + expect(routerDetailsPanel?.innerHTML).toContain('udp-all@docker') + expect(routerDetailsPanel?.innerHTML).toContain('Entrypoints') + expect(routerDetailsPanel?.innerHTML).toContain('web ( + + + +) + +type UdpRouterRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const UdpRouterRender = ({ data, error, name }: UdpRouterRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Router right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + + + + + ) +} + +export const UdpRouter = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'routers', 'udp') + + return +} + +export default UdpRouter diff --git a/webui/src/pages/udp/UdpRouters.spec.tsx b/webui/src/pages/udp/UdpRouters.spec.tsx new file mode 100644 index 000000000..8045cf8b7 --- /dev/null +++ b/webui/src/pages/udp/UdpRouters.spec.tsx @@ -0,0 +1,85 @@ +import { makeRowRender, UdpRouters as UdpRoutersPage, UdpRoutersRender } from './UdpRouters' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the routers list', () => { + const pages = [ + { + entryPoints: ['web-udp'], + service: 'udp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'udp-all@docker00', + provider: 'docker', + }, + { + entryPoints: ['web-udp'], + service: 'udp-all', + rule: 'HostSNI(`*`)', + status: 'disabled', + using: ['web-secured', 'web'], + name: 'udp-all@docker01', + provider: 'docker', + }, + { + entryPoints: ['web-udp'], + service: 'udp-all', + rule: 'HostSNI(`*`)', + status: 'enabled', + using: ['web-secured', 'web'], + name: 'udp-all@docker02', + provider: 'docker', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('UDP Routers page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(3) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toIncludeMultiple(['web-udp']) + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('udp-all@docker00') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('udp-all') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toIncludeMultiple(['web-udp']) + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('udp-all@docker01') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('udp-all') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toIncludeMultiple(['web-udp']) + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('udp-all@docker02') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('udp-all') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/udp/UdpRouters.tsx b/webui/src/pages/udp/UdpRouters.tsx new file mode 100644 index 000000000..56c6d8414 --- /dev/null +++ b/webui/src/pages/udp/UdpRouters.tsx @@ -0,0 +1,127 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { Chips } from 'components/resources/DetailSections' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (): RenderRowType => { + const UdpRoutersRenderRow = (row) => ( + + + + + + + + + {row.entryPoints && row.entryPoints.length > 0 && } + + + + + + + + + + + + + + + + + + ) + return UdpRoutersRenderRow +} + +export const UdpRoutersRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const UdpRouters = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/udp/routers', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/udp/UdpService.spec.tsx b/webui/src/pages/udp/UdpService.spec.tsx new file mode 100644 index 000000000..71114f560 --- /dev/null +++ b/webui/src/pages/udp/UdpService.spec.tsx @@ -0,0 +1,163 @@ +import { UdpServiceRender } from './UdpService' + +import { ResourceDetailDataType } from 'hooks/use-resource-detail' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the error message', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('error-text')).toBeInTheDocument() + }) + + it('should render the skeleton', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('skeleton')).toBeInTheDocument() + }) + + it('should render the not found page', () => { + const { getByTestId } = renderWithProviders( + , + ) + expect(getByTestId('Not found page')).toBeInTheDocument() + }) + + it('should render the service', async () => { + const mockData = { + loadBalancer: { + servers: [ + { + address: 'http://10.0.1.12:80', + }, + ], + passHostHeader: true, + terminationDelay: 10, + }, + status: 'enabled', + usedBy: ['router-test1@docker'], + name: 'service-test1', + provider: 'docker', + type: 'loadbalancer', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test1@docker', + provider: 'docker', + }, + ], + } + + const { container, getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const headings = Array.from(container.getElementsByTagName('h1')) + const titleTags = headings.filter((h1) => h1.innerHTML === 'service-test1') + expect(titleTags.length).toBe(1) + + const serviceDetails = getByTestId('service-details') + expect(serviceDetails.innerHTML).toContain('Type') + expect(serviceDetails.innerHTML).toContain('loadbalancer') + expect(serviceDetails.innerHTML).toContain('Provider') + expect(serviceDetails.querySelector('svg[data-testid="docker"]')).toBeTruthy() + expect(serviceDetails.innerHTML).toContain('Status') + expect(serviceDetails.innerHTML).toContain('Success') + expect(serviceDetails.innerHTML).toContain('Pass Host Header') + expect(serviceDetails.innerHTML).toContain('True') + expect(serviceDetails.innerHTML).toContain('Termination Delay') + expect(serviceDetails.innerHTML).toContain('10 ms') + + const serversList = getByTestId('servers-list') + expect(serversList.childNodes.length).toBe(1) + expect(serversList.innerHTML).toContain('http://10.0.1.12:80') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(1) + expect(tableBody?.innerHTML).toContain('router-test1@docker') + }) + + it('should render the service servers from the serverStatus property', async () => { + const mockData = { + loadBalancer: { + terminationDelay: 10, + }, + status: 'enabled', + usedBy: ['router-test1@docker', 'router-test2@docker'], + serverStatus: { + 'http://10.0.1.12:81': 'UP', + }, + name: 'service-test2', + provider: 'docker', + type: 'loadbalancer', + routers: [ + { + entryPoints: ['web-redirect'], + middlewares: ['redirect@file'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-redirect'], + name: 'router-test1@docker', + provider: 'docker', + }, + { + entryPoints: ['web-secured'], + service: 'api2_v2-example-beta1', + rule: 'Host(`server`)', + tls: {}, + status: 'enabled', + using: ['web-secured'], + name: 'router-test2@docker', + provider: 'docker', + }, + ], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + const serversList = getByTestId('servers-list') + expect(serversList.childNodes.length).toBe(1) + expect(serversList.innerHTML).toContain('http://10.0.1.12:81') + + const routersTable = getByTestId('routers-table') + const tableBody = routersTable.querySelectorAll('div[role="rowgroup"]')[1] + expect(tableBody?.querySelectorAll('a[role="row"]')).toHaveLength(2) + expect(tableBody?.innerHTML).toContain('router-test1@docker') + expect(tableBody?.innerHTML).toContain('router-test2@docker') + }) + + it('should not render used by routers table if the usedBy property is empty', async () => { + const mockData = { + status: 'enabled', + usedBy: [], + name: 'service-test3', + provider: 'docker', + type: 'loadbalancer', + routers: [], + } + + const { getByTestId } = renderWithProviders( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + , + ) + + expect(() => { + getByTestId('routers-table') + }).toThrow('Unable to find an element by: [data-testid="routers-table"]') + }) +}) diff --git a/webui/src/pages/udp/UdpService.tsx b/webui/src/pages/udp/UdpService.tsx new file mode 100644 index 000000000..9727a1663 --- /dev/null +++ b/webui/src/pages/udp/UdpService.tsx @@ -0,0 +1,66 @@ +import { Flex, H1, Skeleton, styled, Text } from '@traefiklabs/faency' +import { useParams } from 'react-router-dom' + +import { DetailSectionSkeleton } from 'components/resources/DetailSections' +import { UsedByRoutersSection, UsedByRoutersSkeleton } from 'components/resources/UsedByRoutersSection' +import { ResourceDetailDataType, useResourceDetail } from 'hooks/use-resource-detail' +import Page from 'layout/Page' +import { ServicePanels } from 'pages/http/HttpService' +import { NotFound } from 'pages/NotFound' + +const SpacedColumns = styled(Flex, { + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', + gridGap: '16px', +}) + +type UdpServiceRenderProps = { + data?: ResourceDetailDataType + error?: Error + name: string +} + +export const UdpServiceRender = ({ data, error, name }: UdpServiceRenderProps) => { + if (error) { + return ( + + + Sorry, we could not fetch detail information for this Service right now. Please, try again later. + + + ) + } + + if (!data) { + return ( + + + + + + + + + ) + } + + if (!data.name) { + return + } + + return ( + +

    {data.name}

    + + +
    + ) +} + +export const UdpService = () => { + const { name } = useParams<{ name: string }>() + const { data, error } = useResourceDetail(name!, 'services', 'udp') + return +} + +export default UdpService diff --git a/webui/src/pages/udp/UdpServices.spec.tsx b/webui/src/pages/udp/UdpServices.spec.tsx new file mode 100644 index 000000000..8bb51ef0d --- /dev/null +++ b/webui/src/pages/udp/UdpServices.spec.tsx @@ -0,0 +1,82 @@ +import { makeRowRender, UdpServices as UdpServicesPage, UdpServicesRender } from './UdpServices' + +import * as useFetchWithPagination from 'hooks/use-fetch-with-pagination' +import { useFetchWithPaginationMock } from 'utils/mocks' +import { renderWithProviders } from 'utils/test' + +describe('', () => { + it('should render the services list', () => { + const pages = [ + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'enabled', + usedBy: ['udp-all@docker'], + name: 'udp-all@docker00', + provider: 'docker', + type: 'loadbalancer', + }, + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'disabled', + usedBy: ['udp-all@docker'], + name: 'udp-all@docker01', + provider: 'docker', + type: 'loadbalancer', + }, + { + loadBalancer: { terminationDelay: 10, servers: [{ address: '10.0.1.14:8080' }] }, + status: 'enabled', + usedBy: ['udp-all@docker'], + name: 'udp-all@docker02', + provider: 'docker', + type: 'loadbalancer', + }, + ].map(makeRowRender()) + const mock = vi + .spyOn(useFetchWithPagination, 'default') + .mockImplementation(() => useFetchWithPaginationMock({ pages })) + + const { container, getByTestId } = renderWithProviders() + + expect(mock).toHaveBeenCalled() + expect(getByTestId('UDP Services page')).toBeInTheDocument() + const tbody = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[1] + expect(tbody.querySelectorAll('a[role="row"]')).toHaveLength(3) + + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('udp-all@docker00') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[0].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[0].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('testid="disabled"') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('udp-all@docker01') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[1].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[1].querySelector('svg[data-testid="docker"]')).toBeTruthy() + + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('testid="enabled"') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('udp-all@docker02') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('loadbalancer') + expect(tbody.querySelectorAll('a[role="row"]')[2].innerHTML).toContain('1') + expect(tbody.querySelectorAll('a[role="row"]')[2].querySelector('svg[data-testid="docker"]')).toBeTruthy() + }) + + it('should render "No data available" when the API returns empty array', async () => { + const { container, getByTestId } = renderWithProviders( + {}} + pageCount={1} + pages={[]} + />, + ) + expect(() => getByTestId('loading')).toThrow('Unable to find an element by: [data-testid="loading"]') + const tfoot = container.querySelectorAll('div[role="table"] > div[role="rowgroup"]')[2] + expect(tfoot.querySelectorAll('div[role="row"]')).toHaveLength(1) + expect(tfoot.querySelectorAll('div[role="row"]')[0].innerHTML).toContain('No data available') + }) +}) diff --git a/webui/src/pages/udp/UdpServices.tsx b/webui/src/pages/udp/UdpServices.tsx new file mode 100644 index 000000000..b02c2fdcf --- /dev/null +++ b/webui/src/pages/udp/UdpServices.tsx @@ -0,0 +1,124 @@ +import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex, Text } from '@traefiklabs/faency' +import { useMemo } from 'react' +import useInfiniteScroll from 'react-infinite-scroll-hook' +import { useSearchParams } from 'react-router-dom' + +import ClickableRow from 'components/ClickableRow' +import ProviderIcon from 'components/icons/providers' +import { ResourceStatus } from 'components/resources/ResourceStatus' +import { ScrollTopButton } from 'components/ScrollTopButton' +import { SpinnerLoader } from 'components/SpinnerLoader' +import { searchParamsToState, TableFilter } from 'components/TableFilter' +import SortableTh from 'components/tables/SortableTh' +import Tooltip from 'components/Tooltip' +import TooltipText from 'components/TooltipText' +import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination' +import { EmptyPlaceholder } from 'layout/EmptyPlaceholder' +import Page from 'layout/Page' + +export const makeRowRender = (): RenderRowType => { + const UdpServicesRenderRow = (row) => ( + + + + + + + + + + + + + + + + {row.loadBalancer?.servers?.length || 0} + + + + + + + + + + ) + return UdpServicesRenderRow +} + +export const UdpServicesRender = ({ + error, + isEmpty, + isLoadingMore, + isReachingEnd, + loadMore, + pageCount, + pages, +}: pagesResponseInterface) => { + const [infiniteRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: !isReachingEnd && !error, + onLoadMore: loadMore, + }) + + return ( + <> + + + + + + + + + + + {pages} + {(isEmpty || !!error) && ( + + + + + + + + )} + + + {isLoadingMore ? : isReachingEnd && pageCount > 1 && } + + + ) +} + +export const UdpServices = () => { + const renderRow = makeRowRender() + const [searchParams] = useSearchParams() + + const query = useMemo(() => searchParamsToState(searchParams), [searchParams]) + const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination( + '/udp/services', + { + listContextKey: JSON.stringify(query), + renderRow, + renderLoader: () => null, + query, + }, + ) + + return ( + + + + + ) +} diff --git a/webui/src/pages/udp/index.ts b/webui/src/pages/udp/index.ts new file mode 100644 index 000000000..6fd038442 --- /dev/null +++ b/webui/src/pages/udp/index.ts @@ -0,0 +1,4 @@ +export { UdpRouter } from './UdpRouter' +export { UdpRouters } from './UdpRouters' +export { UdpService } from './UdpService' +export { UdpServices } from './UdpServices' diff --git a/webui/src/router/index.js b/webui/src/router/index.js deleted file mode 100644 index 5fc20777a..000000000 --- a/webui/src/router/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import { route } from 'quasar/wrappers' -import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router' -import routes from './routes' - -export default route(function (/* { store, ssrContext } */) { - const createHistory = process.env.SERVER - ? createMemoryHistory - : (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory) - - const Router = createRouter({ - scrollBehavior: () => ({ left: 0, top: 0 }), - routes, - - history: createHistory(process.env.MODE === 'ssr' ? undefined : process.env.VUE_ROUTER_BASE) - }) - - return Router -}) diff --git a/webui/src/router/routes.js b/webui/src/router/routes.js deleted file mode 100644 index 38334cbcc..000000000 --- a/webui/src/router/routes.js +++ /dev/null @@ -1,262 +0,0 @@ -import Error404 from 'pages/_commons/Error404.vue' - -const LayoutDefault = () => import('layouts/Default.vue') - -const routes = [ - { - path: '/', - component: LayoutDefault, - children: [ - { - path: '', - name: 'dashboard', - component: () => import('pages/dashboard/Index.vue'), - meta: { - title: 'Dashboard' - } - } - ] - }, - { - path: '/http', - redirect: '/http/routers', - component: LayoutDefault, - children: [ - { - path: 'routers', - name: 'httpRouters', - components: { - default: () => import('pages/http/Routers.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Routers' - } - }, - { - path: 'routers/:name', - name: 'httpRouterDetail', - components: { - default: () => import('pages/_commons/RouterDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Router Detail' - } - }, - { - path: 'services', - name: 'httpServices', - components: { - default: () => import('pages/http/Services.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Services' - } - }, - { - path: 'services/:name', - name: 'httpServiceDetail', - components: { - default: () => import('pages/_commons/ServiceDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Service Detail' - } - }, - { - path: 'middlewares', - name: 'httpMiddlewares', - components: { - default: () => import('pages/http/Middlewares.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Middlewares' - } - }, - { - path: 'middlewares/:name', - name: 'httpMiddlewareDetail', - components: { - default: () => import('pages/_commons/MiddlewareDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'http', - title: 'HTTP Middleware Detail' - } - } - ] - }, - { - path: '/tcp', - redirect: '/tcp/routers', - component: LayoutDefault, - children: [ - { - path: 'routers', - name: 'tcpRouters', - components: { - default: () => import('pages/tcp/Routers.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Routers' - } - }, - { - path: 'routers/:name', - name: 'tcpRouterDetail', - components: { - default: () => import('pages/_commons/RouterDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Router Detail' - } - }, - { - path: 'services', - name: 'tcpServices', - components: { - default: () => import('pages/tcp/Services.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Services' - } - }, - { - path: 'services/:name', - name: 'tcpServiceDetail', - components: { - default: () => import('pages/_commons/ServiceDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Service Detail' - } - }, - { - path: 'middlewares', - name: 'tcpMiddlewares', - components: { - default: () => import('pages/tcp/Middlewares.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Middlewares' - } - }, - { - path: 'middlewares/:name', - name: 'tcpMiddlewareDetail', - components: { - default: () => import('pages/_commons/MiddlewareDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'tcp', - title: 'TCP Middleware Detail' - } - } - ] - }, - { - path: '/udp', - redirect: '/udp/routers', - component: LayoutDefault, - children: [ - { - path: 'routers', - name: 'udpRouters', - components: { - default: () => import('pages/udp/Routers.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'udp', - title: 'TCP Routers' - } - }, - { - path: 'routers/:name', - name: 'udpRouterDetail', - components: { - default: () => import('pages/_commons/RouterDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'udp', - title: 'TCP Router Detail' - } - }, - { - path: 'services', - name: 'udpServices', - components: { - default: () => import('pages/udp/Services.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'udp', - title: 'TCP Services' - } - }, - { - path: 'services/:name', - name: 'udpServiceDetail', - components: { - default: () => import('pages/_commons/ServiceDetail.vue'), - NavBar: () => import('components/_commons/ToolBar.vue') - }, - props: { default: true, NavBar: true }, - meta: { - protocol: 'udp', - title: 'TCP Service Detail' - } - } - ] - } -] - -// Always leave this as last one -if (process.env.MODE !== 'ssr') { - routes.push({ - path: '/:catchAll(.*)*', - component: Error404, - meta: { - title: '404' - } - }) -} - -export default routes diff --git a/webui/src/routes.tsx b/webui/src/routes.tsx new file mode 100644 index 000000000..249584848 --- /dev/null +++ b/webui/src/routes.tsx @@ -0,0 +1,94 @@ +import { ReactNode } from 'react' +import { LiaProjectDiagramSolid, LiaServerSolid, LiaCogsSolid, LiaHomeSolid } from 'react-icons/lia' + +export type Route = { + path: string + label: string + icon?: string | ReactNode + activeMatches?: string[] +} + +type RouteSections = { + section: string + items: Route[] + sectionLabel?: string +} + +export const ROUTES: RouteSections[] = [ + { + section: 'dashboard', + items: [ + { + path: '/', + label: 'Dashboard', + icon: , + }, + ], + }, + { + section: 'http', + sectionLabel: 'HTTP', + items: [ + { + path: '/http/routers', + activeMatches: ['/http/routers/:name'], + label: 'HTTP Routers', + icon: , + }, + { + path: '/http/services', + activeMatches: ['/http/services/:name'], + label: 'HTTP Services', + icon: , + }, + { + path: '/http/middlewares', + activeMatches: ['/http/middlewares/:name'], + label: 'HTTP Middlewares', + icon: , + }, + ], + }, + { + section: 'tcp', + sectionLabel: 'TCP', + items: [ + { + path: '/tcp/routers', + activeMatches: ['/tcp/routers/:name'], + label: 'TCP Routers', + icon: , + }, + { + path: '/tcp/services', + activeMatches: ['/tcp/services/:name'], + label: 'TCP Services', + icon: , + }, + { + path: '/tcp/middlewares', + activeMatches: ['/tcp/middlewares/:name'], + label: 'TCP Middlewares', + icon: , + }, + ], + }, + { + section: 'udp', + sectionLabel: 'UDP', + items: [ + { + path: '/udp/routers', + activeMatches: ['/udp/routers/:name'], + label: 'UDP Routers', + icon: , + }, + { + path: '/udp/services', + activeMatches: ['/udp/services/:name'], + label: 'UDP Services', + icon: , + }, + ], + }, +] diff --git a/webui/src/store/core/actions.js b/webui/src/store/core/actions.js deleted file mode 100644 index 11be19f28..000000000 --- a/webui/src/store/core/actions.js +++ /dev/null @@ -1,25 +0,0 @@ -import coreService from '../../_services/CoreService' - -export function getOverview ({ commit }) { - commit('getOverviewRequest') - return coreService.getOverview() - .then(body => { - commit('getOverviewSuccess', body) - return body - }) - .catch(error => { - commit('getOverviewFailure', error) - return Promise.reject(error) - }) -} - -export function getVersion ({ commit }) { - return coreService.getVersion() - .then(body => { - commit('getVersionSuccess', body) - return body - }) - .catch(error => { - return Promise.reject(error) - }) -} diff --git a/webui/src/store/core/getters.js b/webui/src/store/core/getters.js deleted file mode 100644 index 43ecdfdad..000000000 --- a/webui/src/store/core/getters.js +++ /dev/null @@ -1,13 +0,0 @@ -// ---------------------------- -// all Overview -// ---------------------------- -export function allOverview (state) { - return state.allOverview -} - -// ---------------------------- -// Version -// ---------------------------- -export function version (state) { - return state.version -} diff --git a/webui/src/store/core/index.js b/webui/src/store/core/index.js deleted file mode 100644 index babab8ec5..000000000 --- a/webui/src/store/core/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import state from './state' -import * as getters from './getters' -import * as mutations from './mutations' -import * as actions from './actions' - -export default { - namespaced: true, - getters, - mutations, - actions, - state -} diff --git a/webui/src/store/core/mutations.js b/webui/src/store/core/mutations.js deleted file mode 100644 index 31364647e..000000000 --- a/webui/src/store/core/mutations.js +++ /dev/null @@ -1,26 +0,0 @@ -// ---------------------------- -// Get Overview -// ---------------------------- -export function getOverviewRequest (state) { - state.allOverview.loading = true -} - -export function getOverviewSuccess (state, body) { - state.allOverview = { items: body, loading: false } -} - -export function getOverviewFailure (state, error) { - state.allOverview = { error } -} - -export function getOverviewClear (state) { - state.allOverview = {} -} - -// ---------------------------- -// Get Version -// ---------------------------- -export function getVersionSuccess (state, body) { - state.version = body - state.version.disableDashboardAd = !!body.disableDashboardAd // Ensures state.version.disableDashboardAd is defined -} diff --git a/webui/src/store/core/state.js b/webui/src/store/core/state.js deleted file mode 100644 index fb269caed..000000000 --- a/webui/src/store/core/state.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - allOverview: {}, - version: '' -} diff --git a/webui/src/store/entrypoints/actions.js b/webui/src/store/entrypoints/actions.js deleted file mode 100644 index 5b67b8ae1..000000000 --- a/webui/src/store/entrypoints/actions.js +++ /dev/null @@ -1,27 +0,0 @@ -import EntrypointsService from '../../_services/EntrypointsService' - -export function getAll ({ commit }) { - commit('getAllRequest') - return EntrypointsService.getAll() - .then(body => { - commit('getAllSuccess', body) - return body - }) - .catch(error => { - commit('getAllFailure', error) - return Promise.reject(error) - }) -} - -export function getByName ({ commit }, name) { - commit('getByNameRequest') - return EntrypointsService.getByName(name) - .then(body => { - commit('getByNameSuccess', body) - return body - }) - .catch(error => { - commit('getByNameFailure', error) - return Promise.reject(error) - }) -} diff --git a/webui/src/store/entrypoints/getters.js b/webui/src/store/entrypoints/getters.js deleted file mode 100644 index 52431bc75..000000000 --- a/webui/src/store/entrypoints/getters.js +++ /dev/null @@ -1,13 +0,0 @@ -// ---------------------------- -// all -// ---------------------------- -export function all (state) { - return state.all -} - -// ---------------------------- -// byName -// ---------------------------- -export function byName (state) { - return state.byName -} diff --git a/webui/src/store/entrypoints/index.js b/webui/src/store/entrypoints/index.js deleted file mode 100644 index babab8ec5..000000000 --- a/webui/src/store/entrypoints/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import state from './state' -import * as getters from './getters' -import * as mutations from './mutations' -import * as actions from './actions' - -export default { - namespaced: true, - getters, - mutations, - actions, - state -} diff --git a/webui/src/store/entrypoints/mutations.js b/webui/src/store/entrypoints/mutations.js deleted file mode 100644 index 5a80fb35e..000000000 --- a/webui/src/store/entrypoints/mutations.js +++ /dev/null @@ -1,37 +0,0 @@ -// ---------------------------- -// Get All -// ---------------------------- -export function getAllRequest (state) { - state.all.loading = true -} - -export function getAllSuccess (state, body) { - state.all = { items: body, loading: false } -} - -export function getAllFailure (state, error) { - state.all = { error } -} - -export function getAllClear (state) { - state.all = {} -} - -// ---------------------------- -// Get By Name -// ---------------------------- -export function getByNameRequest (state) { - state.byName.loading = true -} - -export function getByNameSuccess (state, body) { - state.byName = { item: body, loading: false } -} - -export function getByNameFailure (state, error) { - state.byName = { error } -} - -export function getByNameClear (state) { - state.byName = {} -} diff --git a/webui/src/store/entrypoints/state.js b/webui/src/store/entrypoints/state.js deleted file mode 100644 index 2c7d2af28..000000000 --- a/webui/src/store/entrypoints/state.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - all: {}, - byName: {} -} diff --git a/webui/src/store/http/actions.js b/webui/src/store/http/actions.js deleted file mode 100644 index 00c6b3224..000000000 --- a/webui/src/store/http/actions.js +++ /dev/null @@ -1,79 +0,0 @@ -import HttpService from '../../_services/HttpService' - -export function getAllRouters ({ commit }, params) { - commit('getAllRoutersRequest') - return HttpService.getAllRouters(params) - .then(body => { - commit('getAllRoutersSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllRoutersFailure', error) - return Promise.reject(error) - }) -} - -export function getRouterByName ({ commit }, name) { - commit('getRouterByNameRequest') - return HttpService.getRouterByName(name) - .then(body => { - commit('getRouterByNameSuccess', body) - return body - }) - .catch(error => { - commit('getRouterByNameFailure', error) - return Promise.reject(error) - }) -} - -export function getAllServices ({ commit }, params) { - commit('getAllServicesRequest') - return HttpService.getAllServices(params) - .then(body => { - commit('getAllServicesSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllServicesFailure', error) - return Promise.reject(error) - }) -} - -export function getServiceByName ({ commit }, name) { - commit('getServiceByNameRequest') - return HttpService.getServiceByName(name) - .then(body => { - commit('getServiceByNameSuccess', body) - return body - }) - .catch(error => { - commit('getServiceByNameFailure', error) - return Promise.reject(error) - }) -} - -export function getAllMiddlewares ({ commit }, params) { - commit('getAllMiddlewaresRequest') - return HttpService.getAllMiddlewares(params) - .then(body => { - commit('getAllMiddlewaresSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllMiddlewaresFailure', error) - return Promise.reject(error) - }) -} - -export function getMiddlewareByName ({ commit }, name) { - commit('getMiddlewareByNameRequest') - return HttpService.getMiddlewareByName(name) - .then(body => { - commit('getMiddlewareByNameSuccess', body) - return body - }) - .catch(error => { - commit('getMiddlewareByNameFailure', error) - return Promise.reject(error) - }) -} diff --git a/webui/src/store/http/getters.js b/webui/src/store/http/getters.js deleted file mode 100644 index 2f822b452..000000000 --- a/webui/src/store/http/getters.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------- -// all Routers -// ---------------------------- -export function allRouters (state) { - return state.allRouters -} - -// ---------------------------- -// Router by Name -// ---------------------------- -export function routerByName (state) { - return state.routerByName -} - -// ---------------------------- -// all Services -// ---------------------------- -export function allServices (state) { - return state.allServices -} - -// ---------------------------- -// Service by Name -// ---------------------------- -export function serviceByName (state) { - return state.serviceByName -} - -// ---------------------------- -// all Middlewares -// ---------------------------- -export function allMiddlewares (state) { - return state.allMiddlewares -} - -// ---------------------------- -// Middleware by Name -// ---------------------------- -export function middlewareByName (state) { - return state.middlewareByName -} diff --git a/webui/src/store/http/index.js b/webui/src/store/http/index.js deleted file mode 100644 index babab8ec5..000000000 --- a/webui/src/store/http/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import state from './state' -import * as getters from './getters' -import * as mutations from './mutations' -import * as actions from './actions' - -export default { - namespaced: true, - getters, - mutations, - actions, - state -} diff --git a/webui/src/store/http/mutations.js b/webui/src/store/http/mutations.js deleted file mode 100644 index 484a90d4a..000000000 --- a/webui/src/store/http/mutations.js +++ /dev/null @@ -1,158 +0,0 @@ -import { withPagination } from '../../_helpers/Mutations' - -// ---------------------------- -// Get All Routers -// ---------------------------- -export function getAllRoutersRequest (state) { - withPagination('request', { statePath: 'allRouters' })(state) -} - -export function getAllRoutersSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allRouters - const { currentQuery = '', currentStatus = '' } = currentState - - const isSameContext = currentQuery === query && currentStatus === status - - state.allRouters = { - ...state.allRouters, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allRouters' - })(state, data) -} - -export function getAllRoutersFailure (state, error) { - withPagination('failure', { statePath: 'allRouters' })(state, error) -} - -export function getAllRoutersClear (state) { - state.allRouters = {} -} - -// ---------------------------- -// Get Router By Name -// ---------------------------- -export function getRouterByNameRequest (state) { - state.routerByName.loading = true -} - -export function getRouterByNameSuccess (state, body) { - state.routerByName = { item: body, loading: false } -} - -export function getRouterByNameFailure (state, error) { - state.routerByName = { error } -} - -export function getRouterByNameClear (state) { - state.routerByName = {} -} - -// ---------------------------- -// Get All Services -// ---------------------------- -export function getAllServicesRequest (state) { - withPagination('request', { statePath: 'allServices' })(state) -} - -export function getAllServicesSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allServices - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allServices = { - ...state.allServices, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allServices' - })(state, data) -} - -export function getAllServicesFailure (state, error) { - withPagination('failure', { statePath: 'allServices' })(state, error) -} - -export function getAllServicesClear (state) { - state.allServices = {} -} - -// ---------------------------- -// Get Service By Name -// ---------------------------- -export function getServiceByNameRequest (state) { - state.serviceByName.loading = true -} - -export function getServiceByNameSuccess (state, body) { - state.serviceByName = { item: body, loading: false } -} - -export function getServiceByNameFailure (state, error) { - state.serviceByName = { error } -} - -export function getServiceByNameClear (state) { - state.serviceByName = {} -} - -// ---------------------------- -// Get All Middlewares -// ---------------------------- -export function getAllMiddlewaresRequest (state) { - withPagination('request', { statePath: 'allMiddlewares' })(state) -} - -export function getAllMiddlewaresSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allMiddlewares - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allMiddlewares = { - ...state.allMiddlewares, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allMiddlewares' - })(state, data) -} - -export function getAllMiddlewaresFailure (state, error) { - withPagination('failure', { statePath: 'allMiddlewares' })(state, error) -} - -export function getAllMiddlewaresClear (state) { - state.allMiddlewares = {} -} - -// ---------------------------- -// Get Middleware By Name -// ---------------------------- -export function getMiddlewareByNameRequest (state) { - state.middlewareByName.loading = true -} - -export function getMiddlewareByNameSuccess (state, body) { - state.middlewareByName = { item: body, loading: false } -} - -export function getMiddlewareByNameFailure (state, error) { - state.middlewareByName = { error } -} - -export function getMiddlewareByNameClear (state) { - state.middlewareByName = {} -} diff --git a/webui/src/store/http/mutations.vitest.spec.js b/webui/src/store/http/mutations.vitest.spec.js deleted file mode 100644 index 125216186..000000000 --- a/webui/src/store/http/mutations.vitest.spec.js +++ /dev/null @@ -1,292 +0,0 @@ -import { describe, expect, it } from 'vitest' -import store from './index.js' - -const { - getAllRoutersRequest, - getAllRoutersSuccess, - getAllRoutersFailure, - getAllServicesRequest, - getAllServicesSuccess, - getAllServicesFailure, - getAllMiddlewaresRequest, - getAllMiddlewaresSuccess, - getAllMiddlewaresFailure -} = store.mutations - -describe('http mutations', function () { - /* Routers */ - describe('http routers mutations', function () { - it('getAllRoutersRequest', function () { - const state = { - allRouters: { - items: [{}, {}, {}] - } - } - - getAllRoutersRequest(state) - - expect(state.allRouters.loading).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - - it('getAllRoutersSuccess page 1', function () { - const state = { - allRouters: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(3) - expect(state.allRouters.items.length).to.equal(3) - expect(state.allRouters.currentPage).to.equal(1) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersSuccess page 2', function () { - const state = { - allRouters: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(7) - expect(state.allRouters.items.length).to.equal(7) - expect(state.allRouters.currentPage).to.equal(2) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersFailing', function () { - const state = { - allRouters: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllRoutersFailure(state, error) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.endReached).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - }) - - /* Services */ - describe('http services mutations', function () { - it('getAllServicesRequest', function () { - const state = { - allServices: { - items: [{}, {}, {}] - } - } - - getAllServicesRequest(state) - - expect(state.allServices.loading).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - - it('getAllServicesSuccess page 1', function () { - const state = { - allServices: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(3) - expect(state.allServices.items.length).to.equal(3) - expect(state.allServices.currentPage).to.equal(1) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesSuccess page 2', function () { - const state = { - allServices: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(7) - expect(state.allServices.items.length).to.equal(7) - expect(state.allServices.currentPage).to.equal(2) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesFailing', function () { - const state = { - allServices: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllServicesFailure(state, error) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.endReached).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - }) - - /* Middlewares */ - describe('http middlewares mutations', function () { - it('getAllMiddlewaresRequest', function () { - const state = { - allMiddlewares: { - items: [{}, {}, {}] - } - } - - getAllMiddlewaresRequest(state) - - expect(state.allMiddlewares.loading).to.equal(true) - expect(state.allMiddlewares.items.length).to.equal(3) - }) - - it('getAllMiddlewaresSuccess page 1', function () { - const state = { - allMiddlewares: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllMiddlewaresSuccess(state, data) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.total).to.equal(3) - expect(state.allMiddlewares.items.length).to.equal(3) - expect(state.allMiddlewares.currentPage).to.equal(1) - expect(state.allMiddlewares.currentQuery).to.equal('test query') - expect(state.allMiddlewares.currentStatus).to.equal('warning') - }) - - it('getAllMiddlewaresSuccess page 2', function () { - const state = { - allMiddlewares: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllMiddlewaresSuccess(state, data) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.total).to.equal(7) - expect(state.allMiddlewares.items.length).to.equal(7) - expect(state.allMiddlewares.currentPage).to.equal(2) - expect(state.allMiddlewares.currentQuery).to.equal('test query') - expect(state.allMiddlewares.currentStatus).to.equal('warning') - }) - - it('getAllMiddlewaresFailing', function () { - const state = { - allMiddlewares: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllMiddlewaresFailure(state, error) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.endReached).to.equal(true) - expect(state.allMiddlewares.items.length).to.equal(3) - }) - }) -}) diff --git a/webui/src/store/http/state.js b/webui/src/store/http/state.js deleted file mode 100644 index 0557a4fdd..000000000 --- a/webui/src/store/http/state.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - allRouters: {}, - routerByName: {}, - allServices: {}, - serviceByName: {}, - allMiddlewares: {}, - middlewareByName: {} -} diff --git a/webui/src/store/index.js b/webui/src/store/index.js deleted file mode 100644 index fd7624be1..000000000 --- a/webui/src/store/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import { createStore } from 'vuex' -import { store } from 'quasar/wrappers' - -import core from './core' -import entrypoints from './entrypoints' -import http from './http' -import tcp from './tcp' -import udp from './udp' -import platform from './platform' - -/* - * If not building with SSR mode, you can - * directly export the Store instantiation - */ - -export default store((/* { ssrContext } */) => { - const Store = createStore({ - modules: { - core, - entrypoints, - http, - tcp, - udp, - platform - }, - - // enable strict mode (adds overhead!) - // for dev mode only - strict: process.env.DEV - }) - - return Store -}) diff --git a/webui/src/store/platform/index.js b/webui/src/store/platform/index.js deleted file mode 100644 index 8fec9a464..000000000 --- a/webui/src/store/platform/index.js +++ /dev/null @@ -1,49 +0,0 @@ -export default { - namespaced: true, - getters: { - path (state) { - return state.path - }, - isOpen (state) { - return state.isOpen - }, - notificationIsHidden (state) { - return state.notificationIsHidden - } - }, - mutations: { - toggle (state, isOpen) { - state.isOpen = isOpen || !state.isOpen - if (!state.isOpen) { - state.path = '/' - } - }, - setPath (state, path = '/') { - state.path = path - }, - toggleNotifVisibility (state, isHidden) { - state.notificationIsHidden = isHidden || !state.isHidden - } - }, - actions: { - toggle ({ commit }) { - commit('toggle') - }, - open ({ commit }, path) { - commit('setPath', path) - commit('toggle', true) - }, - close ({ commit }) { - commit('setPath', '/') - commit('toggle', false) - }, - hideNotification ({ commit }) { - commit('toggleNotifVisibility', true) - } - }, - state: { - path: '/', - isOpen: false, - notificationIsHidden: false - } -} diff --git a/webui/src/store/store-flag.d.ts b/webui/src/store/store-flag.d.ts deleted file mode 100644 index 7677175b0..000000000 --- a/webui/src/store/store-flag.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable */ -// THIS FEATURE-FLAG FILE IS AUTOGENERATED, -// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING -import "quasar/dist/types/feature-flag"; - -declare module "quasar/dist/types/feature-flag" { - interface QuasarFeatureFlags { - store: true; - } -} diff --git a/webui/src/store/tcp/actions.js b/webui/src/store/tcp/actions.js deleted file mode 100644 index f728c6d5b..000000000 --- a/webui/src/store/tcp/actions.js +++ /dev/null @@ -1,79 +0,0 @@ -import TcpService from '../../_services/TcpService' - -export function getAllRouters ({ commit }, params) { - commit('getAllRoutersRequest') - return TcpService.getAllRouters(params) - .then(body => { - commit('getAllRoutersSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllRoutersFailure', error) - return Promise.reject(error) - }) -} - -export function getRouterByName ({ commit }, name) { - commit('getRouterByNameRequest') - return TcpService.getRouterByName(name) - .then(body => { - commit('getRouterByNameSuccess', body) - return body - }) - .catch(error => { - commit('getRouterByNameFailure', error) - return Promise.reject(error) - }) -} - -export function getAllServices ({ commit }, params) { - commit('getAllServicesRequest') - return TcpService.getAllServices(params) - .then(body => { - commit('getAllServicesSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllServicesFailure', error) - return Promise.reject(error) - }) -} - -export function getServiceByName ({ commit }, name) { - commit('getServiceByNameRequest') - return TcpService.getServiceByName(name) - .then(body => { - commit('getServiceByNameSuccess', body) - return body - }) - .catch(error => { - commit('getServiceByNameFailure', error) - return Promise.reject(error) - }) -} - -export function getAllMiddlewares ({ commit }, params) { - commit('getAllMiddlewaresRequest') - return TcpService.getAllMiddlewares(params) - .then(body => { - commit('getAllMiddlewaresSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllMiddlewaresFailure', error) - return Promise.reject(error) - }) -} - -export function getMiddlewareByName ({ commit }, name) { - commit('getMiddlewareByNameRequest') - return TcpService.getMiddlewareByName(name) - .then(body => { - commit('getMiddlewareByNameSuccess', body) - return body - }) - .catch(error => { - commit('getMiddlewareByNameFailure', error) - return Promise.reject(error) - }) -} diff --git a/webui/src/store/tcp/getters.js b/webui/src/store/tcp/getters.js deleted file mode 100644 index 2f822b452..000000000 --- a/webui/src/store/tcp/getters.js +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------- -// all Routers -// ---------------------------- -export function allRouters (state) { - return state.allRouters -} - -// ---------------------------- -// Router by Name -// ---------------------------- -export function routerByName (state) { - return state.routerByName -} - -// ---------------------------- -// all Services -// ---------------------------- -export function allServices (state) { - return state.allServices -} - -// ---------------------------- -// Service by Name -// ---------------------------- -export function serviceByName (state) { - return state.serviceByName -} - -// ---------------------------- -// all Middlewares -// ---------------------------- -export function allMiddlewares (state) { - return state.allMiddlewares -} - -// ---------------------------- -// Middleware by Name -// ---------------------------- -export function middlewareByName (state) { - return state.middlewareByName -} diff --git a/webui/src/store/tcp/index.js b/webui/src/store/tcp/index.js deleted file mode 100644 index babab8ec5..000000000 --- a/webui/src/store/tcp/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import state from './state' -import * as getters from './getters' -import * as mutations from './mutations' -import * as actions from './actions' - -export default { - namespaced: true, - getters, - mutations, - actions, - state -} diff --git a/webui/src/store/tcp/mutations.js b/webui/src/store/tcp/mutations.js deleted file mode 100644 index da98bd00d..000000000 --- a/webui/src/store/tcp/mutations.js +++ /dev/null @@ -1,157 +0,0 @@ -import { withPagination } from '../../_helpers/Mutations' - -// ---------------------------- -// Get All Routers -// ---------------------------- -export function getAllRoutersRequest (state) { - withPagination('request', { statePath: 'allRouters' })(state) -} - -export function getAllRoutersSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allRouters - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allRouters = { - ...state.allRouters, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allRouters' - })(state, data) -} - -export function getAllRoutersFailure (state, error) { - withPagination('failure', { statePath: 'allRouters' })(state, error) -} - -export function getAllRoutersClear (state) { - state.allRouters = {} -} - -// ---------------------------- -// Get Router By Name -// ---------------------------- -export function getRouterByNameRequest (state) { - state.routerByName.loading = true -} - -export function getRouterByNameSuccess (state, body) { - state.routerByName = { item: body, loading: false } -} - -export function getRouterByNameFailure (state, error) { - state.routerByName = { error } -} - -export function getRouterByNameClear (state) { - state.routerByName = {} -} - -// ---------------------------- -// Get All Services -// ---------------------------- -export function getAllServicesRequest (state) { - withPagination('request', { statePath: 'allServices' })(state) -} - -export function getAllServicesSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allServices - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allServices = { - ...state.allServices, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allServices' - })(state, data) -} - -export function getAllServicesFailure (state, error) { - withPagination('failure', { statePath: 'allServices' })(state, error) -} - -export function getAllServicesClear (state) { - state.allServices = {} -} - -// ---------------------------- -// Get Service By Name -// ---------------------------- -export function getServiceByNameRequest (state) { - state.serviceByName.loading = true -} - -export function getServiceByNameSuccess (state, body) { - state.serviceByName = { item: body, loading: false } -} - -export function getServiceByNameFailure (state, error) { - state.serviceByName = { error } -} - -export function getServiceByNameClear (state) { - state.serviceByName = {} -} - -// ---------------------------- -// Get All Middlewares -// ---------------------------- -export function getAllMiddlewaresRequest (state) { - withPagination('request', { statePath: 'allMiddlewares' })(state) -} - -export function getAllMiddlewaresSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allMiddlewares - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allMiddlewares = { - ...state.allMiddlewares, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allMiddlewares' - })(state, data) -} - -export function getAllMiddlewaresFailure (state, error) { - withPagination('failure', { statePath: 'allMiddlewares' })(state, error) -} - -export function getAllMiddlewaresClear (state) { - state.allMiddlewares = {} -} - -// ---------------------------- -// Get Middleware By Name -// ---------------------------- -export function getMiddlewareByNameRequest (state) { - state.middlewareByName.loading = true -} - -export function getMiddlewareByNameSuccess (state, body) { - state.middlewareByName = { item: body, loading: false } -} - -export function getMiddlewareByNameFailure (state, error) { - state.middlewareByName = { error } -} - -export function getMiddlewareByNameClear (state) { - state.middlewareByName = {} -} diff --git a/webui/src/store/tcp/mutations.vitest.spec.js b/webui/src/store/tcp/mutations.vitest.spec.js deleted file mode 100644 index 17dc4ff9a..000000000 --- a/webui/src/store/tcp/mutations.vitest.spec.js +++ /dev/null @@ -1,292 +0,0 @@ -import { describe, expect, it } from 'vitest' -import store from './index.js' - -const { - getAllRoutersRequest, - getAllRoutersSuccess, - getAllRoutersFailure, - getAllServicesRequest, - getAllServicesSuccess, - getAllServicesFailure, - getAllMiddlewaresRequest, - getAllMiddlewaresSuccess, - getAllMiddlewaresFailure -} = store.mutations - -describe('tcp mutations', function () { - /* Routers */ - describe('tcp routers mutations', function () { - it('getAllRoutersRequest', function () { - const state = { - allRouters: { - items: [{}, {}, {}] - } - } - - getAllRoutersRequest(state) - - expect(state.allRouters.loading).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - - it('getAllRoutersSuccess page 1', function () { - const state = { - allRouters: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(3) - expect(state.allRouters.items.length).to.equal(3) - expect(state.allRouters.currentPage).to.equal(1) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersSuccess page 2', function () { - const state = { - allRouters: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(7) - expect(state.allRouters.items.length).to.equal(7) - expect(state.allRouters.currentPage).to.equal(2) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersFailing', function () { - const state = { - allRouters: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllRoutersFailure(state, error) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.endReached).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - }) - - /* Services */ - describe('tcp services mutations', function () { - it('getAllServicesRequest', function () { - const state = { - allServices: { - items: [{}, {}, {}] - } - } - - getAllServicesRequest(state) - - expect(state.allServices.loading).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - - it('getAllServicesSuccess page 1', function () { - const state = { - allServices: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(3) - expect(state.allServices.items.length).to.equal(3) - expect(state.allServices.currentPage).to.equal(1) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesSuccess page 2', function () { - const state = { - allServices: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(7) - expect(state.allServices.items.length).to.equal(7) - expect(state.allServices.currentPage).to.equal(2) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesFailing', function () { - const state = { - allServices: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllServicesFailure(state, error) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.endReached).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - }) - - /* Middlewares */ - describe('tcp middlewares mutations', function () { - it('getAllMiddlewaresRequest', function () { - const state = { - allMiddlewares: { - items: [{}, {}, {}] - } - } - - getAllMiddlewaresRequest(state) - - expect(state.allMiddlewares.loading).to.equal(true) - expect(state.allMiddlewares.items.length).to.equal(3) - }) - - it('getAllMiddlewaresSuccess page 1', function () { - const state = { - allMiddlewares: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllMiddlewaresSuccess(state, data) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.total).to.equal(3) - expect(state.allMiddlewares.items.length).to.equal(3) - expect(state.allMiddlewares.currentPage).to.equal(1) - expect(state.allMiddlewares.currentQuery).to.equal('test query') - expect(state.allMiddlewares.currentStatus).to.equal('warning') - }) - - it('getAllMiddlewaresSuccess page 2', function () { - const state = { - allMiddlewares: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllMiddlewaresSuccess(state, data) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.total).to.equal(7) - expect(state.allMiddlewares.items.length).to.equal(7) - expect(state.allMiddlewares.currentPage).to.equal(2) - expect(state.allMiddlewares.currentQuery).to.equal('test query') - expect(state.allMiddlewares.currentStatus).to.equal('warning') - }) - - it('getAllMiddlewaresFailing', function () { - const state = { - allMiddlewares: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllMiddlewaresFailure(state, error) - - expect(state.allMiddlewares.loading).to.equal(false) - expect(state.allMiddlewares.endReached).to.equal(true) - expect(state.allMiddlewares.items.length).to.equal(3) - }) - }) -}) diff --git a/webui/src/store/tcp/state.js b/webui/src/store/tcp/state.js deleted file mode 100644 index 0557a4fdd..000000000 --- a/webui/src/store/tcp/state.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - allRouters: {}, - routerByName: {}, - allServices: {}, - serviceByName: {}, - allMiddlewares: {}, - middlewareByName: {} -} diff --git a/webui/src/store/udp/actions.js b/webui/src/store/udp/actions.js deleted file mode 100644 index 15fe3a7be..000000000 --- a/webui/src/store/udp/actions.js +++ /dev/null @@ -1,53 +0,0 @@ -import UdpService from '../../_services/UdpService' - -export function getAllRouters ({ commit }, params) { - commit('getAllRoutersRequest') - return UdpService.getAllRouters(params) - .then(body => { - commit('getAllRoutersSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllRoutersFailure', error) - return Promise.reject(error) - }) -} - -export function getRouterByName ({ commit }, name) { - commit('getRouterByNameRequest') - return UdpService.getRouterByName(name) - .then(body => { - commit('getRouterByNameSuccess', body) - return body - }) - .catch(error => { - commit('getRouterByNameFailure', error) - return Promise.reject(error) - }) -} - -export function getAllServices ({ commit }, params) { - commit('getAllServicesRequest') - return UdpService.getAllServices(params) - .then(body => { - commit('getAllServicesSuccess', { body, ...params }) - return body - }) - .catch(error => { - commit('getAllServicesFailure', error) - return Promise.reject(error) - }) -} - -export function getServiceByName ({ commit }, name) { - commit('getServiceByNameRequest') - return UdpService.getServiceByName(name) - .then(body => { - commit('getServiceByNameSuccess', body) - return body - }) - .catch(error => { - commit('getServiceByNameFailure', error) - return Promise.reject(error) - }) -} diff --git a/webui/src/store/udp/getters.js b/webui/src/store/udp/getters.js deleted file mode 100644 index 2b9611e94..000000000 --- a/webui/src/store/udp/getters.js +++ /dev/null @@ -1,27 +0,0 @@ -// ---------------------------- -// all Routers -// ---------------------------- -export function allRouters (state) { - return state.allRouters -} - -// ---------------------------- -// Router by Name -// ---------------------------- -export function routerByName (state) { - return state.routerByName -} - -// ---------------------------- -// all Services -// ---------------------------- -export function allServices (state) { - return state.allServices -} - -// ---------------------------- -// Service by Name -// ---------------------------- -export function serviceByName (state) { - return state.serviceByName -} diff --git a/webui/src/store/udp/index.js b/webui/src/store/udp/index.js deleted file mode 100644 index babab8ec5..000000000 --- a/webui/src/store/udp/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import state from './state' -import * as getters from './getters' -import * as mutations from './mutations' -import * as actions from './actions' - -export default { - namespaced: true, - getters, - mutations, - actions, - state -} diff --git a/webui/src/store/udp/mutations.js b/webui/src/store/udp/mutations.js deleted file mode 100644 index 69df42013..000000000 --- a/webui/src/store/udp/mutations.js +++ /dev/null @@ -1,105 +0,0 @@ -import { withPagination } from '../../_helpers/Mutations' - -// ---------------------------- -// Get All Routers -// ---------------------------- -export function getAllRoutersRequest (state) { - withPagination('request', { statePath: 'allRouters' })(state) -} - -export function getAllRoutersSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allRouters - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allRouters = { - ...state.allRouters, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allRouters' - })(state, data) -} - -export function getAllRoutersFailure (state, error) { - withPagination('failure', { statePath: 'allRouters' })(state, error) -} - -export function getAllRoutersClear (state) { - state.allRouters = {} -} - -// ---------------------------- -// Get Router By Name -// ---------------------------- -export function getRouterByNameRequest (state) { - state.routerByName.loading = true -} - -export function getRouterByNameSuccess (state, body) { - state.routerByName = { item: body, loading: false } -} - -export function getRouterByNameFailure (state, error) { - state.routerByName = { error } -} - -export function getRouterByNameClear (state) { - state.routerByName = {} -} - -// ---------------------------- -// Get All Services -// ---------------------------- -export function getAllServicesRequest (state) { - withPagination('request', { statePath: 'allServices' })(state) -} - -export function getAllServicesSuccess (state, data) { - const { query = '', status = '' } = data - const currentState = state.allServices - - const isSameContext = currentState.currentQuery === query && currentState.currentStatus === status - - state.allServices = { - ...state.allServices, - currentQuery: query, - currentStatus: status - } - - withPagination('success', { - isSameContext, - statePath: 'allServices' - })(state, data) -} - -export function getAllServicesFailure (state, error) { - withPagination('failure', { statePath: 'allServices' })(state, error) -} - -export function getAllServicesClear (state) { - state.allServices = {} -} - -// ---------------------------- -// Get Service By Name -// ---------------------------- -export function getServiceByNameRequest (state) { - state.serviceByName.loading = true -} - -export function getServiceByNameSuccess (state, body) { - state.serviceByName = { item: body, loading: false } -} - -export function getServiceByNameFailure (state, error) { - state.serviceByName = { error } -} - -export function getServiceByNameClear (state) { - state.serviceByName = {} -} diff --git a/webui/src/store/udp/mutations.vitest.spec.js b/webui/src/store/udp/mutations.vitest.spec.js deleted file mode 100644 index 4c6b39f63..000000000 --- a/webui/src/store/udp/mutations.vitest.spec.js +++ /dev/null @@ -1,197 +0,0 @@ -import { describe, expect, it } from 'vitest' -import store from './index.js' - -const { - getAllRoutersRequest, - getAllRoutersSuccess, - getAllRoutersFailure, - getAllServicesRequest, - getAllServicesSuccess, - getAllServicesFailure -} = store.mutations - -describe('udp mutations', function () { - /* Routers */ - describe('udp routers mutations', function () { - it('getAllRoutersRequest', function () { - const state = { - allRouters: { - items: [{}, {}, {}] - } - } - - getAllRoutersRequest(state) - - expect(state.allRouters.loading).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - - it('getAllRoutersSuccess page 1', function () { - const state = { - allRouters: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(3) - expect(state.allRouters.items.length).to.equal(3) - expect(state.allRouters.currentPage).to.equal(1) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersSuccess page 2', function () { - const state = { - allRouters: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllRoutersSuccess(state, data) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.total).to.equal(7) - expect(state.allRouters.items.length).to.equal(7) - expect(state.allRouters.currentPage).to.equal(2) - expect(state.allRouters.currentQuery).to.equal('test query') - expect(state.allRouters.currentStatus).to.equal('warning') - }) - - it('getAllRoutersFailing', function () { - const state = { - allRouters: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllRoutersFailure(state, error) - - expect(state.allRouters.loading).to.equal(false) - expect(state.allRouters.endReached).to.equal(true) - expect(state.allRouters.items.length).to.equal(3) - }) - }) - - /* Services */ - describe('udp services mutations', function () { - it('getAllServicesRequest', function () { - const state = { - allServices: { - items: [{}, {}, {}] - } - } - - getAllServicesRequest(state) - - expect(state.allServices.loading).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - - it('getAllServicesSuccess page 1', function () { - const state = { - allServices: { - loading: true - } - } - - const data = { - body: { - data: [{}, {}, {}], - total: 3 - }, - query: 'test query', - status: 'warning', - page: 1 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(3) - expect(state.allServices.items.length).to.equal(3) - expect(state.allServices.currentPage).to.equal(1) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesSuccess page 2', function () { - const state = { - allServices: { - loading: false, - items: [{ id: 1 }, { id: 2 }, { id: 3 }], - total: 3, - currentPage: 1, - currentQuery: 'test query', - currentStatus: 'warning' - } - } - - const data = { - body: { - data: [{ id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }], - total: 4 - }, - query: 'test query', - status: 'warning', - page: 2 - } - - getAllServicesSuccess(state, data) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.total).to.equal(7) - expect(state.allServices.items.length).to.equal(7) - expect(state.allServices.currentPage).to.equal(2) - expect(state.allServices.currentQuery).to.equal('test query') - expect(state.allServices.currentStatus).to.equal('warning') - }) - - it('getAllServicesFailing', function () { - const state = { - allServices: { - items: [{}, {}, {}], - loading: true - } - } - - const error = { message: 'invalid request: page: 3, per_page: 10' } - - getAllServicesFailure(state, error) - - expect(state.allServices.loading).to.equal(false) - expect(state.allServices.endReached).to.equal(true) - expect(state.allServices.items.length).to.equal(3) - }) - }) -}) diff --git a/webui/src/store/udp/state.js b/webui/src/store/udp/state.js deleted file mode 100644 index 0eb429a34..000000000 --- a/webui/src/store/udp/state.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - allRouters: {}, - routerByName: {}, - allServices: {}, - serviceByName: {} -} diff --git a/webui/src/types/global.d.ts b/webui/src/types/global.d.ts new file mode 100644 index 000000000..e1503ed42 --- /dev/null +++ b/webui/src/types/global.d.ts @@ -0,0 +1,9 @@ +interface Window { + APIUrl: string +} + +declare namespace JSX { + interface IntrinsicElements { + 'hub-button-app': React.DetailedHTMLProps, HTMLElement> + } +} diff --git a/webui/src/utils/breakpoints.ts b/webui/src/utils/breakpoints.ts new file mode 100644 index 000000000..9a3202105 --- /dev/null +++ b/webui/src/utils/breakpoints.ts @@ -0,0 +1,9 @@ +export default { + mobileS: '320px', + mobileM: '375px', + mobileL: '425px', + tablet: '768px', + laptop: '1024px', + laptopL: '1440px', + desktop: '2560px', +} diff --git a/webui/src/utils/mocks.ts b/webui/src/utils/mocks.ts new file mode 100644 index 000000000..eda514d6e --- /dev/null +++ b/webui/src/utils/mocks.ts @@ -0,0 +1,11 @@ +export const useFetchWithPaginationMock = (options = {}) => ({ + error: null, + isEmpty: false, + isLoadingMore: false, + isReachingEnd: true, + loadMore: vi.fn, + pageCount: 1, + pageSWRs: [], + pages: null, + ...options, +}) diff --git a/webui/src/utils/position.ts b/webui/src/utils/position.ts new file mode 100644 index 000000000..041c2fa93 --- /dev/null +++ b/webui/src/utils/position.ts @@ -0,0 +1,37 @@ +export type PositionXProps = 'left' | 'center' | 'right' +export type PositionYProps = 'top' | 'bottom' + +export type GetPositionType = { + top?: number + bottom?: number + left?: number + right?: number +} + +export function getPositionValues(positionX: PositionXProps, positionY: PositionYProps): GetPositionType { + const position: GetPositionType = {} + + switch (positionX) { + case 'left': + position.left = 0 + break + case 'center': + position.left = 0 + position.right = 0 + break + case 'right': + position.right = 0 + break + } + + switch (positionY) { + case 'top': + position.top = 0 + break + case 'bottom': + position.bottom = 0 + break + } + + return position +} diff --git a/webui/src/utils/string.ts b/webui/src/utils/string.ts new file mode 100644 index 000000000..d275458d6 --- /dev/null +++ b/webui/src/utils/string.ts @@ -0,0 +1,5 @@ +export const capitalizeFirstLetter = (string: unknown): string | null => { + if (!string) return null + + return string?.toString()?.charAt(0)?.toUpperCase() + string?.toString()?.slice(1) +} diff --git a/webui/src/utils/test.tsx b/webui/src/utils/test.tsx new file mode 100644 index 000000000..2c79760cf --- /dev/null +++ b/webui/src/utils/test.tsx @@ -0,0 +1,45 @@ +import { cleanup, render } from '@testing-library/react' +import { FaencyProvider } from '@traefiklabs/faency' +import { HelmetProvider } from 'react-helmet-async' +import { BrowserRouter } from 'react-router-dom' +import { SWRConfig } from 'swr' +import { afterEach } from 'vitest' + +import fetch from '../libs/fetch' + +afterEach(() => { + cleanup() +}) + +function customRender(ui: React.ReactElement, options = {}) { + return render(ui, { + // wrap provider(s) here if needed + wrapper: ({ children }) => children, + ...options, + }) +} + +// eslint-disable-next-line import/export +export * from '@testing-library/react' +export { default as userEvent } from '@testing-library/user-event' +// override render export +export { customRender as render } // eslint-disable-line import/export + +export function renderWithProviders(ui: React.ReactElement) { + return customRender(ui, { + wrapper: ({ children }) => ( + + + + {children} + + + + ), + }) +} diff --git a/webui/src/utils/wait.ts b/webui/src/utils/wait.ts new file mode 100644 index 000000000..15a408aa7 --- /dev/null +++ b/webui/src/utils/wait.ts @@ -0,0 +1 @@ +export const wait = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)) diff --git a/webui/src/vite-env.d.ts b/webui/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/webui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md b/webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md deleted file mode 100644 index 9481a99c3..000000000 --- a/webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md +++ /dev/null @@ -1 +0,0 @@ -For more information see `webui/readme.md` \ No newline at end of file diff --git a/webui/test/setup.ts b/webui/test/setup.ts new file mode 100644 index 000000000..7c53d16b8 --- /dev/null +++ b/webui/test/setup.ts @@ -0,0 +1,76 @@ +import '@testing-library/jest-dom' +import 'vitest-canvas-mock' + +import * as matchers from 'jest-extended' +import { expect } from 'vitest' + +import { server } from '../src/mocks/server' + +expect.extend(matchers) + +export class IntersectionObserver { + root = null + rootMargin = '' + thresholds = [] + + disconnect() { + return null + } + + observe() { + return null + } + + takeRecords() { + return [] + } + + unobserve() { + return null + } +} + +class ResizeObserver { + observe() { + return null + } + unobserve() { + return null + } + disconnect() { + return null + } +} + +beforeAll(() => { + global.IntersectionObserver = IntersectionObserver + window.IntersectionObserver = IntersectionObserver + + global.ResizeObserver = ResizeObserver + window.ResizeObserver = ResizeObserver + + Object.defineProperty(window, 'matchMedia', { + writable: true, + value: vi.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: vi.fn(), // deprecated + removeListener: vi.fn(), // deprecated + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + dispatchEvent: vi.fn(), + })), + }) + + Object.defineProperty(window, 'scrollTo', { + writable: true, + value: vi.fn(), + }) + + server.listen({ onUnhandledRequest: 'error' }) +}) + +afterEach(() => server.resetHandlers()) + +afterAll(() => server.close()) diff --git a/webui/test/vitest/setup-file.js b/webui/test/vitest/setup-file.js deleted file mode 100644 index 499204981..000000000 --- a/webui/test/vitest/setup-file.js +++ /dev/null @@ -1 +0,0 @@ -// This file will be run before each test file diff --git a/webui/tsconfig.json b/webui/tsconfig.json new file mode 100644 index 000000000..1c8a6c68b --- /dev/null +++ b/webui/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "node", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "allowSyntheticDefaultImports": true, + "baseUrl": "./src", + "esModuleInterop": true, + "noImplicitAny": false, + "types": ["vitest/globals"], + "paths": { + "react": ["../node_modules/@types/react"] + } + }, + "include": ["src", "test/setup.ts", "types/*.d.ts"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/webui/tsconfig.node.json b/webui/tsconfig.node.json new file mode 100644 index 000000000..97ede7ee6 --- /dev/null +++ b/webui/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/webui/vite.config.ts b/webui/vite.config.ts new file mode 100644 index 000000000..4cabcd2f4 --- /dev/null +++ b/webui/vite.config.ts @@ -0,0 +1,28 @@ +/// +/// + +import react from '@vitejs/plugin-react' +import { defineConfig, loadEnv } from 'vite' +import viteTsconfigPaths from 'vite-tsconfig-paths' + +export default ({ mode }: { mode: string }) => { + process.env = { ...process.env, ...loadEnv(mode, process.cwd()) } + + return defineConfig({ + base: process.env.VITE_APP_BASE_URL || '', + plugins: [react(), viteTsconfigPaths()], + server: { + open: 'index.dev.html', + port: 3000, + }, + build: { + emptyOutDir: true, + outDir: './static', + }, + test: { + environment: 'jsdom', + globals: true, + setupFiles: './test/setup.ts', + }, + }) +} diff --git a/webui/vitest.config.mjs b/webui/vitest.config.mjs deleted file mode 100644 index bb3c6d45d..000000000 --- a/webui/vitest.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import vue from '@vitejs/plugin-vue'; -import { quasar, transformAssetUrls } from '@quasar/vite-plugin'; -import jsconfigPaths from 'vite-jsconfig-paths'; - -// https://vitejs.dev/config/ -export default defineConfig({ - test: { - environment: 'happy-dom', - setupFiles: 'test/vitest/setup-file.js', - include: [ - // Matches vitest tests in any subfolder of 'src' or into 'test/vitest/__tests__' - // Matches all files with extension 'js', 'jsx', 'ts' and 'tsx' - 'src/**/*.vitest.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}', - ], - }, - plugins: [ - vue({ - template: { transformAssetUrls }, - }), - quasar(), - jsconfigPaths(), - ], -}); diff --git a/webui/yarn.lock b/webui/yarn.lock index d625882fb..5e1c92fe9 100644 --- a/webui/yarn.lock +++ b/webui/yarn.lock @@ -1,6394 +1,17106 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" - integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== - dependencies: - "@babel/highlight" "^7.25.7" - picocolors "^1.0.0" - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" - integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== - -"@babel/core@^7.12.0", "@babel/core@^7.23.9": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" - integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.25.7" - "@babel/generator" "^7.25.7" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helpers" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/template" "^7.25.7" - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/eslint-parser@^7.23.10": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz#27b43de786c83cbabbcb328efbb4f099ae85415e" - integrity sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" - integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== - dependencies: - "@babel/types" "^7.25.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/helper-annotate-as-pure@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972" - integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== - dependencies: - "@babel/types" "^7.25.7" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz#d721650c1f595371e0a23ee816f1c3c488c0d622" - integrity sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.7", "@babel/helper-compilation-targets@^7.9.6": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" - integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== - dependencies: - "@babel/compat-data" "^7.25.7" - "@babel/helper-validator-option" "^7.25.7" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz#5d65074c76cae75607421c00d6bd517fe1892d6b" - integrity sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-member-expression-to-functions" "^7.25.7" - "@babel/helper-optimise-call-expression" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/traverse" "^7.25.7" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz#dcb464f0e2cdfe0c25cc2a0a59c37ab940ce894e" - integrity sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - regexpu-core "^6.1.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== - 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" - -"@babel/helper-member-expression-to-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz#541a33b071f0355a63a0fa4bdf9ac360116b8574" - integrity sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-module-imports@^7.25.7", "@babel/helper-module-imports@^7.8.3": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" - integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-module-transforms@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" - integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== - dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-simple-access" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-optimise-call-expression@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz#1de1b99688e987af723eed44fa7fc0ee7b97d77a" - integrity sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng== - dependencies: - "@babel/types" "^7.25.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" - integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== - -"@babel/helper-remap-async-to-generator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz#9efdc39df5f489bcd15533c912b6c723a0a65021" - integrity sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-wrap-function" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-replace-supers@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz#38cfda3b6e990879c71d08d0fef9236b62bd75f5" - integrity sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.7" - "@babel/helper-optimise-call-expression" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-simple-access@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" - integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz#382831c91038b1a6d32643f5f49505b8442cb87c" - integrity sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-string-parser@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" - integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== - -"@babel/helper-validator-identifier@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" - integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== - -"@babel/helper-validator-option@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" - integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== - -"@babel/helper-wrap-function@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz#9f6021dd1c4fdf4ad515c809967fc4bac9a70fe7" - integrity sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg== - dependencies: - "@babel/template" "^7.25.7" - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helpers@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" - integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== - dependencies: - "@babel/template" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/highlight@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" - integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== - dependencies: - "@babel/helper-validator-identifier" "^7.25.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.25.3", "@babel/parser@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590" - integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== - dependencies: - "@babel/types" "^7.25.7" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz#93969ac50ef4d68b2504b01b758af714e4cbdd64" - integrity sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz#a338d611adb9dcd599b8b1efa200c88ebeffe046" - integrity sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz#c5f755e911dfac7ef6957300c0f9c4a8c18c06f4" - integrity sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz#3b7ea04492ded990978b6deaa1dfca120ad4455a" - integrity sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/plugin-transform-optional-chaining" "^7.25.7" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz#9622b1d597a703aa3a921e6f58c9c2d9a028d2c5" - integrity sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/plugin-proposal-decorators@^7.4.4": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.7.tgz#dabfd82df5dff3a8fc61a434233bf8227c88402c" - integrity sha512-q1mqqqH0e1lhmsEQHV5U8OmdueBC2y0RFr2oUzZoFRtN3MvPmt2fsFRcNQAoGLTSNdHBFUYGnlgcRFhkBbKjPw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-decorators" "^7.25.7" - -"@babel/plugin-proposal-function-sent@^7.2.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.25.7.tgz#3b15497a959228f3b33faed83bbc5f0946f64696" - integrity sha512-ZsNyYHzDAXuJWqSc5YhtAOx7GR8itltKU6iMJhqheo4rGu/YrL5Mr+4ju5bEUErHEQKOEo4DnxBv8mDPelZ3vg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-wrap-function" "^7.25.7" - "@babel/plugin-syntax-function-sent" "^7.25.7" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-proposal-throw-expressions@^7.2.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.25.7.tgz#2359c72ed372d910ab02d6071154d67468ed5d5e" - integrity sha512-dRhgWKBKoe5o0RqP6sRE0wpVzyMKPE9VPyRObwDG34GnC4KuGx2OIDs4vbrm5BVT4EZy1h9uJlSUfKS4vSKiXA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-throw-expressions" "^7.25.7" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.7.tgz#cf26fdde4e750688e133c0e33ead2506377e88f7" - integrity sha512-oXduHo642ZhstLVYTe2z2GSJIruU0c/W3/Ghr6A5yGMsVrvdnxO1z+3pbTcT7f3/Clnt+1z8D/w1r1f1SHaCHw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-function-sent@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.25.7.tgz#7da218f24a83fb79f3cf05ddf81cac01647e462b" - integrity sha512-pHEG0epLjZM9aJsL9rwaT+YaEOSRQbjcc5T8EUIZGf9JB7CBDi/rmQuIMQ3kvvIPBqCsPj9MTFdGxqT5QkHZSg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-syntax-import-assertions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz#8ce248f9f4ed4b7ed4cb2e0eb4ed9efd9f52921f" - integrity sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-syntax-import-attributes@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz#d78dd0499d30df19a598e63ab895e21b909bc43f" - integrity sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-throw-expressions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.25.7.tgz#6ddccb389800b3db0ad74aebb3eb6d5803fba488" - integrity sha512-UydaKYt9Iw3iay5ylLxE/nEUYjGAptjqrzi+VZvkm9bx0dzPw4R0CXBvataxrlEeWX2YRvWmX6CxkD9Tn6o+LA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz#1b9ed22e6890a0e9ff470371c73b8c749bcec386" - integrity sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-async-generator-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.7.tgz#af61a02b30d7bff5108c63bd39ac7938403426d7" - integrity sha512-4B6OhTrwYKHYYgcwErvZjbmH9X5TxQBsaBHdzEIB4l71gR5jh/tuHGlb9in47udL2+wVUcOz5XXhhfhVJwEpEg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-remap-async-to-generator" "^7.25.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.7" - -"@babel/plugin-transform-async-to-generator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52" - integrity sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg== - dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-remap-async-to-generator" "^7.25.7" - -"@babel/plugin-transform-block-scoped-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz#e0b8843d5571719a2f1bf7e284117a3379fcc17c" - integrity sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-block-scoping@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz#6dab95e98adf780ceef1b1c3ab0e55cd20dd410a" - integrity sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-class-properties@^7.23.3", "@babel/plugin-transform-class-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz#a389cfca7a10ac80e3ff4c75fca08bd097ad1523" - integrity sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-class-static-block@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.7.tgz#d2cf3c812e3b3162d56aadf4566f45c30538cb2c" - integrity sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz#5103206cf80d02283bbbd044509ea3b65d0906bb" - integrity sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" - "@babel/traverse" "^7.25.7" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz#7f621f0aa1354b5348a935ab12e3903842466f65" - integrity sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/template" "^7.25.7" - -"@babel/plugin-transform-destructuring@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz#f6f26a9feefb5aa41fd45b6f5838901b5333d560" - integrity sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-dotall-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz#9d775c4a3ff1aea64045300fcd4309b4a610ef02" - integrity sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-duplicate-keys@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz#fbba7d1155eab76bd4f2a038cbd5d65883bd7a93" - integrity sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz#102b31608dcc22c08fbca1894e104686029dc141" - integrity sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-dynamic-import@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.7.tgz#31905ab2cfa94dcf1b1f8ce66096720b2908e518" - integrity sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz#5961a3a23a398faccd6cddb34a2182807d75fb5f" - integrity sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-export-namespace-from@^7.23.4", "@babel/plugin-transform-export-namespace-from@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.7.tgz#beb2679db6fd3bdfe6ad6de2c8cac84a86ef2da1" - integrity sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz#0acfea0f27aa290818b5b48a5a44b3f03fc13669" - integrity sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - -"@babel/plugin-transform-function-name@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz#7e394ccea3693902a8b50ded8b6ae1fa7b8519fd" - integrity sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ== - dependencies: - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/plugin-transform-json-strings@^7.23.4", "@babel/plugin-transform-json-strings@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.7.tgz#6626433554aff4bd6f76a2c621a1f40e802dfb0a" - integrity sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz#70cbdc742f2cfdb1a63ea2cbd018d12a60b213c3" - integrity sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-logical-assignment-operators@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.7.tgz#93847feb513a1f191c5f5d903d991a0ee24fe99b" - integrity sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz#0a36c3fbd450cc9e6485c507f005fa3d1bc8fca5" - integrity sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-modules-amd@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz#bb4e543b5611f6c8c685a2fd485408713a3adf3d" - integrity sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA== - dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-modules-commonjs@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz#173f0c791bb7407c092ce6d77ee90eb3f2d1d2fd" - integrity sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg== - dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-simple-access" "^7.25.7" - -"@babel/plugin-transform-modules-systemjs@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz#8b14d319a177cc9c85ef8b0512afd429d9e2e60b" - integrity sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g== - dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/plugin-transform-modules-umd@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz#00ee7a7e124289549381bfb0e24d87fd7f848367" - integrity sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw== - dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz#a2f3f6d7f38693b462542951748f0a72a34d196d" - integrity sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-new-target@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz#52b2bde523b76c548749f38dc3054f1f45e82bc9" - integrity sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.7.tgz#0af84b86d4332654c43cf028dbdcf878b00ac168" - integrity sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.4", "@babel/plugin-transform-numeric-separator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz#a516b78f894d1c08283f39d809b2048fd2f29448" - integrity sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz#fa0916521be96fd434e2db59780b24b308c6d169" - integrity sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg== - dependencies: - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.25.7" - -"@babel/plugin-transform-object-super@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz#582a9cea8cf0a1e02732be5b5a703a38dedf5661" - integrity sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" - -"@babel/plugin-transform-optional-catch-binding@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.7.tgz#400e2d891f9288f5231694234696aa67164e4913" - integrity sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz#b7f7c9321aa1d8414e67799c28d87c23682e4d68" - integrity sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz#80c38b03ef580f6d6bffe1c5254bb35986859ac7" - integrity sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-private-methods@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz#c790a04f837b4bd61d6b0317b43aa11ff67dce80" - integrity sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-private-property-in-object@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz#aff877efd05b57c4ad04611d8de97bf155a53369" - integrity sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz#a8612b4ea4e10430f00012ecf0155662c7d6550d" - integrity sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-regenerator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz#6eb006e6d26f627bc2f7844a9f19770721ad6f3e" - integrity sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz#dc56b25e02afaabef3ce0c5b06b0916e8523e995" - integrity sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-runtime@^7.9.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz#435a4fab67273f00047dc806e05069c9c6344e12" - integrity sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg== - dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz#92690a9c671915602d91533c278cc8f6bf12275f" - integrity sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-spread@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz#df83e899a9fc66284ee601a7b738568435b92998" - integrity sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - -"@babel/plugin-transform-sticky-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz#341c7002bef7f29037be7fb9684e374442dd0d17" - integrity sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-template-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz#e566c581bb16d8541dd8701093bb3457adfce16b" - integrity sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-typeof-symbol@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz#debb1287182efd20488f126be343328c679b66eb" - integrity sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-unicode-escapes@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz#973592b6d13a914794e1de8cf1383e50e0f87f81" - integrity sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-unicode-property-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz#25349197cce964b1343f74fa7cfdf791a1b1919e" - integrity sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-unicode-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz#f93a93441baf61f713b6d5552aaa856bfab34809" - integrity sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/plugin-transform-unicode-sets-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz#d1b3295d29e0f8f4df76abc909ad1ebee919560c" - integrity sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - -"@babel/preset-env@^7.9.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.7.tgz#fc1b092152db4b58377b85dc05c890081c1157e0" - integrity sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g== - dependencies: - "@babel/compat-data" "^7.25.7" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-validator-option" "^7.25.7" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.7" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.25.7" - "@babel/plugin-syntax-import-attributes" "^7.25.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.7" - "@babel/plugin-transform-async-to-generator" "^7.25.7" - "@babel/plugin-transform-block-scoped-functions" "^7.25.7" - "@babel/plugin-transform-block-scoping" "^7.25.7" - "@babel/plugin-transform-class-properties" "^7.25.7" - "@babel/plugin-transform-class-static-block" "^7.25.7" - "@babel/plugin-transform-classes" "^7.25.7" - "@babel/plugin-transform-computed-properties" "^7.25.7" - "@babel/plugin-transform-destructuring" "^7.25.7" - "@babel/plugin-transform-dotall-regex" "^7.25.7" - "@babel/plugin-transform-duplicate-keys" "^7.25.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7" - "@babel/plugin-transform-dynamic-import" "^7.25.7" - "@babel/plugin-transform-exponentiation-operator" "^7.25.7" - "@babel/plugin-transform-export-namespace-from" "^7.25.7" - "@babel/plugin-transform-for-of" "^7.25.7" - "@babel/plugin-transform-function-name" "^7.25.7" - "@babel/plugin-transform-json-strings" "^7.25.7" - "@babel/plugin-transform-literals" "^7.25.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.7" - "@babel/plugin-transform-member-expression-literals" "^7.25.7" - "@babel/plugin-transform-modules-amd" "^7.25.7" - "@babel/plugin-transform-modules-commonjs" "^7.25.7" - "@babel/plugin-transform-modules-systemjs" "^7.25.7" - "@babel/plugin-transform-modules-umd" "^7.25.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7" - "@babel/plugin-transform-new-target" "^7.25.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.7" - "@babel/plugin-transform-numeric-separator" "^7.25.7" - "@babel/plugin-transform-object-rest-spread" "^7.25.7" - "@babel/plugin-transform-object-super" "^7.25.7" - "@babel/plugin-transform-optional-catch-binding" "^7.25.7" - "@babel/plugin-transform-optional-chaining" "^7.25.7" - "@babel/plugin-transform-parameters" "^7.25.7" - "@babel/plugin-transform-private-methods" "^7.25.7" - "@babel/plugin-transform-private-property-in-object" "^7.25.7" - "@babel/plugin-transform-property-literals" "^7.25.7" - "@babel/plugin-transform-regenerator" "^7.25.7" - "@babel/plugin-transform-reserved-words" "^7.25.7" - "@babel/plugin-transform-shorthand-properties" "^7.25.7" - "@babel/plugin-transform-spread" "^7.25.7" - "@babel/plugin-transform-sticky-regex" "^7.25.7" - "@babel/plugin-transform-template-literals" "^7.25.7" - "@babel/plugin-transform-typeof-symbol" "^7.25.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.7" - "@babel/plugin-transform-unicode-property-regex" "^7.25.7" - "@babel/plugin-transform-unicode-regex" "^7.25.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.7" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.38.1" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" - integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" - integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/traverse@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" - integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/generator" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/template" "^7.25.7" - "@babel/types" "^7.25.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.25.7", "@babel/types@^7.4.4": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" - integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== - dependencies: - "@babel/helper-string-parser" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - to-fast-properties "^2.0.0" - -"@bufbuild/protobuf@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.1.0.tgz#6925f30c25789b4f74d7c505e731c96f79fb48a7" - integrity sha512-+2Mx67Y3skJ4NCD/qNSdBJNWtu6x6Qr53jeNg+QcwiL6mt0wK+3jwHH2x1p7xaYH6Ve2JKOVn0OxU35WsmqI9A== - -"@cush/relative@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@cush/relative/-/relative-1.0.0.tgz#8cd1769bf9bde3bb27dac356b1bc94af40f6cc16" - integrity sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA== - -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/aix-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" - integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" - integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-arm@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" - integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/android-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" - integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== - -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== - -"@esbuild/darwin-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" - integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== - -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/darwin-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" - integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" - integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/freebsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" - integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" - integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-arm@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" - integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" - integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-loong64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" - integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-mips64el@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" - integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" - integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-riscv64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" - integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-s390x@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" - integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/linux-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" - integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/netbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" - integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== - -"@esbuild/openbsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" - integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/openbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" - integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/sunos-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" - integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" - integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" - integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== - -"@esbuild/win32-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" - integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== - -"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.6.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" - integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@inquirer/figures@^1.0.3": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b" - integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@kurkle/color@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f" - integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@one-ini/wasm@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" - integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@quasar/app-vite@^2.0.0-beta.15": - version "2.0.0-beta.22" - resolved "https://registry.yarnpkg.com/@quasar/app-vite/-/app-vite-2.0.0-beta.22.tgz#0148c930893d5463063eac2f7f8f42f8d43ed050" - integrity sha512-UjEi0+YBcNALx8uTe0hzTAjd1uYmfwsibaxNE2fX0p1CA/yTV+jTrPv3+mswBhHfD4oLdoWp4W0LvYDMi+Ztqw== - dependencies: - "@quasar/render-ssr-error" "^1.0.3" - "@quasar/ssl-certificate" "^1.0.0" - "@quasar/vite-plugin" "^1.7.0" - "@types/chrome" "^0.0.262" - "@types/compression" "^1.7.5" - "@types/cordova" "^11.0.3" - "@types/express" "^4.17.21" - "@vitejs/plugin-vue" "^5.1.3" - archiver "^7.0.1" - chokidar "^3.6.0" - ci-info "^4.0.0" - compression "^1.7.4" - cross-spawn "^7.0.3" - dot-prop "9.0.0" - dotenv "^16.4.5" - dotenv-expand "^11.0.6" - elementtree "0.1.7" - esbuild "^0.23.1" - express "^4.21.0" - fast-glob "3.3.2" - fs-extra "^11.2.0" - html-minifier-terser "^7.2.0" - inquirer "^9.3.6" - isbinaryfile "^5.0.2" - kolorist "^1.8.0" - lodash "^4.17.21" - minimist "^1.2.8" - open "^10.1.0" - rollup-plugin-visualizer "^5.12.0" - sass-embedded "^1.79.1" - semver "^7.6.3" - serialize-javascript "^6.0.2" - ts-essentials "^9.4.2" - vite "^5.4.5" - webpack-merge "^6.0.1" - -"@quasar/babel-preset-app@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@quasar/babel-preset-app/-/babel-preset-app-2.0.3.tgz#7f821e17eac7fdeee48e44e56eb01e848f369ec7" - integrity sha512-PYvVXU/TBwF1JU+nEKw8VTsbNi4mdhu7l+l9HIqfY0XZGWbDQLOGjBR8TO6A8dn5SUoilvRh85TG3ZQV01VCBQ== - dependencies: - "@babel/core" "^7.12.0" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.4.4" - "@babel/plugin-proposal-function-sent" "^7.2.0" - "@babel/plugin-proposal-throw-expressions" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-import-meta" "^7.2.0" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-runtime" "^7.9.0" - "@babel/preset-env" "^7.9.0" - "@babel/runtime" "^7.9.0" - babel-loader "^9.1.2" - babel-plugin-dynamic-import-node "^2.3.0" - babel-plugin-module-resolver "^5.0.0" - core-js "^3.6.5" - core-js-compat "^3.6.5" - -"@quasar/extras@^1.16.12": - version "1.16.12" - resolved "https://registry.yarnpkg.com/@quasar/extras/-/extras-1.16.12.tgz#2dac82eac8bb6b069a677d2817e479261d51f234" - integrity sha512-hLlb3Buxo38Xg/2w0BTkz98RBh/VH8apZ2r6Fl8YpPgrVQ0diHyN/BVTvIOk5Kch2y38L2kvwOIddsB2UcCuIg== - -"@quasar/quasar-app-extension-testing-unit-vitest@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@quasar/quasar-app-extension-testing-unit-vitest/-/quasar-app-extension-testing-unit-vitest-1.1.0.tgz#d7c602ecc0db0925e05a8b174b832d4f2766a798" - integrity sha512-9HZUjBx/TF4Un2Alcgz4GDVZbZtSth2De7Q2KIfqFNc3IwpYtzg9XQNYDDialQS+KTe7qTKxH31ohjrvY+HCVw== - dependencies: - happy-dom "^15.0.0" - lodash-es "^4.17.21" - vite-jsconfig-paths "^2.0.1" - vite-tsconfig-paths "^4.3.1" - -"@quasar/render-ssr-error@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@quasar/render-ssr-error/-/render-ssr-error-1.0.3.tgz#33f27231007d1b222de41d3d70c29a6d14f9498a" - integrity sha512-A8RF99q6/sOSe1Ighnh5syEIbliD3qUYEJd2HyfFyBPSMF+WYGXon5dmzg4nUoK662NgOggInevkDyBDJcZugg== - dependencies: - stack-trace "^1.0.0-pre2" - -"@quasar/ssl-certificate@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@quasar/ssl-certificate/-/ssl-certificate-1.0.0.tgz#8126d99241ea1558ed14f31cf5003fc5cacdd891" - integrity sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g== - dependencies: - fs-extra "^11.1.1" - selfsigned "^2.1.1" - -"@quasar/vite-plugin@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@quasar/vite-plugin/-/vite-plugin-1.7.0.tgz#8873391ed7f69677948180f6eb14aa0821747478" - integrity sha512-ia4w1n4DuPYm92MQLPNpMqLJID1WGGRyVGxkVeg8V+V25Vh3p9QBo++iuXR4sW/bCmzzx66Ko6VStsr1zp90GQ== - -"@rollup/rollup-android-arm-eabi@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54" - integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== - -"@rollup/rollup-android-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e" - integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== - -"@rollup/rollup-darwin-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz#627007221b24b8cc3063703eee0b9177edf49c1f" - integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== - -"@rollup/rollup-darwin-x64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724" - integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb" - integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== - -"@rollup/rollup-linux-arm-musleabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3" - integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== - -"@rollup/rollup-linux-arm64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496" - integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== - -"@rollup/rollup-linux-arm64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065" - integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d" - integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== - -"@rollup/rollup-linux-riscv64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983" - integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== - -"@rollup/rollup-linux-s390x-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58" - integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== - -"@rollup/rollup-linux-x64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b" - integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== - -"@rollup/rollup-linux-x64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127" - integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== - -"@rollup/rollup-win32-arm64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5" - integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== - -"@rollup/rollup-win32-ia32-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2" - integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== - -"@rollup/rollup-win32-x64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" - integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== - -"@rtsao/scc@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" - integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/chrome@^0.0.262": - version "0.0.262" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.262.tgz#7c188d946da51216a558342637393c998bb85dd2" - integrity sha512-TOoj3dqSYE13PD2fRuMQ6X6pggEvL9rRk/yOYOyWE6sfqRWxsJm4VoVm+wr9pkr4Sht/M5t7FFL4vXato8d1gA== - dependencies: - "@types/filesystem" "*" - "@types/har-format" "*" - -"@types/compression@^1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.5.tgz#0f80efef6eb031be57b12221c4ba6bc3577808f7" - integrity sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg== - dependencies: - "@types/express" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/cordova@^11.0.3": - version "11.0.3" - resolved "https://registry.yarnpkg.com/@types/cordova/-/cordova-11.0.3.tgz#4301b1c614899c1c99a83aac45914285462201b7" - integrity sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg== - -"@types/estree@1.0.6", "@types/estree@^1.0.0": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/express-serve-static-core@^4.17.33": - version "4.19.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" - integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz#91f06cda1049e8f17eeab364798ed79c97488a1c" - integrity sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" - integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/filesystem@*": - version "0.0.36" - resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.36.tgz#7227c2d76bfed1b21819db310816c7821d303857" - integrity sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA== - dependencies: - "@types/filewriter" "*" - -"@types/filewriter@*": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.33.tgz#d9d611db9d9cd99ae4e458de420eeb64ad604ea8" - integrity sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g== - -"@types/har-format@*": - version "1.2.16" - resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.16.tgz#b71ede8681400cc08b3685f061c31e416cf94944" - integrity sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "22.7.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" - integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== - dependencies: - undici-types "~6.19.2" - -"@types/qs@*": - version "6.9.16" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794" - integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@vitejs/plugin-vue@^5.1.3": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz#72b8b705cfce36b00b59af196195146e356500c4" - integrity sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A== - -"@vitest/expect@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.6.0.tgz#0b3ba0914f738508464983f4d811bc122b51fb30" - integrity sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ== - dependencies: - "@vitest/spy" "1.6.0" - "@vitest/utils" "1.6.0" - chai "^4.3.10" - -"@vitest/runner@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.6.0.tgz#a6de49a96cb33b0e3ba0d9064a3e8d6ce2f08825" - integrity sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg== - dependencies: - "@vitest/utils" "1.6.0" - p-limit "^5.0.0" - pathe "^1.1.1" - -"@vitest/snapshot@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.6.0.tgz#deb7e4498a5299c1198136f56e6e0f692e6af470" - integrity sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ== - dependencies: - magic-string "^0.30.5" - pathe "^1.1.1" - pretty-format "^29.7.0" - -"@vitest/spy@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" - integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== - dependencies: - tinyspy "^2.2.0" - -"@vitest/utils@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" - integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== - dependencies: - diff-sequences "^29.6.3" - estree-walker "^3.0.3" - loupe "^2.3.7" - pretty-format "^29.7.0" - -"@vue/compiler-core@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.11.tgz#3dcd0c1bab10732f44ab1790735afb03a4b69edc" - integrity sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg== - dependencies: - "@babel/parser" "^7.25.3" - "@vue/shared" "3.5.11" - entities "^4.5.0" - estree-walker "^2.0.2" - source-map-js "^1.2.0" - -"@vue/compiler-dom@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.11.tgz#950f8fc610e26326fed008b8d102cc8ee78a6ce5" - integrity sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew== - dependencies: - "@vue/compiler-core" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/compiler-sfc@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.11.tgz#68ba7bc6fed4fec6892aed118cb3ee8e4b180d06" - integrity sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw== - dependencies: - "@babel/parser" "^7.25.3" - "@vue/compiler-core" "3.5.11" - "@vue/compiler-dom" "3.5.11" - "@vue/compiler-ssr" "3.5.11" - "@vue/shared" "3.5.11" - estree-walker "^2.0.2" - magic-string "^0.30.11" - postcss "^8.4.47" - source-map-js "^1.2.0" - -"@vue/compiler-ssr@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.11.tgz#02d9891c7a649bbf06490ecd8d24dd1575d53e60" - integrity sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA== - dependencies: - "@vue/compiler-dom" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.6.4": - version "6.6.4" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343" - integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== - -"@vue/reactivity@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.11.tgz#d27df4fba10c2de1c7234701f18247a775b7a391" - integrity sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w== - dependencies: - "@vue/shared" "3.5.11" - -"@vue/runtime-core@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.11.tgz#7beccd013efe5d33981ffd6b6e05d0a5b9058316" - integrity sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA== - dependencies: - "@vue/reactivity" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/runtime-dom@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.11.tgz#14a3181ab7057de41b345b4b3d37b744b3ff8ff5" - integrity sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ== - dependencies: - "@vue/reactivity" "3.5.11" - "@vue/runtime-core" "3.5.11" - "@vue/shared" "3.5.11" - csstype "^3.1.3" - -"@vue/server-renderer@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.11.tgz#74f558371dfc39f3b0f26f95d089a1a4d1676027" - integrity sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA== - dependencies: - "@vue/compiler-ssr" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/shared@3.5.11": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.11.tgz#464b840afc89be9373addff9eeb9dfc98bf3fe2e" - integrity sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ== - -"@vue/test-utils@^2.4.4": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.6.tgz#7d534e70c4319d2a587d6a3b45a39e9695ade03c" - integrity sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow== - dependencies: - js-beautify "^1.14.9" - vue-component-type-helpers "^2.0.0" - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.3.2: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.12.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -archiver-utils@^5.0.0, archiver-utils@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" - integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== - dependencies: - glob "^10.0.0" - graceful-fs "^4.2.0" - is-stream "^2.0.1" - lazystream "^1.0.0" - lodash "^4.17.15" - normalize-path "^3.0.0" - readable-stream "^4.0.0" - -archiver@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" - integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== - dependencies: - archiver-utils "^5.0.2" - async "^3.2.4" - buffer-crc32 "^1.0.0" - readable-stream "^4.0.0" - readdir-glob "^1.1.2" - tar-stream "^3.0.0" - zip-stream "^6.0.1" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array.prototype.findlastindex@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - 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" - -array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -async@^3.2.4: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -autoprefixer@^10.4.2: - version "10.4.20" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" - integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== - dependencies: - browserslist "^4.23.3" - caniuse-lite "^1.0.30001646" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.1" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axios@^1.7.4: - version "1.7.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" - integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -b4a@^1.6.4: - version "1.6.7" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" - integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== - -babel-loader@^9.1.2: - version "9.2.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" - integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-module-resolver@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz#cdeac5d4aaa3b08dd1ac23ddbf516660ed2d293e" - integrity sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg== - dependencies: - find-babel-config "^2.1.1" - glob "^9.3.3" - pkg-up "^3.1.0" - reselect "^4.1.7" - resolve "^1.22.8" - -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.6: - version "0.10.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" - integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - core-js-compat "^3.38.0" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bare-events@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.5.0.tgz#305b511e262ffd8b9d5616b056464f8e1b3329cc" - integrity sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.23.3, browserslist@^4.24.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" - integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== - dependencies: - caniuse-lite "^1.0.30001663" - electron-to-chromium "^1.5.28" - node-releases "^2.0.18" - update-browserslist-db "^1.1.0" - -buffer-builder@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f" - integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg== - -buffer-crc32@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" - integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" - integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== - dependencies: - semver "^7.0.0" - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: - version "1.0.30001667" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" - integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== - -chai@^4.3.10: - version "4.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" - integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.1.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chart.js@^4.4.1: - version "4.4.4" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.4.tgz#b682d2e7249f7a0cbb1b1d31c840266ae9db64b7" - integrity sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA== - dependencies: - "@kurkle/color" "^0.3.0" - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -chokidar@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" - integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== - -clean-css@~5.3.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorjs.io@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef" - integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -compress-commons@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" - integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== - dependencies: - crc-32 "^1.2.0" - crc32-stream "^6.0.0" - is-stream "^2.0.1" - normalize-path "^3.0.0" - readable-stream "^4.0.0" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -confbox@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" - integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== - -config-chain@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0, cookie@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - -core-js-compat@^3.38.0, core-js-compat@^3.38.1, core-js-compat@^3.6.5: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" - integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== - dependencies: - browserslist "^4.23.3" - -core-js@^3.35.1, core-js@^3.6.5: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e" - integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -crc32-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" - integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== - dependencies: - crc-32 "^1.2.0" - readable-stream "^4.0.0" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== - dependencies: - ms "^2.1.3" - -decode-uri-component@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz#2ac4859663c704be22bf7db760a1494a49ab2cc5" - integrity sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ== - -deep-eql@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" - integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== - dependencies: - type-detect "^4.0.0" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-9.0.0.tgz#bae5982fe6dc6b8fddb92efef4f2ddff26779e92" - integrity sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ== - dependencies: - type-fest "^4.18.2" - -dot-prop@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-8.0.2.tgz#afda6866610684dd155a96538f8efcdf78a27f18" - integrity sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== - dependencies: - type-fest "^3.8.0" - -dotenv-expand@^11.0.6: - version "11.0.6" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.6.tgz#f2c840fd924d7c77a94eff98f153331d876882d3" - integrity sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g== - dependencies: - dotenv "^16.4.4" - -dotenv@^16.4.4, dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -editorconfig@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3" - integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q== - dependencies: - "@one-ini/wasm" "0.1.1" - commander "^10.0.0" - minimatch "9.0.1" - semver "^7.5.3" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.5.28: - version "1.5.33" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz#8f64698661240e70fdbc4b032e6085e391f05e09" - integrity sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA== - -elementtree@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" - integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== - dependencies: - sax "1.1.4" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -entities@^4.4.0, entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild@^0.21.3: - version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - -esbuild@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" - integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.23.1" - "@esbuild/android-arm" "0.23.1" - "@esbuild/android-arm64" "0.23.1" - "@esbuild/android-x64" "0.23.1" - "@esbuild/darwin-arm64" "0.23.1" - "@esbuild/darwin-x64" "0.23.1" - "@esbuild/freebsd-arm64" "0.23.1" - "@esbuild/freebsd-x64" "0.23.1" - "@esbuild/linux-arm" "0.23.1" - "@esbuild/linux-arm64" "0.23.1" - "@esbuild/linux-ia32" "0.23.1" - "@esbuild/linux-loong64" "0.23.1" - "@esbuild/linux-mips64el" "0.23.1" - "@esbuild/linux-ppc64" "0.23.1" - "@esbuild/linux-riscv64" "0.23.1" - "@esbuild/linux-s390x" "0.23.1" - "@esbuild/linux-x64" "0.23.1" - "@esbuild/netbsd-x64" "0.23.1" - "@esbuild/openbsd-arm64" "0.23.1" - "@esbuild/openbsd-x64" "0.23.1" - "@esbuild/sunos-x64" "0.23.1" - "@esbuild/win32-arm64" "0.23.1" - "@esbuild/win32-ia32" "0.23.1" - "@esbuild/win32-x64" "0.23.1" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-compat-utils@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" - integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== - dependencies: - semver "^7.5.4" - -eslint-config-standard@^17.0.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" - integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== - dependencies: - debug "^3.2.7" - -eslint-plugin-es-x@^7.5.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" - integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== - dependencies: - "@eslint-community/eslint-utils" "^4.1.2" - "@eslint-community/regexpp" "^4.11.0" - eslint-compat-utils "^0.5.1" - -eslint-plugin-import@^2.19.1: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== - dependencies: - "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" - hasown "^2.0.2" - is-core-module "^2.15.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.8" - object.groupby "^1.0.3" - object.values "^1.2.0" - semver "^6.3.1" - string.prototype.trimend "^1.0.8" - tsconfig-paths "^3.15.0" - -eslint-plugin-n@^16.6.2: - version "16.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#6a60a1a376870064c906742272074d5d0b412b0b" - integrity sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - builtins "^5.0.1" - eslint-plugin-es-x "^7.5.0" - get-tsconfig "^4.7.0" - globals "^13.24.0" - ignore "^5.2.4" - is-builtin-module "^3.2.1" - is-core-module "^2.12.1" - minimatch "^3.1.2" - resolve "^1.22.2" - semver "^7.5.3" - -eslint-plugin-promise@^6.0.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a" - integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ== - -eslint-plugin-vue@^9.0.0: - version "9.28.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz#e4412f0c1024bafd15ffeaa6f76f4c99152e2765" - integrity sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - globals "^13.24.0" - natural-compare "^1.4.0" - nth-check "^2.1.1" - postcss-selector-parser "^6.0.15" - semver "^7.6.3" - vue-eslint-parser "^9.4.3" - xml-name-validator "^4.0.0" - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1, eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.11.0: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.0, esquery@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -estree-walker@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" - integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - dependencies: - "@types/estree" "^1.0.0" - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - -express@^4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" - integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.10" - proxy-addr "~2.0.7" - qs "6.13.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-fifo@^1.2.0, fast-fifo@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - -fast-glob@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-uri@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024" - integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-5.1.0.tgz#5bd89676000a713d7db2e197f660274428e524ed" - integrity sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng== - -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== - dependencies: - debug "2.6.9" - encodeurl "~2.0.0" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-babel-config@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.1.2.tgz#2841b1bfbbbcdb971e1e39df8cbc43dafa901716" - integrity sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg== - dependencies: - json5 "^2.2.3" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-tsconfig@^4.7.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" - integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== - dependencies: - resolve-pkg-maps "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-regex@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/glob-regex/-/glob-regex-0.3.2.tgz#27348f2f60648ec32a4a53137090b9fb934f3425" - integrity sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw== - -glob@^10.0.0, glob@^10.3.10, glob@^10.3.3: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^9.3.3: - version "9.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0, globals@^13.24.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -happy-dom@^15.0.0: - version "15.7.4" - resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-15.7.4.tgz#05aade59c1d307336001b7004c76dfc6a829f220" - integrity sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ== - dependencies: - entities "^4.5.0" - webidl-conversions "^7.0.0" - whatwg-mimetype "^3.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -html-minifier-terser@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" - integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== - dependencies: - camel-case "^4.1.2" - clean-css "~5.3.2" - commander "^10.0.0" - entities "^4.4.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.15.1" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -immutable@^4.0.0: - version "4.3.7" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" - integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@^9.3.6: - version "9.3.7" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.3.7.tgz#0b562bf843812208844741c9aec9244c939b83d4" - integrity sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w== - dependencies: - "@inquirer/figures" "^1.0.3" - ansi-escapes "^4.3.2" - cli-width "^4.1.0" - external-editor "^3.1.0" - mute-stream "1.0.0" - ora "^5.4.1" - run-async "^3.0.0" - rxjs "^7.8.1" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" - integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== - dependencies: - hasown "^2.0.2" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.2.tgz#fe6e4dfe2e34e947ffa240c113444876ba393ae0" - integrity sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -js-beautify@^1.14.9: - version "1.15.1" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.15.1.tgz#4695afb508c324e1084ee0b952a102023fc65b64" - integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA== - dependencies: - config-chain "^1.1.13" - editorconfig "^1.0.4" - glob "^10.3.3" - js-cookie "^3.0.5" - nopt "^7.2.0" - -js-cookie@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" - integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-9.0.0.tgz#0f893996d6f3ed46df7f0a3b12a03f5fd84223c1" - integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^3.0.2, jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kolorist@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" - integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== - -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -local-pkg@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" - integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== - dependencies: - mlly "^1.4.2" - pkg-types "^1.0.3" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loupe@^2.3.6, loupe@^2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -magic-string@^0.30.11, magic-string@^0.30.5: - version "0.30.11" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" - integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.4: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2": - version "1.53.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" - integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -minimatch@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -mlly@^1.4.2, mlly@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0" - integrity sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA== - dependencies: - acorn "^8.12.1" - pathe "^1.1.2" - pkg-types "^1.2.0" - ufo "^1.5.4" - -moment@^2.30.1: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== - -nopt@^7.2.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" - integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== - dependencies: - abbrev "^2.0.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -nth-check@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.fromentries@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.values@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" - integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^3.1.0" - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - 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" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-limit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" - integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1, path-scurry@^1.6.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" - integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== - -pathe@^1.1.1, pathe@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" - integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -pkg-types@^1.0.3, pkg-types@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5" - integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw== - dependencies: - confbox "^0.1.8" - mlly "^1.7.2" - pathe "^1.1.2" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-selector-parser@^6.0.15: - version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.4.14, postcss@^8.4.43, postcss@^8.4.47: - version "8.4.47" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" - integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== - dependencies: - nanoid "^3.3.7" - picocolors "^1.1.0" - source-map-js "^1.2.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -qs@6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" - -quasar@^2.16.6: - version "2.17.0" - resolved "https://registry.yarnpkg.com/quasar/-/quasar-2.17.0.tgz#af92f90e8d6571479745eeb6bed20b1e0a40e789" - integrity sha512-xFWwCt4FGuaC0M4/MA5drjBiCP7kj/5BsUPv2+dDIlyQG9YGvKIewCnWYYt02r4ijRqJSzPb7TsH89Gzkno1Mg== - -query-string@^8.1.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-8.2.0.tgz#f0b0ef6caa85f525dbdb745a67d3f8c08d71cc6b" - integrity sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g== - dependencies: - decode-uri-component "^0.4.1" - filter-obj "^5.1.0" - split-on-first "^3.0.0" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue-tick@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" - integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.0.5: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" - integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - -readdir-glob@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" - integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== - dependencies: - minimatch "^5.1.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -recrawl-sync@^2.0.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recrawl-sync/-/recrawl-sync-2.2.3.tgz#757adcdaae4799466dde5b8ee52122ff9636dfb1" - integrity sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ== - dependencies: - "@cush/relative" "^1.0.0" - glob-regex "^0.3.0" - slash "^3.0.0" - sucrase "^3.20.3" - tslib "^1.9.3" - -regenerate-unicode-properties@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" - integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" - integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.2" - -regexpu-core@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" - integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.0" - regjsgen "^0.8.0" - regjsparser "^0.11.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsgen@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" - integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== - -regjsparser@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.1.tgz#ae55c74f646db0c8fcb922d4da635e33da405149" - integrity sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ== - dependencies: - jsesc "~3.0.2" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -reselect@^4.1.7: - version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve@^1.14.2, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-visualizer@^5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" - integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - -rollup@^4.20.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.0.tgz#c14a3576f20622ea6a5c9cad7caca5e6e9555d05" - integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.24.0" - "@rollup/rollup-android-arm64" "4.24.0" - "@rollup/rollup-darwin-arm64" "4.24.0" - "@rollup/rollup-darwin-x64" "4.24.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" - "@rollup/rollup-linux-arm-musleabihf" "4.24.0" - "@rollup/rollup-linux-arm64-gnu" "4.24.0" - "@rollup/rollup-linux-arm64-musl" "4.24.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" - "@rollup/rollup-linux-riscv64-gnu" "4.24.0" - "@rollup/rollup-linux-s390x-gnu" "4.24.0" - "@rollup/rollup-linux-x64-gnu" "4.24.0" - "@rollup/rollup-linux-x64-musl" "4.24.0" - "@rollup/rollup-win32-arm64-msvc" "4.24.0" - "@rollup/rollup-win32-ia32-msvc" "4.24.0" - "@rollup/rollup-win32-x64-msvc" "4.24.0" - fsevents "~2.3.2" - -run-applescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" - integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== - -run-async@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" - integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.4.0, rxjs@^7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-embedded-android-arm64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.79.4.tgz#09ac7ff705a6674a4eed7302fe6e3a4c7070d875" - integrity sha512-0JAZ8TtXYv9yI3Yasaq03xvo7DLJOmD+Exb30oJKxXcWTAV9TB0ZWKoIRsFxbCyPxyn7ouxkaCEXQtaTRKrmfw== - -sass-embedded-android-arm@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.79.4.tgz#500451bbaec62f38761c9534033cbc1190b5fdd3" - integrity sha512-YOVpDGDcwWUQvktpJhYo4zOkknDpdX6ALpaeHDTX6GBUvnZfx+Widh76v+QFUhiJQ/I/hndXg1jv/PKilOHRrw== - -sass-embedded-android-ia32@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.79.4.tgz#29d0b07a56362c3d7e40dc5f1e7a08e1d07f0483" - integrity sha512-IjO3RoyvNN84ZyfAR5s/a8TIdNPfClb7CLGrswB3BN/NElYIJUJMVHD6+Y8W9QwBIZ8DrK1IdLFSTV8nn82xMA== - -sass-embedded-android-riscv64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.79.4.tgz#0ac6efa88497877bc6f9128498f7cef3d5979e5f" - integrity sha512-uOT8nXmKxSwuIdcqvElVWBFcm/+YcIvmwfoKbpuuSOSxUe9eqFzxo+fk7ILhynzf6FBlvRUH5DcjGj+sXtCc3w== - -sass-embedded-android-x64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.79.4.tgz#1c80ac24b5322a8c5322369cae2dc39df018f834" - integrity sha512-W2FQoj3Z2J2DirNs3xSBVvrhMuqLnsqvOPulxOkhL/074+faKOZZnPx2tZ5zsHbY97SonciiU0SV0mm98xI42w== - -sass-embedded-darwin-arm64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.79.4.tgz#2e8761be8fd2bdb2bbfde32b3a796840712c7d55" - integrity sha512-pcYtbN1VUAAcfgyHeX8ySndDWGjIvcq6rldduktPbGGuAlEWFDfnwjTbv0hS945ggdzZ6TFnaFlLEDr0SjKzBA== - -sass-embedded-darwin-x64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.79.4.tgz#86566e0804d0e3d5da88270e179a74b4fea51cf0" - integrity sha512-ir8CFTfc4JLx/qCP8LK1/3pWv35nRyAQkUK7lBIKM6hWzztt64gcno9rZIk4SpHr7Z/Bp1IYWWRS4ZT+4HmsbA== - -sass-embedded-linux-arm64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.79.4.tgz#eeb141c86bf4698decbade5e8e9f7f21df1884f8" - integrity sha512-XIVn2mCuA422SR2kmKjF6jhjMs1Vrt1DbZ/ktSp+eR0sU4ugu2htg45GajiUFSKKRj7Sc+cBdThq1zPPsDLf1w== - -sass-embedded-linux-arm@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.79.4.tgz#20beecc8632d958057cef8c11ba2f914e0844545" - integrity sha512-H/XEE3rY7c+tY0qDaELjPjC6VheAhBo1tPJQ6UHoBEf8xrbT/RT3dWiIS8grp9Vk54RCn05BEB/+POaljvvKGA== - -sass-embedded-linux-ia32@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.79.4.tgz#63a3976753c12a7665be5abc0ecdbbc8000a421d" - integrity sha512-3nqZxV4nuUTb1ahLexVl4hsnx1KKwiGdHEf1xHWTZai6fYFMcwyNPrHySCQzFHqb5xiqSpPzzrKjuDhF6+guuQ== - -sass-embedded-linux-musl-arm64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.79.4.tgz#ec9bdb7a4f304b3f7e3f15bf74b041b2aa70bf37" - integrity sha512-C6qX06waPEfDgOHR8jXoYxl0EtIXOyBDyyonrLO3StRjWjGx7XMQj2hA/KXSsV+Hr71fBOsaViosqWXPzTbEiQ== - -sass-embedded-linux-musl-arm@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.79.4.tgz#95eb1727e83a460573f7bf03d285aa1b3e40d6ba" - integrity sha512-HnbU1DEiQdUayioNzxh2WlbTEgQRBPTgIIvof8J63QLmVItUqE7EkWYkSUy4RhO+8NsuN9wzGmGTzFBvTImU7g== - -sass-embedded-linux-musl-ia32@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.79.4.tgz#28f07c73be0179ef81bfdcf2cc031c4ae6534195" - integrity sha512-y5b0fdOPWyhj4c+mc88GvQiC5onRH1V0iNaWNjsiZ+L4hHje6T98nDLrCJn0fz5GQnXjyLCLZduMWbfV0QjHGg== - -sass-embedded-linux-musl-riscv64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.79.4.tgz#143e8f1455f5c0869994f3de1958f1b9be324701" - integrity sha512-G2M5ADMV9SqnkwpM0S+UzDz7xR2njCOhofku/sDMZABzAjQQWTsAykKoGmzlT98fTw2HbNhb6u74umf2WLhCfw== - -sass-embedded-linux-musl-x64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.79.4.tgz#c26720b1497bbbbf55b54138ffb313257c5dbe19" - integrity sha512-kQm8dCU3DXf7DtUGWYPiPs03KJYKvFeiZJHhSx993DCM8D2b0wCXWky0S0Z46gf1sEur0SN4Lvnt1WczTqxIBw== - -sass-embedded-linux-riscv64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.79.4.tgz#648b70dbb749349ca0fb569280d05b5463bb4770" - integrity sha512-GaTI/mXYWYSzG5wxtM4H2cozLpATyh+4l+rO9FFKOL8e1sUOLAzTeRdU2nSBYCuRqsxRuTZIwCXhSz9Q3NRuNA== - -sass-embedded-linux-x64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.79.4.tgz#b84a99a2178bde7c984c244544688ab4a46869d6" - integrity sha512-f9laGkqHgC01h99Qt4LsOV+OLMffjvUcTu14hYWqMS9QVX5a4ihMwpf1NoAtTUytb7cVF3rYY/NVGuXt6G3ppQ== - -sass-embedded-win32-arm64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.79.4.tgz#2e60184cc5acf58f2004aa3a7eda4c27645d26b7" - integrity sha512-cidBvtaA2cJ6dNlwQEa8qak+ezypurzKs0h0QAHLH324+j/6Jum7LCnQhZRPYJBFjHl+WYd7KwzPnJ2X5USWnQ== - -sass-embedded-win32-ia32@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.79.4.tgz#b3b885cfd75eebfadbb78eacd0538fdac7c6fc5c" - integrity sha512-hexdmNTIZGTKNTzlMcdvEXzYuxOJcY89zqgsf45aQ2YMy4y2M8dTOxRI/Vz7p4iRxVp1Jow6LCtaLHrNI2Ordg== - -sass-embedded-win32-x64@1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.79.4.tgz#d240b1d43f36049124117e32958e42e02c4f6eac" - integrity sha512-73yrpiWIbti6DkxhWURklkgSLYKfU9itDmvHxB+oYSb4vQveIApqTwSyTOuIUb/6Da/EsgEpdJ4Lbj4sLaMZWA== - -sass-embedded@^1.79.1: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.79.4.tgz#45d52b9ca754c526763a1e255d4b98f788ff755b" - integrity sha512-3AATrtStMgxYjkit02/Ix8vx/P7qderYG6DHjmehfk5jiw53OaWVScmcGJSwp/d77kAkxDQ+Y0r+79VynGmrkw== - dependencies: - "@bufbuild/protobuf" "^2.0.0" - buffer-builder "^0.2.0" - colorjs.io "^0.5.0" - immutable "^4.0.0" - rxjs "^7.4.0" - supports-color "^8.1.1" - varint "^6.0.0" - optionalDependencies: - sass-embedded-android-arm "1.79.4" - sass-embedded-android-arm64 "1.79.4" - sass-embedded-android-ia32 "1.79.4" - sass-embedded-android-riscv64 "1.79.4" - sass-embedded-android-x64 "1.79.4" - sass-embedded-darwin-arm64 "1.79.4" - sass-embedded-darwin-x64 "1.79.4" - sass-embedded-linux-arm "1.79.4" - sass-embedded-linux-arm64 "1.79.4" - sass-embedded-linux-ia32 "1.79.4" - sass-embedded-linux-musl-arm "1.79.4" - sass-embedded-linux-musl-arm64 "1.79.4" - sass-embedded-linux-musl-ia32 "1.79.4" - sass-embedded-linux-musl-riscv64 "1.79.4" - sass-embedded-linux-musl-x64 "1.79.4" - sass-embedded-linux-riscv64 "1.79.4" - sass-embedded-linux-x64 "1.79.4" - sass-embedded-win32-arm64 "1.79.4" - sass-embedded-win32-ia32 "1.79.4" - sass-embedded-win32-x64 "1.79.4" - -sax@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" - integrity sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg== - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -send@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.19.0" - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4, side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -siginfo@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" - integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-js@^1.2.0, source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -split-on-first@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-3.0.0.tgz#f04959c9ea8101b9b0bbf35a61b9ebea784a23e7" - integrity sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA== - -stack-trace@^1.0.0-pre2: - version "1.0.0-pre2" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-1.0.0-pre2.tgz#46a83a79f1b287807e9aaafc6a5dd8bcde626f9c" - integrity sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A== - -stackback@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" - integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -std-env@^3.5.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== - -streamx@^2.15.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.20.1.tgz#471c4f8b860f7b696feb83d5b125caab2fdbb93c" - integrity sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA== - dependencies: - fast-fifo "^1.3.2" - queue-tick "^1.0.1" - text-decoder "^1.1.0" - optionalDependencies: - bare-events "^2.2.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1, string_decoder@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-literal@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-2.1.0.tgz#6d82ade5e2e74f5c7e8739b6c84692bd65f0bd2a" - integrity sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw== - dependencies: - js-tokens "^9.0.0" - -sucrase@^3.20.3: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tar-stream@^3.0.0: - version "3.1.7" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" - integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - -terser@^5.15.1: - version "5.34.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.34.1.tgz#af40386bdbe54af0d063e0670afd55c3105abeb6" - integrity sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-decoder@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.0.tgz#85f19d4d5088e0b45cd841bdfaeac458dbffeefc" - integrity sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg== - dependencies: - b4a "^1.6.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -tinybench@^2.5.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" - integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== - -tinypool@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" - integrity sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ== - -tinyspy@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" - integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -ts-essentials@^9.4.2: - version "9.4.2" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.4.2.tgz#6d4bd23b46b61bf3e031816cc887e839eb62c33c" - integrity sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -tsconfck@^3.0.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.3.tgz#a8202f51dab684c426314796cdb0bbd0fe0cdf80" - integrity sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ== - -tsconfig-paths@^3.15.0, tsconfig-paths@^3.9.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.1.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@^4.0.0, type-detect@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" - integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^3.8.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" - integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== - -type-fest@^4.18.2: - version "4.26.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" - integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -ufo@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" - integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~6.19.2: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" - integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" - integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" - integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vite-jsconfig-paths@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vite-jsconfig-paths/-/vite-jsconfig-paths-2.0.1.tgz#d66e36d67596dd8a8e4a6ed6e6db20debc50b45e" - integrity sha512-rabcTTfKs0MdAsQWcZjbIMo5fcp6jthZce7uFEPgVPgpSY+RNOwjzIJOPES6cB/GJZLSoLGfHM9kt5HNmJvp7A== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - recrawl-sync "^2.0.3" - tsconfig-paths "^3.9.0" - -vite-node@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.6.0.tgz#2c7e61129bfecc759478fa592754fd9704aaba7f" - integrity sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw== - dependencies: - cac "^6.7.14" - debug "^4.3.4" - pathe "^1.1.1" - picocolors "^1.0.0" - vite "^5.0.0" - -vite-tsconfig-paths@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz#321f02e4b736a90ff62f9086467faf4e2da857a9" - integrity sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - tsconfck "^3.0.3" - -vite@^5.0.0, vite@^5.4.5: - version "5.4.8" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8" - integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== - dependencies: - esbuild "^0.21.3" - postcss "^8.4.43" - rollup "^4.20.0" - optionalDependencies: - fsevents "~2.3.3" - -vitest@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.6.0.tgz#9d5ad4752a3c451be919e412c597126cffb9892f" - integrity sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA== - dependencies: - "@vitest/expect" "1.6.0" - "@vitest/runner" "1.6.0" - "@vitest/snapshot" "1.6.0" - "@vitest/spy" "1.6.0" - "@vitest/utils" "1.6.0" - acorn-walk "^8.3.2" - chai "^4.3.10" - debug "^4.3.4" - execa "^8.0.1" - local-pkg "^0.5.0" - magic-string "^0.30.5" - pathe "^1.1.1" - picocolors "^1.0.0" - std-env "^3.5.0" - strip-literal "^2.0.0" - tinybench "^2.5.1" - tinypool "^0.8.3" - vite "^5.0.0" - vite-node "1.6.0" - why-is-node-running "^2.2.2" - -vue-chartjs@^5.3.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/vue-chartjs/-/vue-chartjs-5.3.1.tgz#73484d569ec4994ba5accd30fe6714ef28e86f5b" - integrity sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A== - -vue-component-type-helpers@^2.0.0: - version "2.1.6" - resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-2.1.6.tgz#f350515b252ed9e76960ac51f135636f8baef3fe" - integrity sha512-ng11B8B/ZADUMMOsRbqv0arc442q7lifSubD0v8oDXIFoMg/mXwAPUunrroIDkY+mcD0dHKccdaznSVp8EoX3w== - -vue-eslint-parser@^9.4.3: - version "9.4.3" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" - integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -vue-router@^4.0.12: - version "4.4.5" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.4.5.tgz#bdf535e4cf32414ebdea6b4b403593efdb541388" - integrity sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q== - dependencies: - "@vue/devtools-api" "^6.6.4" - -vue@^3.0.0: - version "3.5.11" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.11.tgz#3e307183797629f701e303a0a008f517ae031483" - integrity sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg== - dependencies: - "@vue/compiler-dom" "3.5.11" - "@vue/compiler-sfc" "3.5.11" - "@vue/runtime-dom" "3.5.11" - "@vue/server-renderer" "3.5.11" - "@vue/shared" "3.5.11" - -vuex-map-fields@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/vuex-map-fields/-/vuex-map-fields-1.4.1.tgz#3f22f0c3d39e25968d3a74fc2b43738c23c4ae4d" - integrity sha512-jvIcpvoIPqwvJCOfRkPU9Rj0EbjWuk7GlNC5LXU9mCXVGZph6bWGHZssnoUzpLMxJtXQEHoVyZkKf7YQV+/bnQ== - -vuex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c" - integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ== - dependencies: - "@vue/devtools-api" "^6.0.0-beta.11" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-merge@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" - integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.1" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.14, which-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -why-is-node-running@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" - integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== - dependencies: - siginfo "^2.0.0" - stackback "0.0.2" - -wildcard@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.5.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" - integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== - -yoctocolors-cjs@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" - integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== - -zip-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" - integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== - dependencies: - archiver-utils "^5.0.0" - compress-commons "^6.0.2" - readable-stream "^4.0.0" +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@adobe/css-tools@npm:^4.4.0": + version: 4.4.2 + resolution: "@adobe/css-tools@npm:4.4.2" + checksum: 10c0/19433666ad18536b0ed05d4b53fbb3dd6ede266996796462023ec77a90b484890ad28a3e528cdf3ab8a65cb2fcdff5d8feb04db6bc6eed6ca307c40974239c94 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.2.1": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@asamuzakjp/css-color@npm:^3.1.1": + version: 3.1.1 + resolution: "@asamuzakjp/css-color@npm:3.1.1" + dependencies: + "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + lru-cache: "npm:^10.4.3" + checksum: 10c0/4abb010fd29de8acae8571eba738468c22cb45a1f77647df3c59a80f1c83d83d728cae3ebbf99e5c73f2517761abaaffbe5e4176fc46b5f9bf60f1478463b51e + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/compat-data@npm:7.26.8" + checksum: 10c0/66408a0388c3457fff1c2f6c3a061278dd7b3d2f0455ea29bb7b187fa52c60ae8b4054b3c0a184e21e45f0eaac63cf390737bc7504d1f4a088a6e7f652c068ca + languageName: node + linkType: hard + +"@babel/core@npm:^7.15.4, @babel/core@npm:^7.18.9, @babel/core@npm:^7.26.0": + version: 7.26.10 + resolution: "@babel/core@npm:7.26.10" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.10" + "@babel/helper-compilation-targets": "npm:^7.26.5" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.10" + "@babel/parser": "npm:^7.26.10" + "@babel/template": "npm:^7.26.9" + "@babel/traverse": "npm:^7.26.10" + "@babel/types": "npm:^7.26.10" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/e046e0e988ab53841b512ee9d263ca409f6c46e2a999fe53024688b92db394346fa3aeae5ea0866331f62133982eee05a675d22922a4603c3f603aa09a581d62 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/generator@npm:7.27.0" + dependencies: + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/7cb10693d2b365c278f109a745dc08856cae139d262748b77b70ce1d97da84627f79648cab6940d847392c0e5d180441669ed958b3aee98d9c7d274b37c553bd + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10c0/095b6ba50489d797733abebc4596a81918316a99e3632755c9f02508882912b00c2ae5e468532a25a5c2108d109ddbe9b7da78333ee7cc13817fc50c00cf06fe + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9, @babel/helper-compilation-targets@npm:^7.26.5": + version: 7.27.0 + resolution: "@babel/helper-compilation-targets@npm:7.27.0" + dependencies: + "@babel/compat-data": "npm:^7.26.8" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/375c9f80e6540118f41bd53dd54d670b8bf91235d631bdead44c8b313b26e9cd89aed5c6df770ad13a87a464497b5346bb72b9462ba690473da422f5402618b6 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.25.9, @babel/helper-create-class-features-plugin@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.27.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/c4945903136d934050e070f69a4d72ec425f1f70634e0ddf14ad36695f935125a6df559f8d5b94cc1ed49abd4ce9c5be8ef3ba033fa8d09c5dd78d1a9b97d8cc + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.27.0 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + regexpu-core: "npm:^6.2.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/62513522a43521d8a29285a47127694ec28d66d793cd156cf875cdee6a9b3a9a1626c43c1eb75ce18fa2bf5dc3140f0a8081a34feb24272ecf66084f3cc3b00a + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4": + version: 0.6.4 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.4" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b74f2b46e233a178618d19432bdae16e0137d0a603497ee901155e083c4a61f26fe01d79fb95d5f4c22131ade9d958d8f587088d412cca1302633587f070919d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/helper-plugin-utils@npm:7.26.5" + checksum: 10c0/cdaba71d4b891aa6a8dfbe5bac2f94effb13e5fa4c2c487667fdbaa04eae059b78b28d85a885071f45f7205aeb56d16759e1bed9c118b94b16e4720ef1ab0f65 + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-wrap-function": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.25.9, @babel/helper-replace-supers@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/helper-replace-supers@npm:7.26.5" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b19b1245caf835207aaaaac3a494f03a16069ae55e76a2e1350b5acd560e6a820026997a8160e8ebab82ae873e8208759aa008eb8422a67a775df41f0a4633d4 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" + dependencies: + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/helpers@npm:7.27.0" + dependencies: + "@babel/template": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + checksum: 10c0/a3c64fd2d8b164c041808826cc00769d814074ea447daaacaf2e3714b66d3f4237ef6e420f61d08f463d6608f3468c2ac5124ab7c68f704e20384def5ade95f4 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/parser@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.27.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/ba2ed3f41735826546a3ef2a7634a8d10351df221891906e59b29b0a0cd748f9b0e7a6f07576858a9de8e77785aad925c8389ddef146de04ea2842047c9d2859 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7aab47fcbb8c1ddc195a3cd66609edcad54c5022f018db7de40185f0182950389690e953e952f117a1737b72f665ff02ad30de6c02b49b97f1d8f4ccdffedc34 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/3a652b3574ca62775c5f101f8457950edc540c3581226579125da535d67765f41ad7f0e6327f8efeb2540a5dad5bb0c60a89fb934af3f67472e73fb63612d004 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/18fc9004104a150f9f5da9f3307f361bc3104d16778bb593b7523d5110f04a8df19a2587e6bdd5e726fb1d397191add45223f4f731bb556c33f14f2779d596e8 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/3f6c8781a2f7aa1791a31d2242399ca884df2ab944f90c020b6f112fb19f05fa6dad5be143d274dad1377e40415b63d24d5489faf5060b9c4a99e55d8f0c317c + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/02b365f0cc4df8b8b811c68697c93476da387841e5f153fe42766f34241b685503ea51110d5ed6df7132759820b93e48d9fa3743cffc091eed97c19f7e5fe272 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/525b174e60b210d96c1744c1575fc2ddedcc43a479cba64a5344cf77bd0541754fc58120b5a11ff832ba098437bb05aa80900d1f49bb3d888c5e349a4a3a356e + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.26.8" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f6fefce963fe2e6268dde1958975d7adbce65fba94ca6f4bc554c90da03104ad1dd2e66d03bc0462da46868498428646e30b03a218ef0e5a84bfc87a7e375cec + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.26.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2f3060800ead46b09971dd7bf830d66383b7bc61ced9945633b4ef9bf87787956ea83fcf49b387cecb377812588c6b81681714c760f9cf89ecba45edcbab1192 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.25.9": + version: 7.27.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.27.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/15a604fac04151a795ff3213c73ece06bda7cd5f7c8cb7a3b29563ab243f0b3f7cba9e6facfc9d70e3e63b21af32f9d26bd10ccc58e1c425c7801186014b5ce4 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/cdcf5545ae6514ed75fbd73cccfa209c6a5dfdf0c2bb7bb62c0fb4ec334a32281bcf1bc16ace494d9dbe93feb8bdc0bd3cf9d9ccb6316e634a67056fa13b741b + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7c3471ae5cf7521fd8da5b03e137e8d3733fc5ee4524ce01fb0c812f0bb77cb2c9657bc8a6253186be3a15bb4caa8974993c7ddc067f554ecc6a026f0a3b5e12 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d0c74894b9bf6ff2a04189afffb9cd43d87ebd7b7943e51a827c92d2aaa40fa89ac81565a2fd6fbeabf9e38413a9264c45862eee2b017f1d49046cc3c8ff06b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/a8039a6d2b90e011c7b30975edee47b5b1097cf3c2f95ec1f5ddd029898d783a995f55f7d6eb8d6bb8873c060fb64f9f1ccba938dfe22d118d09cf68e0cd3bf6 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5e643a8209072b668350f5788f23c64e9124f81f958b595c80fecca6561086d8ef346c04391b9e5e4cad8b8cbe22c258f0cd5f4ea89b97e74438e7d1abfd98cf + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.26.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cac922e851c6a0831fdd2e3663564966916015aeff7f4485825fc33879cbc3a313ceb859814c9200248e2875d65bb13802a723e5d7d7b40a2e90da82a5a1e15c + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.26.9": + version: 7.26.9 + resolution: "@babel/plugin-transform-for-of@npm:7.26.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e28a521521cf9f84ddd69ca8da7c89fb9f7aa38e4dea35742fe973e4e1d7c23f9cee1a4861a2fdd9e9f18ff945886a44d7335cea1c603b96bfcb1c7c8791ef09 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00bc2d4751dfc9d44ab725be16ee534de13cfd7e77dfb386e5dac9e48101ce8fcbc5971df919dc25b3f8a0fa85d6dc5f2a0c3cf7ec9d61c163d9823c091844f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/91d17b451bcc5ea9f1c6f8264144057ade3338d4b92c0b248366e4db3a7790a28fd59cc56ac433a9627a9087a17a5684e53f4995dd6ae92831cb72f1bd540b54 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/849957d9484d0a2d93331226ed6cf840cee7d57454549534c447c93f8b839ef8553eae9877f8f550e3c39f14d60992f91244b2e8e7502a46064b56c5d68ba855 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/82e59708f19f36da29531a64a7a94eabbf6ff46a615e0f5d9b49f3f59e8ef10e2bac607d749091508d3fa655146c9e5647c3ffeca781060cdabedb4c7a33c6f2 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8299e3437542129c2684b86f98408c690df27db4122a79edded4782cf04e755d6ecb05b1e812c81a34224a81e664303392d5f3c36f3d2d51fdc99bb91c881e9a + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fa11a621f023e2ac437b71d5582f819e667c94306f022583d77da9a8f772c4128861a32bbb63bef5cba581a70cd7dbe87a37238edaafcfacf889470c395e7076 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-new-target@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7b5f1b7998f1cf183a7fa646346e2f3742e5805b609f28ad5fee22d666a15010f3e398b7e1ab78cddb7901841a3d3f47135929af23d54e8bf4ce69b72051f71e + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.26.6": + version: 7.26.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/574d6db7cbc5c092db5d1dece8ce26195e642b9c40dbfeaf3082058a78ad7959c1c333471cdd45f38b784ec488850548075d527b178c5010ee9bff7aa527cc7a + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-super@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0348d00e76f1f15ada44481a76e8c923d24cba91f6e49ee9b30d6861eb75344e7f84d62a18df8a6f9e9a7eacf992f388174b7f9cc4ce48287bcefca268c07600 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-parameters@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1639e35b2438ccf3107af760d34e6a8e4f9acdd3ae6186ae771a6e3029bd59dfe778e502d67090f1185ecda5c16addfed77561e39c518a3f51ff10d41790e106 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/63a0f962d64e71baf87c212755419e25c637d2d95ea6fdc067df26b91e606ae186442ae815b99a577eca9bf5404d9577ecad218a3cf42d0e9e286ca7b003a992 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c0b92ff9eb029620abf320ff74aae182cea87524723d740fb48a4373d0d16bddf5edbe1116e7ba341332a5337e55c2ceaee8b8cad5549e78af7f4b3cfe77debb + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ce0e289f6af93d7c4dc6b385512199c5bb138ae61507b4d5117ba88b6a6b5092f704f1bdf80080b7d69b1b8c36649f2a0b250e8198667d4d30c08bbb1546bd99 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fc9ee08efc9be7cbd2cc6788bbf92579adf3cab37912481f1b915221be3d22b0613b5b36a721df5f4c0ab65efe8582fcf8673caab83e6e1ce4cc04ceebf57dfa + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c9947e8ed141f7606f54da3e05eea1074950c5b8354c39df69cb7f43cb5a83c6c9d7973b24bc3d89341c8611f8ad50830a98ab10d117d850e6bdd8febdce221 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.16.7, @babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7c8eac04644ad19dcd71bb8e949b0ae22b9e548fa4a58e545d3d0342f647fb89db7f8789a7c5b8074d478ce6d3d581eaf47dd4b36027e16fd68211c383839abc + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.25.9": + version: 7.27.0 + resolution: "@babel/plugin-transform-regenerator@npm:7.27.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/aa1c6a1592338df96034e0c3933d9c84d0ae25e9768413fda90d4896470192a11e2ab146dbcb92005c5059bbea67aea3d11936de8e4be382613efceafc9c92b5 + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4abc1db6c964efafc7a927cda814c7275275afa4b530483e0936fd614de23cb5802f7ca43edaa402008a723d4e7eac282b6f5283aa2eeb3b27da6d6c1dd7f8ed + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8b028b80d1983e3e02f74e21924323cc66ba930e5c5758909a122aa7d80e341b8b0f42e1698e42b50d47a6ba911332f584200b28e1a4e2104b7514d9dc011e96 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/plugin-transform-template-literals@npm:7.26.8" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/205a938ded9554857a604416d369023a961334b6c20943bd861b45f0e5dbbeca1cf6fda1c2049126e38a0d18865993433fdc78eae3028e94836b3b643c08ba0d + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.26.7": + version: 7.27.0 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00adbd4e044166ac291978bd64173b4a0d36cbcfae3495a196816dd16ba889cc8b5becee232086241d714cd67a80c15742402504fc36f6db4f746a7dd8d2b1c4 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/plugin-transform-typescript@npm:7.27.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.0" + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/028e75dd6195495dc2d105ca8ded19d62aef90a215d597451cee57c35325960a87963913aa9a21b8ade190c638b588422292ea7e23b21565baf53c469254dbd4 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/615c84d7c53e1575d54ba9257e753e0b98c5de1e3225237d92f55226eaab8eb5bceb74df43f50f4aa162b0bbcc934ed11feafe2b60b8ec4934ce340fad4b8828 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1685836fc38af4344c3d2a9edbd46f7c7b28d369b63967d5b83f2f6849ec45b97223461cea3d14cc3f0be6ebb284938e637a5ca3955c0e79c873d62f593d615c + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/56ee04fbe236b77cbcd6035cbf0be7566d1386b8349154ac33244c25f61170c47153a9423cd1d92855f7d6447b53a4a653d9e8fd1eaeeee14feb4b2baf59bd9f + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.16.11": + version: 7.26.9 + resolution: "@babel/preset-env@npm:7.26.9" + dependencies: + "@babel/compat-data": "npm:^7.26.8" + "@babel/helper-compilation-targets": "npm:^7.26.5" + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.26.0" + "@babel/plugin-syntax-import-attributes": "npm:^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-generator-functions": "npm:^7.26.8" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.9" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.26.5" + "@babel/plugin-transform-block-scoping": "npm:^7.25.9" + "@babel/plugin-transform-class-properties": "npm:^7.25.9" + "@babel/plugin-transform-class-static-block": "npm:^7.26.0" + "@babel/plugin-transform-classes": "npm:^7.25.9" + "@babel/plugin-transform-computed-properties": "npm:^7.25.9" + "@babel/plugin-transform-destructuring": "npm:^7.25.9" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.9" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.26.3" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-for-of": "npm:^7.26.9" + "@babel/plugin-transform-function-name": "npm:^7.25.9" + "@babel/plugin-transform-json-strings": "npm:^7.25.9" + "@babel/plugin-transform-literals": "npm:^7.25.9" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.9" + "@babel/plugin-transform-modules-amd": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-umd": "npm:^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-new-target": "npm:^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.26.6" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.9" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.9" + "@babel/plugin-transform-object-super": "npm:^7.25.9" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + "@babel/plugin-transform-private-methods": "npm:^7.25.9" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" + "@babel/plugin-transform-property-literals": "npm:^7.25.9" + "@babel/plugin-transform-regenerator": "npm:^7.25.9" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0" + "@babel/plugin-transform-reserved-words": "npm:^7.25.9" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" + "@babel/plugin-transform-spread": "npm:^7.25.9" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.9" + "@babel/plugin-transform-template-literals": "npm:^7.26.8" + "@babel/plugin-transform-typeof-symbol": "npm:^7.26.7" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.9" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.9" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.11.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.40.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6812ca76bd38165a58fe8354bab5e7204e1aa17d8b9270bd8f8babb08cc7fa94cd29525fe41b553f2ba0e84033d566f10da26012b8ee0f81897005c5225d0051 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.16.7": + version: 7.26.3 + resolution: "@babel/preset-react@npm:7.26.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b470dcba11032ef6c832066f4af5c75052eaed49feb0f445227231ef1b5c42aacd6e216988c0bd469fd5728cd27b6b059ca307c9ecaa80c6bb5da4bf1c833e12 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.16.7": + version: 7.27.0 + resolution: "@babel/preset-typescript@npm:7.27.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" + "@babel/plugin-transform-typescript": "npm:^7.27.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/986b20edab3c18727d911a6e1a14095c1271afc6cc625b02f42b371f06c1e041e5d7c1baf2afe8b0029b60788a06f02fd6844dedfe54183b148ab9a7429438a9 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.8.4": + version: 7.27.0 + resolution: "@babel/runtime@npm:7.27.0" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/35091ea9de48bd7fd26fb177693d64f4d195eb58ab2b142b893b7f3fa0f1d7c677604d36499ae0621a3703f35ba0c6a8f6c572cc8f7dc0317213841e493cf663 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/template@npm:7.27.0" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + checksum: 10c0/13af543756127edb5f62bf121f9b093c09a2b6fe108373887ccffc701465cfbcb17e07cf48aa7f440415b263f6ec006e9415c79dfc2e8e6010b069435f81f340 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/traverse@npm:7.27.0" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.27.0" + "@babel/parser": "npm:^7.27.0" + "@babel/template": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/c7af29781960dacaae51762e8bc6c4b13d6ab4b17312990fbca9fc38e19c4ad7fecaae24b1cf52fb844e8e6cdc76c70ad597f90e496bcb3cc0a1d66b41a0aa5b + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0, @babel/types@npm:^7.4.4": + version: 7.27.0 + resolution: "@babel/types@npm:7.27.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/6f1592eabe243c89a608717b07b72969be9d9d2fce1dee21426238757ea1fa60fdfc09b29de9e48d8104311afc6e6fb1702565a9cc1e09bc1e76f2b2ddb0f6e1 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@bconnorwhite/module@npm:^2.0.2": + version: 2.0.2 + resolution: "@bconnorwhite/module@npm:2.0.2" + dependencies: + find-up: "npm:^5.0.0" + read-json-safe: "npm:^1.0.5" + types-pkg-json: "npm:^1.1.0" + checksum: 10c0/3887f1cb8da19c4bc604d2b9ace6dc83e82b27f65282e81097a138824ab05f6a2313ac59f07882d687625c5607065789494902f47990c547f014fe67bb6120fa + languageName: node + linkType: hard + +"@bundled-es-modules/cookie@npm:^2.0.1": + version: 2.0.1 + resolution: "@bundled-es-modules/cookie@npm:2.0.1" + dependencies: + cookie: "npm:^0.7.2" + checksum: 10c0/dfac5e36127e827c5557b8577f17a8aa94c057baff6d38555917927b99da0ecf0b1357e7fedadc8853ecdbd4a8a7fa1f5e64111b2a656612f4a36376f5bdbe8d + languageName: node + linkType: hard + +"@bundled-es-modules/statuses@npm:^1.0.1": + version: 1.0.1 + resolution: "@bundled-es-modules/statuses@npm:1.0.1" + dependencies: + statuses: "npm:^2.0.1" + checksum: 10c0/c1a8ede3efa8da61ccda4b98e773582a9733edfbeeee569d4630785f8e018766202edb190a754a3ec7a7f6bd738e857829affc2fdb676b6dab4db1bb44e62785 + languageName: node + linkType: hard + +"@bundled-es-modules/tough-cookie@npm:^0.1.6": + version: 0.1.6 + resolution: "@bundled-es-modules/tough-cookie@npm:0.1.6" + dependencies: + "@types/tough-cookie": "npm:^4.0.5" + tough-cookie: "npm:^4.1.4" + checksum: 10c0/28bcac878bff6b34719ba3aa8341e9924772ee55de5487680ebe784981ec9fccb70ed5d46f563e2404855a04de606f9e56aa4202842d4f5835bc04a4fe820571 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@csstools/color-helpers@npm:^5.0.2": + version: 5.0.2 + resolution: "@csstools/color-helpers@npm:5.0.2" + checksum: 10c0/bebaddb28b9eb58b0449edd5d0c0318fa88f3cb079602ee27e88c9118070d666dcc4e09a5aa936aba2fde6ba419922ade07b7b506af97dd7051abd08dfb2959b + languageName: node + linkType: hard + +"@csstools/css-calc@npm:^2.1.2": + version: 2.1.2 + resolution: "@csstools/css-calc@npm:2.1.2" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/34ced30553968ef5d5f9e00e3b90b48c47480cf130e282e99d57ec9b09f803aab8bc06325683e72a1518b5e7180a3da8b533f1b462062757c21989a53b482e1a + languageName: node + linkType: hard + +"@csstools/css-color-parser@npm:^3.0.8": + version: 3.0.8 + resolution: "@csstools/css-color-parser@npm:3.0.8" + dependencies: + "@csstools/color-helpers": "npm:^5.0.2" + "@csstools/css-calc": "npm:^2.1.2" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/90722c5a62ca94e9d578ddf59be604a76400b932bd3d4bd23cb1ae9b7ace8fcf83c06995d2b31f96f4afef24a7cefba79beb11ed7ee4999d7ecfec3869368359 + languageName: node + linkType: hard + +"@csstools/css-parser-algorithms@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/d411f07765e14eede17bccc6bd4f90ff303694df09aabfede3fd104b2dfacfd4fe3697cd25ddad14684c850328f3f9420ebfa9f78380892492974db24ae47dbd + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-tokenizer@npm:3.0.3" + checksum: 10c0/c31bf410e1244b942e71798e37c54639d040cb59e0121b21712b40015fced2b0fb1ffe588434c5f8923c9cd0017cfc1c1c8f3921abc94c96edf471aac2eba5e5 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.4.0": + version: 1.4.0 + resolution: "@emnapi/core@npm:1.4.0" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.1" + tslib: "npm:^2.4.0" + checksum: 10c0/ff971bc2544bdbd97a981072baedae6241372971996f39402d113cc21bb0d5c6eaca4a5ce9f4ca7d2106e9a6325a6170b1b86680466f9c663b1a33ecdbb98fc7 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.0": + version: 1.4.0 + resolution: "@emnapi/runtime@npm:1.4.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/9c57c0fd6af62bec771bdbe7615571a484656f5c73758e7766ffb5b7f42c6877128a7d0dc84b12e0aee40f5113fddb309a65d1b3128d57a9db79f963cb327ffe + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.1": + version: 1.0.1 + resolution: "@emnapi/wasi-threads@npm:1.0.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/1e0c8036b8d53e9b07cc9acf021705ef6c86ab6b13e1acda7fffaf541a2d3565072afb92597419173ced9ea14f6bf32fce149106e669b5902b825e8b499e5c6c + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/aix-ppc64@npm:0.25.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-arm64@npm:0.25.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-arm@npm:0.25.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-x64@npm:0.25.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/darwin-arm64@npm:0.25.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/darwin-x64@npm:0.25.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/freebsd-arm64@npm:0.25.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/freebsd-x64@npm:0.25.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-arm64@npm:0.25.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-arm@npm:0.25.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-ia32@npm:0.25.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-loong64@npm:0.25.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-mips64el@npm:0.25.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-ppc64@npm:0.25.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-riscv64@npm:0.25.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-s390x@npm:0.25.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-x64@npm:0.25.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/netbsd-arm64@npm:0.25.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/netbsd-x64@npm:0.25.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/openbsd-arm64@npm:0.25.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/openbsd-x64@npm:0.25.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/sunos-x64@npm:0.25.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-arm64@npm:0.25.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-ia32@npm:0.25.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-x64@npm:0.25.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.5.1 + resolution: "@eslint-community/eslint-utils@npm:4.5.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/b520ae1b7bd04531a5c5da2021071815df4717a9f7d13720e3a5ddccf5c9c619532039830811fcbae1c2f1c9d133e63af2435ee69e0fc0fabbd6d928c6800fb2 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.20.0": + version: 0.20.0 + resolution: "@eslint/config-array@npm:0.20.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/94bc5d0abb96dc5295ff559925242ff75a54eacfb3576677e95917e42f7175e1c4b87bf039aa2a872f949b4852ad9724bf2f7529aaea6b98f28bb3fca7f1d659 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.2.0": + version: 0.2.1 + resolution: "@eslint/config-helpers@npm:0.2.1" + checksum: 10c0/3e829a78b0bb4f7c44384ba1df3986e5de24b7f440ad5c6bb3cfc366ded773a869ca9ee8d212b5a563ae94596c5940dea6fd2ea1ee53a84c6241ac953dcb8bb7 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.12.0": + version: 0.12.0 + resolution: "@eslint/core@npm:0.12.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/d032af81195bb28dd800c2b9617548c6c2a09b9490da3c5537fd2a1201501666d06492278bb92cfccac1f7ac249e58601dd87f813ec0d6a423ef0880434fa0c3 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.13.0": + version: 0.13.0 + resolution: "@eslint/core@npm:0.13.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/ba724a7df7ed9dab387481f11d0d0f708180f40be93acce2c21dacca625c5867de3528760c42f1c457ccefe6a669d525ff87b779017eabc0d33479a36300797b + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/b0e63f3bc5cce4555f791a4e487bf999173fcf27c65e1ab6e7d63634d8a43b33c3693e79f192cbff486d7df1be8ebb2bd2edc6e70ddd486cbfa84a359a3e3b41 + languageName: node + linkType: hard + +"@eslint/js@npm:9.24.0, @eslint/js@npm:^9.23.0": + version: 9.24.0 + resolution: "@eslint/js@npm:9.24.0" + checksum: 10c0/efe22e29469e4140ac3e2916be8143b1bcfd1084a6edf692b7a58a3e54949d53c67f7f979bc0a811db134d9cc1e7bff8aa71ef1376b47eecd7e226b71206bb36 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10c0/b8cdb7edea5bc5f6a96173f8d768d3554a628327af536da2fc6967a93b040f2557114d98dbcdbf389d5a7b290985ad6a9ce5babc547f36fc1fde42e674d11a56 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.7": + version: 0.2.8 + resolution: "@eslint/plugin-kit@npm:0.2.8" + dependencies: + "@eslint/core": "npm:^0.13.0" + levn: "npm:^0.4.1" + checksum: 10c0/554847c8f2b6bfe0e634f317fc43d0b54771eea0015c4f844f75915fdb9e6170c830c004291bad57db949d61771732e459f36ed059f45cf750af223f77357c5c + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.6.0": + version: 1.6.9 + resolution: "@floating-ui/core@npm:1.6.9" + dependencies: + "@floating-ui/utils": "npm:^0.2.9" + checksum: 10c0/77debdfc26bc36c6f5ae1f26ab3c15468215738b3f5682af4e1915602fa21ba33ad210273f31c9d2da1c531409929e1afb1138b1608c6b54a0f5853ee84c340d + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0": + version: 1.6.13 + resolution: "@floating-ui/dom@npm:1.6.13" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.9" + checksum: 10c0/272242d2eb6238ffcee0cb1f3c66e0eafae804d5d7b449db5ecf904bc37d31ad96cf575a9e650b93c1190f64f49a684b1559d10e05ed3ec210628b19116991a9 + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.0, @floating-ui/react-dom@npm:^2.1.2": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/e855131c74e68cab505f7f44f92cd4e2efab1c125796db3116c54c0859323adae4bf697bf292ee83ac77b9335a41ad67852193d7aeace90aa2e1c4a640cafa60 + languageName: node + linkType: hard + +"@floating-ui/react@npm:^0.26.25": + version: 0.26.28 + resolution: "@floating-ui/react@npm:0.26.28" + dependencies: + "@floating-ui/react-dom": "npm:^2.1.2" + "@floating-ui/utils": "npm:^0.2.8" + tabbable: "npm:^6.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/a42df129e1e976fe8ba3f4c8efdda265a0196c1b66b83f2b9b27423d08dcc765406f893aeff9d830e70e3f14a9d4c490867eb4c32983317cbaa33863b0fae6f6 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.8, @floating-ui/utils@npm:^0.2.9": + version: 0.2.9 + resolution: "@floating-ui/utils@npm:0.2.9" + checksum: 10c0/48bbed10f91cb7863a796cc0d0e917c78d11aeb89f98d03fc38d79e7eb792224a79f538ed8a2d5d5584511d4ca6354ef35f1712659fd569868e342df4398ad6f + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 10c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.2 + resolution: "@humanwhocodes/retry@npm:0.4.2" + checksum: 10c0/0235525d38f243bee3bf8b25ed395fbf957fb51c08adae52787e1325673071abe856c7e18e530922ed2dd3ce12ed82ba01b8cee0279ac52a3315fcdc3a69ef0c + languageName: node + linkType: hard + +"@inquirer/confirm@npm:^5.0.0": + version: 5.1.9 + resolution: "@inquirer/confirm@npm:5.1.9" + dependencies: + "@inquirer/core": "npm:^10.1.10" + "@inquirer/type": "npm:^3.0.6" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/e35c134303f8151074479d6704c048676b2684debfde18a46ff0fb7585a3ee31dea551899ddcb48169fbef5dfe64c1948d2d8ac17a6939bedd31bb54c39bbea4 + languageName: node + linkType: hard + +"@inquirer/core@npm:^10.1.10": + version: 10.1.10 + resolution: "@inquirer/core@npm:10.1.10" + dependencies: + "@inquirer/figures": "npm:^1.0.11" + "@inquirer/type": "npm:^3.0.6" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + mute-stream: "npm:^2.0.0" + signal-exit: "npm:^4.1.0" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/8d0a3b725e42e40efbdc6ed087283795f1e36e642b119dd7dd3cbf31fce74bdbdb1b987da16159cd2475f45b2ede7e33293ae92bad3ac481832889c230df3fc0 + languageName: node + linkType: hard + +"@inquirer/figures@npm:^1.0.11, @inquirer/figures@npm:^1.0.3": + version: 1.0.11 + resolution: "@inquirer/figures@npm:1.0.11" + checksum: 10c0/6270e24eebbe42bbc4e7f8e761e906be66b4896787f31ab3e7484ad271c8edc90bce4ec20e232a5da447aee4fc73803397b2dda8cf645f4f7eea83e773b44e1e + languageName: node + linkType: hard + +"@inquirer/type@npm:^3.0.6": + version: 3.0.6 + resolution: "@inquirer/type@npm:3.0.6" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/92382c1b046559ddb16c53e1353a900a43266566a0d73902e5325433c640b6aaeaf3e34cc5b2a68fd089ff5d8add914d0b9875cdec64f7a09313f9c4420b021d + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@isaacs/string-locale-compare@npm:^1.1.0": + version: 1.1.0 + resolution: "@isaacs/string-locale-compare@npm:1.1.0" + checksum: 10c0/d67226ff7ac544a495c77df38187e69e0e3a0783724777f86caadafb306e2155dc3b5787d5927916ddd7fb4a53561ac8f705448ac3235d18ea60da5854829fdf + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.5.0": + version: 0.5.0 + resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.5.0" + dependencies: + glob: "npm:^10.0.0" + magic-string: "npm:^0.27.0" + react-docgen-typescript: "npm:^2.2.2" + peerDependencies: + typescript: ">= 4.3.x" + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/dd5bcd01c685c67bcfb4676639f15319937867ad5af0dc083991fe9ae9e66302c72fec53d12e0616a45eadb0ae715bea144d0302f408a44f1eeab14c5160ad4a + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@kurkle/color@npm:^0.3.0": + version: 0.3.4 + resolution: "@kurkle/color@npm:0.3.4" + checksum: 10c0/0e9fd55c614b005c5f0c4c755bca19ec0293bc7513b4ea3ec1725234f9c2fa81afbc78156baf555c8b9cb0d305619253c3f5bca016067daeebb3d00ebb4ea683 + languageName: node + linkType: hard + +"@mdx-js/react@npm:^2.1.5": + version: 2.3.0 + resolution: "@mdx-js/react@npm:2.3.0" + dependencies: + "@types/mdx": "npm:^2.0.0" + "@types/react": "npm:>=16" + peerDependencies: + react: ">=16" + checksum: 10c0/6d647115703dbe258f7fe372499fa8c6fe17a053ff0f2a208111c9973a71ae738a0ed376770445d39194d217e00e1a015644b24f32c2f7cb4f57988de0649b15 + languageName: node + linkType: hard + +"@mdx-js/react@npm:^3.0.0": + version: 3.1.0 + resolution: "@mdx-js/react@npm:3.1.0" + dependencies: + "@types/mdx": "npm:^2.0.0" + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 10c0/381ed1211ba2b8491bf0ad9ef0d8d1badcdd114e1931d55d44019d4b827cc2752586708f9c7d2f9c3244150ed81f1f671a6ca95fae0edd5797fb47a22e06ceca + languageName: node + linkType: hard + +"@mswjs/interceptors@npm:^0.37.0": + version: 0.37.6 + resolution: "@mswjs/interceptors@npm:0.37.6" + dependencies: + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/logger": "npm:^0.3.0" + "@open-draft/until": "npm:^2.0.0" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + strict-event-emitter: "npm:^0.5.1" + checksum: 10c0/74f52c09c84fcbba9f1a06e462aa25b1567cf078ed27d396c76a8059c002fa9c361e711dcada0ac2aad4298f247d8e236a4fcc861c08ddf6e2ce0889368596fd + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^0.2.8": + version: 0.2.8 + resolution: "@napi-rs/wasm-runtime@npm:0.2.8" + dependencies: + "@emnapi/core": "npm:^1.4.0" + "@emnapi/runtime": "npm:^1.4.0" + "@tybys/wasm-util": "npm:^0.9.0" + checksum: 10c0/814cc16dd04bf77c600d5ddcc93e389d11d6002e479e43200dee98f0d7fdb2f8655ba0988bbcbb5d9a27db3b53f51efe1dc46675d683aaef7a45a7bdbd742ed5 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 10c0/34ab85fdc2e0250879518841f74a30c276bca4f6c3e13526d2d1fe515e1adf6d46c25fcd5989d22ea056d76f7c39210945180b4859fc83b050e2da411aa86289 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + +"@npmcli/arborist@npm:^5.6.3": + version: 5.6.3 + resolution: "@npmcli/arborist@npm:5.6.3" + dependencies: + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + "@npmcli/map-workspaces": "npm:^2.0.3" + "@npmcli/metavuln-calculator": "npm:^3.0.1" + "@npmcli/move-file": "npm:^2.0.0" + "@npmcli/name-from-folder": "npm:^1.0.1" + "@npmcli/node-gyp": "npm:^2.0.0" + "@npmcli/package-json": "npm:^2.0.0" + "@npmcli/query": "npm:^1.2.0" + "@npmcli/run-script": "npm:^4.1.3" + bin-links: "npm:^3.0.3" + cacache: "npm:^16.1.3" + common-ancestor-path: "npm:^1.0.1" + hosted-git-info: "npm:^5.2.1" + json-parse-even-better-errors: "npm:^2.3.1" + json-stringify-nice: "npm:^1.1.4" + minimatch: "npm:^5.1.0" + mkdirp: "npm:^1.0.4" + mkdirp-infer-owner: "npm:^2.0.0" + nopt: "npm:^6.0.0" + npm-install-checks: "npm:^5.0.0" + npm-package-arg: "npm:^9.0.0" + npm-pick-manifest: "npm:^7.0.2" + npm-registry-fetch: "npm:^13.0.0" + npmlog: "npm:^6.0.2" + pacote: "npm:^13.6.1" + parse-conflict-json: "npm:^2.0.1" + proc-log: "npm:^2.0.0" + promise-all-reject-late: "npm:^1.0.0" + promise-call-limit: "npm:^1.0.1" + read-package-json-fast: "npm:^2.0.2" + readdir-scoped-modules: "npm:^1.1.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.0" + treeverse: "npm:^2.0.0" + walk-up-path: "npm:^1.0.0" + bin: + arborist: bin/index.js + checksum: 10c0/5647e68e8726f633d43e2d6a89c11568555aec2cd68035bf6b92f78a00e66e364e2b562f089e92b89a7c61abd5efca25f25347f00ce4bc6bc10133225b60c284 + languageName: node + linkType: hard + +"@npmcli/ci-detect@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/ci-detect@npm:2.0.0" + checksum: 10c0/a5871158bc2a6bb7a2d313fa56d4d1747486b1e7531da6b4f39e9a6e8188bb2faef212b5927bf13413a6f0a9ecebbaa849c26f5147eb1593e918c37a2c349634 + languageName: node + linkType: hard + +"@npmcli/config@npm:^4.2.1": + version: 4.2.2 + resolution: "@npmcli/config@npm:4.2.2" + dependencies: + "@npmcli/map-workspaces": "npm:^2.0.2" + ini: "npm:^3.0.0" + mkdirp-infer-owner: "npm:^2.0.0" + nopt: "npm:^6.0.0" + proc-log: "npm:^2.0.0" + read-package-json-fast: "npm:^2.0.3" + semver: "npm:^7.3.5" + walk-up-path: "npm:^1.0.0" + checksum: 10c0/d13f64301e06efe8c6fc4c5aaebc573f86092925564cb9eeaec077d121afca66c73f781d7e74b18d432694f44a86f7d86eb22925eb82e3c2ff57cd6d6948e59f + languageName: node + linkType: hard + +"@npmcli/disparity-colors@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/disparity-colors@npm:2.0.0" + dependencies: + ansi-styles: "npm:^4.3.0" + checksum: 10c0/a4aabb55fad40056b1101c2ab8bb761e0fb2733b8ad33248327f6840e5b4364b80d8aea3d3bd7f066b9ee709abc2ac87077a611c1803107a5a3b9b51ba49e7a1 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0, @npmcli/fs@npm:^2.1.1": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 10c0/c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + +"@npmcli/git@npm:^3.0.0": + version: 3.0.2 + resolution: "@npmcli/git@npm:3.0.2" + dependencies: + "@npmcli/promise-spawn": "npm:^3.0.0" + lru-cache: "npm:^7.4.4" + mkdirp: "npm:^1.0.4" + npm-pick-manifest: "npm:^7.0.0" + proc-log: "npm:^2.0.0" + promise-inflight: "npm:^1.0.1" + promise-retry: "npm:^2.0.1" + semver: "npm:^7.3.5" + which: "npm:^2.0.2" + checksum: 10c0/26c18d98d0bf060b82692f41919847d55c00224861abbd972f47b4ecbf2494ec3afddafb8dbf98442d972e8217e3a909f95d27d040feadc061f3e8f7ccc2e2bd + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^1.0.7": + version: 1.0.7 + resolution: "@npmcli/installed-package-contents@npm:1.0.7" + dependencies: + npm-bundled: "npm:^1.1.1" + npm-normalize-package-bin: "npm:^1.0.1" + bin: + installed-package-contents: index.js + checksum: 10c0/69c23b489ebfc90a28f6ee5293256bf6dae656292c8e13d52cd770fee2db2c9ecbeb7586387cd9006bc1968439edd5c75aeeb7d39ba0c8eb58905c3073bee067 + languageName: node + linkType: hard + +"@npmcli/map-workspaces@npm:^2.0.2, @npmcli/map-workspaces@npm:^2.0.3": + version: 2.0.4 + resolution: "@npmcli/map-workspaces@npm:2.0.4" + dependencies: + "@npmcli/name-from-folder": "npm:^1.0.1" + glob: "npm:^8.0.1" + minimatch: "npm:^5.0.1" + read-package-json-fast: "npm:^2.0.3" + checksum: 10c0/11ab7b357dbe7a06067405619b5c2f50e6176b1d392e97d715ebbb4e51357c7b3683fb59be273e3e689893d158362c050a4c358405af91d2243de6b0cf6129d6 + languageName: node + linkType: hard + +"@npmcli/metavuln-calculator@npm:^3.0.1": + version: 3.1.1 + resolution: "@npmcli/metavuln-calculator@npm:3.1.1" + dependencies: + cacache: "npm:^16.0.0" + json-parse-even-better-errors: "npm:^2.3.1" + pacote: "npm:^13.0.3" + semver: "npm:^7.3.5" + checksum: 10c0/92bd9e5f221639cc9f9580736898a30a7acfb21eb67f0c6c3cc63ff77cb25df18f2b359b47bee8b66afff871640eac693d8ba6779eab7f8977befc7ca09833cd + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10c0/11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d + languageName: node + linkType: hard + +"@npmcli/name-from-folder@npm:^1.0.1": + version: 1.0.1 + resolution: "@npmcli/name-from-folder@npm:1.0.1" + checksum: 10c0/6dbedf7c678ed1034e9905d75d3493459771bb4c4eeda147e1ab0f6a5c56d5ccc597ca9230741f2884e3f0e5fbf94e66ba6e7776d713d2a109427056bd10ae02 + languageName: node + linkType: hard + +"@npmcli/node-gyp@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/node-gyp@npm:2.0.0" + checksum: 10c0/8de88f4a602e8f868f10c660250429d34a51aaa10cb4d0f1f919d7920632be22cc47ad0e4d75097cd68e07fec5b93e41803ae3f03c1a3370badd865461e6b486 + languageName: node + linkType: hard + +"@npmcli/package-json@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/package-json@npm:2.0.0" + dependencies: + json-parse-even-better-errors: "npm:^2.3.1" + checksum: 10c0/67aa80bb75e2f8d328c5225caf31d63499b01dd8b094e739b84de442b5411ba1040374cea113ccbcd3f0dda8b872a243e74d937b584c9040e8af6a90d42a564e + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/promise-spawn@npm:3.0.0" + dependencies: + infer-owner: "npm:^1.0.4" + checksum: 10c0/934225972d7b3e456e76b2eae40b3ece2478a361d99aa56c79f65ef7c66aa83cd55330ee44daf43174b76649b25d722b9f85120a4591cac53d884423f315465c + languageName: node + linkType: hard + +"@npmcli/query@npm:^1.2.0": + version: 1.2.0 + resolution: "@npmcli/query@npm:1.2.0" + dependencies: + npm-package-arg: "npm:^9.1.0" + postcss-selector-parser: "npm:^6.0.10" + semver: "npm:^7.3.7" + checksum: 10c0/f0fbc9ae07b437c0ebed20811c46ca22f654240a75223c7819510abbc7791af5c6d9e99b6bc37ecf3842a1b6457abff8deb7232ac00403c07c65df87be651311 + languageName: node + linkType: hard + +"@npmcli/run-script@npm:^4.1.0, @npmcli/run-script@npm:^4.1.3, @npmcli/run-script@npm:^4.2.0, @npmcli/run-script@npm:^4.2.1": + version: 4.2.1 + resolution: "@npmcli/run-script@npm:4.2.1" + dependencies: + "@npmcli/node-gyp": "npm:^2.0.0" + "@npmcli/promise-spawn": "npm:^3.0.0" + node-gyp: "npm:^9.0.0" + read-package-json-fast: "npm:^2.0.3" + which: "npm:^2.0.2" + checksum: 10c0/b658b239a0132d3b7262ab94e16ca1bf4abe2987557015086c94768bd0cfdf7cded9a6c04f2efb58d63ae4f3bbb794caffaedc00b3d64ad7136bcf8c181b9b10 + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^3.0.0": + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: 10c0/abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 + languageName: node + linkType: hard + +"@octokit/core@npm:^4.2.1": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" + dependencies: + "@octokit/auth-token": "npm:^3.0.0" + "@octokit/graphql": "npm:^5.0.0" + "@octokit/request": "npm:^6.0.0" + "@octokit/request-error": "npm:^3.0.0" + "@octokit/types": "npm:^9.0.0" + before-after-hook: "npm:^2.2.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" + dependencies: + "@octokit/types": "npm:^9.0.0" + is-plain-object: "npm:^5.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 + languageName: node + linkType: hard + +"@octokit/graphql@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" + dependencies: + "@octokit/request": "npm:^6.0.0" + "@octokit/types": "npm:^9.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 10c0/856d3bb9f8c666e837dd5e8b8c216ee4342b9ed63ff8da922ca4ce5883ed1dfbec73390eb13d69fbcb4703a4c8b8b6a586df3b0e675ff93bf3d46b5b4fe0968e + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^6.1.2": + version: 6.1.2 + resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" + dependencies: + "@octokit/tsconfig": "npm:^1.0.2" + "@octokit/types": "npm:^9.2.3" + peerDependencies: + "@octokit/core": ">=4" + checksum: 10c0/def241c4f00b864822ab6414eaadd8679a6d332004c7e77467cfc1e6d5bdcc453c76bd185710ee942e4df201f9dd2170d960f46af5b14ef6f261a0068f656364 + languageName: node + linkType: hard + +"@octokit/plugin-retry@npm:^4.1.3": + version: 4.1.6 + resolution: "@octokit/plugin-retry@npm:4.1.6" + dependencies: + "@octokit/types": "npm:^9.0.0" + bottleneck: "npm:^2.15.3" + peerDependencies: + "@octokit/core": ">=3" + checksum: 10c0/becda71309b8fde99b2daa6c5ab7c9774adfabc2c950da53741bb911c6cd4db1b4d9cc878498580f8b8e881f491450a57bfaa50b6ad749aea421766675dbebdb + languageName: node + linkType: hard + +"@octokit/plugin-throttling@npm:^5.2.3": + version: 5.2.3 + resolution: "@octokit/plugin-throttling@npm:5.2.3" + dependencies: + "@octokit/types": "npm:^9.0.0" + bottleneck: "npm:^2.15.3" + peerDependencies: + "@octokit/core": ^4.0.0 + checksum: 10c0/dd43da3e49c7e92aa6f513aae80702a13899cd9265d9538443063bd9c56e250177b4672bda0894843915b6424c01350647366af2763479f43d6dfe9983d43325 + languageName: node + linkType: hard + +"@octokit/request-error@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" + dependencies: + "@octokit/types": "npm:^9.0.0" + deprecation: "npm:^2.0.0" + once: "npm:^1.4.0" + checksum: 10c0/1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 + languageName: node + linkType: hard + +"@octokit/request@npm:^6.0.0": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@octokit/endpoint": "npm:^7.0.0" + "@octokit/request-error": "npm:^3.0.0" + "@octokit/types": "npm:^9.0.0" + is-plain-object: "npm:^5.0.0" + node-fetch: "npm:^2.6.7" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b + languageName: node + linkType: hard + +"@octokit/tsconfig@npm:^1.0.2": + version: 1.0.2 + resolution: "@octokit/tsconfig@npm:1.0.2" + checksum: 10c0/84db70b495beeed69259dd4def14cdfb600edeb65ef32811558c99413ee2b414ed10bff9c4dcc7a43451d0fd36b4925ada9ef7d4272b5eae38cb005cc2f459ac + languageName: node + linkType: hard + +"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" + dependencies: + "@octokit/openapi-types": "npm:^18.0.0" + checksum: 10c0/2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 + languageName: node + linkType: hard + +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 10c0/eafc1b1d0fc8edb5e1c753c5e0f3293410b40dde2f92688211a54806d4136887051f39b98c1950370be258483deac9dfd17cf8b96557553765198ef2547e4549 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 10c0/90010647b22e9693c16258f4f9adb034824d1771d3baa313057b9a37797f571181005bc50415a934eaf7c891d90ff71dcd7a9d5048b0b6bb438f31bef2c7c5c1 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 10c0/61d3f99718dd86bb393fee2d7a785f961dcaf12f2055f0c693b27f4d0cd5f7a03d498a6d9289773b117590d794a43cd129366fd8e99222e4832f67b1653d54cf + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f + languageName: node + linkType: hard + +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: "npm:4.2.10" + checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" + dependencies: + "@pnpm/config.env-replace": "npm:^1.1.0" + "@pnpm/network.ca-file": "npm:^1.0.1" + config-chain: "npm:^1.1.11" + checksum: 10c0/778a3a34ff7d6000a2594d2a9821f873f737bc56367865718b2cf0ba5d366e49689efe7975148316d7afd8e6f1dcef7d736fbb6ea7ef55caadd1dc93a36bb302 + languageName: node + linkType: hard + +"@radix-ui/colors@npm:^2.1.0": + version: 2.1.0 + resolution: "@radix-ui/colors@npm:2.1.0" + checksum: 10c0/0ab0874f4363fc4393dbe9787daca8a27dbeb7e5915126b8d749244dfccfd9d9a08593a112836ff32552736a9f174845f44e2af6f4dc9a168eb3f1c336ebb1ea + languageName: node + linkType: hard + +"@radix-ui/number@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/number@npm:1.1.0" + checksum: 10c0/a48e34d5ff1484de1b7cf5d7317fefc831d49e96a2229f300fd37b657bd8cfb59c922830c00ec02838ab21de3b299a523474592e4f30882153412ed47edce6a4 + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/primitive@npm:1.1.1" + checksum: 10c0/6457bd8d1aa4ecb948e5d2a2484fc570698b2ab472db6d915a8f1eec04823f80423efa60b5ba840f0693bec2ca380333cc5f3b52586b40f407d9f572f9261f8d + languageName: node + linkType: hard + +"@radix-ui/react-accessible-icon@npm:^1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-accessible-icon@npm:1.1.2" + dependencies: + "@radix-ui/react-visually-hidden": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/75bb6b64c92b9aa1a9ceae72442dd506a91ba2d43941f389e012dd7b177c7dbb9ba01e293cc0a43b62209a4ecca3a38fe63cd6b28638bb4d816be27603243e2f + languageName: node + linkType: hard + +"@radix-ui/react-accordion@npm:^1.2.0": + version: 1.2.3 + resolution: "@radix-ui/react-accordion@npm:1.2.3" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-collapsible": "npm:1.1.3" + "@radix-ui/react-collection": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/2036497884696453a888433dff87eda35ad72859d04205b5aef74aa72df8ca07557eafcc56a4e204a3f755d6f8895927b59453643be9542049d8ad2a969b7a9a + languageName: node + linkType: hard + +"@radix-ui/react-alert-dialog@npm:^1.0.2": + version: 1.1.6 + resolution: "@radix-ui/react-alert-dialog@npm:1.1.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dialog": "npm:1.1.6" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-slot": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/87acd4313b4a2fb1233cc94685aeebf7051de20570cb1f11d1c805a6023582e9d487cbef811569d87e03745c4e4a42f011c0c8aa0998f54899e9c5fc2c778bbb + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-arrow@npm:1.1.2" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/38e1a338da1131f325e417ac456b1b6c16c76aa9da0635916262b4682d4e648226fd37b23348964a8e909c98b4d2293c7c5789be8f243cfe03856e6f0765cf5d + languageName: node + linkType: hard + +"@radix-ui/react-aspect-ratio@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-aspect-ratio@npm:1.1.2" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/112227918b97244f3613e82813d4b296eb1d4aef846164cc31f8501ebb8184a1eef395840c632f780f0c510bb3139a3ed94c45d739e1bb53a6e218c738888774 + languageName: node + linkType: hard + +"@radix-ui/react-avatar@npm:^1.0.1": + version: 1.1.3 + resolution: "@radix-ui/react-avatar@npm:1.1.3" + dependencies: + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/ecf0c2b8477346c087b6a22e2a01b6e2984a0722f0bcef9436f398386735e2ec83fbf20e3740b9e9b23ea5c5a43918cef14e009698dbffe6980e3c2d94aa5e16 + languageName: node + linkType: hard + +"@radix-ui/react-checkbox@npm:^1.0.1": + version: 1.1.4 + resolution: "@radix-ui/react-checkbox@npm:1.1.4" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-previous": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/182db383c02affd874c5bd4f81ebd3786ddc5d6525b958984b40673cb1d8ff0336428bea18c19175f20b27a833120c441ec6a97433e9f731284e56ea1a9f13fd + languageName: node + linkType: hard + +"@radix-ui/react-collapsible@npm:1.1.3": + version: 1.1.3 + resolution: "@radix-ui/react-collapsible@npm:1.1.3" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/93511dd4406af8f47a9b1b289cb70bfe907e9e4460946a0fa64224058aee663b52137dc249af4c3b024538cb20c463ec1412499adbbdf44ed913f0eb6dea049c + languageName: node + linkType: hard + +"@radix-ui/react-collection@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-collection@npm:1.1.2" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-slot": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/8376aa0c0f38efbb45e5c0a2e8724b0ca2ccdab511f5aee4c3eb62a89959b20be0d4dd410b7068bc13d722751cbc88e916e10573784fb26b084c43f930818715 + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-compose-refs@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/3e84580024e66e3cc5b9ae79355e787815c1d2a3c7d46e7f47900a29c33751ca24cf4ac8903314957ab1f7788aebe1687e2258641c188cf94653f7ddf8f70627 + languageName: node + linkType: hard + +"@radix-ui/react-context-menu@npm:^2.0.1": + version: 2.2.6 + resolution: "@radix-ui/react-context-menu@npm:2.2.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-menu": "npm:2.1.6" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/4381b3615206a95687d3c3b3e0d694fe1668f4bd66cdcde7bae958b4a2f833ab77b49d916aa46b721024df44f37f32907d735954862bca602633fa91d1140c4e + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-context@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/fc4ace9d79d7954c715ade765e06c95d7e1b12a63a536bcbe842fb904f03f88fc5bd6e38d44bd23243d37a270b4c44380fedddaeeae2d274f0b898a20665aba2 + languageName: node + linkType: hard + +"@radix-ui/react-dialog@npm:1.1.6, @radix-ui/react-dialog@npm:^1.0.2": + version: 1.1.6 + resolution: "@radix-ui/react-dialog@npm:1.1.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.5" + "@radix-ui/react-focus-guards": "npm:1.1.1" + "@radix-ui/react-focus-scope": "npm:1.1.2" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-portal": "npm:1.1.4" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-slot": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + aria-hidden: "npm:^1.2.4" + react-remove-scroll: "npm:^2.6.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/98e425549573c5d6fb0fee94ecd40427a8b8897bb2d9bb2a44fe64e484754376ff23b64fcf64e061d42fc774b9627a28cb5b1bb5652e567908dac9a8d8618705 + languageName: node + linkType: hard + +"@radix-ui/react-direction@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-direction@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/eb07d8cc3ae2388b824e0a11ae0e3b71fb0c49972b506e249cec9f27a5b7ef4305ee668c98b674833c92e842163549a83beb0a197dec1ec65774bdeeb61f932c + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.1.5": + version: 1.1.5 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.5" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-escape-keydown": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/05c5adfcd42a736c456f50bdca25bf7f6b25eef7328e4c05de535fea128328666433a89d68cb1445e039c188d7f1397df6a4a02e2da0970762f2a80fd29b48ea + languageName: node + linkType: hard + +"@radix-ui/react-dropdown-menu@npm:^2.0.1": + version: 2.1.6 + resolution: "@radix-ui/react-dropdown-menu@npm:2.1.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-menu": "npm:2.1.6" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/1165cc6a7c914b4491f83b7ff2bd84e5c52016f5ee48ae9b841482ed09b349adb294a8269cc69ba5a20fee75400b521843130a490da7e81c39361f63092266ba + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-focus-guards@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/2e99750ca593083a530542a185d656b45b100752353a7a193a67566e3c256414a76fa9171d152f8c0167b8d6c1fdf62b2e07750d7af2974bf8ef39eb204aa537 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-focus-scope@npm:1.1.2" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/7b93866a9980bc938fc3fcfacfc49467c13144931c9b7a3b5423c0c3817685dc421499d73f58335f6c3c1c0f4fea9c9b7c16aa06a1d30571620787086082bea0 + languageName: node + linkType: hard + +"@radix-ui/react-icons@npm:^1.1.1": + version: 1.3.2 + resolution: "@radix-ui/react-icons@npm:1.3.2" + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + checksum: 10c0/3a380c7ae47e330ebd8ab4846729a543b4a0be5ecb1e2a7a571f4394728ff7d428b01f6620128051b6b69d63138a0ab8de77af78221ec364fbc5d126acf55b4a + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.1.0, @radix-ui/react-id@npm:^1.0.0": + version: 1.1.0 + resolution: "@radix-ui/react-id@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/acf13e29e51ee96336837fc0cfecc306328b20b0e0070f6f0f7aa7a621ded4a1ee5537cfad58456f64bae76caa7f8769231e88dc7dc106197347ee433c275a79 + languageName: node + linkType: hard + +"@radix-ui/react-label@npm:^2.0.0": + version: 2.1.2 + resolution: "@radix-ui/react-label@npm:2.1.2" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/c425ea25a67f60142645e6dd7669aa90bd9017e8d99c347736c9c19c44cea52e33224e4d086fd7e4945a7e9baa49335d42a5801d3bead884305515023e3ab31c + languageName: node + linkType: hard + +"@radix-ui/react-menu@npm:2.1.6": + version: 2.1.6 + resolution: "@radix-ui/react-menu@npm:2.1.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-collection": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-dismissable-layer": "npm:1.1.5" + "@radix-ui/react-focus-guards": "npm:1.1.1" + "@radix-ui/react-focus-scope": "npm:1.1.2" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-popper": "npm:1.2.2" + "@radix-ui/react-portal": "npm:1.1.4" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-roving-focus": "npm:1.1.2" + "@radix-ui/react-slot": "npm:1.1.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + aria-hidden: "npm:^1.2.4" + react-remove-scroll: "npm:^2.6.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/0b5420f181e38ec146572f56ebe51a4e7f28663939f8149a246f5d319b79633574fa35a3f3c7c85deb44a6fe31d94af62a34407b1a8e97c1eae99cfca5db40ed + languageName: node + linkType: hard + +"@radix-ui/react-navigation-menu@npm:^1.2.0": + version: 1.2.5 + resolution: "@radix-ui/react-navigation-menu@npm:1.2.5" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-collection": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-dismissable-layer": "npm:1.1.5" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + "@radix-ui/react-use-previous": "npm:1.1.0" + "@radix-ui/react-visually-hidden": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/fba44c307cff567eabcf98863ca458ddefa242c0252f1b73dc8e7ead690d431454f55b6db28161f0ee6a19b734cd68d85bc998966bcd90b1d1dc08b01f83e28f + languageName: node + linkType: hard + +"@radix-ui/react-popover@npm:^1.1.2": + version: 1.1.6 + resolution: "@radix-ui/react-popover@npm:1.1.6" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.5" + "@radix-ui/react-focus-guards": "npm:1.1.1" + "@radix-ui/react-focus-scope": "npm:1.1.2" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-popper": "npm:1.2.2" + "@radix-ui/react-portal": "npm:1.1.4" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-slot": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + aria-hidden: "npm:^1.2.4" + react-remove-scroll: "npm:^2.6.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/63cc2761693193f8c28c43a25d9eea69e4095ba47da11413dfa19436d6116c814851c388ab78f93a3bda0cc88ec4c234bd31d971ade2fcfbc08a0645ccde1d91 + languageName: node + linkType: hard + +"@radix-ui/react-popper@npm:1.2.2": + version: 1.2.2 + resolution: "@radix-ui/react-popper@npm:1.2.2" + dependencies: + "@floating-ui/react-dom": "npm:^2.0.0" + "@radix-ui/react-arrow": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + "@radix-ui/react-use-rect": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + "@radix-ui/rect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/556cef98c0fe50bcfaaa4ae2e85af737755c884b78a04b6bdac3682829051ea0a4cf1163fc8bde782e33280613424e2ebb10b8af507da53e1aea08966c13cc86 + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.1.4, @radix-ui/react-portal@npm:^1.0.1": + version: 1.1.4 + resolution: "@radix-ui/react-portal@npm:1.1.4" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/e4038eb2f20be10d9754d099d00620f429711919d20c4c630946d9c4941f1c83ef1a3f4110c221c70486e65bc565ebba4ada22a0e7e2d179c039f2a014300793 + languageName: node + linkType: hard + +"@radix-ui/react-presence@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-presence@npm:1.1.2" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/0c6fa281368636308044df3be4c1f02733094b5e35ba04f26e610dd1c4315a245ffc758e0e176c444742a7a46f4328af1a9d8181e860175ec39338d06525a78d + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:2.0.2": + version: 2.0.2 + resolution: "@radix-ui/react-primitive@npm:2.0.2" + dependencies: + "@radix-ui/react-slot": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/1af7a33a86f8bd2467f2300b1bb6ca9af67cae3950953ba543d2a625c17f341dff05d19056ece7b03e5ced8b9f8de99c74f806710ce0da6b9a000f2af063fffe + languageName: node + linkType: hard + +"@radix-ui/react-progress@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-progress@npm:1.1.2" + dependencies: + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/6aa52b17b0d0858fd7346817f23912fb6a516c3c1aa3b4c3d6f9ed1e9790ccf3529f079eaecb4d9c4ff487f1cc296b6d164941261e124085585746b862cccfc0 + languageName: node + linkType: hard + +"@radix-ui/react-radio-group@npm:^1.1.0": + version: 1.2.3 + resolution: "@radix-ui/react-radio-group@npm:1.2.3" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-roving-focus": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-previous": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/6e576b69675ab7f6575643080cf334da913629615adcf0031bbaeeb7ba84f63b0b6050def424f4f372f9beef6f9b4006e4d89ea3f86bb888192e1c5edf77d6b0 + languageName: node + linkType: hard + +"@radix-ui/react-roving-focus@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-roving-focus@npm:1.1.2" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-collection": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/80e378e1156d5b8af14995e908fe2358c8f4757fbf274e30d2ee3c1cedc3a0c7192524df7e3bb1d5011ee9ab8ab7445b60eff06617370e58abcd1ae97e0e40f6 + languageName: node + linkType: hard + +"@radix-ui/react-separator@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-separator@npm:1.1.2" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/9efffd4319ab25210702cbacd5a3fe15f22ab9e29afe407b778112056e6a2e1e43847f1ad5f5b73bff5d604722a4fdabd66816216e7ad8f627f7b4c20a19174e + languageName: node + linkType: hard + +"@radix-ui/react-slider@npm:^1.1.0": + version: 1.2.3 + resolution: "@radix-ui/react-slider@npm:1.2.3" + dependencies: + "@radix-ui/number": "npm:1.1.0" + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-collection": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + "@radix-ui/react-use-previous": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/d1b3b193e3a290e734d911d99ddc2d8857c21cd1bebd3c6607c5e034c02e410b77be9d836479de2240c283cd9e2017ac6f5c5fec37f9b3c64e1abe46581327d1 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.1.2, @radix-ui/react-slot@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-slot@npm:1.1.2" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/81d45091806c52b507cec80b4477e4f31189d76ffcd7845b382eb3a034e6cf1faef71b881612028d5893f7580bf9ab59daa18fbf2792042dccd755c99a18df67 + languageName: node + linkType: hard + +"@radix-ui/react-switch@npm:^1.0.1": + version: 1.1.3 + resolution: "@radix-ui/react-switch@npm:1.1.3" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-use-previous": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/d307953b38cb83d832f69873c95709ba6cd870b7eda4cc682225f79cc37533c93f77eebd8086000b7ceb3bd6ae58e9653ef27c43b781b2a62f558cafb0c0f9a8 + languageName: node + linkType: hard + +"@radix-ui/react-tabs@npm:^1.0.1": + version: 1.1.3 + resolution: "@radix-ui/react-tabs@npm:1.1.3" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-roving-focus": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/2f621c43a8e1dd0d54c828f8b4d88414c9114af6b720a650ad9587cc0a7a7536da778f2fe5181a38494cc2956f2b238fbe64790f6daad1d058b34f4acaee520e + languageName: node + linkType: hard + +"@radix-ui/react-toggle-group@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-toggle-group@npm:1.1.2" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-roving-focus": "npm:1.1.2" + "@radix-ui/react-toggle": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/df08a9114990b675882700228c21ff1aea1b83963c0190d91f54c1287c2217676eb830c161a5d6ed8185827cf3ba5fe29181d8803d4dc51328700bcfd4c9777c + languageName: node + linkType: hard + +"@radix-ui/react-toggle@npm:1.1.2, @radix-ui/react-toggle@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-toggle@npm:1.1.2" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/2cd8dc6b64c2680f4c0662ff2424963e8cc432de3a925a549e8fd5e5e7b48da1a08434ef4ab49b6b627faea1628160f89a16f098399104ed06a00220170f72a2 + languageName: node + linkType: hard + +"@radix-ui/react-tooltip@npm:^1.1.6": + version: 1.1.8 + resolution: "@radix-ui/react-tooltip@npm:1.1.8" + dependencies: + "@radix-ui/primitive": "npm:1.1.1" + "@radix-ui/react-compose-refs": "npm:1.1.1" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.5" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-popper": "npm:1.2.2" + "@radix-ui/react-portal": "npm:1.1.4" + "@radix-ui/react-presence": "npm:1.1.2" + "@radix-ui/react-primitive": "npm:2.0.2" + "@radix-ui/react-slot": "npm:1.1.2" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + "@radix-ui/react-visually-hidden": "npm:1.1.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/696486eb472686e3fa7af1efa7ba10b177543c60b9f3caa7365b4527a11e3d6019b655cf820b3aa23d931b4bd2100b68f9d4125fee542abf0d44e401896615a1 + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/e954863f3baa151faf89ac052a5468b42650efca924417470efd1bd254b411a94c69c30de2fdbb90187b38cb984795978e12e30423dc41e4309d93d53b66d819 + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/2af883b5b25822ac226e60a6bfde647c0123a76345052a90219026059b3f7225844b2c13a9a16fba859c1cda5fb3d057f2a04503f71780e607516492db4eb3a1 + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/910fd696e5a0994b0e06b9cb68def8a865f47951a013ec240c77db2a9e1e726105602700ef5e5f01af49f2f18fe0e73164f9a9651021f28538ef8a30d91f3fbb + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.1.0, @radix-ui/react-use-layout-effect@npm:^1.0.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/9bf87ece1845c038ed95863cfccf9d75f557c2400d606343bab0ab3192b9806b9840e6aa0a0333fdf3e83cf9982632852192f3e68d7d8367bc8c788dfdf8e62b + languageName: node + linkType: hard + +"@radix-ui/react-use-previous@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-previous@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/9787d24790d4e330715127f2f4db56c4cbed9b0a47f97e11a68582c08a356a53c1ec41c7537382f6fb8d0db25de152770f17430e8eaf0fa59705be97760acbad + languageName: node + linkType: hard + +"@radix-ui/react-use-rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-rect@npm:1.1.0" + dependencies: + "@radix-ui/rect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/c2e30150ab49e2cec238cda306fd748c3d47fb96dcff69a3b08e1d19108d80bac239d48f1747a25dadca614e3e967267d43b91e60ea59db2befbc7bea913ff84 + languageName: node + linkType: hard + +"@radix-ui/react-use-size@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-size@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/4c8b89037597fdc1824d009e0c941b510c7c6c30f83024cc02c934edd748886786e7d9f36f57323b02ad29833e7fa7e8974d81969b4ab33d8f41661afa4f30a6 + languageName: node + linkType: hard + +"@radix-ui/react-visually-hidden@npm:1.1.2, @radix-ui/react-visually-hidden@npm:^1.0.1": + version: 1.1.2 + resolution: "@radix-ui/react-visually-hidden@npm:1.1.2" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/ea6dc8ec284b32bca6f24809db257394802e14af7c95e4a237af51009fa222c42e3b7a55b3bfc94d753f509086636555058ae8e535be25956c46529abf41b448 + languageName: node + linkType: hard + +"@radix-ui/rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/rect@npm:1.1.0" + checksum: 10c0/a26ff7f8708fb5f2f7949baad70a6b2a597d761ee4dd4aadaf1c1a33ea82ea23dfef6ce6366a08310c5d008cdd60b2e626e4ee03fa342bd5f246ddd9d427f6be + languageName: node + linkType: hard + +"@rehookify/datepicker@npm:^6.6.7": + version: 6.6.8 + resolution: "@rehookify/datepicker@npm:6.6.8" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + checksum: 10c0/ab7900e8f65cee9f455865dc59bc4cccab7494856b3a2aab5367c642b3e955d1f372f091acd055cf682a7923759999d4bc32a07e8427d3ab09fd7b7baff16f08 + languageName: node + linkType: hard + +"@remix-run/router@npm:1.15.1": + version: 1.15.1 + resolution: "@remix-run/router@npm:1.15.1" + checksum: 10c0/2f84d998defe9943a40fd5bf8794ee6ede521116ff24275cc2294830adb039ef86e34dbdd6555300600016fd8a58a244d4f4df73ff0b2cec7bd749f63d172587 + languageName: node + linkType: hard + +"@rollup/plugin-babel@npm:^5.3.1": + version: 5.3.1 + resolution: "@rollup/plugin-babel@npm:5.3.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.10.4" + "@rollup/pluginutils": "npm:^3.1.0" + peerDependencies: + "@babel/core": ^7.0.0 + "@types/babel__core": ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + "@types/babel__core": + optional: true + checksum: 10c0/2766134dd5567c0d4fd6909d1f511ce9bf3bd9d727e1bc5ffdd6097a3606faca324107ae8e0961839ee4dbb45e5e579ae601efe472fc0a271259aea79920cafa + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": "npm:0.0.39" + estree-walker: "npm:^1.0.1" + picomatch: "npm:^2.2.2" + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 10c0/7151753160d15ba2b259461a6c25b3932150994ea52dba8fd3144f634c7647c2e56733d986e2c15de67c4d96a9ee7d6278efa6d2e626a7169898fd64adc0f90c + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^4.1.2": + version: 4.2.1 + resolution: "@rollup/pluginutils@npm:4.2.1" + dependencies: + estree-walker: "npm:^2.0.1" + picomatch: "npm:^2.2.2" + checksum: 10c0/3ee56b2c8f1ed8dfd0a92631da1af3a2dfdd0321948f089b3752b4de1b54dc5076701eadd0e5fc18bd191b77af594ac1db6279e83951238ba16bf8a414c64c48 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.2": + version: 5.1.4 + resolution: "@rollup/pluginutils@npm:5.1.4" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^4.0.2" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/6d58fbc6f1024eb4b087bc9bf59a1d655a8056a60c0b4021d3beaeec3f0743503f52467fd89d2cf0e7eccf2831feb40a05ad541a17637ea21ba10b21c2004deb + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.39.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm64@npm:4.39.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.39.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.39.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.39.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.39.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.39.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.39.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.39.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.39.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.39.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.39.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.39.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.39.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.39.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.39.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.39.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + languageName: node + linkType: hard + +"@samverschueren/stream-to-observable@npm:^0.3.0": + version: 0.3.1 + resolution: "@samverschueren/stream-to-observable@npm:0.3.1" + dependencies: + any-observable: "npm:^0.3.0" + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + checksum: 10c0/0d874453f6bc2460d71783292291f52feb36c2a75314b1072a6ffe6206562f33e9d664a554348d565a6b54da9041d75070371052545bc329caaa52f64216987f + languageName: node + linkType: hard + +"@semantic-release/commit-analyzer@npm:^9.0.2": + version: 9.0.2 + resolution: "@semantic-release/commit-analyzer@npm:9.0.2" + dependencies: + conventional-changelog-angular: "npm:^5.0.0" + conventional-commits-filter: "npm:^2.0.0" + conventional-commits-parser: "npm:^3.2.3" + debug: "npm:^4.0.0" + import-from: "npm:^4.0.0" + lodash: "npm:^4.17.4" + micromatch: "npm:^4.0.2" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/bcb50712d1b13e9439e08046817e3a3b22e015754df44c55cf88334d8c3922455cb50d0c9b06896bdc2282ab0e95d132d04a48583a835cecf7457a9d39776f01 + languageName: node + linkType: hard + +"@semantic-release/error@npm:^3.0.0": + version: 3.0.0 + resolution: "@semantic-release/error@npm:3.0.0" + checksum: 10c0/51f06d11186a6efc543b44996ca1c368a77c6ed18dd823f0362188c37b7ef32f3580bd17654f594e6a72b931ebe69b44bbcb1ee16c755a1d3e44dcb652b47275 + languageName: node + linkType: hard + +"@semantic-release/github@npm:^8.0.0, @semantic-release/github@npm:^8.0.2": + version: 8.1.0 + resolution: "@semantic-release/github@npm:8.1.0" + dependencies: + "@octokit/core": "npm:^4.2.1" + "@octokit/plugin-paginate-rest": "npm:^6.1.2" + "@octokit/plugin-retry": "npm:^4.1.3" + "@octokit/plugin-throttling": "npm:^5.2.3" + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + debug: "npm:^4.0.0" + dir-glob: "npm:^3.0.0" + fs-extra: "npm:^11.0.0" + globby: "npm:^11.0.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" + issue-parser: "npm:^6.0.0" + lodash: "npm:^4.17.4" + mime: "npm:^3.0.0" + p-filter: "npm:^2.0.0" + url-join: "npm:^4.0.0" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/2a1bb1e7eb04c7a7dfcb6bd95c36371c71a80c158515f4e2ef946e31a4c698818150c1ac6cdaf63704fe6c91586ad5b5b28e7dc58ababe8c255418e0cea1c492 + languageName: node + linkType: hard + +"@semantic-release/npm@npm:^9.0.0": + version: 9.0.2 + resolution: "@semantic-release/npm@npm:9.0.2" + dependencies: + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + execa: "npm:^5.0.0" + fs-extra: "npm:^11.0.0" + lodash: "npm:^4.17.15" + nerf-dart: "npm:^1.0.0" + normalize-url: "npm:^6.0.0" + npm: "npm:^8.3.0" + rc: "npm:^1.2.8" + read-pkg: "npm:^5.0.0" + registry-auth-token: "npm:^5.0.0" + semver: "npm:^7.1.2" + tempy: "npm:^1.0.0" + peerDependencies: + semantic-release: ">=19.0.0" + checksum: 10c0/4efa3b2b859d461b499f7800429e1a7986bd45f0a2a47cd1ce0b51f6e575984b25583444ffd7aa993a3cbc625b85df482917c94d1513b5e3a882cfdda56c6eef + languageName: node + linkType: hard + +"@semantic-release/release-notes-generator@npm:^10.0.0, @semantic-release/release-notes-generator@npm:^10.0.3": + version: 10.0.3 + resolution: "@semantic-release/release-notes-generator@npm:10.0.3" + dependencies: + conventional-changelog-angular: "npm:^5.0.0" + conventional-changelog-writer: "npm:^5.0.0" + conventional-commits-filter: "npm:^2.0.0" + conventional-commits-parser: "npm:^3.2.3" + debug: "npm:^4.0.0" + get-stream: "npm:^6.0.0" + import-from: "npm:^4.0.0" + into-stream: "npm:^6.0.0" + lodash: "npm:^4.17.4" + read-pkg-up: "npm:^7.0.0" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/bf1a5244d7df353afbb68cf0e5f1d40bd4e6472bd75bd0b0c7547a179bce14b6a9ef5529e5fdec5c15566e798acc91991e14914a3083bad828d17bd8d0c0e45b + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^4.0.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 10c0/33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^5.2.0, @sindresorhus/is@npm:^5.3.0": + version: 5.6.0 + resolution: "@sindresorhus/is@npm:5.6.0" + checksum: 10c0/66727344d0c92edde5760b5fd1f8092b717f2298a162a5f7f29e4953e001479927402d9d387e245fb9dc7d3b37c72e335e93ed5875edfc5203c53be8ecba1b52 + languageName: node + linkType: hard + +"@stitches/react@npm:1.2.7": + version: 1.2.7 + resolution: "@stitches/react@npm:1.2.7" + peerDependencies: + react: ">= 16.3.0" + checksum: 10c0/c5da5e4b862306d2dd0545765c497bf5b972315a801ee7120374c13950db49587fe3f3ef5282be1ce189f9de2acbe3a4d0f8ba40283fe058b8d056674a336e60 + languageName: node + linkType: hard + +"@storybook/addon-actions@npm:8.6.12, @storybook/addon-actions@npm:^8.2.2": + version: 8.6.12 + resolution: "@storybook/addon-actions@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + "@types/uuid": "npm:^9.0.1" + dequal: "npm:^2.0.2" + polished: "npm:^4.2.2" + uuid: "npm:^9.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/f05a876966f170a65d51405f0908e7db74daba033c2468f7de35e17d800960b0201d8edfe822508346c1e7f2f664c9e601cadf9673a17a41e4afafd1af922241 + languageName: node + linkType: hard + +"@storybook/addon-backgrounds@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-backgrounds@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + memoizerific: "npm:^1.11.3" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/220adbe8e5b1120de449eb74a307b8ebe44e018138a676f9bafa7bb7adae00ceee9d0b9619dc55bff2ff9a261f932d992cb43dbe79f25e1fc249e2a0ae02d4e2 + languageName: node + linkType: hard + +"@storybook/addon-controls@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-controls@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + dequal: "npm:^2.0.2" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/6521a98f31d5cd436795428884085b766424e9f71d1add34dc4d5470985500145dd90a7e57282affd3c1b31dfc3e6e4582640347f876acdf0be880b7734aca3b + languageName: node + linkType: hard + +"@storybook/addon-docs@npm:8.6.12, @storybook/addon-docs@npm:^8.2.5": + version: 8.6.12 + resolution: "@storybook/addon-docs@npm:8.6.12" + dependencies: + "@mdx-js/react": "npm:^3.0.0" + "@storybook/blocks": "npm:8.6.12" + "@storybook/csf-plugin": "npm:8.6.12" + "@storybook/react-dom-shim": "npm:8.6.12" + react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/6a973bcdb4a1fdf369078d7a2e5b527756f982f6652868bf15f1fc0c7da472d15f385079b1b012ec4cda1c7e7940238a4210d7bd729fee92c20661c8f3ace32c + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:^8.2.5": + version: 8.6.12 + resolution: "@storybook/addon-essentials@npm:8.6.12" + dependencies: + "@storybook/addon-actions": "npm:8.6.12" + "@storybook/addon-backgrounds": "npm:8.6.12" + "@storybook/addon-controls": "npm:8.6.12" + "@storybook/addon-docs": "npm:8.6.12" + "@storybook/addon-highlight": "npm:8.6.12" + "@storybook/addon-measure": "npm:8.6.12" + "@storybook/addon-outline": "npm:8.6.12" + "@storybook/addon-toolbars": "npm:8.6.12" + "@storybook/addon-viewport": "npm:8.6.12" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/ce018694d1ee07ab8b8efcebfe3efdf1c2163068a3907b46591b040e1876b84f68fe78bb0a43f23b50b824ea6c410aacef416d03833a77fe359b2e81b3be5b03 + languageName: node + linkType: hard + +"@storybook/addon-highlight@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-highlight@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/c2b31583fff2cd54a85b1138a62c61b86db95704db815f0396e75ca6f1317329cfae1c6ed630914a058da2d386078d7934f21063e6d4e55ed1baf2632cfee3cb + languageName: node + linkType: hard + +"@storybook/addon-links@npm:^8.2.2": + version: 8.6.12 + resolution: "@storybook/addon-links@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + ts-dedent: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + peerDependenciesMeta: + react: + optional: true + checksum: 10c0/c90e6e81c486b94a172ebd9fa40d32c02cfe498bc1bb9536fe437842d513668ea015c328a49836de289c20801ee330457868793a7c70fd053dfc7441bf86df61 + languageName: node + linkType: hard + +"@storybook/addon-measure@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-measure@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + tiny-invariant: "npm:^1.3.1" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/1247ebf398b6297400d710a00d423c9d285c8af6f9bf7dd98a7734f54cc5689d7d3a3bf5a1e93847f5eb13d7edfe75900ac28b27932555292f09efe0c4093c28 + languageName: node + linkType: hard + +"@storybook/addon-outline@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-outline@npm:8.6.12" + dependencies: + "@storybook/global": "npm:^5.0.0" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/2e1c448b932dea10d1d13b8375e154d4f8bbd1144d7e4b35a909f773c72dd041995915becfd438c02b6611e57929ee61c4d4b9af59ef6fddb222baa8c9a66e6f + languageName: node + linkType: hard + +"@storybook/addon-toolbars@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-toolbars@npm:8.6.12" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/6a7cde7eb84f8f533e96371bec7a37b55aa3e462518bc37c1762cabbd37e2dc45ff48c9708ca6034ea55d272f8b9b3a28f2e94b63056d2ab3855458b664c60bc + languageName: node + linkType: hard + +"@storybook/addon-viewport@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-viewport@npm:8.6.12" + dependencies: + memoizerific: "npm:^1.11.3" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/72a570f4f45ba5c0d1515a14d2e03d04bb510ffc4b8181237f7c787c8d2a6eb6429e4cd048256dafec75bb9a764c4a155c022eed0d6476e7fd7da27f01949db4 + languageName: node + linkType: hard + +"@storybook/blocks@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/blocks@npm:8.6.12" + dependencies: + "@storybook/icons": "npm:^1.2.12" + ts-dedent: "npm:^2.0.0" + 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 + storybook: ^8.6.12 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 10c0/ce15861061888b73a2f05e2fa1dd8947dd37904e61a978299f96c19f3a45b7a65eca265bd10ba101b2e56dcb24f5ff1871cdaff86640142fe46d8491b7b4ac12 + languageName: node + linkType: hard + +"@storybook/builder-vite@npm:8.6.12, @storybook/builder-vite@npm:^8.2.5": + version: 8.6.12 + resolution: "@storybook/builder-vite@npm:8.6.12" + dependencies: + "@storybook/csf-plugin": "npm:8.6.12" + browser-assert: "npm:^1.2.1" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^8.6.12 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/cf02c9095a7cf12ac1e372f5e8dc01193c4ae298f16416538de514687b9776a4eda478ff01e5ba73e87e4f3603d8453a6a374dde1673fa22abea103135524892 + languageName: node + linkType: hard + +"@storybook/components@npm:8.6.12, @storybook/components@npm:^8.0.0": + version: 8.6.12 + resolution: "@storybook/components@npm:8.6.12" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/f443f41354d382307734f0507989ffd78d9b3fb9413122487d5e01927057d34b9526bb9ee6b5343cee806a650d6eef2aecf5112af5b0817eeb3204b1ac4fdc3d + languageName: node + linkType: hard + +"@storybook/core-events@npm:^8.0.0": + version: 8.6.12 + resolution: "@storybook/core-events@npm:8.6.12" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/2f0427afb97cd445e7dde5cde9022ae65ef4a9b2c79e2d6f51757d7bd53fb844b4167a85d21d3904ea5f6b95f46df4ca34fca0ead0ae6e992884123ebabc4af0 + languageName: node + linkType: hard + +"@storybook/core@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/core@npm:8.6.12" + dependencies: + "@storybook/theming": "npm:8.6.12" + better-opn: "npm:^3.0.2" + browser-assert: "npm:^1.2.1" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" + esbuild-register: "npm:^3.5.0" + jsdoc-type-pratt-parser: "npm:^4.0.0" + process: "npm:^0.11.10" + recast: "npm:^0.23.5" + semver: "npm:^7.6.2" + util: "npm:^0.12.5" + ws: "npm:^8.2.3" + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + checksum: 10c0/e21f2408c3fdd125033dbbbdd91d264a9cf0bd60e6f5c047b74306fed2ad8d32e39d3dad3a6bafc4b7a8f0b25451a328569f921d82de5d07b004f150e1973840 + languageName: node + linkType: hard + +"@storybook/csf-plugin@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/csf-plugin@npm:8.6.12" + dependencies: + unplugin: "npm:^1.3.1" + peerDependencies: + storybook: ^8.6.12 + checksum: 10c0/8bb5b9612178ff997cb21bd957b7918a6a7cd58fb5f3249e6ec2f3a4a039d3ff4f40b873360f202a56cf64d1235bb88a32ef5e308d3a663f294f925257943472 + languageName: node + linkType: hard + +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: 10c0/8f1b61dcdd3a89584540896e659af2ecc700bc740c16909a7be24ac19127ea213324de144a141f7caf8affaed017d064fea0618d453afbe027cf60f54b4a6d0b + languageName: node + linkType: hard + +"@storybook/icons@npm:^1.2.12, @storybook/icons@npm:^1.2.5": + version: 1.4.0 + resolution: "@storybook/icons@npm:1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: 10c0/fd0514fb3fa431a8b5939fe1d9fc336b253ef2c25b34792d2d4ee59e13321108d34f8bf223a0981482f54f83c5ef47ffd1a98c376ca9071011c1b8afe2b01d43 + languageName: node + linkType: hard + +"@storybook/manager-api@npm:8.6.12, @storybook/manager-api@npm:^8.0.0": + version: 8.6.12 + resolution: "@storybook/manager-api@npm:8.6.12" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/88a0d361c27c53f0f7cd32564d404a5e5a3fa129136449003e8ecaecd63fd8e38ddeeda30f189fffddf24a14b674e7d0400003b4dbbdafedfae7d37bbc32272f + languageName: node + linkType: hard + +"@storybook/preview-api@npm:8.6.12, @storybook/preview-api@npm:^8.2.2": + version: 8.6.12 + resolution: "@storybook/preview-api@npm:8.6.12" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/38044f40a0ac060ab33ed84eff62da1a99cdb5a2f73e6786b58da4cf5c4295d4ef060373f1fdaa1bfe6cccea8e123768d046555adf98a4acf1abda40fa3e9781 + languageName: node + linkType: hard + +"@storybook/react-dom-shim@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/react-dom-shim@npm:8.6.12" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + checksum: 10c0/feb0447599c2728039ed46a0fbd7fa3f8644b80518bc7e94b3687125317ce7c9aa13acb6a8279a50f1cd63aefcc7a1e9cbe64d1a9e71afbe3c3d33656063b814 + languageName: node + linkType: hard + +"@storybook/react-vite@npm:^8.2.5": + version: 8.6.12 + resolution: "@storybook/react-vite@npm:8.6.12" + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.5.0" + "@rollup/pluginutils": "npm:^5.0.2" + "@storybook/builder-vite": "npm:8.6.12" + "@storybook/react": "npm:8.6.12" + find-up: "npm:^5.0.0" + magic-string: "npm:^0.30.0" + react-docgen: "npm:^7.0.0" + resolve: "npm:^1.22.8" + tsconfig-paths: "npm:^4.2.0" + peerDependencies: + "@storybook/test": 8.6.12 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + "@storybook/test": + optional: true + checksum: 10c0/77e8e3c32d2687c2f4a41f0d83a418413cb8b634d63d8092983036f897a06140ad3c06328f80c88815d858c070b5952963004e3d4cc2a748828c0e97339c7d53 + languageName: node + linkType: hard + +"@storybook/react@npm:8.6.12, @storybook/react@npm:^8.2.5": + version: 8.6.12 + resolution: "@storybook/react@npm:8.6.12" + dependencies: + "@storybook/components": "npm:8.6.12" + "@storybook/global": "npm:^5.0.0" + "@storybook/manager-api": "npm:8.6.12" + "@storybook/preview-api": "npm:8.6.12" + "@storybook/react-dom-shim": "npm:8.6.12" + "@storybook/theming": "npm:8.6.12" + peerDependencies: + "@storybook/test": 8.6.12 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + typescript: ">= 4.2.x" + peerDependenciesMeta: + "@storybook/test": + optional: true + typescript: + optional: true + checksum: 10c0/62d44f6c310577520d1c400cf80001c53d3db995dca6845e1b4e749422705e80825d337d1ba42c196453b2b5d66aa6d402127037546cf9f51afed5fce095e152 + languageName: node + linkType: hard + +"@storybook/theming@npm:8.6.12, @storybook/theming@npm:^8.0.0, @storybook/theming@npm:^8.2.2": + version: 8.6.12 + resolution: "@storybook/theming@npm:8.6.12" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 10c0/cd7033dbc9415d765fd15a60c058ea039ce02a84c7cdbe6d7e597adb418694f28ac7cacf849cccef1e8b4374e7fa0df5010f801e6b55844c2fa391968eecba3c + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: "npm:^2.0.0" + checksum: 10c0/73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" + dependencies: + defer-to-connect: "npm:^2.0.1" + checksum: 10c0/4629d2fbb2ea67c2e9dc03af235c0991c79ebdddcbc19aed5d5732fb29ce01c13331e9b1a491584b9069bd6ecde6581dcbf871f11b7eefdebbab34de6cf2197e + languageName: node + linkType: hard + +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:^6.4.2": + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" + dependencies: + "@adobe/css-tools": "npm:^4.4.0" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.21" + redent: "npm:^3.0.0" + checksum: 10c0/5566b6c0b7b0709bc244aec3aa3dc9e5f4663e8fb2b99d8cd456fc07279e59db6076cbf798f9d3099a98fca7ef4cd50e4e1f4c4dec5a60a8fad8d24a638a5bf6 + languageName: node + linkType: hard + +"@testing-library/react@npm:^14.2.1": + version: 14.3.1 + resolution: "@testing-library/react@npm:14.3.1" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^9.0.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10c0/1ccf4eb1510500cc20a805cb0244c9098dca28a8745173a8f71ea1274d63774f0b7898a35c878b43c797b89c13621548909ff37843b835c1a27ee1efbbdd098c + languageName: node + linkType: hard + +"@testing-library/user-event@npm:^14.5.2": + version: 14.6.1 + resolution: "@testing-library/user-event@npm:14.6.1" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 10c0/75fea130a52bf320d35d46ed54f3eec77e71a56911b8b69a3fe29497b0b9947b2dc80d30f04054ad4ce7f577856ae3e5397ea7dff0ef14944d3909784c7a93fe + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + +"@traefiklabs/faency@npm:11.1.4": + version: 11.1.4 + resolution: "@traefiklabs/faency@npm:11.1.4" + dependencies: + "@babel/core": "npm:^7.15.4" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.16.7" + "@babel/preset-env": "npm:^7.16.11" + "@babel/preset-react": "npm:^7.16.7" + "@babel/preset-typescript": "npm:^7.16.7" + "@floating-ui/react": "npm:^0.26.25" + "@mdx-js/react": "npm:^2.1.5" + "@radix-ui/colors": "npm:^2.1.0" + "@radix-ui/react-accessible-icon": "npm:^1.1.2" + "@radix-ui/react-accordion": "npm:^1.2.0" + "@radix-ui/react-alert-dialog": "npm:^1.0.2" + "@radix-ui/react-aspect-ratio": "npm:^1.0.1" + "@radix-ui/react-avatar": "npm:^1.0.1" + "@radix-ui/react-checkbox": "npm:^1.0.1" + "@radix-ui/react-context-menu": "npm:^2.0.1" + "@radix-ui/react-dialog": "npm:^1.0.2" + "@radix-ui/react-dropdown-menu": "npm:^2.0.1" + "@radix-ui/react-icons": "npm:^1.1.1" + "@radix-ui/react-id": "npm:^1.0.0" + "@radix-ui/react-label": "npm:^2.0.0" + "@radix-ui/react-navigation-menu": "npm:^1.2.0" + "@radix-ui/react-popover": "npm:^1.1.2" + "@radix-ui/react-portal": "npm:^1.0.1" + "@radix-ui/react-progress": "npm:^1.0.1" + "@radix-ui/react-radio-group": "npm:^1.1.0" + "@radix-ui/react-separator": "npm:^1.0.1" + "@radix-ui/react-slider": "npm:^1.1.0" + "@radix-ui/react-slot": "npm:^1.0.1" + "@radix-ui/react-switch": "npm:^1.0.1" + "@radix-ui/react-tabs": "npm:^1.0.1" + "@radix-ui/react-toggle": "npm:^1.0.1" + "@radix-ui/react-toggle-group": "npm:^1.0.1" + "@radix-ui/react-tooltip": "npm:^1.1.6" + "@radix-ui/react-use-layout-effect": "npm:^1.0.0" + "@radix-ui/react-visually-hidden": "npm:^1.0.1" + "@rehookify/datepicker": "npm:^6.6.7" + "@rollup/plugin-babel": "npm:^5.3.1" + "@semantic-release/commit-analyzer": "npm:^9.0.2" + "@semantic-release/github": "npm:^8.0.2" + "@semantic-release/npm": "npm:^9.0.0" + "@semantic-release/release-notes-generator": "npm:^10.0.3" + "@stitches/react": "npm:1.2.7" + "@storybook/addon-actions": "npm:^8.2.2" + "@storybook/addon-docs": "npm:^8.2.5" + "@storybook/addon-essentials": "npm:^8.2.5" + "@storybook/addon-links": "npm:^8.2.2" + "@storybook/builder-vite": "npm:^8.2.5" + "@storybook/preview-api": "npm:^8.2.2" + "@storybook/react": "npm:^8.2.5" + "@storybook/react-vite": "npm:^8.2.5" + "@storybook/theming": "npm:^8.2.2" + "@types/jest": "npm:^27.4.1" + "@types/jest-axe": "npm:^3.5.3" + "@types/lodash.merge": "npm:^4.6.6" + "@types/node": "npm:^20.10.0" + "@types/react": "npm:18.2.0" + "@types/react-dom": "npm:18.2.0" + "@types/tinycolor2": "npm:^1.4.3" + "@vitejs/plugin-react": "npm:^4.3.1" + babel-loader: "npm:^8.2.2" + conventional-changelog-conventionalcommits: "npm:^4.6.3" + cross-env: "npm:^7.0.3" + date-fns: "npm:^4.1.0" + husky: "npm:^8.0.0" + lint-staged: "npm:13.1.0" + lodash.merge: "npm:^4.6.2" + np: "npm:^8.0.4" + patch-package: "npm:^8.0.0" + prettier: "npm:^3.3.3" + react: "npm:18.2.0" + react-dom: "npm:18.2.0" + rollup: "npm:^2.70.1" + rollup-plugin-typescript2: "npm:^0.36.0" + semantic-release: "npm:^19.0.2" + storybook: "npm:^8.2.5" + storybook-dark-mode: "npm:^4.0.2" + tinycolor2: "npm:^1.4.2" + typescript: "npm:5.4.5" + use-debounce: "npm:9.0.2" + vite: "npm:^5.1.5" + peerDependencies: + react: ">=18" + react-dom: ">=18" + checksum: 10c0/3ef3f665b402a247cda758df9d485b6d573c69e1ebb595e69139a087c88bbd25ad0999b016cd28fa8ed174ec90b347bb5a94661a383f357fd07b6bfd9ce4c287 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.18.0, @types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.18.0": + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + languageName: node + linkType: hard + +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "npm:*" + "@types/keyv": "npm:^3.1.4" + "@types/node": "npm:*" + "@types/responselike": "npm:^1.0.0" + checksum: 10c0/10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03 + languageName: node + linkType: hard + +"@types/cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "@types/cookie@npm:0.6.0" + checksum: 10c0/5b326bd0188120fb32c0be086b141b1481fec9941b76ad537f9110e10d61ee2636beac145463319c71e4be67a17e85b81ca9e13ceb6e3bb63b93d16824d6c149 + languageName: node + linkType: hard + +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 10c0/f0af6c95ac1988c4827964bd9d3b51d24da442e2188943f6dfcb1e1559103d5d024d564b2e9d3f84c53714a02a0a7435c7441138eb63d9af5de4dfc66cdc0d92 + languageName: node + linkType: hard + +"@types/estree@npm:1.0.7, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: 10c0/be815254316882f7c40847336cd484c3bc1c3e34f710d197160d455dc9d6d050ffbf4c3bc76585dba86f737f020ab20bdb137ebe0e9116b0c86c7c0342221b8c + languageName: node + linkType: hard + +"@types/glob@npm:^7.1.1": + version: 7.2.0 + resolution: "@types/glob@npm:7.2.0" + dependencies: + "@types/minimatch": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/a8eb5d5cb5c48fc58c7ca3ff1e1ddf771ee07ca5043da6e4871e6757b4472e2e73b4cfef2644c38983174a4bc728c73f8da02845c28a1212f98cabd293ecae98 + languageName: node + linkType: hard + +"@types/history@npm:^4.7.11": + version: 4.7.11 + resolution: "@types/history@npm:4.7.11" + checksum: 10c0/3facf37c2493d1f92b2e93a22cac7ea70b06351c2ab9aaceaa3c56aa6099fb63516f6c4ec1616deb5c56b4093c026a043ea2d3373e6c0644d55710364d02c934 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:*, @types/http-cache-semantics@npm:^4.0.2": + version: 4.0.4 + resolution: "@types/http-cache-semantics@npm:4.0.4" + checksum: 10c0/51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest-axe@npm:^3.5.3": + version: 3.5.9 + resolution: "@types/jest-axe@npm:3.5.9" + dependencies: + "@types/jest": "npm:*" + axe-core: "npm:^3.5.5" + checksum: 10c0/18ae6143c5ca058066d469a7449493dcad0810a06ae3fd4bdadd00b84ffbfffb8b8faa758b7b1327687a5a398f14cc2f6742760f911dae84e25e042564cb3fcf + languageName: node + linkType: hard + +"@types/jest@npm:*": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed + languageName: node + linkType: hard + +"@types/jest@npm:^27.4.1": + version: 27.5.2 + resolution: "@types/jest@npm:27.5.2" + dependencies: + jest-matcher-utils: "npm:^27.0.0" + pretty-format: "npm:^27.0.0" + checksum: 10c0/29ef3da9b94a15736a67fc13956f385ac2ba2c6297f50d550446842c278f2e0d9f343dcd8e31c321ada5d8a1bd67bc1d79c7b6ff1802d55508c692123b3d9794 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.5": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + +"@types/lodash.merge@npm:^4.6.6": + version: 4.6.9 + resolution: "@types/lodash.merge@npm:4.6.9" + dependencies: + "@types/lodash": "npm:*" + checksum: 10c0/2e2ccacdceb2e23343a514e8c24540fc4e1f1ffd616b645eb72ec685da9389d99a2544f04d61921e46a6768f8cc0fe5f58d4f7edaba9bc50552f0ca7df905e83 + languageName: node + linkType: hard + +"@types/lodash@npm:*, @types/lodash@npm:^4.17.16": + version: 4.17.16 + resolution: "@types/lodash@npm:4.17.16" + checksum: 10c0/cf017901b8ab1d7aabc86d5189d9288f4f99f19a75caf020c0e2c77b8d4cead4db0d0b842d009b029339f92399f49f34377dd7c2721053388f251778b4c23534 + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 10c0/5edf1099505ac568da55f9ae8a93e7e314e8cbc13d3445d0be61b75941226b005e1390d9b95caecf5dcb00c9d1bab2f1f60f6ff9876dc091a48b547495007720 + languageName: node + linkType: hard + +"@types/minimatch@npm:*": + version: 5.1.2 + resolution: "@types/minimatch@npm:5.1.2" + checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 + languageName: node + linkType: hard + +"@types/minimist@npm:^1.2.0": + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 10c0/3f791258d8e99a1d7d0ca2bda1ca6ea5a94e5e7b8fc6cde84dd79b0552da6fb68ade750f0e17718f6587783c24254bbca0357648dd59dc3812c150305cabdc46 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 22.14.0 + resolution: "@types/node@npm:22.14.0" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/9d79f3fa1af9c2c869514f419c4a4905b34c10e12915582fd1784868ac4e74c6d306cf5eb47ef889b6750ab85a31be96618227b86739c4a3e0b1c15063f384c6 + languageName: node + linkType: hard + +"@types/node@npm:^20.10.0": + version: 20.17.30 + resolution: "@types/node@npm:20.17.30" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/649782c7822367d751472d70c948bcc50cded1a4744610f706f81cd54e1fc015523567d7e3e17f6b19e3e2797f6f23b653e898bdb4a2f21f8759ceba49976310 + languageName: node + linkType: hard + +"@types/node@npm:^22.15.18": + version: 22.15.18 + resolution: "@types/node@npm:22.15.18" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/e23178c568e2dc6b93b6aa3b8dfb45f9556e527918c947fe7406a4c92d2184c7396558912400c3b1b8d0fa952ec63819aca2b8e4d3545455fc6f1e9623e09ca6 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: 10c0/aef7bb9b015883d6f4119c423dd28c4bdc17b0e8a0ccf112c78b4fe0e91fbc4af7c6204b04bba0e199a57d2f3fbbd5b4a14bf8739bf9d2a39b2a0aad545e0f86 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.14 + resolution: "@types/prop-types@npm:15.7.14" + checksum: 10c0/1ec775160bfab90b67a782d735952158c7e702ca4502968aa82565bd8e452c2de8601c8dfe349733073c31179116cf7340710160d3836aa8a1ef76d1532893b1 + languageName: node + linkType: hard + +"@types/react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "@types/react-dom@npm:18.2.0" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/f9f7a396c5499a6fb97e31ef9b050cf9ec5f61e6ec4040badb53428f9e73258c95e5b3dd8233541631b0461d623739b3f6348a4130359c92ce0a69d74a5e9176 + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.19": + version: 18.3.6 + resolution: "@types/react-dom@npm:18.3.6" + peerDependencies: + "@types/react": ^18.0.0 + checksum: 10c0/e77ac076096bd4b2e0a99130c47959762a927e536b83412e470ac5198d4b8d111cfd787ff2ab7c22bc39c114c0c5fef80046ea0cccb02a655e021a435859314a + languageName: node + linkType: hard + +"@types/react-router-dom@npm:^5.1.3": + version: 5.3.3 + resolution: "@types/react-router-dom@npm:5.3.3" + dependencies: + "@types/history": "npm:^4.7.11" + "@types/react": "npm:*" + "@types/react-router": "npm:*" + checksum: 10c0/a9231a16afb9ed5142678147eafec9d48582809295754fb60946e29fcd3757a4c7a3180fa94b45763e4c7f6e3f02379e2fcb8dd986db479dcab40eff5fc62a91 + languageName: node + linkType: hard + +"@types/react-router@npm:*": + version: 5.1.20 + resolution: "@types/react-router@npm:5.1.20" + dependencies: + "@types/history": "npm:^4.7.11" + "@types/react": "npm:*" + checksum: 10c0/1f7eee61981d2f807fa01a34a0ef98ebc0774023832b6611a69c7f28fdff01de5a38cabf399f32e376bf8099dcb7afaf724775bea9d38870224492bea4cb5737 + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:>=16": + version: 19.1.0 + resolution: "@types/react@npm:19.1.0" + dependencies: + csstype: "npm:^3.0.2" + checksum: 10c0/632fd20ee176e55801a61c5f854141b043571a3e363ef106b047b766a813a12735cbb37abb3d61d126346979f530f2ed269a60c8ef3cdee54e5e9fe4174e5dad + languageName: node + linkType: hard + +"@types/react@npm:18.2.0": + version: 18.2.0 + resolution: "@types/react@npm:18.2.0" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/e38f98b7524817459bb1214d39f4cfcb1dd7ffb31992a427b4494f3988aa6195dc349dfb66b299270b399b34568d045bf1cb6230349a6d343e183052ee486eaa + languageName: node + linkType: hard + +"@types/react@npm:^18.2.0": + version: 18.3.20 + resolution: "@types/react@npm:18.3.20" + dependencies: + "@types/prop-types": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/65fa867c91357e4c4c646945c8b99044360f8973cb7f928ec4de115fe3207827985d45be236e6fd6c092b09f631c2126ce835c137be30718419e143d73300d8f + languageName: node + linkType: hard + +"@types/resolve@npm:^1.20.2": + version: 1.20.6 + resolution: "@types/resolve@npm:1.20.6" + checksum: 10c0/a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.26.0 + resolution: "@types/scheduler@npm:0.26.0" + checksum: 10c0/84626b06551ab7e1247412a2588430da5cd75263a353f1fd70593ca7331d43797937b89fe587089c6b3613d0658986087c5f0b2debef5bae831cdc1104a432ef + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/statuses@npm:^2.0.4": + version: 2.0.5 + resolution: "@types/statuses@npm:2.0.5" + checksum: 10c0/4dacec0b29483a44be902a022a11a22b339de7a6e7b2059daa4f7add10cb6dbcc28d02d2a416fe9687e48d335906bf983065391836d4e7c847e55ddef4de8fad + languageName: node + linkType: hard + +"@types/tinycolor2@npm:^1.4.3": + version: 1.4.6 + resolution: "@types/tinycolor2@npm:1.4.6" + checksum: 10c0/922020c3326460e9d8502c8a98f80db69f06fd14e07fe5a48e8ffe66175762298a9bd51263f2a0c9a40632886a74975a3ff79396defcdbeac0dc176e3e5056e8 + languageName: node + linkType: hard + +"@types/tough-cookie@npm:^4.0.5": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + +"@types/uuid@npm:^9.0.1": + version: 9.0.8 + resolution: "@types/uuid@npm:9.0.8" + checksum: 10c0/b411b93054cb1d4361919579ef3508a1f12bf15b5fdd97337d3d351bece6c921b52b6daeef89b62340fd73fd60da407878432a1af777f40648cbe53a01723489 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.29.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/type-utils": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/3b05a7376a0752484229369af6eb60d13cf06d2331e79c2d471cb0b963dcf5b25a31617cafdc71d74e98921091f479f3da10725b761878a89421191d23866b54 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:8.29.0, @typescript-eslint/parser@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/parser@npm:8.29.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/270b9b27e3edb54b2f98a97b7f026f95580214002a04167809b1b71233c36d1585041cdcf26f9e08f48b9eb92652f4f9c756a83dc230f48fd204a4e5e054831c + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/scope-manager@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + checksum: 10c0/330d777043a99485b51197ad24927f1276d61e61adaf710f012b3fe7db2ab67c8925c0526f801715b498e7d8fa7cef390006b6f7ae40cee89abe22e8e438de9a + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/type-utils@npm:8.29.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/f254c8d22fc29ea088d16b06e4be1756cb5ad05ccf5989e163637b9c582e5fc8c27aa7003aad6e6a8158d56d7711ea1e4e9d361702c1a18945e0e6aaff1267c5 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/types@npm:8.29.0" + checksum: 10c0/fc1e3f3071102973a9cfb8ae843c51398bd74b5583b7b0edad182ea605ef85e72ceac7987513581869958b3a65303af6b3471bfba5b7be1338e8add62019c858 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/61dd52229a0758e0bd29f732115c16e640a2418fb25488877c74ef03cdbeb43ddc592a37094abd794ef49812f33d6f814c5b662b95ea796ed0a6c6bfc849299b + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/utils@npm:8.29.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/e259d7edd12946b2dc8e1aa3bbea10f66c5277f27dda71368aa2b2923487f28cd1c123681aaae22518a31c8aeabd60a5365f8a832d0f6e6efadb03745a2d8a31 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.29.0" + dependencies: + "@typescript-eslint/types": "npm:8.29.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/7f5452b137c4edd258b2289cddf5d92687780375db33421bc4f5e2e9b0c94064c7c5ed3a7b5d96dc9c2d09ca7842b4415b3f3ed3e3f1ae3ac2e625ecb5e87efc + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.4.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.4.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.4.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.4.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.4.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.8" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:^4.2.1, @vitejs/plugin-react@npm:^4.3.1": + version: 4.3.4 + resolution: "@vitejs/plugin-react@npm:4.3.4" + dependencies: + "@babel/core": "npm:^7.26.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.2" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/38a47a1dbafae0b97142943d83ee3674cb3331153a60b1a3fd29d230c12c9dfe63b7c345b231a3450168ed8a9375a9a1a253c3d85e9efdc19478c0d56b98496c + languageName: node + linkType: hard + +"@vitest/coverage-v8@npm:^1.3.1": + version: 1.6.1 + resolution: "@vitest/coverage-v8@npm:1.6.1" + dependencies: + "@ampproject/remapping": "npm:^2.2.1" + "@bcoe/v8-coverage": "npm:^0.2.3" + debug: "npm:^4.3.4" + istanbul-lib-coverage: "npm:^3.2.2" + istanbul-lib-report: "npm:^3.0.1" + istanbul-lib-source-maps: "npm:^5.0.4" + istanbul-reports: "npm:^3.1.6" + magic-string: "npm:^0.30.5" + magicast: "npm:^0.3.3" + picocolors: "npm:^1.0.0" + std-env: "npm:^3.5.0" + strip-literal: "npm:^2.0.0" + test-exclude: "npm:^6.0.0" + peerDependencies: + vitest: 1.6.1 + checksum: 10c0/2e88903e6487d3ddfcffcb12fdf3796d8e30f3c0db6ae3bbc8670652c9b8c890202bdb9bdc057a288ff8948e11e25bbd2d42f231cb6674fa2c826fc07377b5fc + languageName: node + linkType: hard + +"@vitest/expect@npm:1.6.1": + version: 1.6.1 + resolution: "@vitest/expect@npm:1.6.1" + dependencies: + "@vitest/spy": "npm:1.6.1" + "@vitest/utils": "npm:1.6.1" + chai: "npm:^4.3.10" + checksum: 10c0/278164b2a32a7019b443444f21111c5e32e4cadee026cae047ae2a3b347d99dca1d1fb7b79509c88b67dc3db19fa9a16265b7d7a8377485f7e37f7851e44495a + languageName: node + linkType: hard + +"@vitest/runner@npm:1.6.1": + version: 1.6.1 + resolution: "@vitest/runner@npm:1.6.1" + dependencies: + "@vitest/utils": "npm:1.6.1" + p-limit: "npm:^5.0.0" + pathe: "npm:^1.1.1" + checksum: 10c0/36333f1a596c4ad85d42c6126cc32959c984d584ef28d366d366fa3672678c1a0f5e5c2e8717a36675b6620b57e8830f765d6712d1687f163ed0a8ebf23c87db + languageName: node + linkType: hard + +"@vitest/snapshot@npm:1.6.1": + version: 1.6.1 + resolution: "@vitest/snapshot@npm:1.6.1" + dependencies: + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + checksum: 10c0/68bbc3132c195ec37376469e4b183fc408e0aeedd827dffcc899aac378e9ea324825f0873062786e18f00e3da9dd8a93c9bb871c07471ee483e8df963cb272eb + languageName: node + linkType: hard + +"@vitest/spy@npm:1.6.1": + version: 1.6.1 + resolution: "@vitest/spy@npm:1.6.1" + dependencies: + tinyspy: "npm:^2.2.0" + checksum: 10c0/5207ec0e7882819f0e0811293ae6d14163e26927e781bb4de7d40b3bd99c1fae656934c437bb7a30443a3e7e736c5bccb037bbf4436dbbc83d29e65247888885 + languageName: node + linkType: hard + +"@vitest/utils@npm:1.6.1": + version: 1.6.1 + resolution: "@vitest/utils@npm:1.6.1" + dependencies: + diff-sequences: "npm:^29.6.3" + estree-walker: "npm:^3.0.3" + loupe: "npm:^2.3.7" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d4c619e5688cbc22a60c412719c6baa40376b7671bdbdc3072552f5c5a5ee5d24a96ea328b054018debd49e0626a5e3db672921b2c6b5b17b9a52edd296806a + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda + languageName: node + linkType: hard + +"JSONStream@npm:^1.0.4": + version: 1.3.5 + resolution: "JSONStream@npm:1.3.5" + dependencies: + jsonparse: "npm:^1.2.0" + through: "npm:>=2.2.7 <3" + bin: + JSONStream: ./bin.js + checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0, abbrev@npm:~1.1.1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:^3.0.0": + version: 3.0.0 + resolution: "abbrev@npm:3.0.0" + checksum: 10c0/049704186396f571650eb7b22ed3627b77a5aedf98bb83caf2eac81ca2a3e25e795394b0464cfb2d6076df3db6a5312139eac5b6a126ca296ac53c5008069c28 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.3.2": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.14.0": + version: 8.14.1 + resolution: "acorn@npm:8.14.1" + bin: + acorn: bin/acorn + checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.6.0 + resolution: "agentkeepalive@npm:4.6.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"aggregate-error@npm:^4.0.0": + version: 4.0.1 + resolution: "aggregate-error@npm:4.0.1" + dependencies: + clean-stack: "npm:^4.0.0" + indent-string: "npm:^5.0.0" + checksum: 10c0/75fd739f5c4c60a667cce35ccaf0edf135e147ef0be9a029cab75de14ac9421779b15339d562e58d25b233ea0ef2bbd4c916f149fdbcb73c2b9a62209e611343 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"all-package-names@npm:^2.0.2": + version: 2.0.897 + resolution: "all-package-names@npm:2.0.897" + dependencies: + commander-version: "npm:^1.1.0" + p-lock: "npm:^2.0.0" + parse-json-object: "npm:^2.0.1" + progress: "npm:^2.0.3" + types-json: "npm:^1.2.2" + bin: + all-package-names: build/bin/index.js + checksum: 10c0/0527a9c9971e3f9eeb7ff9ad3cc49a350f0d6ec93e8b90e35de3bb6b8b41bab6176a7b0596a2dd8136de536d45245eaad984099edca4e787d2929ff77cd2a040 + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.1": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + languageName: node + linkType: hard + +"ansi-escapes@npm:^3.0.0, ansi-escapes@npm:^3.2.0": + version: 3.2.0 + resolution: "ansi-escapes@npm:3.2.0" + checksum: 10c0/084e1ce38139ad2406f18a8e7efe2b850ddd06ce3c00f633392d1ce67756dab44fe290e573d09ef3c9a0cb13c12881e0e35a8f77a017d39a0a4ab85ae2fae04f + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^5.0.0": + version: 5.0.0 + resolution: "ansi-escapes@npm:5.0.0" + dependencies: + type-fest: "npm:^1.0.2" + checksum: 10c0/f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 + languageName: node + linkType: hard + +"ansi-escapes@npm:^6.2.0": + version: 6.2.1 + resolution: "ansi-escapes@npm:6.2.1" + checksum: 10c0/a2c6f58b044be5f69662ee17073229b492daa2425a7fd99a665db6c22eab6e4ab42752807def7281c1c7acfed48f87f2362dda892f08c2c437f1b39c6b033103 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b + languageName: node + linkType: hard + +"ansi-regex@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 10c0/d108a7498b8568caf4a46eea4f1784ab4e0dfb2e3f3938c697dee21443d622d765c958f2b7e2b9f6b9e55e2e2af0584eaa9915d51782b89a841c28e744e7a167 + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: 10c0/d36d34234d077e8770169d980fed7b2f3724bfa2a01da150ccd75ef9707c80e883d27cdf7a0eac2f145ac1d10a785a8a855cffd05b85f778629a0db62e7033da + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^2.2.1": + version: 2.2.1 + resolution: "ansi-styles@npm:2.2.1" + checksum: 10c0/7c68aed4f1857389e7a12f85537ea5b40d832656babbf511cc7ecd9efc52889b9c3e5653a71a6aade783c3c5e0aa223ad4ff8e83c27ac8a666514e6c79068cab + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0, ansi-styles@npm:^4.3.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"ansicolors@npm:~0.3.2": + version: 0.3.2 + resolution: "ansicolors@npm:0.3.2" + checksum: 10c0/e202182895e959c5357db6c60791b2abaade99fcc02221da11a581b26a7f83dc084392bc74e4d3875c22f37b3c9ef48842e896e3bfed394ec278194b8003e0ac + languageName: node + linkType: hard + +"any-observable@npm:^0.3.0": + version: 0.3.0 + resolution: "any-observable@npm:0.3.0" + checksum: 10c0/104c2b79c2ac7e6c75b35f8fd62babf73015668f22bd25336c6f848350d91f9e7daf2fddbf1c1b76fe795e89fbc91b49f70a2aec5c69f1acf0562c344f36042b + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + languageName: node + linkType: hard + +"archy@npm:~1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"argv-formatter@npm:~1.0.0": + version: 1.0.0 + resolution: "argv-formatter@npm:1.0.0" + checksum: 10c0/e5582aef98e6b9a70cfe038a3abf6cdd926714b5ce761830bcbd5ac7be86d17ae583fcc8a2cdf4a2ac0b6024ec100b7312160fcefb1520998f476473da6a941d + languageName: node + linkType: hard + +"aria-hidden@npm:^1.2.4": + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/8abcab2e1432efc4db415e97cb3959649ddf52c8fc815d7384f43f3d3abf56f1c12852575d00df9a8927f421d7e0712652dd5f8db244ea57634344e29ecfc74a + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + +"array-ify@npm:^1.0.0": + version: 1.0.0 + resolution: "array-ify@npm:1.0.0" + checksum: 10c0/75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + is-string: "npm:^1.0.7" + checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.6 + resolution: "array.prototype.findlastindex@npm:1.2.6" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-shim-unscopables: "npm:^1.1.0" + checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + languageName: node + linkType: hard + +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab + languageName: node + linkType: hard + +"asap@npm:^2.0.0": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"axe-core@npm:^3.5.5": + version: 3.5.6 + resolution: "axe-core@npm:3.5.6" + checksum: 10c0/f02a5b0e04e04a1024d7dc5c9931f87864c0394a218c6bd9057f0104df7f6310178bbbab47afd0c0fd4b585a08e8c599eebf5a89b6898f3fbeb7bfa33c25bfc8 + languageName: node + linkType: hard + +"axe-core@npm:^4.10.0": + version: 4.10.3 + resolution: "axe-core@npm:4.10.3" + checksum: 10c0/1b1c24f435b2ffe89d76eca0001cbfff42dbf012ad9bd37398b70b11f0d614281a38a28bc3069e8972e3c90ec929a8937994bd24b0ebcbaab87b8d1e241ab0c7 + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 + languageName: node + linkType: hard + +"babel-loader@npm:^8.2.2": + version: 8.4.1 + resolution: "babel-loader@npm:8.4.1" + dependencies: + find-cache-dir: "npm:^3.3.1" + loader-utils: "npm:^2.0.4" + make-dir: "npm:^3.1.0" + schema-utils: "npm:^2.6.5" + peerDependencies: + "@babel/core": ^7.0.0 + webpack: ">=2" + checksum: 10c0/efdca9c3ef502af58b923a32123d660c54fd0be125b7b64562c8a43bda0a3a55dac0db32331674104e7e5184061b75c3a0e395b2c5ccdc7cb2125dd9ec7108d2 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.13 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b4a54561606d388e6f9499f39f03171af4be7f9ce2355e737135e40afa7086cf6790fdd706c2e59f488c8fa1f76123d28783708e07ddc84647dca8ed8fb98e06 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.11.0": + version: 0.11.1 + resolution: "babel-plugin-polyfill-corejs3@npm:0.11.1" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.3" + core-js-compat: "npm:^3.40.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/025f754b6296d84b20200aff63a3c1acdd85e8c621781f2bd27fe2512d0060526192d02329326947c6b29c27cf475fbcfaaff8c51eab1d2bfc7b79086bb64229 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.4 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.4" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/ebaaf9e4e53201c02f496d3f686d815e94177b3e55b35f11223b99c60d197a29f907a2e87bbcccced8b7aff22a807fccc1adaf04722864a8e1862c8845ab830a + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: 10c0/0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + languageName: node + linkType: hard + +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: "npm:^8.0.4" + checksum: 10c0/911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 + languageName: node + linkType: hard + +"big-integer@npm:^1.6.44": + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 10c0/9604224b4c2ab3c43c075d92da15863077a9f59e5d4205f4e7e76acd0cd47e8d469ec5e5dba8d9b32aa233951893b29329ca56ac80c20ce094b4a647a66abae0 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + languageName: node + linkType: hard + +"bin-links@npm:^3.0.3": + version: 3.0.3 + resolution: "bin-links@npm:3.0.3" + dependencies: + cmd-shim: "npm:^5.0.0" + mkdirp-infer-owner: "npm:^2.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + read-cmd-shim: "npm:^3.0.0" + rimraf: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.0" + checksum: 10c0/a7f3ea8663213d14134695b42f66994e11f00f0519617537d80cee3b78b7cbb5a627c0d3aafd9d8c748eee9b1af03dbdddedfbf18be738b50a4c11bdd739a160 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.2.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bottleneck@npm:^2.15.3": + version: 2.19.5 + resolution: "bottleneck@npm:2.19.5" + checksum: 10c0/b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0 + languageName: node + linkType: hard + +"boxen@npm:^7.0.0": + version: 7.1.1 + resolution: "boxen@npm:7.1.1" + dependencies: + ansi-align: "npm:^3.0.1" + camelcase: "npm:^7.0.1" + chalk: "npm:^5.2.0" + cli-boxes: "npm:^3.0.0" + string-width: "npm:^5.1.2" + type-fest: "npm:^2.13.0" + widest-line: "npm:^4.0.1" + wrap-ansi: "npm:^8.1.0" + checksum: 10c0/3a9891dc98ac40d582c9879e8165628258e2c70420c919e70fff0a53ccc7b42825e73cda6298199b2fbc1f41f5d5b93b492490ad2ae27623bed3897ddb4267f8 + languageName: node + linkType: hard + +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: "npm:^1.6.44" + checksum: 10c0/ce79c69e0f6efe506281e7c84e3712f7d12978991675b6e3a58a295b16f13ca81aa9b845c335614a545e0af728c8311b6aa3142af76ba1cb616af9bbac5c4a9f + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browser-assert@npm:^1.2.1": + version: 1.2.1 + resolution: "browser-assert@npm:1.2.1" + checksum: 10c0/902abf999f92c9c951fdb6d7352c09eea9a84706258699655f7e7906e42daa06a1ae286398a755872740e05a6a71c43c5d1a0c0431d67a8cdb66e5d859a3fc0c + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0, browserslist@npm:^4.24.4": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10c0/db7ebc1733cf471e0b490b4f47e3e2ea2947ce417192c9246644e92c667dd56a71406cc58f62ca7587caf828364892e9952904a02b7aead752bc65b62a37cfe9 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"builtins@npm:^1.0.3": + version: 1.0.3 + resolution: "builtins@npm:1.0.3" + checksum: 10c0/493afcc1db0a56d174cc85bebe5ca69144f6fdd0007d6cbe6b2434185314c79d83cb867e492b56aa5cf421b4b8a8135bf96ba4c3ce71994cf3da154d1ea59747 + languageName: node + linkType: hard + +"builtins@npm:^5.0.0": + version: 5.1.0 + resolution: "builtins@npm:5.1.0" + dependencies: + semver: "npm:^7.0.0" + checksum: 10c0/3c32fe5bd7ed4ff7dbd6fb14bcb9d7eaa7e967327f1899cd336f8625d3f46fceead0a53528f1e332aeaee757034ebb307cb2f1a37af2b86a3c5ad4845d01c0c8 + languageName: node + linkType: hard + +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: "npm:^5.0.0" + checksum: 10c0/57bc7f8b025d83961b04db2f1eff6a87f2363c2891f3542a4b82471ff8ebb5d484af48e9784fcdb28ef1d48bb01f03d891966dc3ef58758e46ea32d750ce40f8 + languageName: node + linkType: hard + +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 + languageName: node + linkType: hard + +"cacache@npm:^16.0.0, cacache@npm:^16.1.0, cacache@npm:^16.1.3": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 10c0/cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 + languageName: node + linkType: hard + +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + languageName: node + linkType: hard + +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: 10c0/a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c + languageName: node + linkType: hard + +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 10c0/63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 + languageName: node + linkType: hard + +"cacheable-request@npm:^10.2.8": + version: 10.2.14 + resolution: "cacheable-request@npm:10.2.14" + dependencies: + "@types/http-cache-semantics": "npm:^4.0.2" + get-stream: "npm:^6.0.1" + http-cache-semantics: "npm:^4.1.1" + keyv: "npm:^4.5.3" + mimic-response: "npm:^4.0.0" + normalize-url: "npm:^8.0.0" + responselike: "npm:^3.0.0" + checksum: 10c0/41b6658db369f20c03128227ecd219ca7ac52a9d24fc0f499cc9aa5d40c097b48b73553504cebd137024d957c0ddb5b67cf3ac1439b136667f3586257763f88d + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.2": + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" + dependencies: + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^4.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^6.0.1" + responselike: "npm:^2.0.0" + checksum: 10c0/0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"caller-callsite@npm:^2.0.0": + version: 2.0.0 + resolution: "caller-callsite@npm:2.0.0" + dependencies: + callsites: "npm:^2.0.0" + checksum: 10c0/a00ca91280e10ee2321de21dda6c168e427df7a63aeaca027ea45e3e466ac5e1a5054199f6547ba1d5a513d3b6b5933457266daaa47f8857fb532a343ee6b5e1 + languageName: node + linkType: hard + +"caller-path@npm:^2.0.0": + version: 2.0.0 + resolution: "caller-path@npm:2.0.0" + dependencies: + caller-callsite: "npm:^2.0.0" + checksum: 10c0/029b5b2c557d831216305c3218e9ff30fa668be31d58dd08088f74c8eabc8362c303e0908b3a93abb25ba10e3a5bfc9cff5eb7fab6ab9cf820e3b160ccb67581 + languageName: node + linkType: hard + +"callsites@npm:^2.0.0": + version: 2.0.0 + resolution: "callsites@npm:2.0.0" + checksum: 10c0/13bff4fee946e6020b37e76284e95e24aa239c9e34ac4f3451e4c5330fca6f2f962e1d1ab69e4da7940e1fce135107a2b2b98c01d62ea33144350fc89dc5494e + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"callsites@npm:^4.0.0": + version: 4.2.0 + resolution: "callsites@npm:4.2.0" + checksum: 10c0/8f7e269ec09fc0946bb22d838a8bc7932e1909ab4a833b964749f4d0e8bdeaa1f253287c4f911f61781f09620b6925ccd19a5ea4897489c4e59442c660c312a3 + languageName: node + linkType: hard + +"camelcase-keys@npm:^6.2.2": + version: 6.2.2 + resolution: "camelcase-keys@npm:6.2.2" + dependencies: + camelcase: "npm:^5.3.1" + map-obj: "npm:^4.0.0" + quick-lru: "npm:^4.0.1" + checksum: 10c0/bf1a28348c0f285c6c6f68fb98a9d088d3c0269fed0cdff3ea680d5a42df8a067b4de374e7a33e619eb9d5266a448fe66c2dd1f8e0c9209ebc348632882a3526 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^7.0.1": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 10c0/3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001712 + resolution: "caniuse-lite@npm:1.0.30001712" + checksum: 10c0/b3df8bdcc3335969380c2e47acb36c89bfc7f8fb4ef7ee2a5380e30ba46aa69e9d411654bc29894a06c201a1d60d490ab9b92787f3b66d7a7a38d71360e68215 + languageName: node + linkType: hard + +"cardinal@npm:^2.1.1": + version: 2.1.1 + resolution: "cardinal@npm:2.1.1" + dependencies: + ansicolors: "npm:~0.3.2" + redeyed: "npm:~2.1.0" + bin: + cdl: ./bin/cdl.js + checksum: 10c0/0051d0e64c0e1dff480c1aace4c018c48ecca44030533257af3f023107ccdeb061925603af6d73710f0345b0ae0eb57e5241d181d9b5fdb595d45c5418161675 + languageName: node + linkType: hard + +"chai@npm:^4.3.10": + version: 4.5.0 + resolution: "chai@npm:4.5.0" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.1.0" + checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d + languageName: node + linkType: hard + +"chalk@npm:^1.0.0, chalk@npm:^1.1.3": + version: 1.1.3 + resolution: "chalk@npm:1.1.3" + dependencies: + ansi-styles: "npm:^2.2.1" + escape-string-regexp: "npm:^1.0.2" + has-ansi: "npm:^2.0.0" + strip-ansi: "npm:^3.0.0" + supports-color: "npm:^2.0.0" + checksum: 10c0/28c3e399ec286bb3a7111fd4225ebedb0d7b813aef38a37bca7c498d032459c265ef43404201d5fbb8d888d29090899c95335b4c0cda13e8b126ff15c541cef8 + languageName: node + linkType: hard + +"chalk@npm:^2.3.2, chalk@npm:^2.4.1, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^5.0.0, chalk@npm:^5.0.1, chalk@npm:^5.2.0": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"chart.js@npm:^4.4.1": + version: 4.4.8 + resolution: "chart.js@npm:4.4.8" + dependencies: + "@kurkle/color": "npm:^0.3.0" + checksum: 10c0/4777e3fef7ccfb664c02b79f90e53fb0e46c01293bc56af5ab81aa8ffef4b1ccc675bef948b7efd071a5dd0ebd59c0e95c42ef606f728da8e3ff1741fc2d1df0 + languageName: node + linkType: hard + +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 10c0/8c5fa3830a2bcee2b53c2e5018226f0141db9ec9f7b1e27a5c57db5512332cde8a0beb769bcbaf0d8775a78afbf2bb841928feca4ea6219638a5b088f9884b46 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cidr-regex@npm:^3.1.1": + version: 3.1.1 + resolution: "cidr-regex@npm:3.1.1" + dependencies: + ip-regex: "npm:^4.1.0" + checksum: 10c0/3049225d23fe5b6e0e439d35f90bd344a1e0d2049f77786cc05a755d675b74f5ba8fc3420fb7de0f00892ab8b5af4540125cf46faff91074ee2488711b3a106d + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"clean-stack@npm:^4.0.0": + version: 4.2.0 + resolution: "clean-stack@npm:4.2.0" + dependencies: + escape-string-regexp: "npm:5.0.0" + checksum: 10c0/2bdf981a0fef0a23c14255df693b30eb9ae27eedf212470d8c400a0c0b6fb82fbf1ff8c5216ccd5721e3670b700389c886b1dce5070776dc9fbcc040957758c0 + languageName: node + linkType: hard + +"cli-boxes@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-boxes@npm:3.0.0" + checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9 + languageName: node + linkType: hard + +"cli-columns@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-columns@npm:4.0.0" + dependencies: + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/f724c874dba09376f7b2d6c70431d8691d5871bd5d26c6f658dd56b514e668ed5f5b8d803fb7e29f4000fc7f3a6d038d415b892ae7fa3dcd9cc458c07df17871 + languageName: node + linkType: hard + +"cli-cursor@npm:^2.0.0, cli-cursor@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-cursor@npm:2.1.0" + dependencies: + restore-cursor: "npm:^2.0.0" + checksum: 10c0/09ee6d8b5b818d840bf80ec9561eaf696672197d3a02a7daee2def96d5f52ce6e0bbe7afca754ccf14f04830b5a1b4556273e983507d5029f95bba3016618eda + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.2, cli-table3@npm:^0.6.3": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 + languageName: node + linkType: hard + +"cli-truncate@npm:^0.2.1": + version: 0.2.1 + resolution: "cli-truncate@npm:0.2.1" + dependencies: + slice-ansi: "npm:0.0.4" + string-width: "npm:^1.0.1" + checksum: 10c0/c6caa5e2b70d841c42f4a2270d6fc7129df915f8911e4afa90c79231ccc857cd819a2c90e0707fde04e51ce56b4d71646b843f6cbaff4f7cdcb3b91ed51f6e89 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cli-truncate@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-truncate@npm:3.1.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^5.0.0" + checksum: 10c0/a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c + languageName: node + linkType: hard + +"cli-width@npm:^2.0.0": + version: 2.2.1 + resolution: "cli-width@npm:2.2.1" + checksum: 10c0/e3a6d422d657ca111c630f69ee0f1a499e8f114eea158ccb2cdbedd19711edffa217093bbd43dafb34b68d1b1a3b5334126e51d059b9ec1d19afa53b42b3ef86 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"cli-width@npm:^4.1.0": + version: 4.1.0 + resolution: "cli-width@npm:4.1.0" + checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"cmd-shim@npm:^5.0.0": + version: 5.0.0 + resolution: "cmd-shim@npm:5.0.0" + dependencies: + mkdirp-infer-owner: "npm:^2.0.0" + checksum: 10c0/0ce77d641bed74e41b74f07a00cbdc4e8690787d2136e40418ca7c1bfcff9d92c0350e31785c7bb98b6c1fb8ae7dcedcdc872b98c6647c28de45e2dc7a70ae43 + languageName: node + linkType: hard + +"code-point-at@npm:^1.0.0": + version: 1.1.0 + resolution: "code-point-at@npm:1.1.0" + checksum: 10c0/33f6b234084e46e6e369b6f0b07949392651b4dde70fc6a592a8d3dafa08d5bb32e3981a02f31f6fc323a26bc03a4c063a9d56834848695bda7611c2417ea2e6 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:^1.1.4, color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 + languageName: node + linkType: hard + +"colorette@npm:^2.0.19": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"columnify@npm:^1.6.0": + version: 1.6.0 + resolution: "columnify@npm:1.6.0" + dependencies: + strip-ansi: "npm:^6.0.1" + wcwidth: "npm:^1.0.0" + checksum: 10c0/25b90b59129331bbb8b0c838f8df69924349b83e8eab9549f431062a20a39094b8d744bb83265be38fd5d03140ce4bfbd85837c293f618925e83157ae9535f1d + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander-version@npm:^1.1.0": + version: 1.1.0 + resolution: "commander-version@npm:1.1.0" + dependencies: + "@bconnorwhite/module": "npm:^2.0.2" + commander: "npm:^6.1.0" + checksum: 10c0/ca1cd397b23545694e2c6146817da4f2f3b2b7bad122a076b432fd152d9d1eb2fe5eba927374dd4bf6de522b38e594515c1b2a31bed089cdbf9de9eba0efcbe7 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^6.1.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"commander@npm:^9.4.1": + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: 10c0/5f7784fbda2aaec39e89eb46f06a999e00224b3763dc65976e05929ec486e174fe9aac2655f03ba6a5e83875bd173be5283dc19309b7c65954701c02025b3c1d + languageName: node + linkType: hard + +"common-ancestor-path@npm:^1.0.1": + version: 1.0.1 + resolution: "common-ancestor-path@npm:1.0.1" + checksum: 10c0/390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"compare-func@npm:^2.0.0": + version: 2.0.0 + resolution: "compare-func@npm:2.0.0" + dependencies: + array-ify: "npm:^1.0.0" + dot-prop: "npm:^5.1.0" + checksum: 10c0/78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"confbox@npm:^0.1.8": + version: 0.1.8 + resolution: "confbox@npm:0.1.8" + checksum: 10c0/fc2c68d97cb54d885b10b63e45bd8da83a8a71459d3ecf1825143dd4c7f9f1b696b3283e07d9d12a144c1301c2ebc7842380bdf0014e55acc4ae1c9550102418 + languageName: node + linkType: hard + +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: "npm:^1.3.4" + proto-list: "npm:~1.2.1" + checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e + languageName: node + linkType: hard + +"configstore@npm:^6.0.0": + version: 6.0.0 + resolution: "configstore@npm:6.0.0" + dependencies: + dot-prop: "npm:^6.0.1" + graceful-fs: "npm:^4.2.6" + unique-string: "npm:^3.0.0" + write-file-atomic: "npm:^3.0.3" + xdg-basedir: "npm:^5.0.1" + checksum: 10c0/6681a96038ab3e0397cbdf55e6e1624ac3dfa3afe955e219f683df060188a418bda043c9114a59a337e7aec9562b0a0c838ed7db24289e6d0c266bc8313b9580 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:^5.0.0": + version: 5.0.13 + resolution: "conventional-changelog-angular@npm:5.0.13" + dependencies: + compare-func: "npm:^2.0.0" + q: "npm:^1.5.1" + checksum: 10c0/bca711b835fe01d75e3500b738f6525c91a12096218e917e9fd81bf9accf157f904fee16f88c523fd5462fb2a7cb1d060eb79e9bc9a3ccb04491f0c383b43231 + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^4.6.3": + version: 4.6.3 + resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" + dependencies: + compare-func: "npm:^2.0.0" + lodash: "npm:^4.17.15" + q: "npm:^1.5.1" + checksum: 10c0/f3b5e6132ec03dad4aa4a2b5ac47ee0e2ae8be6d0fa53a131c722412ce7c02a742c190790f15b5ab4983a31ce90b7066ce1f3f3d5cc4253aa3484ee414259bd2 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^5.0.0": + version: 5.0.1 + resolution: "conventional-changelog-writer@npm:5.0.1" + dependencies: + conventional-commits-filter: "npm:^2.0.7" + dateformat: "npm:^3.0.0" + handlebars: "npm:^4.7.7" + json-stringify-safe: "npm:^5.0.1" + lodash: "npm:^4.17.15" + meow: "npm:^8.0.0" + semver: "npm:^6.0.0" + split: "npm:^1.0.0" + through2: "npm:^4.0.0" + bin: + conventional-changelog-writer: cli.js + checksum: 10c0/268b56a3e4db07ad24da7134788c889ecd024cf2e7c0bfe8ca76f83e5db79f057538c45500b052a77b7933c4d0f47e2e807c6e756cbd5ad9db365744c9ce0e7f + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^2.0.0, conventional-commits-filter@npm:^2.0.7": + version: 2.0.7 + resolution: "conventional-commits-filter@npm:2.0.7" + dependencies: + lodash.ismatch: "npm:^4.4.0" + modify-values: "npm:^1.0.0" + checksum: 10c0/df06fb29285b473614f5094e983d26fcc14cd0f64b2cbb2f65493fc8bd47c077c2310791d26f4b2b719e9585aaade95370e73230bff6647163164a18b9dfaa07 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^3.2.3": + version: 3.2.4 + resolution: "conventional-commits-parser@npm:3.2.4" + dependencies: + JSONStream: "npm:^1.0.4" + is-text-path: "npm:^1.0.1" + lodash: "npm:^4.17.15" + meow: "npm:^8.0.0" + split2: "npm:^3.0.0" + through2: "npm:^4.0.0" + bin: + conventional-commits-parser: cli.js + checksum: 10c0/122d7d7f991a04c8e3f703c0e4e9a25b2ecb20906f497e4486cb5c2acd9c68f6d9af745f7e79cb407538f50e840b33399274ac427b20971b98b335d1b66d3d17 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie@npm:^0.7.2": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.40.0": + version: 3.41.0 + resolution: "core-js-compat@npm:3.41.0" + dependencies: + browserslist: "npm:^4.24.4" + checksum: 10c0/92d2c748d3dd1c4e3b6cee6b6683b9212db9bc0a6574d933781210daf3baaeb76334ed4636eb8935b45802aa8d9235ab604c9a262694e02a2fa17ad0f6976829 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cosmiconfig@npm:^5.2.1": + version: 5.2.1 + resolution: "cosmiconfig@npm:5.2.1" + dependencies: + import-fresh: "npm:^2.0.0" + is-directory: "npm:^0.3.1" + js-yaml: "npm:^3.13.1" + parse-json: "npm:^4.0.0" + checksum: 10c0/ae9ba309cdbb42d0c9d63dad5c1dfa1c56bb8f818cb8633eea14fd2dbdc9f33393b77658ba96fdabda497bc943afed8c3371d1222afe613c518ba676fa624645 + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.1.3": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + path-type: "npm:^4.0.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + +"cross-env@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 10c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf + languageName: node + linkType: hard + +"cross-spawn@npm:^6.0.0": + version: 6.0.6 + resolution: "cross-spawn@npm:6.0.6" + dependencies: + nice-try: "npm:^1.0.4" + path-key: "npm:^2.0.1" + semver: "npm:^5.5.0" + shebang-command: "npm:^1.2.0" + which: "npm:^1.2.9" + checksum: 10c0/bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"crypto-random-string@npm:^2.0.0": + version: 2.0.0 + resolution: "crypto-random-string@npm:2.0.0" + checksum: 10c0/288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 + languageName: node + linkType: hard + +"crypto-random-string@npm:^4.0.0": + version: 4.0.0 + resolution: "crypto-random-string@npm:4.0.0" + dependencies: + type-fest: "npm:^1.0.1" + checksum: 10c0/16e11a3c8140398f5408b7fded35a961b9423c5dac39a60cbbd08bd3f0e07d7de130e87262adea7db03ec1a7a4b7551054e0db07ee5408b012bac5400cfc07a5 + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"cssfontparser@npm:^1.2.1": + version: 1.2.1 + resolution: "cssfontparser@npm:1.2.1" + checksum: 10c0/ceb9b2976d503dbff3ac2aff0229b263affb4fb221a6947b357682cd8a952f6995253646ca5f820020d2fe05b5e29b56dbdd2343388c32203e8dd0ed15bdc1ca + languageName: node + linkType: hard + +"cssstyle@npm:^4.0.1": + version: 4.3.0 + resolution: "cssstyle@npm:4.3.0" + dependencies: + "@asamuzakjp/css-color": "npm:^3.1.1" + rrweb-cssom: "npm:^0.8.0" + checksum: 10c0/770ccb288a99257fd0d5b129e03878f848e922d3b017358acb02e8dd530e8f0c7c6f74e6ae5367d715e2da36a490a734b4177fc1b78f3f08eca25f204a56a692 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" + dependencies: + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + checksum: 10c0/1b894d7d41c861f3a4ed2ae9b1c3f0909d4575ada02e36d3d3bc584bdd84278e20709070c79c3b3bff7ac98598cb191eb3e86a89a79ea4ee1ef360e1694f92ad + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + languageName: node + linkType: hard + +"date-fns@npm:^1.27.2": + version: 1.30.1 + resolution: "date-fns@npm:1.30.1" + checksum: 10c0/bad6ad7c15180121e15d61ad62a4a214c108d66f35b35f5eeb6ade837a3c29aa4444b9528a93a5374b95ba11231c142276351bf52f4d168676f9a1e17ce3726a + languageName: node + linkType: hard + +"date-fns@npm:^4.1.0": + version: 4.1.0 + resolution: "date-fns@npm:4.1.0" + checksum: 10c0/b79ff32830e6b7faa009590af6ae0fb8c3fd9ffad46d930548fbb5acf473773b4712ae887e156ba91a7b3dc30591ce0f517d69fd83bd9c38650fdc03b4e0bac8 + languageName: node + linkType: hard + +"dateformat@npm:^3.0.0": + version: 3.0.3 + resolution: "dateformat@npm:3.0.3" + checksum: 10c0/2effb8bef52ff912f87a05e4adbeacff46353e91313ad1ea9ed31412db26849f5a0fcc7e3ce36dbfb84fc6c881a986d5694f84838ad0da7000d5150693e78678 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.0": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"debuglog@npm:^1.0.1": + version: 1.0.1 + resolution: "debuglog@npm:1.0.1" + checksum: 10c0/d98ac9abe6a528fcbb4d843b1caf5a9116998c76e1263d8ff4db2c086aa96fa7ea4c752a81050fa2e4304129ef330e6e4dc9dd4d47141afd7db80bf699f08219 + languageName: node + linkType: hard + +"decamelize-keys@npm:^1.1.0": + version: 1.1.1 + resolution: "decamelize-keys@npm:1.1.1" + dependencies: + decamelize: "npm:^1.1.0" + map-obj: "npm:^1.0.0" + checksum: 10c0/4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d + languageName: node + linkType: hard + +"decamelize@npm:^1.1.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.3": + version: 10.5.0 + resolution: "decimal.js@npm:10.5.0" + checksum: 10c0/785c35279df32762143914668df35948920b6c1c259b933e0519a69b7003fc0a5ed2a766b1e1dda02574450c566b21738a45f15e274b47c2ac02072c0d1f3ac3 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: "npm:^3.1.0" + checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + languageName: node + linkType: hard + +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 10c0/7c3aa00ddfe3e5fcd477958e156156a5137e3bb6ff1493ca05edff4decf29a90a057974cc77e75951f8eb801c1816cb45aea1f52d628cdd000b82b36ab839d1b + languageName: node + linkType: hard + +"deep-eql@npm:^4.1.3": + version: 4.1.4 + resolution: "deep-eql@npm:4.1.4" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"default-browser-id@npm:^3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: "npm:^0.2.0" + untildify: "npm:^4.0.0" + checksum: 10c0/8db3ab882eb3e1e8b59d84c8641320e6c66d8eeb17eb4bb848b7dd549b1e6fd313988e4a13542e95fbaeff03f6e9dedc5ad191ad4df7996187753eb0d45c00b7 + languageName: node + linkType: hard + +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: "npm:^3.0.0" + default-browser-id: "npm:^3.0.0" + execa: "npm:^7.1.1" + titleize: "npm:^3.0.0" + checksum: 10c0/7c8848badc139ecf9d878e562bc4e7ab4301e51ba120b24d8dcb14739c30152115cc612065ac3ab73c02aace4afa29db5a044257b2f0cf234f16e3a58f6c925e + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 10c0/625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"del@npm:^5.0.0": + version: 5.1.0 + resolution: "del@npm:5.1.0" + dependencies: + globby: "npm:^10.0.1" + graceful-fs: "npm:^4.2.2" + is-glob: "npm:^4.0.1" + is-path-cwd: "npm:^2.2.0" + is-path-inside: "npm:^3.0.1" + p-map: "npm:^3.0.0" + rimraf: "npm:^3.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/1c25de7ff7cf4a8ee017190e39e05d2c4e19774802213d210daaa627228b50e0f5b04e7ce8cceaf03647b238732f78dc303ec5a9d54d5104de33a13fb5a899cf + languageName: node + linkType: hard + +"del@npm:^6.0.0": + version: 6.1.1 + resolution: "del@npm:6.1.1" + dependencies: + globby: "npm:^11.0.1" + graceful-fs: "npm:^4.2.4" + is-glob: "npm:^4.0.1" + is-path-cwd: "npm:^2.2.0" + is-path-inside: "npm:^3.0.2" + p-map: "npm:^4.0.0" + rimraf: "npm:^3.0.2" + slash: "npm:^3.0.0" + checksum: 10c0/8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f + languageName: node + linkType: hard + +"del@npm:^7.0.0": + version: 7.1.0 + resolution: "del@npm:7.1.0" + dependencies: + globby: "npm:^13.1.2" + graceful-fs: "npm:^4.2.10" + is-glob: "npm:^4.0.3" + is-path-cwd: "npm:^3.0.0" + is-path-inside: "npm:^4.0.0" + p-map: "npm:^5.5.0" + rimraf: "npm:^3.0.2" + slash: "npm:^4.0.0" + checksum: 10c0/5ad2777b69e386b414ba77f5eba23bb52422c096f4c084c0d1d829ee4776d1a025a6f69765906907c4137026e9bd071ee9d422fd531b1417ef546adc7eb6fada + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: 10c0/23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + languageName: node + linkType: hard + +"dequal@npm:^2.0.2, dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: 10c0/e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + languageName: node + linkType: hard + +"dezalgo@npm:^1.0.0": + version: 1.0.4 + resolution: "dezalgo@npm:1.0.4" + dependencies: + asap: "npm:^2.0.0" + wrappy: "npm:1" + checksum: 10c0/8a870ed42eade9a397e6141fe5c025148a59ed52f1f28b1db5de216b4d57f0af7a257070c3af7ce3d5508c1ce9dd5009028a76f4b2cc9370dc56551d2355fad8 + languageName: node + linkType: hard + +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: 10c0/a52566d891b89a666f48ba69f54262fa8293ae6264ae04da82c7bf3b6661cba75561de0729f18463179d56003cc0fd69aa09845f2c2cd7a353b1ec1e1a96beb9 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"diff@npm:^5.1.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.0, dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + +"dot-prop@npm:^5.1.0": + version: 5.3.0 + resolution: "dot-prop@npm:5.3.0" + dependencies: + is-obj: "npm:^2.0.0" + checksum: 10c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 + languageName: node + linkType: hard + +"dot-prop@npm:^6.0.1": + version: 6.0.1 + resolution: "dot-prop@npm:6.0.1" + dependencies: + is-obj: "npm:^2.0.0" + checksum: 10c0/30e51ec6408978a6951b21e7bc4938aad01a86f2fdf779efe52330205c6bb8a8ea12f35925c2029d6dc9d1df22f916f32f828ce1e9b259b1371c580541c22b5a + languageName: node + linkType: hard + +"dot-prop@npm:^7.2.0": + version: 7.2.0 + resolution: "dot-prop@npm:7.2.0" + dependencies: + type-fest: "npm:^2.11.2" + checksum: 10c0/2621702a01e7a47730e3a8e2938a406afc79b62fbb77bd1394e786ff13776673904bf0a4fc6b812eb9849ec71034e9fc1019a9e0bbe91f84010d8a8088cd41a9 + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"duplexer2@npm:~0.1.0": + version: 0.1.4 + resolution: "duplexer2@npm:0.1.4" + dependencies: + readable-stream: "npm:^2.0.2" + checksum: 10c0/0765a4cc6fe6d9615d43cc6dbccff6f8412811d89a6f6aa44828ca9422a0a469625ce023bf81cee68f52930dbedf9c5716056ff264ac886612702d134b5e39b4 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.73": + version: 1.5.132 + resolution: "electron-to-chromium@npm:1.5.132" + checksum: 10c0/5dcbbed2a5be4b19812d54d4beb0c09a7f753793018255690f028346f96baf8b5c77f4d231a735321bf6f69f389bdd90c045c99deac61e8ce19183788ceb4fb4 + languageName: node + linkType: hard + +"elegant-spinner@npm:^1.0.1": + version: 1.0.1 + resolution: "elegant-spinner@npm:1.0.1" + checksum: 10c0/df607c83c20fc3ce56c514175dd5d1ee7f667da00cee13d04d32c70d55e76555091fa236689e691cf7dedba17b0020fec635e499cdde84dbea2ef8639314e5f8 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.1.0": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"entities@npm:^4.5.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"env-ci@npm:^5.0.0": + version: 5.5.0 + resolution: "env-ci@npm:5.5.0" + dependencies: + execa: "npm:^5.0.0" + fromentries: "npm:^1.3.2" + java-properties: "npm:^1.0.0" + checksum: 10c0/5175b4ccc464929811bac4bd5498443bc519d4ee3053d4cfb65b468ee41aaca342e91ff7f92a5a8af5fe801abf92007230dfa94e5d80040962d025d3e19f1e5f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.0" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-regex: "npm:^1.2.1" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.3" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.3" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10c0/1de229c9e08fe13c17fe5abaec8221545dfcd57e51f64909599a6ae896df84b8fd2f7d16c60cb00d7bf495b9298ca3581aded19939d4b7276854a4b066f8422b + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.6" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.4" + safe-array-concat: "npm:^1.1.3" + checksum: 10c0/97e3125ca472d82d8aceea11b790397648b52c26d8768ea1c1ee6309ef45a8755bb63225a43f3150c7591cffc17caf5752459f1e70d583b4184370a8f04ebd2f + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + languageName: node + linkType: hard + +"esbuild-register@npm:^3.5.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 10c0/77193b7ca32ba9f81b35ddf3d3d0138efb0b1429d71b39480cfee932e1189dd2e492bd32bf04a4d0bc3adfbc7ec7381ceb5ffd06efe35f3e70904f1f686566d5 + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0": + version: 0.25.2 + resolution: "esbuild@npm:0.25.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.2" + "@esbuild/android-arm": "npm:0.25.2" + "@esbuild/android-arm64": "npm:0.25.2" + "@esbuild/android-x64": "npm:0.25.2" + "@esbuild/darwin-arm64": "npm:0.25.2" + "@esbuild/darwin-x64": "npm:0.25.2" + "@esbuild/freebsd-arm64": "npm:0.25.2" + "@esbuild/freebsd-x64": "npm:0.25.2" + "@esbuild/linux-arm": "npm:0.25.2" + "@esbuild/linux-arm64": "npm:0.25.2" + "@esbuild/linux-ia32": "npm:0.25.2" + "@esbuild/linux-loong64": "npm:0.25.2" + "@esbuild/linux-mips64el": "npm:0.25.2" + "@esbuild/linux-ppc64": "npm:0.25.2" + "@esbuild/linux-riscv64": "npm:0.25.2" + "@esbuild/linux-s390x": "npm:0.25.2" + "@esbuild/linux-x64": "npm:0.25.2" + "@esbuild/netbsd-arm64": "npm:0.25.2" + "@esbuild/netbsd-x64": "npm:0.25.2" + "@esbuild/openbsd-arm64": "npm:0.25.2" + "@esbuild/openbsd-x64": "npm:0.25.2" + "@esbuild/sunos-x64": "npm:0.25.2" + "@esbuild/win32-arm64": "npm:0.25.2" + "@esbuild/win32-ia32": "npm:0.25.2" + "@esbuild/win32-x64": "npm:0.25.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/87ce0b78699c4d192b8cf7e9b688e9a0da10e6f58ff85a368bf3044ca1fa95626c98b769b5459352282e0065585b6f994a5e6699af5cccf9d31178960e2b58fd + languageName: node + linkType: hard + +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.21.5" + "@esbuild/android-arm": "npm:0.21.5" + "@esbuild/android-arm64": "npm:0.21.5" + "@esbuild/android-x64": "npm:0.21.5" + "@esbuild/darwin-arm64": "npm:0.21.5" + "@esbuild/darwin-x64": "npm:0.21.5" + "@esbuild/freebsd-arm64": "npm:0.21.5" + "@esbuild/freebsd-x64": "npm:0.21.5" + "@esbuild/linux-arm": "npm:0.21.5" + "@esbuild/linux-arm64": "npm:0.21.5" + "@esbuild/linux-ia32": "npm:0.21.5" + "@esbuild/linux-loong64": "npm:0.21.5" + "@esbuild/linux-mips64el": "npm:0.21.5" + "@esbuild/linux-ppc64": "npm:0.21.5" + "@esbuild/linux-riscv64": "npm:0.21.5" + "@esbuild/linux-s390x": "npm:0.21.5" + "@esbuild/linux-x64": "npm:0.21.5" + "@esbuild/netbsd-x64": "npm:0.21.5" + "@esbuild/openbsd-x64": "npm:0.21.5" + "@esbuild/sunos-x64": "npm:0.21.5" + "@esbuild/win32-arm64": "npm:0.21.5" + "@esbuild/win32-ia32": "npm:0.21.5" + "@esbuild/win32-x64": "npm:0.21.5" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-goat@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-goat@npm:4.0.0" + checksum: 10c0/9d2a8314e2370f2dd9436d177f6b3b1773525df8f895c8f3e1acb716f5fd6b10b336cb1cd9862d4709b36eb207dbe33664838deca9c6d55b8371be4eebb972f6 + languageName: node + linkType: hard + +"escape-string-regexp@npm:5.0.0, escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^10.0.2": + version: 10.1.1 + resolution: "eslint-config-prettier@npm:10.1.1" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/3dbfdf6495dd62e2e1644ea9e8e978100dabcd8740fd264df1222d130001a1e8de05d6ed6c67d3a60727386a07507f067d1ca79af6d546910414beab19e7966e + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-import-resolver-typescript@npm:^3.8.3": + version: 3.10.0 + resolution: "eslint-import-resolver-typescript@npm:3.10.0" + dependencies: + "@nolyfill/is-core-module": "npm:1.0.39" + debug: "npm:^4.4.0" + get-tsconfig: "npm:^4.10.0" + is-bun-module: "npm:^2.0.0" + stable-hash: "npm:^0.0.5" + tinyglobby: "npm:^0.2.12" + unrs-resolver: "npm:^1.3.2" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 10c0/5abd1b2d2bd0dca1616cca88ce3ed6bd6d68aa227a5da09e291720c3477f1ff467fbdcc0e19f28b4a4c2e3e8b2e6864fe0c4dcf8ff3092b5c6df2e7095aa738e + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/4d8b46dcd525d71276f9be9ffac1d2be61c9d54cc53c992e6333cf957840dee09381842b1acbbb15fc6b255ebab99cd481c5007ab438e5455a14abe1a0468558 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.31.0": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" + dependencies: + "@rtsao/scc": "npm:^1.1.0" + array-includes: "npm:^3.1.8" + array.prototype.findlastindex: "npm:^1.2.5" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.12.0" + hasown: "npm:^2.0.2" + is-core-module: "npm:^2.15.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + object.groupby: "npm:^1.0.3" + object.values: "npm:^1.2.0" + semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.8" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10c0/e21d116ddd1900e091ad120b3eb68c5dd5437fe2c930f1211781cd38b246f090a6b74d5f3800b8255a0ed29782591521ad44eb21c5534960a8f1fb4040fd913a + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.10.2": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: "npm:^5.3.2" + array-includes: "npm:^3.1.8" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:^4.10.0" + axobject-query: "npm:^4.1.0" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + safe-regex-test: "npm:^1.0.3" + string.prototype.includes: "npm:^2.0.1" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 10c0/d93354e03b0cf66f018d5c50964e074dffe4ddf1f9b535fa020d19c4ae45f89c1a16e9391ca61ac3b19f7042c751ac0d361a056a65cbd1de24718a53ff8daa6e + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^5.1.0": + version: 5.2.0 + resolution: "eslint-plugin-react-hooks@npm:5.2.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 10c0/1c8d50fa5984c6dea32470651807d2922cc3934cf3425e78f84a24c2dfd972e7f019bee84aefb27e0cf2c13fea0ac1d4473267727408feeb1c56333ca1489385 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.37.4": + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.3" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.2.1" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.9" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.1" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.12" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + languageName: node + linkType: hard + +"eslint-scope@npm:^8.3.0": + version: 8.3.0 + resolution: "eslint-scope@npm:8.3.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/23bf54345573201fdf06d29efa345ab508b355492f6c6cc9e2b9f6d02b896f369b6dd5315205be94b8853809776c4d13353b85c6b531997b164ff6c3328ecf5b + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 + languageName: node + linkType: hard + +"eslint@npm:^9.23.0": + version: 9.24.0 + resolution: "eslint@npm:9.24.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.20.0" + "@eslint/config-helpers": "npm:^0.2.0" + "@eslint/core": "npm:^0.12.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.24.0" + "@eslint/plugin-kit": "npm:^0.2.7" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.3.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/f758ff1b9d2f2af5335f562f3f40aa8f71607b3edca33f7616840a222ed224555aeb3ac6943cc86e4f9ac5dc124a60bbfde624d054fb235631a8c04447e39ecc + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: "npm:^8.14.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 10c0/fa9e5f8c1bbe8d01e314c0f03067b64a4f22d4c58410fc5237060d0c15b81e58c23921c41acc60abbdab490f1fdfcbd6408ede2d03ca704454272e0244d61a55 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"execa@npm:^1.0.0": + version: 1.0.0 + resolution: "execa@npm:1.0.0" + dependencies: + cross-spawn: "npm:^6.0.0" + get-stream: "npm:^4.0.0" + is-stream: "npm:^1.1.0" + npm-run-path: "npm:^2.0.0" + p-finally: "npm:^1.0.0" + signal-exit: "npm:^3.0.0" + strip-eof: "npm:^1.0.0" + checksum: 10c0/cc71707c9aa4a2552346893ee63198bf70a04b5a1bc4f8a0ef40f1d03c319eae80932c59191f037990d7d102193e83a38ec72115fff814ec2fb3099f3661a590 + languageName: node + linkType: hard + +"execa@npm:^2.0.3": + version: 2.1.0 + resolution: "execa@npm:2.1.0" + dependencies: + cross-spawn: "npm:^7.0.0" + get-stream: "npm:^5.0.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^3.0.0" + onetime: "npm:^5.1.0" + p-finally: "npm:^2.0.0" + signal-exit: "npm:^3.0.2" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/6578db04a18a9d166a2de6f85be2f1130315fe5917d8163fdbbeaaec39f89cc20448e243dffe833f58b93c210fb3b19e3612c155c81853722497100b8230c34c + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"execa@npm:^6.1.0": + version: 6.1.0 + resolution: "execa@npm:6.1.0" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.1" + human-signals: "npm:^3.0.1" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^3.0.7" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/004ee32092af745766a1b0352fdba8701a4001bc3fe08e63101c04276d4c860bbe11bb8ab85f37acdff13d3da83d60e044041dcf24bd7e25e645a543828d9c41 + languageName: node + linkType: hard + +"execa@npm:^7.1.1": + version: 7.2.0 + resolution: "execa@npm:7.2.0" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.1" + human-signals: "npm:^4.3.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^3.0.7" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/098cd6a1bc26d509e5402c43f4971736450b84d058391820c6f237aeec6436963e006fd8423c9722f148c53da86aa50045929c7278b5522197dff802d10f9885 + languageName: node + linkType: hard + +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"exit-hook@npm:^3.2.0": + version: 3.2.0 + resolution: "exit-hook@npm:3.2.0" + checksum: 10c0/e8c56a32d24372d7051f179f63f4f75eaeee11160953102ab0f155661555025b3bf961033bf6326de14c55fc51aac6330c4491752358a39acaa17f65c74772ed + languageName: node + linkType: hard + +"expect@npm:^29.0.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.2 + resolution: "exponential-backoff@npm:3.1.2" + checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.19.1 + resolution: "fastq@npm:1.19.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 + languageName: node + linkType: hard + +"fdir@npm:^6.4.3": + version: 6.4.3 + resolution: "fdir@npm:6.4.3" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/d13c10120e9625adf21d8d80481586200759928c19405a816b77dd28eaeb80e7c59c5def3e2941508045eb06d34eb47fad865ccc8bf98e6ab988bb0ed160fb6f + languageName: node + linkType: hard + +"figures@npm:^1.7.0": + version: 1.7.0 + resolution: "figures@npm:1.7.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + object-assign: "npm:^4.1.0" + checksum: 10c0/a10942b0eec3372bf61822ab130d2bbecdf527d551b0b013fbe7175b7a0238ead644ee8930a1a3cb872fb9ab2ec27df30e303765a3b70b97852e2e9ee43bdff3 + languageName: node + linkType: hard + +"figures@npm:^2.0.0": + version: 2.0.0 + resolution: "figures@npm:2.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/5dc5a75fec3e7e04ae65d6ce51d28b3e70d4656c51b06996b6fdb2cb5b542df512e3b3c04482f5193a964edddafa5521479ff948fa84e12ff556e53e094ab4ce + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^3.0.2" + pkg-dir: "npm:^4.1.0" + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + languageName: node + linkType: hard + +"find-up@npm:^2.0.0": + version: 2.1.0 + resolution: "find-up@npm:2.1.0" + dependencies: + locate-path: "npm:^2.0.0" + checksum: 10c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: "npm:^7.1.0" + path-exists: "npm:^5.0.0" + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + +"find-versions@npm:^4.0.0": + version: 4.0.0 + resolution: "find-versions@npm:4.0.0" + dependencies: + semver-regex: "npm:^3.1.2" + checksum: 10c0/4ed736f0604e9249104fb8679850ad8bfb9262142e79f86bc88e1e731e6958616a1dd6b0d6814634e993e7a59efaa1546a92e0d47a22534c6e79ec382ea60950 + languageName: node + linkType: hard + +"find-yarn-workspace-root@npm:^2.0.0": + version: 2.0.0 + resolution: "find-yarn-workspace-root@npm:2.0.0" + dependencies: + micromatch: "npm:^4.0.2" + checksum: 10c0/b0d3843013fbdaf4e57140e0165889d09fa61745c9e85da2af86e54974f4cc9f1967e40f0d8fc36a79d53091f0829c651d06607d552582e53976f3cd8f4e5689 + languageName: node + linkType: hard + +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 + languageName: node + linkType: hard + +"form-data-encoder@npm:^2.1.2": + version: 2.1.4 + resolution: "form-data-encoder@npm:2.1.4" + checksum: 10c0/4c06ae2b79ad693a59938dc49ebd020ecb58e4584860a90a230f80a68b026483b022ba5e4143cff06ae5ac8fd446a0b500fabc87bbac3d1f62f2757f8dabcaf7 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.2 + resolution: "form-data@npm:4.0.2" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + mime-types: "npm:^2.1.12" + checksum: 10c0/e534b0cf025c831a0929bf4b9bbe1a9a6b03e273a8161f9947286b9b13bf8fb279c6944aae0070c4c311100c6d6dbb815cd955dc217728caf73fad8dc5b8ee9c + languageName: node + linkType: hard + +"framer-motion@npm:^11.18.2": + version: 11.18.2 + resolution: "framer-motion@npm:11.18.2" + dependencies: + motion-dom: "npm:^11.18.1" + motion-utils: "npm:^11.18.1" + tslib: "npm:^2.4.0" + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/41b1ef1b4e54ea13adaf01d61812a8783d2352f74641c91b50519775704bc6274db6b6863ff494a1f705fa6c6ed8f4df3497292327c906d53ea0129cef3ec361 + languageName: node + linkType: hard + +"from2@npm:^2.3.0": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + checksum: 10c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 + languageName: node + linkType: hard + +"fromentries@npm:^1.3.2": + version: 1.3.2 + resolution: "fromentries@npm:1.3.2" + checksum: 10c0/63938819a86e39f490b0caa1f6b38b8ad04f41ccd2a1c144eb48a21f76e4dbc074bc62e97abb053c7c1f541ecc70cf0b8aaa98eed3fe02206db9b6f9bb9a6a47 + languageName: node + linkType: hard + +"fs-extra@npm:^10.0.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + +"fs-extra@npm:^11.0.0": + version: 11.3.0 + resolution: "fs-extra@npm:11.3.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f95e996186ff45463059feb115a22fb048bdaf7e487ecee8a8646c78ed8fdca63630e3077d4c16ce677051f5e60d3355a06f3cd61f3ca43f48cc58822a44d0a + languageName: node + linkType: hard + +"fs-extra@npm:^9.0.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a + languageName: node + linkType: hard + +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 10c0/2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 + languageName: node + linkType: hard + +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 10c0/103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 + languageName: node + linkType: hard + +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"get-stdin@npm:^7.0.0": + version: 7.0.0 + resolution: "get-stdin@npm:7.0.0" + checksum: 10c0/84d7850d17727f14d582670c4222b167317da43b296b88717abca989b6192eb80f66ca62833d63e749b3c984f3f9113cb6794dc9ecccb29969b8162565162033 + languageName: node + linkType: hard + +"get-stream@npm:^4.0.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 + languageName: node + linkType: hard + +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.10.0": + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/c9b5572c5118923c491c04285c73bd55b19e214992af957c502a3be0fc0043bb421386ffd45ca3433c0a7fba81221ca300479e8393960acf15d0ed4563f38a86 + languageName: node + linkType: hard + +"git-log-parser@npm:^1.2.0": + version: 1.2.1 + resolution: "git-log-parser@npm:1.2.1" + dependencies: + argv-formatter: "npm:~1.0.0" + spawn-error-forwarder: "npm:~1.0.0" + split2: "npm:~1.0.0" + stream-combiner2: "npm:~1.1.1" + through2: "npm:~2.0.0" + traverse: "npm:0.6.8" + checksum: 10c0/8b35e5a4882a481164b1999a062141063645246152eedab4587f4efaf0c61a4964da6cb1891263e92bc1b91edf0850843a06b6cf88a389a7c6a66c1be67ead4f + languageName: node + linkType: hard + +"github-url-from-git@npm:^1.5.0": + version: 1.5.0 + resolution: "github-url-from-git@npm:1.5.0" + checksum: 10c0/d9af476188a660a289f7f2a32d6f25e5199dc04a31ac6f5b4e0c3749cd0b42db9768571cd72659ecf5cb98ca687a14dc43da315c7b52e53c21702ff534012b28 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.0.0, glob@npm:^10.2.2": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: "npm:2.0.0" + checksum: 10c0/ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globals@npm:^16.0.0": + version: 16.0.0 + resolution: "globals@npm:16.0.0" + checksum: 10c0/8906d5f01838df64a81d6c2a7b7214312e2216cf65c5ed1546dc9a7d0febddf55ffa906cf04efd5b01eec2534d6f14859a89535d1a68241832810e41ef3fd5bb + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globby@npm:^10.0.1": + version: 10.0.2 + resolution: "globby@npm:10.0.2" + dependencies: + "@types/glob": "npm:^7.1.1" + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.0.3" + glob: "npm:^7.1.3" + ignore: "npm:^5.1.1" + merge2: "npm:^1.2.3" + slash: "npm:^3.0.0" + checksum: 10c0/9c610ad47117b9dfbc5b0c6c2408c3b72f89c1b9f91ee14c4dc794794e35768ee0920e2a403b688cfa749f48617c6ba3f3a52df07677ed73d602d4349b68c810 + languageName: node + linkType: hard + +"globby@npm:^11.0.0, globby@npm:^11.0.1": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"globby@npm:^13.1.2": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.3.0" + ignore: "npm:^5.2.4" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + languageName: node + linkType: hard + +"globrex@npm:^0.1.2": + version: 0.1.2 + resolution: "globrex@npm:0.1.2" + checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"got@npm:^11.8.5": + version: 11.8.6 + resolution: "got@npm:11.8.6" + dependencies: + "@sindresorhus/is": "npm:^4.0.0" + "@szmarczak/http-timer": "npm:^4.0.5" + "@types/cacheable-request": "npm:^6.0.1" + "@types/responselike": "npm:^1.0.0" + cacheable-lookup: "npm:^5.0.3" + cacheable-request: "npm:^7.0.2" + decompress-response: "npm:^6.0.0" + http2-wrapper: "npm:^1.0.0-beta.5.2" + lowercase-keys: "npm:^2.0.0" + p-cancelable: "npm:^2.0.0" + responselike: "npm:^2.0.0" + checksum: 10c0/754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1 + languageName: node + linkType: hard + +"got@npm:^12.1.0": + version: 12.6.1 + resolution: "got@npm:12.6.1" + dependencies: + "@sindresorhus/is": "npm:^5.2.0" + "@szmarczak/http-timer": "npm:^5.0.1" + cacheable-lookup: "npm:^7.0.0" + cacheable-request: "npm:^10.2.8" + decompress-response: "npm:^6.0.0" + form-data-encoder: "npm:^2.1.2" + get-stream: "npm:^6.0.1" + http2-wrapper: "npm:^2.1.10" + lowercase-keys: "npm:^3.0.0" + p-cancelable: "npm:^3.0.0" + responselike: "npm:^3.0.0" + checksum: 10c0/2fe97fcbd7a9ffc7c2d0ecf59aca0a0562e73a7749cadada9770eeb18efbdca3086262625fb65590594edc220a1eca58fab0d26b0c93c2f9a008234da71ca66b + languageName: node + linkType: hard + +"graceful-fs@npm:4.2.10": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 10c0/4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"graphql@npm:^16.8.1": + version: 16.10.0 + resolution: "graphql@npm:16.10.0" + checksum: 10c0/303730675538c8bd6c76b447dc6f03e61242e2d2596b408c34759666ec4877409e5593a7a0467d590ac5407b8c663b093b599556a77f24f281abea69ddc53de6 + languageName: node + linkType: hard + +"handlebars@npm:^4.7.7": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"hard-rejection@npm:^2.1.0": + version: 2.1.0 + resolution: "hard-rejection@npm:2.1.0" + checksum: 10c0/febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564 + languageName: node + linkType: hard + +"has-ansi@npm:^2.0.0": + version: 2.0.0 + resolution: "has-ansi@npm:2.0.0" + dependencies: + ansi-regex: "npm:^2.0.0" + checksum: 10c0/f54e4887b9f8f3c4bfefd649c48825b3c093987c92c27880ee9898539e6f01aed261e82e73153c3f920fde0db5bf6ebd58deb498ed1debabcb4bc40113ccdf05 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c + languageName: node + linkType: hard + +"has-yarn@npm:^3.0.0": + version: 3.0.0 + resolution: "has-yarn@npm:3.0.0" + checksum: 10c0/38c76618cb764e4a98ea114a3938e0bed6ceafb6bacab2ffb32e7c7d1e18b5e09cd03387d507ee87072388e1f20b1f80947fee62c41fc450edfbbdc02a665787 + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"headers-polyfill@npm:^4.0.2": + version: 4.0.3 + resolution: "headers-polyfill@npm:4.0.3" + checksum: 10c0/53e85b2c6385f8d411945fb890c5369f1469ce8aa32a6e8d28196df38568148de640c81cf88cbc7c67767103dd9acba48f4f891982da63178fc6e34560022afe + languageName: node + linkType: hard + +"hook-std@npm:^2.0.0": + version: 2.0.0 + resolution: "hook-std@npm:2.0.0" + checksum: 10c0/f34859f826bc3a8556e3e91b4cb2285aa33f7472fed2de7a461f8e0450792d6273afc3d497c1b318ea6529e13abad1e7ed1933ce3c07c17c896f74a65abccc44 + languageName: node + linkType: hard + +"hosted-git-info@npm:^2.1.4": + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 + languageName: node + linkType: hard + +"hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" + dependencies: + lru-cache: "npm:^6.0.0" + checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 + languageName: node + linkType: hard + +"hosted-git-info@npm:^5.0.0, hosted-git-info@npm:^5.2.1": + version: 5.2.1 + resolution: "hosted-git-info@npm:5.2.1" + dependencies: + lru-cache: "npm:^7.5.1" + checksum: 10c0/c6682c2e91d774d79893e2c862d7173450455747fd57f0659337c78d37ddb56c23cb7541b296cbef4a3b47c3be307d8d57f24a6e9aa149cad243c7f126cd42ff + languageName: node + linkType: hard + +"hosted-git-info@npm:^6.1.1": + version: 6.1.3 + resolution: "hosted-git-info@npm:6.1.3" + dependencies: + lru-cache: "npm:^7.5.1" + checksum: 10c0/a1fc10faf67d04d575ebabf89cd5c9e3ebca041d99f42f31143bc8027684da4612c2f6deaf7cf2c09ac3b04dd502ad3957caa49d913628f0558964b2e1e7b414 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" + dependencies: + whatwg-encoding: "npm:^3.1.1" + checksum: 10c0/523398055dc61ac9b34718a719cb4aa691e4166f29187e211e1607de63dc25ac7af52ca7c9aead0c4b3c0415ffecb17326396e1202e2e86ff4bca4c0ee4c6140 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.0.0" + checksum: 10c0/6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1 + languageName: node + linkType: hard + +"http2-wrapper@npm:^2.1.10": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.2.0" + checksum: 10c0/7207201d3c6e53e72e510c9b8912e4f3e468d3ecc0cf3bf52682f2aac9cd99358b896d1da4467380adc151cf97c412bedc59dc13dae90c523f42053a7449eedb + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"human-signals@npm:^3.0.1": + version: 3.0.1 + resolution: "human-signals@npm:3.0.1" + checksum: 10c0/0bb27e72aea1666322f69ab9816e05df952ef2160346f2293f98f45d472edb1b62d0f1a596697b50d48d8f8222e6db3b9f9dc0b6bf6113866121001f0a8e48e9 + languageName: node + linkType: hard + +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 10c0/40498b33fe139f5cc4ef5d2f95eb1803d6318ac1b1c63eaf14eeed5484d26332c828de4a5a05676b6c83d7b9e57727c59addb4b1dea19cb8d71e83689e5b336c + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"husky@npm:^3.1.0": + version: 3.1.0 + resolution: "husky@npm:3.1.0" + dependencies: + chalk: "npm:^2.4.2" + ci-info: "npm:^2.0.0" + cosmiconfig: "npm:^5.2.1" + execa: "npm:^1.0.0" + get-stdin: "npm:^7.0.0" + opencollective-postinstall: "npm:^2.0.2" + pkg-dir: "npm:^4.2.0" + please-upgrade-node: "npm:^3.2.0" + read-pkg: "npm:^5.2.0" + run-node: "npm:^1.0.0" + slash: "npm:^3.0.0" + bin: + husky-run: ./run.js + husky-upgrade: ./lib/upgrader/bin.js + checksum: 10c0/f88f41f2ca49780df339098310c8d6c68dba66219d32bf8530585f395eabee9e8bac31012ecaeb9daad3a0697f395a7e321855b8118c725dfc2c72164952aac6 + languageName: node + linkType: hard + +"husky@npm:^8.0.0": + version: 8.0.3 + resolution: "husky@npm:8.0.3" + bin: + husky: lib/bin.js + checksum: 10c0/6722591771c657b91a1abb082e07f6547eca79144d678e586828ae806499d90dce2a6aee08b66183fd8b085f19d20e0990a2ad396961746b4c8bd5bdb619d668 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore-walk@npm:^5.0.1": + version: 5.0.1 + resolution: "ignore-walk@npm:5.0.1" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/0d157a54d6d11af0c3059fdc7679eef3b074e9a663d110a76c72788e2fb5b22087e08b21ab767718187ac3396aca4d0aa6c6473f925b19a74d9a00480ca7a76e + languageName: node + linkType: hard + +"ignore-walk@npm:^6.0.3": + version: 6.0.5 + resolution: "ignore-walk@npm:6.0.5" + dependencies: + minimatch: "npm:^9.0.0" + checksum: 10c0/8bd6d37c82400016c7b6538b03422dde8c9d7d3e99051c8357dd205d499d42828522fb4fbce219c9c21b4b069079445bacdc42bbd3e2e073b52856c2646d8a39 + languageName: node + linkType: hard + +"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"import-fresh@npm:^2.0.0": + version: 2.0.0 + resolution: "import-fresh@npm:2.0.0" + dependencies: + caller-path: "npm:^2.0.0" + resolve-from: "npm:^3.0.0" + checksum: 10c0/116c55ee5215a7839062285b60df85dbedde084c02111dc58c1b9d03ff7876627059f4beb16cdc090a3db21fea9022003402aa782139dc8d6302589038030504 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"import-from@npm:^4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + languageName: node + linkType: hard + +"import-lazy@npm:^4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 10c0/a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca + languageName: node + linkType: hard + +"import-local@npm:^3.1.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^3.0.0": + version: 3.2.0 + resolution: "indent-string@npm:3.2.0" + checksum: 10c0/91b6d61621d24944c5c4d365d6f1ff4a490264ccaf1162a602faa0d323e69231db2180ad4ccc092c2f49cf8888cdb3da7b73e904cc0fdeec40d0bfb41ceb9478 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"indent-string@npm:^5.0.0": + version: 5.0.0 + resolution: "indent-string@npm:5.0.0" + checksum: 10c0/8ee77b57d92e71745e133f6f444d6fa3ed503ad0e1bcd7e80c8da08b42375c07117128d670589725ed07b1978065803fa86318c309ba45415b7fe13e7f170220 + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 + languageName: node + linkType: hard + +"ini@npm:^1.3.4, ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"ini@npm:^3.0.0, ini@npm:^3.0.1": + version: 3.0.1 + resolution: "ini@npm:3.0.1" + checksum: 10c0/4473d8d42d4b0c4fcf8707e5d37a7eacd5a1d2ed2b99f1b6805c76efddf674c3deba6fb26811eeeb883a71d6c6917c3250d336e545b4e2c8d96081bf05e58df6 + languageName: node + linkType: hard + +"init-package-json@npm:^3.0.2": + version: 3.0.2 + resolution: "init-package-json@npm:3.0.2" + dependencies: + npm-package-arg: "npm:^9.0.1" + promzard: "npm:^0.3.0" + read: "npm:^1.0.7" + read-package-json: "npm:^5.0.0" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + validate-npm-package-name: "npm:^4.0.0" + checksum: 10c0/6efb57881d31af86006795df1def73fa997729ad57ff2e74346128653a1f21e417d194353b7733fd2edef8a79389ee9c1f56c65ce7b0809c3041229599366e6e + languageName: node + linkType: hard + +"inquirer-autosubmit-prompt@npm:^0.2.0": + version: 0.2.0 + resolution: "inquirer-autosubmit-prompt@npm:0.2.0" + dependencies: + chalk: "npm:^2.4.1" + inquirer: "npm:^6.2.1" + rxjs: "npm:^6.3.3" + checksum: 10c0/334416788513181a1371acc15b0306a73776923244a3c91e88f480eb05eefdcce3f4501f272ca5d4c8abc09cd79304632a7ab85d7ea91a4052fff69f174033e4 + languageName: node + linkType: hard + +"inquirer@npm:^6.2.1": + version: 6.5.2 + resolution: "inquirer@npm:6.5.2" + dependencies: + ansi-escapes: "npm:^3.2.0" + chalk: "npm:^2.4.2" + cli-cursor: "npm:^2.1.0" + cli-width: "npm:^2.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^2.0.0" + lodash: "npm:^4.17.12" + mute-stream: "npm:0.0.7" + run-async: "npm:^2.2.0" + rxjs: "npm:^6.4.0" + string-width: "npm:^2.1.0" + strip-ansi: "npm:^5.1.0" + through: "npm:^2.3.6" + checksum: 10c0/a5aa53a8f88405cf1cff63111493f87a5b3b5deb5ea4a0dbcd73ccc06a51a6bba0c3f1a0747f8880e9e3ec2437c69f90417be16368abf636b1d29eebe35db0ac + languageName: node + linkType: hard + +"inquirer@npm:^7.0.0": + version: 7.3.3 + resolution: "inquirer@npm:7.3.3" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.19" + mute-stream: "npm:0.0.8" + run-async: "npm:^2.4.0" + rxjs: "npm:^6.6.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + checksum: 10c0/96e75974cfd863fe6653c075e41fa5f1a290896df141189816db945debabcd92d3277145f11aef8d2cfca5409ab003ccdd18a099744814057b52a2f27aeb8c94 + languageName: node + linkType: hard + +"inquirer@npm:^9.2.6": + version: 9.3.7 + resolution: "inquirer@npm:9.3.7" + dependencies: + "@inquirer/figures": "npm:^1.0.3" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + external-editor: "npm:^3.1.0" + mute-stream: "npm:1.0.0" + ora: "npm:^5.4.1" + run-async: "npm:^3.0.0" + rxjs: "npm:^7.8.1" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10c0/7a5b70312a734b579846648365cbf354e8b23ec73f379d46ada30bc2cf3961dc33b7ca59a3c2beed8a8e03744e3d6c12d4998a34b2d3904774aed238d77328b4 + languageName: node + linkType: hard + +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + +"into-stream@npm:^6.0.0": + version: 6.0.0 + resolution: "into-stream@npm:6.0.0" + dependencies: + from2: "npm:^2.3.0" + p-is-promise: "npm:^3.0.0" + checksum: 10c0/576319a540d0e494f5f6028db364b0e163d58020139d862e5372c51ac35875e4ac2ee49fd821bb9225642de6add2e26dff82e5c41108d638a95930fa83bad750 + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ip-regex@npm:^4.1.0": + version: 4.3.0 + resolution: "ip-regex@npm:4.3.0" + checksum: 10c0/f9ef1f5d0df05b9133a882974e572ae525ccd205260cb103dae337f1fc7451ed783391acc6ad688e56dd2598f769e8e72ecbb650ec34763396af822a91768562 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": + version: 1.2.0 + resolution: "is-arguments@npm:1.2.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" + dependencies: + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e + languageName: node + linkType: hard + +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" + dependencies: + semver: "npm:^7.7.1" + checksum: 10c0/7d27a0679cfa5be1f5052650391f9b11040cd70c48d45112e312c56bc6b6ca9c9aea70dcce6cc40b1e8947bfff8567a5c5715d3b066fb478522dab46ea379240 + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-ci@npm:^3.0.1": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: "npm:^3.2.0" + bin: + is-ci: bin.js + checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 + languageName: node + linkType: hard + +"is-cidr@npm:^4.0.2": + version: 4.0.2 + resolution: "is-cidr@npm:4.0.2" + dependencies: + cidr-regex: "npm:^3.1.1" + checksum: 10c0/64d8e03304a8c479b338fbe4341e8a37a9dd6fa1e0e95c93e7121b64f50ef154346965779c5e3bc1460915eb04a57564909d9199adb627dc7ec1ac2cfd282f10 + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + languageName: node + linkType: hard + +"is-directory@npm:^0.3.1": + version: 0.3.1 + resolution: "is-directory@npm:0.3.1" + checksum: 10c0/1c39c7d1753b04e9483b89fb88908b8137ab4743b6f481947e97ccf93ecb384a814c8d3f0b95b082b149c5aa19c3e9e4464e2791d95174bce95998c26bb1974b + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^1.0.0": + version: 1.0.0 + resolution: "is-fullwidth-code-point@npm:1.0.0" + dependencies: + number-is-nan: "npm:^1.0.0" + checksum: 10c0/12acfcf16142f2d431bf6af25d68569d3198e81b9799b4ae41058247aafcc666b0127d64384ea28e67a746372611fcbe9b802f69175287aba466da3eddd5ba0f + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-installed-globally@npm:^0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: "npm:^3.0.0" + is-path-inside: "npm:^3.0.2" + checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-interactive@npm:^2.0.0": + version: 2.0.0 + resolution: "is-interactive@npm:2.0.0" + checksum: 10c0/801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-name-taken@npm:^2.0.0": + version: 2.0.0 + resolution: "is-name-taken@npm:2.0.0" + dependencies: + all-package-names: "npm:^2.0.2" + package-name-conflict: "npm:^1.0.3" + validate-npm-package-name: "npm:^3.0.0" + checksum: 10c0/f2d98c282cf28325585c64a1e82b0ccf830f5d86b356f3d68dfc35d016350fb5dd1e5ae57ce9b52814c0284b8df3c00e9ed245b29449fc1e71481050afb24f07 + languageName: node + linkType: hard + +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed + languageName: node + linkType: hard + +"is-npm@npm:^6.0.0": + version: 6.0.0 + resolution: "is-npm@npm:6.0.0" + checksum: 10c0/1f064c66325cba6e494783bee4e635caa2655aad7f853a0e045d086e0bb7d83d2d6cdf1745dc9a7c7c93dacbf816fbee1f8d9179b02d5d01674d4f92541dc0d9 + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + languageName: node + linkType: hard + +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + languageName: node + linkType: hard + +"is-observable@npm:^1.1.0": + version: 1.1.0 + resolution: "is-observable@npm:1.1.0" + dependencies: + symbol-observable: "npm:^1.1.0" + checksum: 10c0/cf3166b0822f70ad06e7851e09430166ce658349d54aaa64c93a03320420b9285735821b23164bdce741ff83a86730ac3e53035ce4e2511ed843dbff4105bfa2 + languageName: node + linkType: hard + +"is-path-cwd@npm:^2.2.0": + version: 2.2.0 + resolution: "is-path-cwd@npm:2.2.0" + checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a + languageName: node + linkType: hard + +"is-path-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "is-path-cwd@npm:3.0.0" + checksum: 10c0/8135b789c74e137501ca33b11a846c32d160c517037c0ce390004a98335e010b9712792d97c73d9e98a5ecbcfd03589a81e95c72e1c05014a69fead963a02753 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.1, is-path-inside@npm:^3.0.2": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-path-inside@npm:^4.0.0": + version: 4.0.0 + resolution: "is-path-inside@npm:4.0.0" + checksum: 10c0/51188d7e2b1d907a9a5f7c18d99a90b60870b951ed87cf97595d9aaa429d4c010652c3350bcbf31182e7f4b0eab9a1860b43e16729b13cb1a44baaa6cdb64c46 + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + +"is-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 10c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069 + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: 10c0/34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 + languageName: node + linkType: hard + +"is-scoped@npm:^3.0.0": + version: 3.0.0 + resolution: "is-scoped@npm:3.0.0" + dependencies: + scoped-regex: "npm:^3.0.0" + checksum: 10c0/9061cb11ea6e41e215810181dad2475df8172328f9e6ac2f0a79cfaeeee605ca025e3b18fb910bf4c277f4e61fe912660e687b16d2f9446d52cf487c4fad89a9 + languageName: node + linkType: hard + +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + +"is-stream@npm:^1.1.0": + version: 1.1.0 + resolution: "is-stream@npm:1.1.0" + checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + languageName: node + linkType: hard + +"is-text-path@npm:^1.0.1": + version: 1.0.1 + resolution: "is-text-path@npm:1.0.1" + dependencies: + text-extensions: "npm:^1.0.0" + checksum: 10c0/61c8650c29548febb6bf69e9541fc11abbbb087a0568df7bc471ba264e95fb254def4e610631cbab4ddb0a1a07949d06416f4ebeaf37875023fb184cdb87ee84 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15, is-typed-array@npm:^1.1.3": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-typedarray@npm:^1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^1.1.0": + version: 1.3.0 + resolution: "is-unicode-supported@npm:1.3.0" + checksum: 10c0/b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a + languageName: node + linkType: hard + +"is-url-superb@npm:^6.1.0": + version: 6.1.0 + resolution: "is-url-superb@npm:6.1.0" + checksum: 10c0/f22c5e49503cb616a0fbab9a4eddf57718213d268355c151ba06e65a8f677c724a9c25e698dbee3cf94dd2686c8c84803317a1e68e3724ad48f390f7cd966b7d + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + +"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"is-yarn-global@npm:^0.4.0": + version: 0.4.1 + resolution: "is-yarn-global@npm:0.4.1" + checksum: 10c0/8ff66f33454614f8e913ad91cc4de0d88d519a46c1ed41b3f589da79504ed0fcfa304064fe3096dda9360c5f35aa210cb8e978fd36798f3118cb66a4de64d365 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"issue-parser@npm:^6.0.0": + version: 6.0.0 + resolution: "issue-parser@npm:6.0.0" + dependencies: + lodash.capitalize: "npm:^4.2.1" + lodash.escaperegexp: "npm:^4.1.2" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.uniqby: "npm:^4.7.0" + checksum: 10c0/3bfc48ca5c380061ba3db9bfb0c2a86692c74245a386d8add5eb7cd60022c85f44277692d78914ff0d37cf0da7d1743149516d00175233949c85c056d12e3b49 + languageName: node + linkType: hard + +"issue-regex@npm:^4.1.0": + version: 4.3.0 + resolution: "issue-regex@npm:4.3.0" + checksum: 10c0/4a8b14f93a0e190c896714b56eda1b3047fb6c64b39f61ace922cc1bc9758a2b46f5e4fa8d04679e8c90662d7cbc18a6778e3f0a23b2b0ee88826816cd4724f7 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^5.0.4": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.6": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"java-properties@npm:^1.0.0": + version: 1.0.2 + resolution: "java-properties@npm:1.0.2" + checksum: 10c0/be0f58c83b5a852f313de2ea57f7b8b7d46dc062b2ffe487d58838e7034d4660f4d22f2a96aae4daa622af6d734726c0d08b01396e59666ededbcfdc25a694d6 + languageName: node + linkType: hard + +"jest-canvas-mock@npm:~2.5.2": + version: 2.5.2 + resolution: "jest-canvas-mock@npm:2.5.2" + dependencies: + cssfontparser: "npm:^1.2.1" + moo-color: "npm:^1.0.2" + checksum: 10c0/6a4190354b1e9aedcb3045273f13f6f1d2d1efb00cfe6458707fae538a8f91f6afdf72b9e201b653666863054edc783428bdc0c1a2c71d66d9ac364b4893f6d6 + languageName: node + linkType: hard + +"jest-diff@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-diff@npm:27.5.1" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/48f008c7b4ea7794108319eb61050315b1723e7391cb01e4377c072cadcab10a984cb09d2a6876cb65f100d06c970fd932996192e092b26006f885c00945e7ad + languageName: node + linkType: hard + +"jest-diff@npm:^29.0.0, jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-extended@npm:^4.0.2": + version: 4.0.2 + resolution: "jest-extended@npm:4.0.2" + dependencies: + jest-diff: "npm:^29.0.0" + jest-get-type: "npm:^29.0.0" + peerDependencies: + jest: ">=27.2.5" + peerDependenciesMeta: + jest: + optional: true + checksum: 10c0/305fdb6885ab71755830b70690b8db6ea6fd9adca92360ea1a37c0d2fa6567a68b57178dd7707d112fc57b01ab75b66f28a1c550ed0e6b1b8628600a812c2277 + languageName: node + linkType: hard + +"jest-get-type@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-get-type@npm:27.5.1" + checksum: 10c0/42ee0101336bccfc3c1cff598b603c6006db7876b6117e5bd4a9fb7ffaadfb68febdb9ae68d1c47bc3a4174b070153fc6cfb59df995dcd054e81ace5028a7269 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.0.0, jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^27.0.0": + version: 27.5.1 + resolution: "jest-matcher-utils@npm:27.5.1" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/a2f082062e8bedc9cfe2654177a894ca43768c6db4c0f4efc0d6ec195e305a99e3d868ff54cc61bcd7f1c810d8ee28c9ac6374de21715dc52f136876de739a73 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-tokens@npm:^9.0.1": + version: 9.0.1 + resolution: "js-tokens@npm:9.0.1" + checksum: 10c0/68dcab8f233dde211a6b5fd98079783cbcd04b53617c1250e3553ee16ab3e6134f5e65478e41d82f6d351a052a63d71024553933808570f04dbf828d7921e80e + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsdoc-type-pratt-parser@npm:^4.0.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: 10c0/7700372d2e733a32f7ea0a1df9cec6752321a5345c11a91b2ab478a031a426e934f16d5c1f15c8566c7b2c10af9f27892a29c2c789039f595470e929a4aa60ea + languageName: node + linkType: hard + +"jsdom@npm:^24.0.0": + version: 24.1.3 + resolution: "jsdom@npm:24.1.3" + dependencies: + cssstyle: "npm:^4.0.1" + data-urls: "npm:^5.0.0" + decimal.js: "npm:^10.4.3" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^4.0.0" + http-proxy-agent: "npm:^7.0.2" + https-proxy-agent: "npm:^7.0.5" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.12" + parse5: "npm:^7.1.2" + rrweb-cssom: "npm:^0.7.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.4" + w3c-xmlserializer: "npm:^5.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^3.1.1" + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + ws: "npm:^8.18.0" + xml-name-validator: "npm:^5.0.0" + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/e48b342afacd7418a23dac204a62deea729c50f4d072a7c04c09fd32355fdb4335f8779fa79fd0277a2dbeb2d356250a950955719d00047324b251233b11277f + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stable-stringify@npm:^1.0.2": + version: 1.2.1 + resolution: "json-stable-stringify@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 10c0/e623e7ce89282f089d56454087edb717357e8572089b552fbc6980fb7814dc3943f7d0e4f1a19429a36ce9f4428b6c8ee6883357974457aaaa98daba5adebeea + languageName: node + linkType: hard + +"json-stringify-nice@npm:^1.1.4": + version: 1.1.4 + resolution: "json-stringify-nice@npm:1.1.4" + checksum: 10c0/13673b67ba9e7fde75a103cade0b0d2dd0d21cd3b918de8d8f6cd59d48ad8c78b0e85f6f4a5842073ddfc91ebdde5ef7c81c7f51945b96a33eaddc5d41324b87 + languageName: node + linkType: hard + +"json-stringify-safe@npm:^5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + languageName: node + linkType: hard + +"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"just-diff-apply@npm:^5.2.0": + version: 5.5.0 + resolution: "just-diff-apply@npm:5.5.0" + checksum: 10c0/d7b85371f2a5a17a108467fda35dddd95264ab438ccec7837b67af5913c57ded7246039d1df2b5bc1ade034ccf815b56d69786c5f1e07383168a066007c796c0 + languageName: node + linkType: hard + +"just-diff@npm:^5.0.1": + version: 5.2.0 + resolution: "just-diff@npm:5.2.0" + checksum: 10c0/a9d0ebc789f70f5200a022059de057a49b7f1a63179f691b79da13c82c3973d58b7f18e5b30ee0874f79ca53d5e9bdff8f089dff6de4c5f7def10a1c1cc5200e + languageName: node + linkType: hard + +"keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kind-of@npm:^6.0.3": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"klaw-sync@npm:^6.0.0": + version: 6.0.0 + resolution: "klaw-sync@npm:6.0.0" + dependencies: + graceful-fs: "npm:^4.1.11" + checksum: 10c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"latest-version@npm:^7.0.0": + version: 7.0.0 + resolution: "latest-version@npm:7.0.0" + dependencies: + package-json: "npm:^8.1.0" + checksum: 10c0/68045f5e419e005c12e595ae19687dd88317dd0108b83a8773197876622c7e9d164fe43aacca4f434b2cba105c92848b89277f658eabc5d50e81fb743bbcddb1 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"libnpmaccess@npm:^6.0.4": + version: 6.0.4 + resolution: "libnpmaccess@npm:6.0.4" + dependencies: + aproba: "npm:^2.0.0" + minipass: "npm:^3.1.1" + npm-package-arg: "npm:^9.0.1" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/d7cee5ae92369a1ac6fb141082b929c853b3b6a140d9878e52ee93abca644fe052e7b5dfc3ac14c4b2f0c0945bd8bf6d5ccff608be8d8928d812df4af28cb43b + languageName: node + linkType: hard + +"libnpmdiff@npm:^4.0.5": + version: 4.0.5 + resolution: "libnpmdiff@npm:4.0.5" + dependencies: + "@npmcli/disparity-colors": "npm:^2.0.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + binary-extensions: "npm:^2.2.0" + diff: "npm:^5.1.0" + minimatch: "npm:^5.0.1" + npm-package-arg: "npm:^9.0.1" + pacote: "npm:^13.6.1" + tar: "npm:^6.1.0" + checksum: 10c0/421d92ce61bfdfa5d9f04a35974d1363525ffaa4a92df6ce9cec46788e5f4e52283137f77e22e3280eb79f52c3b9cdb587ffbbc640012a95d7369abae77a51a1 + languageName: node + linkType: hard + +"libnpmexec@npm:^4.0.14": + version: 4.0.14 + resolution: "libnpmexec@npm:4.0.14" + dependencies: + "@npmcli/arborist": "npm:^5.6.3" + "@npmcli/ci-detect": "npm:^2.0.0" + "@npmcli/fs": "npm:^2.1.1" + "@npmcli/run-script": "npm:^4.2.0" + chalk: "npm:^4.1.0" + mkdirp-infer-owner: "npm:^2.0.0" + npm-package-arg: "npm:^9.0.1" + npmlog: "npm:^6.0.2" + pacote: "npm:^13.6.1" + proc-log: "npm:^2.0.0" + read: "npm:^1.0.7" + read-package-json-fast: "npm:^2.0.2" + semver: "npm:^7.3.7" + walk-up-path: "npm:^1.0.0" + checksum: 10c0/d5897a873b0755053111978e33944ff6f90682a615fa227043c7e2a10210fce521701d9cce69010ff5609479defaf97f410329a026ba1eed40210ee41d309572 + languageName: node + linkType: hard + +"libnpmfund@npm:^3.0.5": + version: 3.0.5 + resolution: "libnpmfund@npm:3.0.5" + dependencies: + "@npmcli/arborist": "npm:^5.6.3" + checksum: 10c0/8977a4db55d37d991598aaf9507d34cc994aa5b783e2d2f0c2f75ba8fdcded5a81e195fbb77e914de6d577e55f17678c974442e8e559652869b76a02d84283a1 + languageName: node + linkType: hard + +"libnpmhook@npm:^8.0.4": + version: 8.0.4 + resolution: "libnpmhook@npm:8.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/64e0fe39053e6bf30c69937f19c06cf555c28eb30539d7caee5db860e85f18d2e4d874235696e1a2b23c9c3e04696bf1afe140a49302aa98a37b0b6c0772fe8b + languageName: node + linkType: hard + +"libnpmorg@npm:^4.0.4": + version: 4.0.4 + resolution: "libnpmorg@npm:4.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/aa6c760efe87183d217af0595dbd992374d33eab94f4bb2ab6548b6dc41d9a986c4d4f93e8fcfab4d9c18640c7ffed73a4219b629f207367f9e1f7fa7140fe0b + languageName: node + linkType: hard + +"libnpmpack@npm:^4.1.3": + version: 4.1.3 + resolution: "libnpmpack@npm:4.1.3" + dependencies: + "@npmcli/run-script": "npm:^4.1.3" + npm-package-arg: "npm:^9.0.1" + pacote: "npm:^13.6.1" + checksum: 10c0/628341371bfb556b8e4649b11be63fe1c11dec85fe5d3018d9cda87cc5f274b6fd4df2751d6b651c8e3cfffb03f055e2e1811c41d94022bd28833236f03479cd + languageName: node + linkType: hard + +"libnpmpublish@npm:^6.0.5": + version: 6.0.5 + resolution: "libnpmpublish@npm:6.0.5" + dependencies: + normalize-package-data: "npm:^4.0.0" + npm-package-arg: "npm:^9.0.1" + npm-registry-fetch: "npm:^13.0.0" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.0" + checksum: 10c0/b6238933d792a73a52ddb262aea07a09221dceeaefeb7340f1443d9ab7b2a6997ea8ef5267daaa5c15b1c3be6b7b730cc816f8bf3076a6b346e0a46546828f44 + languageName: node + linkType: hard + +"libnpmsearch@npm:^5.0.4": + version: 5.0.4 + resolution: "libnpmsearch@npm:5.0.4" + dependencies: + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/21e0e24c571f91a7e3c1f2d4441bdf611dae6f161ca22aea1623bc90582d0d93b9307903facc0eee1758635da2f5b1f274ebd98db68e9ea3054ca8fc8ab2ffe8 + languageName: node + linkType: hard + +"libnpmteam@npm:^4.0.4": + version: 4.0.4 + resolution: "libnpmteam@npm:4.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/ae7311de69936141b8e5b5932aca3bce6eada88b1ef5c5fec12391a26750ccd83e70cffb1cfa7c87d91bfc346d89ce975bfbe4648c3ddc693d3e9a641780537a + languageName: node + linkType: hard + +"libnpmversion@npm:^3.0.7": + version: 3.0.7 + resolution: "libnpmversion@npm:3.0.7" + dependencies: + "@npmcli/git": "npm:^3.0.0" + "@npmcli/run-script": "npm:^4.1.3" + json-parse-even-better-errors: "npm:^2.3.1" + proc-log: "npm:^2.0.0" + semver: "npm:^7.3.7" + checksum: 10c0/07620887a240b4466ce1d7faf967ab5571da0e705c7b87b3aac4581defc9ab1c839e02bee6c1d413321f83b59910f78d770e9b5163e0450799d9eb24ce6e6174 + languageName: node + linkType: hard + +"lilconfig@npm:2.0.6": + version: 2.0.6 + resolution: "lilconfig@npm:2.0.6" + checksum: 10c0/52bcb478586c629a78b9b06de72de897cd6d771725e70ee91ec16605721afebf43cf54b4d20b6bf904ca70877ddd9531b9578494c694072d1573a6d4aba1545a + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"lint-staged@npm:13.1.0": + version: 13.1.0 + resolution: "lint-staged@npm:13.1.0" + dependencies: + cli-truncate: "npm:^3.1.0" + colorette: "npm:^2.0.19" + commander: "npm:^9.4.1" + debug: "npm:^4.3.4" + execa: "npm:^6.1.0" + lilconfig: "npm:2.0.6" + listr2: "npm:^5.0.5" + micromatch: "npm:^4.0.5" + normalize-path: "npm:^3.0.0" + object-inspect: "npm:^1.12.2" + pidtree: "npm:^0.6.0" + string-argv: "npm:^0.3.1" + yaml: "npm:^2.1.3" + bin: + lint-staged: bin/lint-staged.js + checksum: 10c0/e6eeb75b433fd9aaa195c016618017dcf5a0fe87911d0303bb34eda6bfab09b6b5a902f11b26baf3e4a0e911cc683cea8a7f7655f2234739478001b35e58f406 + languageName: node + linkType: hard + +"lint-staged@npm:^9.5.0": + version: 9.5.0 + resolution: "lint-staged@npm:9.5.0" + dependencies: + chalk: "npm:^2.4.2" + commander: "npm:^2.20.0" + cosmiconfig: "npm:^5.2.1" + debug: "npm:^4.1.1" + dedent: "npm:^0.7.0" + del: "npm:^5.0.0" + execa: "npm:^2.0.3" + listr: "npm:^0.14.3" + log-symbols: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + normalize-path: "npm:^3.0.0" + please-upgrade-node: "npm:^3.1.1" + string-argv: "npm:^0.3.0" + stringify-object: "npm:^3.3.0" + bin: + lint-staged: ./bin/lint-staged + checksum: 10c0/852bac51210cb49b59930d855ab945c8acb858a1027ca2ebf07d7e57d889d7a500708cb7a552efc14c4a33cdbed9b25e752e3a9022cfb4fbee0456c0aec7b809 + languageName: node + linkType: hard + +"listr-input@npm:^0.2.1": + version: 0.2.1 + resolution: "listr-input@npm:0.2.1" + dependencies: + inquirer: "npm:^7.0.0" + inquirer-autosubmit-prompt: "npm:^0.2.0" + rxjs: "npm:^6.5.3" + through: "npm:^2.3.8" + checksum: 10c0/3e0ff822f7770bae176d7291f3320fd760a17b5a0fc79ed395a5c269028d66027759b4c4be57974665cc959ff9d581c7b709357ac124aeb8b64f2fb941ce70e9 + languageName: node + linkType: hard + +"listr-silent-renderer@npm:^1.1.1": + version: 1.1.1 + resolution: "listr-silent-renderer@npm:1.1.1" + checksum: 10c0/a13e08ebf863516a757bce4887f05290070772113d89095e9f51a07cf0b11a43a7563a67ff3b287c752c08f6d781fdb2123b02957534e3e0675fb564f2a42e1b + languageName: node + linkType: hard + +"listr-update-renderer@npm:^0.5.0": + version: 0.5.0 + resolution: "listr-update-renderer@npm:0.5.0" + dependencies: + chalk: "npm:^1.1.3" + cli-truncate: "npm:^0.2.1" + elegant-spinner: "npm:^1.0.1" + figures: "npm:^1.7.0" + indent-string: "npm:^3.0.0" + log-symbols: "npm:^1.0.2" + log-update: "npm:^2.3.0" + strip-ansi: "npm:^3.0.1" + peerDependencies: + listr: ^0.14.2 + checksum: 10c0/8ade44bf3dc6146c8e0178000619439e8889792c4689b66be6ce82bd459f5fe462ecb34b05147fb206a8ad60e6d4e6f34c9f48038e18366f867fd972688b8edc + languageName: node + linkType: hard + +"listr-verbose-renderer@npm:^0.5.0": + version: 0.5.0 + resolution: "listr-verbose-renderer@npm:0.5.0" + dependencies: + chalk: "npm:^2.4.1" + cli-cursor: "npm:^2.1.0" + date-fns: "npm:^1.27.2" + figures: "npm:^2.0.0" + checksum: 10c0/041cd1e82da7054f27ae0a914e98b40d15faf9f950ef850578fc6241d3fff3c2d7158a4f6226006e566b4c47bf445be2d254dd1ce5c16569a3a5dcd575bec656 + languageName: node + linkType: hard + +"listr2@npm:^5.0.5": + version: 5.0.8 + resolution: "listr2@npm:5.0.8" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.19" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.8.0" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/00f00ad18262909bafff21b42d2d94faa9ed3911d70094a12a1182e773533f9b3cfd78d83a81fdbfb7dbc42e3e3252093f504c822de152100a953a91f3adf7cb + languageName: node + linkType: hard + +"listr@npm:^0.14.3": + version: 0.14.3 + resolution: "listr@npm:0.14.3" + dependencies: + "@samverschueren/stream-to-observable": "npm:^0.3.0" + is-observable: "npm:^1.1.0" + is-promise: "npm:^2.1.0" + is-stream: "npm:^1.1.0" + listr-silent-renderer: "npm:^1.1.1" + listr-update-renderer: "npm:^0.5.0" + listr-verbose-renderer: "npm:^0.5.0" + p-map: "npm:^2.0.0" + rxjs: "npm:^6.3.3" + checksum: 10c0/753d518218c423f46bee8eeacccecadfd2e414ba9c0f602e7f85fe3f6fa18404dfab0812433aeda4683ee2548358488f597ac1a3d321196baec5d3149b200b10 + languageName: node + linkType: hard + +"load-json-file@npm:^4.0.0": + version: 4.0.0 + resolution: "load-json-file@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.2" + parse-json: "npm:^4.0.0" + pify: "npm:^3.0.0" + strip-bom: "npm:^3.0.0" + checksum: 10c0/6b48f6a0256bdfcc8970be2c57f68f10acb2ee7e63709b386b2febb6ad3c86198f840889cdbe71d28f741cbaa2f23a7771206b138cd1bdd159564511ca37c1d5 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.4": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^2.1.2" + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + languageName: node + linkType: hard + +"local-pkg@npm:^0.5.0": + version: 0.5.1 + resolution: "local-pkg@npm:0.5.1" + dependencies: + mlly: "npm:^1.7.3" + pkg-types: "npm:^1.2.1" + checksum: 10c0/ade8346f1dc04875921461adee3c40774b00d4b74095261222ebd4d5fd0a444676e36e325f76760f21af6a60bc82480e154909b54d2d9f7173671e36dacf1808 + languageName: node + linkType: hard + +"locate-path@npm:^2.0.0": + version: 2.0.0 + resolution: "locate-path@npm:2.0.0" + dependencies: + p-locate: "npm:^2.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash.capitalize@npm:^4.2.1": + version: 4.2.1 + resolution: "lodash.capitalize@npm:4.2.1" + checksum: 10c0/b289326497c2e24d6b8afa2af2ca4e068ef6ef007ade36bfb6f70af77ce10ea3f090eeee947d5fdcf2db4bcfa4703c8c10a5857a2b39e308bddfd1d11ad35970 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.escaperegexp@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.escaperegexp@npm:4.1.2" + checksum: 10c0/484ad4067fa9119bb0f7c19a36ab143d0173a081314993fe977bd00cf2a3c6a487ce417a10f6bac598d968364f992153315f0dbe25c9e38e3eb7581dd333e087 + languageName: node + linkType: hard + +"lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + +"lodash.ismatch@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.ismatch@npm:4.4.0" + checksum: 10c0/8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + languageName: node + linkType: hard + +"lodash.zip@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.zip@npm:4.2.0" + checksum: 10c0/e596da80a6138e369998b50c78b51ed6cf984b4f239e59056aa18dca5972a213c491c511caf5888a2dec603c67265caf942099bec554a86a5c7ff1937d57f0e4 + languageName: node + linkType: hard + +"lodash@npm:^4.17.12, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.4": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^1.0.2": + version: 1.0.2 + resolution: "log-symbols@npm:1.0.2" + dependencies: + chalk: "npm:^1.0.0" + checksum: 10c0/c64e1fe41d0d043840f8b592d043b8607a836b846506f525a53d99d578561f02f97b2cba1d2b3c30bae5311d64b308d5a392a9930d252b906a9042fc2877da7a + languageName: node + linkType: hard + +"log-symbols@npm:^3.0.0": + version: 3.0.0 + resolution: "log-symbols@npm:3.0.0" + dependencies: + chalk: "npm:^2.4.2" + checksum: 10c0/d11582a1b499b76aa1415988234ad54d9fb3f888f4cb4186cbc20ee4d314ac4b5f3d9fe9edd828748d2c0d372df2ea9f5dfd89100510988a8ce5ddf483ae015e + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-symbols@npm:^5.1.0": + version: 5.1.0 + resolution: "log-symbols@npm:5.1.0" + dependencies: + chalk: "npm:^5.0.0" + is-unicode-supported: "npm:^1.1.0" + checksum: 10c0/c14f8567c6618a7f96209c4c4b9fb3b794187116904712f7b526e465a5c9535728aec983735a5bef919247d0e54b9b72b6680a7fb9fc72d76b945dac4865e669 + languageName: node + linkType: hard + +"log-update@npm:^2.3.0": + version: 2.3.0 + resolution: "log-update@npm:2.3.0" + dependencies: + ansi-escapes: "npm:^3.0.0" + cli-cursor: "npm:^2.0.0" + wrap-ansi: "npm:^3.0.1" + checksum: 10c0/9bf21b138801ab4770a2bfa735161cf005b869360eaf5003a84ba64ddc5f5c3ce7217f4f1fa79d9c1f510d792213b2c9800327228e94df05859d19b716215d90 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"loupe@npm:^2.3.6, loupe@npm:^2.3.7": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 + languageName: node + linkType: hard + +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 10c0/ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + languageName: node + linkType: hard + +"magic-string@npm:^0.27.0": + version: 0.27.0 + resolution: "magic-string@npm:0.27.0" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.13" + checksum: 10c0/cddacfea14441ca57ae8a307bc3cf90bac69efaa4138dd9a80804cffc2759bf06f32da3a293fb13eaa96334b7d45b7768a34f1d226afae25d2f05b05a3bb37d8 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.5": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 + languageName: node + linkType: hard + +"magicast@npm:^0.3.3": + version: 0.3.5 + resolution: "magicast@npm:0.3.5" + dependencies: + "@babel/parser": "npm:^7.25.4" + "@babel/types": "npm:^7.25.4" + source-map-js: "npm:^1.2.0" + checksum: 10c0/a6cacc0a848af84f03e3f5bda7b0de75e4d0aa9ddce5517fd23ed0f31b5ddd51b2d0ff0b7e09b51f7de0f4053c7a1107117edda6b0732dca3e9e39e6c5a68c64 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: "npm:^6.0.0" + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6, make-fetch-happen@npm:^10.2.0": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: 10c0/28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + languageName: node + linkType: hard + +"map-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: 10c0/ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52 + languageName: node + linkType: hard + +"map-obj@npm:^4.0.0": + version: 4.3.0 + resolution: "map-obj@npm:4.3.0" + checksum: 10c0/1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b + languageName: node + linkType: hard + +"map-or-similar@npm:^1.5.0": + version: 1.5.0 + resolution: "map-or-similar@npm:1.5.0" + checksum: 10c0/33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def + languageName: node + linkType: hard + +"marked-terminal@npm:^5.0.0": + version: 5.2.0 + resolution: "marked-terminal@npm:5.2.0" + dependencies: + ansi-escapes: "npm:^6.2.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^5.2.0" + cli-table3: "npm:^0.6.3" + node-emoji: "npm:^1.11.0" + supports-hyperlinks: "npm:^2.3.0" + peerDependencies: + marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/3f10966cf5c7973453442cf2cf8a5479c68c266723af0de9aa6f0687d40dd30b2820de002bb2c737274223c338ef5fcf1215c7f71092ffa35f448f105713b267 + languageName: node + linkType: hard + +"marked@npm:^4.0.10": + version: 4.3.0 + resolution: "marked@npm:4.3.0" + bin: + marked: bin/marked.js + checksum: 10c0/0013463855e31b9c88d8bb2891a611d10ef1dc79f2e3cbff1bf71ba389e04c5971298c886af0be799d7fa9aa4593b086a136062d59f1210b0480b026a8c5dc47 + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"memoizerific@npm:^1.11.3": + version: 1.11.3 + resolution: "memoizerific@npm:1.11.3" + dependencies: + map-or-similar: "npm:^1.5.0" + checksum: 10c0/661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e + languageName: node + linkType: hard + +"meow@npm:^12.0.1": + version: 12.1.1 + resolution: "meow@npm:12.1.1" + checksum: 10c0/a125ca99a32e2306e2f4cbe651a0d27f6eb67918d43a075f6e80b35e9bf372ebf0fc3a9fbc201cbbc9516444b6265fb3c9f80c5b7ebd32f548aa93eb7c28e088 + languageName: node + linkType: hard + +"meow@npm:^8.0.0": + version: 8.1.2 + resolution: "meow@npm:8.1.2" + dependencies: + "@types/minimist": "npm:^1.2.0" + camelcase-keys: "npm:^6.2.2" + decamelize-keys: "npm:^1.1.0" + hard-rejection: "npm:^2.1.0" + minimist-options: "npm:4.1.0" + normalize-package-data: "npm:^3.0.0" + read-pkg-up: "npm:^7.0.1" + redent: "npm:^3.0.0" + trim-newlines: "npm:^3.0.0" + type-fest: "npm:^0.18.0" + yargs-parser: "npm:^20.2.3" + checksum: 10c0/9a8d90e616f783650728a90f4ea1e5f763c1c5260369e6596b52430f877f4af8ecbaa8c9d952c93bbefd6d5bda4caed6a96a20ba7d27b511d2971909b01922a2 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^1.0.0": + version: 1.2.0 + resolution: "mimic-fn@npm:1.2.0" + checksum: 10c0/ad55214aec6094c0af4c0beec1a13787556f8116ed88807cf3f05828500f21f93a9482326bcd5a077ae91e3e8795b4e76b5b4c8bb12237ff0e4043a365516cba + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + languageName: node + linkType: hard + +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 10c0/761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist-options@npm:4.1.0": + version: 4.1.0 + resolution: "minimist-options@npm:4.1.0" + dependencies: + arrify: "npm:^1.0.1" + is-plain-obj: "npm:^1.1.0" + kind-of: "npm:^6.0.3" + checksum: 10c0/7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 + languageName: node + linkType: hard + +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-json-stream@npm:^1.0.1": + version: 1.0.2 + resolution: "minipass-json-stream@npm:1.0.2" + dependencies: + jsonparse: "npm:^1.3.1" + minipass: "npm:^3.0.0" + checksum: 10c0/c2fc0d9719dd445d08de82bb449b51c59c3609a08064dd270da8bc76e4e542f4f354b5b1ef3b6e2f2f5b621b25e21ffbd0f0fa26ba6a80121fc19c3ad0d4db2c + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1": + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 + languageName: node + linkType: hard + +"mkdirp-infer-owner@npm:^2.0.0": + version: 2.0.0 + resolution: "mkdirp-infer-owner@npm:2.0.0" + dependencies: + chownr: "npm:^2.0.0" + infer-owner: "npm:^1.0.4" + mkdirp: "npm:^1.0.3" + checksum: 10c0/548356a586b92a16fc90eb62b953e5a23d594b56084ecdf72446f4164bbaa6a3bacd8c140672ad24f10c5f561e16c35ac3d97a5ab422832c5ed5449c72501a03 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d + languageName: node + linkType: hard + +"mlly@npm:^1.7.3, mlly@npm:^1.7.4": + version: 1.7.4 + resolution: "mlly@npm:1.7.4" + dependencies: + acorn: "npm:^8.14.0" + pathe: "npm:^2.0.1" + pkg-types: "npm:^1.3.0" + ufo: "npm:^1.5.4" + checksum: 10c0/69e738218a13d6365caf930e0ab4e2b848b84eec261597df9788cefb9930f3e40667be9cb58a4718834ba5f97a6efeef31d3b5a95f4388143fd4e0d0deff72ff + languageName: node + linkType: hard + +"modify-values@npm:^1.0.0": + version: 1.0.1 + resolution: "modify-values@npm:1.0.1" + checksum: 10c0/6acb1b82aaf7a02f9f7b554b20cbfc159f223a79c66b0a257511c5933d50b85e12ea1220b0a90a2af6f80bc29ff784f929a52a51881867a93ae6a12ce87a729a + languageName: node + linkType: hard + +"moo-color@npm:^1.0.2": + version: 1.0.3 + resolution: "moo-color@npm:1.0.3" + dependencies: + color-name: "npm:^1.1.4" + checksum: 10c0/778c82f67f638c03a1d0fa78dcd6ea376a9f17b5e78e349c7e34a290b496dbdb43fd0b1c38070e2062d5e784bcf08e57f499015fcbcf52b3a1887d7825ebb80d + languageName: node + linkType: hard + +"motion-dom@npm:^11.18.1": + version: 11.18.1 + resolution: "motion-dom@npm:11.18.1" + dependencies: + motion-utils: "npm:^11.18.1" + checksum: 10c0/98378bdf9d77870829cdf3624c5eff02e48cfa820dfc74450364d7421884700048d60e277bfbf477df33270fbae4c1980e5914586f5b6dff28d4921fdca8ac47 + languageName: node + linkType: hard + +"motion-utils@npm:^11.18.1": + version: 11.18.1 + resolution: "motion-utils@npm:11.18.1" + checksum: 10c0/dac083bdeb6e433a277ac4362211b0fdce59ff09d6f7897f0f49d1e3561209c6481f676876daf99a33485054bc7e4b1d1b8d1de16f7b1e5c6f117fe76358ca00 + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"msw@npm:^2.1.7": + version: 2.7.3 + resolution: "msw@npm:2.7.3" + dependencies: + "@bundled-es-modules/cookie": "npm:^2.0.1" + "@bundled-es-modules/statuses": "npm:^1.0.1" + "@bundled-es-modules/tough-cookie": "npm:^0.1.6" + "@inquirer/confirm": "npm:^5.0.0" + "@mswjs/interceptors": "npm:^0.37.0" + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/until": "npm:^2.1.0" + "@types/cookie": "npm:^0.6.0" + "@types/statuses": "npm:^2.0.4" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:^4.0.2" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + path-to-regexp: "npm:^6.3.0" + picocolors: "npm:^1.1.1" + strict-event-emitter: "npm:^0.5.1" + type-fest: "npm:^4.26.1" + yargs: "npm:^17.7.2" + peerDependencies: + typescript: ">= 4.8.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10c0/47cad1c4b4615b312477c8977fddfda3e90becd8efc2d81d73be8fb860e45ad0d3f7bca6d4f70ae7ed21894e93975bda66d609aafc3a1c99cb923c5ef67f8686 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.7": + version: 0.0.7 + resolution: "mute-stream@npm:0.0.7" + checksum: 10c0/c687cfe99289166fe17dcbd0cf49612c5d267410a7819b654a82df45016967d7b2b0b18b35410edef86de6bb089a00413557dc0182c5e78a4af50ba5d61edb42 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"mute-stream@npm:1.0.0": + version: 1.0.0 + resolution: "mute-stream@npm:1.0.0" + checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c + languageName: node + linkType: hard + +"mute-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "mute-stream@npm:2.0.0" + checksum: 10c0/2cf48a2087175c60c8dcdbc619908b49c07f7adcfc37d29236b0c5c612d6204f789104c98cc44d38acab7b3c96f4a3ec2cfdc4934d0738d876dbefa2a12c69f4 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.8": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"nerf-dart@npm:^1.0.0": + version: 1.0.0 + resolution: "nerf-dart@npm:1.0.0" + checksum: 10c0/e19e17d7bd91dfcb1acd07cbdd8df1f0613f3408227538fe91793c6dfcf58e95b5f18b88b4a13e9b31587e89a119fd76d6df4b8d8c65564dd2c409d787819583 + languageName: node + linkType: hard + +"new-github-release-url@npm:^2.0.0": + version: 2.0.0 + resolution: "new-github-release-url@npm:2.0.0" + dependencies: + type-fest: "npm:^2.5.1" + checksum: 10c0/9faec009b8b403efbc407f45306d07de5cc58e09df5b00bdd55b01384cd18b0fd29a97aef6915428ba3b5abb0a5c132c3507468c0c3c101e8d737c1337386786 + languageName: node + linkType: hard + +"nice-try@npm:^1.0.4": + version: 1.0.5 + resolution: "nice-try@npm:1.0.5" + checksum: 10c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f + languageName: node + linkType: hard + +"node-emoji@npm:^1.11.0": + version: 1.11.0 + resolution: "node-emoji@npm:1.11.0" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-gyp@npm:^9.0.0, node-gyp@npm:^9.1.0": + version: 9.4.1 + resolution: "node-gyp@npm:9.4.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/f7d676cfa79f27d35edf17fe9c80064123670362352d19729e5dc9393d7e99f1397491c3107eddc0c0e8941442a6244a7ba6c860cfbe4b433b4cae248a55fe10 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: "npm:^1.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 + languageName: node + linkType: hard + +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" + dependencies: + abbrev: "npm:^3.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef + languageName: node + linkType: hard + +"normalize-package-data@npm:^2.5.0": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: "npm:^2.1.4" + resolve: "npm:^1.10.0" + semver: "npm:2 || 3 || 4 || 5" + validate-npm-package-license: "npm:^3.0.1" + checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 + languageName: node + linkType: hard + +"normalize-package-data@npm:^3.0.0, normalize-package-data@npm:^3.0.2": + version: 3.0.3 + resolution: "normalize-package-data@npm:3.0.3" + dependencies: + hosted-git-info: "npm:^4.0.1" + is-core-module: "npm:^2.5.0" + semver: "npm:^7.3.4" + validate-npm-package-license: "npm:^3.0.1" + checksum: 10c0/e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be + languageName: node + linkType: hard + +"normalize-package-data@npm:^4.0.0": + version: 4.0.1 + resolution: "normalize-package-data@npm:4.0.1" + dependencies: + hosted-git-info: "npm:^5.0.0" + is-core-module: "npm:^2.8.1" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c0/3a6ace810d1bd2fd23b98fa53790a28bbfade5380eea0f2e0cc5cbc24987db43a4780846942edee7069fa9574bf050a9ed8d35faf9079e5e4d9a737d07a136dd + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"normalize-url@npm:^6.0.0, normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 10c0/95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 + languageName: node + linkType: hard + +"normalize-url@npm:^8.0.0": + version: 8.0.1 + resolution: "normalize-url@npm:8.0.1" + checksum: 10c0/eb439231c4b84430f187530e6fdac605c5048ef4ec556447a10c00a91fc69b52d8d8298d9d608e68d3e0f7dc2d812d3455edf425e0f215993667c3183bcab1ef + languageName: node + linkType: hard + +"np@npm:^8.0.4": + version: 8.0.4 + resolution: "np@npm:8.0.4" + dependencies: + chalk: "npm:^5.2.0" + cosmiconfig: "npm:^8.1.3" + del: "npm:^7.0.0" + escape-goat: "npm:^4.0.0" + escape-string-regexp: "npm:^5.0.0" + execa: "npm:^7.1.1" + exit-hook: "npm:^3.2.0" + github-url-from-git: "npm:^1.5.0" + has-yarn: "npm:^3.0.0" + hosted-git-info: "npm:^6.1.1" + ignore-walk: "npm:^6.0.3" + import-local: "npm:^3.1.0" + inquirer: "npm:^9.2.6" + is-installed-globally: "npm:^0.4.0" + is-interactive: "npm:^2.0.0" + is-scoped: "npm:^3.0.0" + issue-regex: "npm:^4.1.0" + listr: "npm:^0.14.3" + listr-input: "npm:^0.2.1" + log-symbols: "npm:^5.1.0" + meow: "npm:^12.0.1" + new-github-release-url: "npm:^2.0.0" + npm-name: "npm:^7.1.0" + onetime: "npm:^6.0.0" + open: "npm:^9.1.0" + ow: "npm:^1.1.1" + p-memoize: "npm:^7.1.1" + p-timeout: "npm:^6.1.1" + path-exists: "npm:^5.0.0" + pkg-dir: "npm:^7.0.0" + read-pkg-up: "npm:^9.1.0" + rxjs: "npm:^7.8.1" + semver: "npm:^7.5.1" + symbol-observable: "npm:^4.0.0" + terminal-link: "npm:^3.0.0" + update-notifier: "npm:^6.0.2" + bin: + np: source/cli.js + checksum: 10c0/a0c55b931177f68d7735e3c679f91519fb46cca211f8c217160d2efc999925f20917ae149235c9124f12be7fda44526411880850625ba1dc7853aa5c9a7bceb5 + languageName: node + linkType: hard + +"npm-audit-report@npm:^3.0.0": + version: 3.0.0 + resolution: "npm-audit-report@npm:3.0.0" + dependencies: + chalk: "npm:^4.0.0" + checksum: 10c0/a8ce2ce80cc11334d58fef28f0b8eef1626f134942d27212dbac8c2dfbfe10373d2978101ceb2b472b8199170bb1c6986f32d33d9879f05d28a32ec56d743915 + languageName: node + linkType: hard + +"npm-bundled@npm:^1.1.1": + version: 1.1.2 + resolution: "npm-bundled@npm:1.1.2" + dependencies: + npm-normalize-package-bin: "npm:^1.0.1" + checksum: 10c0/3f2337789afc8cb608a0dd71cefe459531053d48a5497db14b07b985c4cab15afcae88600db9f92eae072c89b982eeeec8e4463e1d77bc03a7e90f5dacf29769 + languageName: node + linkType: hard + +"npm-bundled@npm:^2.0.0": + version: 2.0.1 + resolution: "npm-bundled@npm:2.0.1" + dependencies: + npm-normalize-package-bin: "npm:^2.0.0" + checksum: 10c0/5b2dc1de455d38200e49c6205dee185ce919ea6b608672c693bec8907116bc5686dabcc150347630d351c1c533315fd60a1910ce00bdad6bb204cef016b90b7d + languageName: node + linkType: hard + +"npm-install-checks@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-install-checks@npm:5.0.0" + dependencies: + semver: "npm:^7.1.1" + checksum: 10c0/eb108e1c1ac38c76f9a658ab2b4871836246e262836c05d42a23049e0399e6c8cdcf65a1e50193b64807a3b2b86f8e158d0161db98e846d7e9617bc5f49337af + languageName: node + linkType: hard + +"npm-name@npm:^7.1.0": + version: 7.1.1 + resolution: "npm-name@npm:7.1.1" + dependencies: + got: "npm:^11.8.5" + is-name-taken: "npm:^2.0.0" + is-scoped: "npm:^3.0.0" + is-url-superb: "npm:^6.1.0" + lodash.zip: "npm:^4.2.0" + org-regex: "npm:^1.0.0" + p-map: "npm:^5.5.0" + registry-auth-token: "npm:^4.2.2" + registry-url: "npm:^6.0.1" + validate-npm-package-name: "npm:^3.0.0" + checksum: 10c0/601b9a3704461b0f263f3e1d9aa69958930709b99fce21c2b75259a116e3b7ad9d42f9fe2dd32236fa8de7e92a3a5089598311b1dee9a5849db663da0678f873 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^1.0.1": + version: 1.0.1 + resolution: "npm-normalize-package-bin@npm:1.0.1" + checksum: 10c0/b0c8c05fe419a122e0ff970ccbe7874ae24b4b4b08941a24d18097fe6e1f4b93e3f6abfb5512f9c5488827a5592f2fb3ce2431c41d338802aed24b9a0c160551 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^2.0.0": + version: 2.0.0 + resolution: "npm-normalize-package-bin@npm:2.0.0" + checksum: 10c0/9b5283a2e423124c60fbc14244d36686b59e517d29156eacf9df8d3dc5d5bf4d9444b7669c607567ed2e089bbdbef5a2b3678cbf567284eeff3612da6939514b + languageName: node + linkType: hard + +"npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1, npm-package-arg@npm:^9.1.0": + version: 9.1.2 + resolution: "npm-package-arg@npm:9.1.2" + dependencies: + hosted-git-info: "npm:^5.0.0" + proc-log: "npm:^2.0.1" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^4.0.0" + checksum: 10c0/e81aa931adfc5f19fb9f10fe9eb120a0203d63b879594b1a473c64257761cdde42e32fb5d9b2e90d6944a3229e8c3ffa62ce8c31a7c9c4971d34f9219fdc0bb5 + languageName: node + linkType: hard + +"npm-packlist@npm:^5.1.0": + version: 5.1.3 + resolution: "npm-packlist@npm:5.1.3" + dependencies: + glob: "npm:^8.0.1" + ignore-walk: "npm:^5.0.1" + npm-bundled: "npm:^2.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + bin: + npm-packlist: bin/index.js + checksum: 10c0/a8bea97661b2a7132bc8832d5560da24f823ee5324429bd16eb82b7873557de14641bc3fed8a7611b0d88b9771e59e99e01a9e551a53adb164327ded6128aada + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^7.0.0, npm-pick-manifest@npm:^7.0.2": + version: 7.0.2 + resolution: "npm-pick-manifest@npm:7.0.2" + dependencies: + npm-install-checks: "npm:^5.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + npm-package-arg: "npm:^9.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/522ba83a9ec92405b720a135b4333bc237063994f1244ff8125fd906979feedff3775472caa87779a260294ff4d2cd949c6f679ab353b2d81bca76c466539b67 + languageName: node + linkType: hard + +"npm-profile@npm:^6.2.0": + version: 6.2.1 + resolution: "npm-profile@npm:6.2.1" + dependencies: + npm-registry-fetch: "npm:^13.0.1" + proc-log: "npm:^2.0.0" + checksum: 10c0/1397ce26905a4ca1a2ea4080acbceeddc93fcac753295b8cc7738e38b8e0018d59219c6cb7c5a059d870b3e94bd6bac6aea628dd971dbe47e0ec2d82f7e0a031 + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1, npm-registry-fetch@npm:^13.3.1": + version: 13.3.1 + resolution: "npm-registry-fetch@npm:13.3.1" + dependencies: + make-fetch-happen: "npm:^10.0.6" + minipass: "npm:^3.1.6" + minipass-fetch: "npm:^2.0.3" + minipass-json-stream: "npm:^1.0.1" + minizlib: "npm:^2.1.2" + npm-package-arg: "npm:^9.0.1" + proc-log: "npm:^2.0.0" + checksum: 10c0/86c8cdc2b0d2aa97d06031962f39442b0eacecd9989eebc88451e6b53b3c8572b89fb09cf0042ce6080e7d120353af359a75c5f60b085b5b455337d1e39e57ab + languageName: node + linkType: hard + +"npm-run-path@npm:^2.0.0": + version: 2.0.2 + resolution: "npm-run-path@npm:2.0.2" + dependencies: + path-key: "npm:^2.0.0" + checksum: 10c0/95549a477886f48346568c97b08c4fda9cdbf7ce8a4fbc2213f36896d0d19249e32d68d7451bdcbca8041b5fba04a6b2c4a618beaf19849505c05b700740f1de + languageName: node + linkType: hard + +"npm-run-path@npm:^3.0.0": + version: 3.1.0 + resolution: "npm-run-path@npm:3.1.0" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/8399f01239e9a5bf5a10bddbc71ecac97e0b7890e5b78abe9731fc759db48865b0686cc86ec079cd254a98ba119a3fa08f1b23f9de1a5428c19007bbc7b5a728 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"npm-user-validate@npm:^1.0.1": + version: 1.0.1 + resolution: "npm-user-validate@npm:1.0.1" + checksum: 10c0/b6533da7df07c4495e8e209eba7191846683443503897e10e0acfb52fedefde34028f221b7ee5ae45b79ada13748a8e881a20392cd0fb93d190b1bf54ef1ee42 + languageName: node + linkType: hard + +"npm@npm:^8.3.0": + version: 8.19.4 + resolution: "npm@npm:8.19.4" + dependencies: + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/arborist": "npm:^5.6.3" + "@npmcli/ci-detect": "npm:^2.0.0" + "@npmcli/config": "npm:^4.2.1" + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/map-workspaces": "npm:^2.0.3" + "@npmcli/package-json": "npm:^2.0.0" + "@npmcli/run-script": "npm:^4.2.1" + abbrev: "npm:~1.1.1" + archy: "npm:~1.0.0" + cacache: "npm:^16.1.3" + chalk: "npm:^4.1.2" + chownr: "npm:^2.0.0" + cli-columns: "npm:^4.0.0" + cli-table3: "npm:^0.6.2" + columnify: "npm:^1.6.0" + fastest-levenshtein: "npm:^1.0.12" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + graceful-fs: "npm:^4.2.10" + hosted-git-info: "npm:^5.2.1" + ini: "npm:^3.0.1" + init-package-json: "npm:^3.0.2" + is-cidr: "npm:^4.0.2" + json-parse-even-better-errors: "npm:^2.3.1" + libnpmaccess: "npm:^6.0.4" + libnpmdiff: "npm:^4.0.5" + libnpmexec: "npm:^4.0.14" + libnpmfund: "npm:^3.0.5" + libnpmhook: "npm:^8.0.4" + libnpmorg: "npm:^4.0.4" + libnpmpack: "npm:^4.1.3" + libnpmpublish: "npm:^6.0.5" + libnpmsearch: "npm:^5.0.4" + libnpmteam: "npm:^4.0.4" + libnpmversion: "npm:^3.0.7" + make-fetch-happen: "npm:^10.2.0" + minimatch: "npm:^5.1.0" + minipass: "npm:^3.1.6" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + mkdirp-infer-owner: "npm:^2.0.0" + ms: "npm:^2.1.2" + node-gyp: "npm:^9.1.0" + nopt: "npm:^6.0.0" + npm-audit-report: "npm:^3.0.0" + npm-install-checks: "npm:^5.0.0" + npm-package-arg: "npm:^9.1.0" + npm-pick-manifest: "npm:^7.0.2" + npm-profile: "npm:^6.2.0" + npm-registry-fetch: "npm:^13.3.1" + npm-user-validate: "npm:^1.0.1" + npmlog: "npm:^6.0.2" + opener: "npm:^1.5.2" + p-map: "npm:^4.0.0" + pacote: "npm:^13.6.2" + parse-conflict-json: "npm:^2.0.2" + proc-log: "npm:^2.0.1" + qrcode-terminal: "npm:^0.12.0" + read: "npm:~1.0.7" + read-package-json: "npm:^5.0.2" + read-package-json-fast: "npm:^2.0.3" + readdir-scoped-modules: "npm:^1.1.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.1" + tar: "npm:^6.1.11" + text-table: "npm:~0.2.0" + tiny-relative-date: "npm:^1.3.0" + treeverse: "npm:^2.0.0" + validate-npm-package-name: "npm:^4.0.0" + which: "npm:^2.0.2" + write-file-atomic: "npm:^4.0.1" + bin: + npm: bin/npm-cli.js + npx: bin/npx-cli.js + checksum: 10c0/a27e0d108f6281b66fcad8daf6501dac62791285b974eba283275e65be1ababa8222b4e33fd95fddbd7236481e694141018f6715dac4831bcae3a54add092080 + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 + languageName: node + linkType: hard + +"number-is-nan@npm:^1.0.0": + version: 1.0.1 + resolution: "number-is-nan@npm:1.0.1" + checksum: 10c0/cb97149006acc5cd512c13c1838223abdf202e76ddfa059c5e8e7507aff2c3a78cd19057516885a2f6f5b576543dc4f7b6f3c997cc7df53ae26c260855466df5 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.12": + version: 2.2.20 + resolution: "nwsapi@npm:2.2.20" + checksum: 10c0/07f4dafa3186aef7c007863e90acd4342a34ba9d44b22f14f644fdb311f6086887e21c2fc15efaa826c2bc39ab2bc841364a1a630e7c87e0cb723ba59d729297 + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.12.2, object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"object.entries@npm:^1.1.9": + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.1.1" + checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^2.0.0": + version: 2.0.1 + resolution: "onetime@npm:2.0.1" + dependencies: + mimic-fn: "npm:^1.0.0" + checksum: 10c0/b4e44a8c34e70e02251bfb578a6e26d6de6eedbed106cd78211d2fd64d28b6281d54924696554e4e966559644243753ac5df73c87f283b0927533d3315696215 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"open@npm:^7.4.2": + version: 7.4.2 + resolution: "open@npm:7.4.2" + dependencies: + is-docker: "npm:^2.0.0" + is-wsl: "npm:^2.1.1" + checksum: 10c0/77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f + languageName: node + linkType: hard + +"open@npm:^8.0.4": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" + dependencies: + default-browser: "npm:^4.0.0" + define-lazy-prop: "npm:^3.0.0" + is-inside-container: "npm:^1.0.0" + is-wsl: "npm:^2.2.0" + checksum: 10c0/8073ec0dd8994a7a7d9bac208bd17d093993a65ce10f2eb9b62b6d3a91c9366ae903938a237c275493c130171d339f6dcbdd2a2de7e32953452c0867b97825af + languageName: node + linkType: hard + +"opencollective-postinstall@npm:^2.0.2": + version: 2.0.3 + resolution: "opencollective-postinstall@npm:2.0.3" + bin: + opencollective-postinstall: index.js + checksum: 10c0/8a0104a218bc1afaae943f0af378461eeb2836f9848bad872bbd067ec5d1d9791636f307454ab77d0746f10341366f295384656a340ebdb87a2585058e8567e5 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"org-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "org-regex@npm:1.0.0" + checksum: 10c0/70cd09689fc4a977fd80bc103eac5da8fb5a20899e9c2bf0f05595caf14d56e246477c3ca12aea14b1ac6766ce89efb9b11e6e13a0135722f473b5ce1533ad8c + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"outvariant@npm:^1.4.0, outvariant@npm:^1.4.3": + version: 1.4.3 + resolution: "outvariant@npm:1.4.3" + checksum: 10c0/5976ca7740349cb8c71bd3382e2a762b1aeca6f33dc984d9d896acdf3c61f78c3afcf1bfe9cc633a7b3c4b295ec94d292048f83ea2b2594fae4496656eba992c + languageName: node + linkType: hard + +"ow@npm:^1.1.1": + version: 1.1.1 + resolution: "ow@npm:1.1.1" + dependencies: + "@sindresorhus/is": "npm:^5.3.0" + callsites: "npm:^4.0.0" + dot-prop: "npm:^7.2.0" + lodash.isequal: "npm:^4.5.0" + vali-date: "npm:^1.0.0" + checksum: 10c0/3973f9d6245f2e468a0f1d614ece96f1289632f7425094e8b266b50ddbe79471f2e6cba447b80e90b54bbeb13c20e83671edfb5ef4c0b13c15546ba0710554e1 + languageName: node + linkType: hard + +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 10c0/8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01 + languageName: node + linkType: hard + +"p-cancelable@npm:^3.0.0": + version: 3.0.0 + resolution: "p-cancelable@npm:3.0.0" + checksum: 10c0/948fd4f8e87b956d9afc2c6c7392de9113dac817cb1cecf4143f7a3d4c57ab5673614a80be3aba91ceec5e4b69fd8c869852d7e8048bc3d9273c4c36ce14b9aa + languageName: node + linkType: hard + +"p-each-series@npm:^2.1.0": + version: 2.2.0 + resolution: "p-each-series@npm:2.2.0" + checksum: 10c0/32a7cce1312bf70f99079db2ff070fc3ee2ed6efe0fa0444616fa38f79730ad09b461d009127d25254c4c865c40b6664e2c656b1a7b2c4781756d9173c974269 + languageName: node + linkType: hard + +"p-filter@npm:^2.0.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: "npm:^2.0.0" + checksum: 10c0/5ac34b74b3b691c04212d5dd2319ed484f591c557a850a3ffc93a08cb38c4f5540be059c6b10a185773c479ca583a91ea00c7d6c9958c815e6b74d052f356645 + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 + languageName: node + linkType: hard + +"p-finally@npm:^2.0.0": + version: 2.0.1 + resolution: "p-finally@npm:2.0.1" + checksum: 10c0/a4ee34179f5e0eb5417462ca5afbca4b6b537b051ea87c8ec7649ffb2b60a8e82a06441792fe496ab0d0156c4060a3dfd707973915a1b8369b00f2531e3eab94 + languageName: node + linkType: hard + +"p-is-promise@npm:^3.0.0": + version: 3.0.0 + resolution: "p-is-promise@npm:3.0.0" + checksum: 10c0/17a52c7a59a31a435a4721a7110faeccb7cc9179cf9cd00016b7a9a7156e2c2ed9d8e2efc0142acab74d5064fbb443eaeaf67517cf3668f2a7c93a7effad5bb9 + languageName: node + linkType: hard + +"p-limit@npm:^1.1.0": + version: 1.3.0 + resolution: "p-limit@npm:1.3.0" + dependencies: + p-try: "npm:^1.0.0" + checksum: 10c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-limit@npm:^5.0.0": + version: 5.0.0 + resolution: "p-limit@npm:5.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/574e93b8895a26e8485eb1df7c4b58a1a6e8d8ae41b1750cc2cc440922b3d306044fc6e9a7f74578a883d46802d9db72b30f2e612690fcef838c173261b1ed83 + languageName: node + linkType: hard + +"p-locate@npm:^2.0.0": + version: 2.0.0 + resolution: "p-locate@npm:2.0.0" + dependencies: + p-limit: "npm:^1.1.0" + checksum: 10c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + +"p-lock@npm:^2.0.0": + version: 2.1.0 + resolution: "p-lock@npm:2.1.0" + checksum: 10c0/d976667b3b0325c6992b7c83956061adfd56d9e14c5dd352380bffe8b94cc9a91a8a39d1644dcd77e058d3938630767bf2e42e32135e38588ea980580479cda6 + languageName: node + linkType: hard + +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 10c0/735dae87badd4737a2dd582b6d8f93e49a1b79eabbc9815a4d63a528d5e3523e978e127a21d784cccb637010e32103a40d2aaa3ab23ae60250b1a820ca752043 + languageName: node + linkType: hard + +"p-map@npm:^3.0.0": + version: 3.0.0 + resolution: "p-map@npm:3.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/297930737e52412ad9f5787c52774ad6496fad9a8be5f047e75fd0a3dc61930d8f7a9b2bbe1c4d1404e54324228a4f69721da2538208dadaa4ef4c81773c9f20 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-map@npm:^5.5.0": + version: 5.5.0 + resolution: "p-map@npm:5.5.0" + dependencies: + aggregate-error: "npm:^4.0.0" + checksum: 10c0/410bce846b1e3db6bb2ccab6248372ecf4e635fc2b31331c8f56478e73fec9e146e8b4547585e635703160a3d252a6a65b8f855834aebc2c3408eb5789630cc4 + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + +"p-memoize@npm:^7.1.1": + version: 7.1.1 + resolution: "p-memoize@npm:7.1.1" + dependencies: + mimic-fn: "npm:^4.0.0" + type-fest: "npm:^3.0.0" + checksum: 10c0/6adbdf0ac0e53d80ac3a2ff01fb39ae2053976295d15e3e614ff9e981eca9d4f8c28cf54e857c791cee48abd5c37849e9eca7deab18be1e4f064d5753e3d87b8 + languageName: node + linkType: hard + +"p-reduce@npm:^2.0.0": + version: 2.1.0 + resolution: "p-reduce@npm:2.1.0" + checksum: 10c0/27b8ff0fb044995507a06cd6357dffba0f2b98862864745972562a21885d7906ce5c794036d2aaa63ef6303158e41e19aed9f19651dfdafb38548ecec7d0de15 + languageName: node + linkType: hard + +"p-timeout@npm:^6.1.1": + version: 6.1.4 + resolution: "p-timeout@npm:6.1.4" + checksum: 10c0/019edad1c649ab07552aa456e40ce7575c4b8ae863191477f02ac8d283ac8c66cedef0ca93422735130477a051dfe952ba717641673fd3599befdd13f63bcc33 + languageName: node + linkType: hard + +"p-try@npm:^1.0.0": + version: 1.0.0 + resolution: "p-try@npm:1.0.0" + checksum: 10c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"package-json@npm:^8.1.0": + version: 8.1.1 + resolution: "package-json@npm:8.1.1" + dependencies: + got: "npm:^12.1.0" + registry-auth-token: "npm:^5.0.1" + registry-url: "npm:^6.0.0" + semver: "npm:^7.3.7" + checksum: 10c0/83b057878bca229033aefad4ef51569b484e63a65831ddf164dc31f0486817e17ffcb58c819c7af3ef3396042297096b3ffc04e107fd66f8f48756f6d2071c8f + languageName: node + linkType: hard + +"package-name-conflict@npm:^1.0.3": + version: 1.0.3 + resolution: "package-name-conflict@npm:1.0.3" + checksum: 10c0/d69e64e8db2829f5720b533ebba20d41c91ac21b1434525f139e9bf4fff9dcd644d02a78c0caf7d8d262328c461c1e91a81cd3712ca834272ef92b5cc59ca54f + languageName: node + linkType: hard + +"pacote@npm:^13.0.3, pacote@npm:^13.6.1, pacote@npm:^13.6.2": + version: 13.6.2 + resolution: "pacote@npm:13.6.2" + dependencies: + "@npmcli/git": "npm:^3.0.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + "@npmcli/promise-spawn": "npm:^3.0.0" + "@npmcli/run-script": "npm:^4.1.0" + cacache: "npm:^16.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + infer-owner: "npm:^1.0.4" + minipass: "npm:^3.1.6" + mkdirp: "npm:^1.0.4" + npm-package-arg: "npm:^9.0.0" + npm-packlist: "npm:^5.1.0" + npm-pick-manifest: "npm:^7.0.0" + npm-registry-fetch: "npm:^13.0.1" + proc-log: "npm:^2.0.0" + promise-retry: "npm:^2.0.1" + read-package-json: "npm:^5.0.0" + read-package-json-fast: "npm:^2.0.3" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + bin: + pacote: lib/bin.js + checksum: 10c0/134d4ae5c3ab4a1745ee24de228796d7222320813d67d26016f6607319d6135d1b4fa2f4200d6d964be89749525b0daff893338237ac6284bb9b4a7a36770696 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-conflict-json@npm:^2.0.1, parse-conflict-json@npm:^2.0.2": + version: 2.0.2 + resolution: "parse-conflict-json@npm:2.0.2" + dependencies: + json-parse-even-better-errors: "npm:^2.3.1" + just-diff: "npm:^5.0.1" + just-diff-apply: "npm:^5.2.0" + checksum: 10c0/7a6a116017cd2629d95eda0325d5928d950c69df412f2c14ca02c9581a606f258404a16a3b9a67a3294ca9e6e12571e65be4f80d3879b53c5b842fbae0495fd4 + languageName: node + linkType: hard + +"parse-json-object@npm:^1.0.5": + version: 1.1.0 + resolution: "parse-json-object@npm:1.1.0" + dependencies: + types-json: "npm:^1.0.6" + checksum: 10c0/76261b99d601de5290872210bd5f6f3616a09259de77853c8669de1822cadaadd4c48b631c6728e9eb14e2c6b9cff8704483e22bd895f8555a25e9b300861c31 + languageName: node + linkType: hard + +"parse-json-object@npm:^2.0.1": + version: 2.0.1 + resolution: "parse-json-object@npm:2.0.1" + dependencies: + types-json: "npm:^1.2.0" + checksum: 10c0/349b92cc27e3e9dcd788c287a3b8729898acbc5bdde71b2419f6375b5d1c4a756fb7d0ae17fae5cda15cb1e60693a7557a1ceb706fbc64118e0c2acf56b13f0e + languageName: node + linkType: hard + +"parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-json@npm:4.0.0" + dependencies: + error-ex: "npm:^1.3.1" + json-parse-better-errors: "npm:^1.0.1" + checksum: 10c0/8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parse5@npm:^7.1.2": + version: 7.2.1 + resolution: "parse5@npm:7.2.1" + dependencies: + entities: "npm:^4.5.0" + checksum: 10c0/829d37a0c709215a887e410a7118d754f8e1afd7edb529db95bc7bbf8045fb0266a7b67801331d8e8d9d073ea75793624ec27ce9ff3b96862c3b9008f4d68e80 + languageName: node + linkType: hard + +"patch-package@npm:^8.0.0": + version: 8.0.0 + resolution: "patch-package@npm:8.0.0" + dependencies: + "@yarnpkg/lockfile": "npm:^1.1.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^3.7.0" + cross-spawn: "npm:^7.0.3" + find-yarn-workspace-root: "npm:^2.0.0" + fs-extra: "npm:^9.0.0" + json-stable-stringify: "npm:^1.0.2" + klaw-sync: "npm:^6.0.0" + minimist: "npm:^1.2.6" + open: "npm:^7.4.2" + rimraf: "npm:^2.6.3" + semver: "npm:^7.5.3" + slash: "npm:^2.0.0" + tmp: "npm:^0.0.33" + yaml: "npm:^2.2.2" + bin: + patch-package: index.js + checksum: 10c0/690eab0537e953a3fd7d32bb23f0e82f97cd448f8244c3227ed55933611a126f9476397325c06ad2c11d881a19b427a02bd1881bee78d89f1731373fc4fe0fee + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^2.0.0, path-key@npm:^2.0.1": + version: 2.0.1 + resolution: "path-key@npm:2.0.1" + checksum: 10c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-to-regexp@npm:^6.3.0": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathe@npm:^1.1.1": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + languageName: node + linkType: hard + +"pathe@npm:^2.0.1": + version: 2.0.3 + resolution: "pathe@npm:2.0.3" + checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc + languageName: node + linkType: hard + +"pidtree@npm:^0.6.0": + version: 0.6.0 + resolution: "pidtree@npm:0.6.0" + bin: + pidtree: bin/pidtree.js + checksum: 10c0/0829ec4e9209e230f74ebf4265f5ccc9ebfb488334b525cb13f86ff801dca44b362c41252cd43ae4d7653a10a5c6ab3be39d2c79064d6895e0d78dc50a5ed6e9 + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pkg-conf@npm:^2.1.0": + version: 2.1.0 + resolution: "pkg-conf@npm:2.1.0" + dependencies: + find-up: "npm:^2.0.0" + load-json-file: "npm:^4.0.0" + checksum: 10c0/e1474a4f7714ee78204b4a7f2316dec9e59887762bdc126ebd0eb701bbde7c6a6da65c4dc9c2a7c1eaeee49914009bf4a4368f5d9894c596ddf812ff982fdb05 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: "npm:^6.3.0" + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + +"pkg-types@npm:^1.2.1, pkg-types@npm:^1.3.0": + version: 1.3.1 + resolution: "pkg-types@npm:1.3.1" + dependencies: + confbox: "npm:^0.1.8" + mlly: "npm:^1.7.4" + pathe: "npm:^2.0.1" + checksum: 10c0/19e6cb8b66dcc66c89f2344aecfa47f2431c988cfa3366bdfdcfb1dd6695f87dcce37fbd90fe9d1605e2f4440b77f391e83c23255347c35cf84e7fd774d7fcea + languageName: node + linkType: hard + +"please-upgrade-node@npm:^3.1.1, please-upgrade-node@npm:^3.2.0": + version: 3.2.0 + resolution: "please-upgrade-node@npm:3.2.0" + dependencies: + semver-compare: "npm:^1.0.0" + checksum: 10c0/222514d2841022be4b843f38d415beadcc6409c0545d6d153778d71c601bba7bbf1cd5827d650c7fae6a9a2ba7cf00f4b6729b40d015a3a5ba2937e57bc1c435 + languageName: node + linkType: hard + +"polished@npm:^4.2.2": + version: 4.3.1 + resolution: "polished@npm:4.3.1" + dependencies: + "@babel/runtime": "npm:^7.17.8" + checksum: 10c0/45480d4c7281a134281cef092f6ecc202a868475ff66a390fee6e9261386e16f3047b4de46a2f2e1cf7fb7aa8f52d30b4ed631a1e3bcd6f303ca31161d4f07fe + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.10": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e + languageName: node + linkType: hard + +"postcss@npm:^8.4.43": + version: 8.5.3 + resolution: "postcss@npm:8.5.3" + dependencies: + nanoid: "npm:^3.3.8" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/b75510d7b28c3ab728c8733dd01538314a18c52af426f199a3c9177e63eb08602a3938bfb66b62dc01350b9aed62087eabbf229af97a1659eb8d3513cec823b3 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier@npm:^3.3.3, prettier@npm:^3.5.3": + version: 3.5.3 + resolution: "prettier@npm:3.5.3" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877 + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.0, pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"proc-log@npm:^2.0.0, proc-log@npm:^2.0.1": + version: 2.0.1 + resolution: "proc-log@npm:2.0.1" + checksum: 10c0/701c501429775ce34cec28ef6a1c976537274b42917212fb8a5975ebcecb0a85612907fd7f99ff28ff4c2112bb84a0f4322fc9b9e1e52a8562fcbb1d5b3ce608 + languageName: node + linkType: hard + +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"progress@npm:^2.0.3": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: 10c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c + languageName: node + linkType: hard + +"promise-all-reject-late@npm:^1.0.0": + version: 1.0.1 + resolution: "promise-all-reject-late@npm:1.0.1" + checksum: 10c0/f1af0c7b0067e84d64751148ee5bb6c3e84f4a4d1316d6fe56261e1d2637cf71b49894bcbd2c6daf7d45afb1bc99efc3749be277c3e0518b70d0c5a29d037011 + languageName: node + linkType: hard + +"promise-call-limit@npm:^1.0.1": + version: 1.0.2 + resolution: "promise-call-limit@npm:1.0.2" + checksum: 10c0/500aed321d7b9212da403db369551d7190c96c8937c3b2d15c6097d1037b17fb802c7decfbc8ba6bb937f1cc1ea291e5eba10ed9ea76adc0f398ab9f7d174a58 + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promzard@npm:^0.3.0": + version: 0.3.0 + resolution: "promzard@npm:0.3.0" + dependencies: + read: "npm:1" + checksum: 10c0/7fd8dbcd9764b35092da65867cc60fdcf2ea85d77e8ed1ae348ec0af1a22616f74053ccf8dad7d8de01e1e3aafe349d77ef56653c2db3791589ac2a8ef485149 + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.15.0 + resolution: "psl@npm:1.15.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.2 + resolution: "pump@npm:3.0.2" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pupa@npm:^3.1.0": + version: 3.1.0 + resolution: "pupa@npm:3.1.0" + dependencies: + escape-goat: "npm:^4.0.0" + checksum: 10c0/02afa6e4547a733484206aaa8f8eb3fbfb12d3dd17d7ca4fa1ea390a7da2cb8f381e38868bbf68009c4d372f8f6059f553171b6a712d8f2802c7cd43d513f06c + languageName: node + linkType: hard + +"q@npm:^1.5.1": + version: 1.5.1 + resolution: "q@npm:1.5.1" + checksum: 10c0/7855fbdba126cb7e92ef3a16b47ba998c0786ec7fface236e3eb0135b65df36429d91a86b1fff3ab0927b4ac4ee88a2c44527c7c3b8e2a37efbec9fe34803df4 + languageName: node + linkType: hard + +"qrcode-terminal@npm:^0.12.0": + version: 0.12.0 + resolution: "qrcode-terminal@npm:0.12.0" + bin: + qrcode-terminal: ./bin/qrcode-terminal.js + checksum: 10c0/1d8996a743d6c95e22056bd45fe958c306213adc97d7ef8cf1e03bc1aeeb6f27180a747ec3d761141921351eb1e3ca688f7b673ab54cdae9fa358dffaa49563c + languageName: node + linkType: hard + +"query-string@npm:^6.9.0": + version: 6.14.1 + resolution: "query-string@npm:6.14.1" + dependencies: + decode-uri-component: "npm:^0.2.0" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/900e0fa788000e9dc5f929b6f4141742dcf281f02d3bab9714bc83bea65fab3de75169ea8d61f19cda996bc0dcec72e156efe3c5614c6bce65dcf234ac955b14 + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quick-lru@npm:^4.0.1": + version: 4.0.1 + resolution: "quick-lru@npm:4.0.1" + checksum: 10c0/f9b1596fa7595a35c2f9d913ac312fede13d37dc8a747a51557ab36e11ce113bbe88ef4c0154968845559a7709cb6a7e7cbe75f7972182451cd45e7f057a334d + languageName: node + linkType: hard + +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da + languageName: node + linkType: hard + +"rc@npm:1.2.8, rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"react-chartjs-2@npm:^5.2.0": + version: 5.3.0 + resolution: "react-chartjs-2@npm:5.3.0" + peerDependencies: + chart.js: ^4.1.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/4415d40217c084a49f9a936fbd30f67e0e705148e6f8359bec65601033d1076f31085c45793839fc29ec833e6c427b0bf9861a0c54c432c08d35bc9590ffa41a + languageName: node + linkType: hard + +"react-docgen-typescript@npm:^2.2.2": + version: 2.2.2 + resolution: "react-docgen-typescript@npm:2.2.2" + peerDependencies: + typescript: ">= 4.3.x" + checksum: 10c0/d31a061a21b5d4b67d4af7bc742541fd9e16254bd32861cd29c52565bc2175f40421a3550d52b6a6b0d0478e7cc408558eb0060a0bdd2957b02cfceeb0ee1e88 + languageName: node + linkType: hard + +"react-docgen@npm:^7.0.0": + version: 7.1.1 + resolution: "react-docgen@npm:7.1.1" + dependencies: + "@babel/core": "npm:^7.18.9" + "@babel/traverse": "npm:^7.18.9" + "@babel/types": "npm:^7.18.9" + "@types/babel__core": "npm:^7.18.0" + "@types/babel__traverse": "npm:^7.18.0" + "@types/doctrine": "npm:^0.0.9" + "@types/resolve": "npm:^1.20.2" + doctrine: "npm:^3.0.0" + resolve: "npm:^1.22.1" + strip-indent: "npm:^4.0.0" + checksum: 10c0/961e69487f6acbd9110afbda31f5a0c7fa7ab8b1ebe09fc0138c17efd297fa0b69518df873e937cac108732cd8125433bf939115d23ff99c1c171844140705a7 + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": + version: 19.1.0 + resolution: "react-dom@npm:19.1.0" + dependencies: + scheduler: "npm:^0.26.0" + peerDependencies: + react: ^19.1.0 + checksum: 10c0/3e26e89bb6c67c9a6aa86cb888c7a7f8258f2e347a6d2a15299c17eb16e04c19194e3452bc3255bd34000a61e45e2cb51e46292392340432f133e5a5d2dfb5fc + languageName: node + linkType: hard + +"react-dom@npm:^18.2.0": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.2" + peerDependencies: + react: ^18.3.1 + checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + languageName: node + linkType: hard + +"react-error-boundary@npm:^4.0.12": + version: 4.1.2 + resolution: "react-error-boundary@npm:4.1.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + peerDependencies: + react: ">=16.13.1" + checksum: 10c0/0737e5259bed40ce14eb0823b3c7b152171921f2179e604f48f3913490cdc594d6c22d43d7abb4ffb1512c832850228db07aa69d3b941db324953a5e393cb399 + languageName: node + linkType: hard + +"react-fast-compare@npm:^3.2.2": + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 + languageName: node + linkType: hard + +"react-helmet-async@npm:^2.0.4": + version: 2.0.5 + resolution: "react-helmet-async@npm:2.0.5" + dependencies: + invariant: "npm:^2.2.4" + react-fast-compare: "npm:^3.2.2" + shallowequal: "npm:^1.1.0" + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/f390ea8bf13c2681850e5f8eb5b73d8613f407c245a5fd23e9db9b2cc14a3700dd1ce992d3966632886d1d613083294c2aeee009193f49dfa7d145d9f13ea2b0 + languageName: node + linkType: hard + +"react-icons@npm:^5.0.1": + version: 5.5.0 + resolution: "react-icons@npm:5.5.0" + peerDependencies: + react: "*" + checksum: 10c0/a24309bfc993c19cbcbfc928157e53a137851822779977b9588f6dd41ffc4d11ebc98b447f4039b0d309a858f0a42980f6bfb4477fb19f9f2d1bc2e190fcf79c + languageName: node + linkType: hard + +"react-infinite-scroll-hook@npm:^4.1.1": + version: 4.1.1 + resolution: "react-infinite-scroll-hook@npm:4.1.1" + dependencies: + react-intersection-observer-hook: "npm:^2.1.1" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/43b49a12032bea13ecf60ad104135292e1b9d3e99833f0b06401ffb2e73f05c886a928e019e2a9b9c7654bf601035d8318ca5cf55645d722eb6d98efbd1e0ed3 + languageName: node + linkType: hard + +"react-intersection-observer-hook@npm:^2.1.1": + version: 2.1.1 + resolution: "react-intersection-observer-hook@npm:2.1.1" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/a960a9e6c75cee0cf76cb332157622b5dd2837e6d2f17762d720c2647de0f18a0c7a957e819b5491f1e4129f681748b7db3754290c4551c03ab3bcf74c06aa49 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"react-refresh@npm:^0.14.2": + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: 10c0/875b72ef56b147a131e33f2abd6ec059d1989854b3ff438898e4f9310bfcc73acff709445b7ba843318a953cb9424bcc2c05af2b3d80011cee28f25aef3e2ebb + languageName: node + linkType: hard + +"react-remove-scroll-bar@npm:^2.3.7": + version: 2.3.8 + resolution: "react-remove-scroll-bar@npm:2.3.8" + dependencies: + react-style-singleton: "npm:^2.2.2" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/9a0675c66cbb52c325bdbfaed80987a829c4504cefd8ff2dd3b6b3afc9a1500b8ec57b212e92c1fb654396d07bbe18830a8146fe77677d2a29ce40b5e1f78654 + languageName: node + linkType: hard + +"react-remove-scroll@npm:^2.6.3": + version: 2.6.3 + resolution: "react-remove-scroll@npm:2.6.3" + dependencies: + react-remove-scroll-bar: "npm:^2.3.7" + react-style-singleton: "npm:^2.2.3" + tslib: "npm:^2.1.0" + use-callback-ref: "npm:^1.3.3" + use-sidecar: "npm:^1.1.3" + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/068e9704ff26816fffc4c8903e2c6c8df7291ee08615d7c1ab0cf8751f7080e2c5a5d78ef5d908b11b9cfc189f176d312e44cb02ea291ca0466d8283b479b438 + languageName: node + linkType: hard + +"react-router-dom@npm:6.22.1": + version: 6.22.1 + resolution: "react-router-dom@npm:6.22.1" + dependencies: + "@remix-run/router": "npm:1.15.1" + react-router: "npm:6.22.1" + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 10c0/1e6ec4596f134204934d4f701b8acc426867532342c8aec1b5c4ffeaf23afa0099727f58ab8687f7838db069616b8d6ed05a065570f23b3b60cbff405b3fbccd + languageName: node + linkType: hard + +"react-router@npm:6.22.1": + version: 6.22.1 + resolution: "react-router@npm:6.22.1" + dependencies: + "@remix-run/router": "npm:1.15.1" + peerDependencies: + react: ">=16.8" + checksum: 10c0/bb33c3a6457e73fa9977133be0c27b60accfc6452cc5d7b62c729cdd2d091a1345a9567cf852c651315548f1f16adac258eeab8ad193b46e4ce926c911dc857c + languageName: node + linkType: hard + +"react-style-singleton@npm:^2.2.2, react-style-singleton@npm:^2.2.3": + version: 2.2.3 + resolution: "react-style-singleton@npm:2.2.3" + dependencies: + get-nonce: "npm:^1.0.0" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/841938ff16d16a6b76895f4cb2e1fea957e5fe3b30febbf03a54892dae1c9153f2383e231dea0b3ba41192ad2f2849448fa859caccd288943bce32639e971bee + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": + version: 19.1.0 + resolution: "react@npm:19.1.0" + checksum: 10c0/530fb9a62237d54137a13d2cfb67a7db6a2156faed43eecc423f4713d9b20c6f2728b026b45e28fcd72e8eadb9e9ed4b089e99f5e295d2f0ad3134251bdd3698 + languageName: node + linkType: hard + +"react@npm:^18.2.0": + version: 18.3.1 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 + languageName: node + linkType: hard + +"read-cmd-shim@npm:^3.0.0": + version: 3.0.1 + resolution: "read-cmd-shim@npm:3.0.1" + checksum: 10c0/a157c401161d28178aee45b70fae5f721b4f65ddedd728c51e21c3d2ea09715f73bcd33e87462bc27601f3445dce313d44e99450fafa48ded0b295445c49c2bf + languageName: node + linkType: hard + +"read-file-safe@npm:^1.0.5": + version: 1.0.10 + resolution: "read-file-safe@npm:1.0.10" + checksum: 10c0/730046d28677348f96c559feae8fd36c0fa1ae3ce17f05a447087c384006cc7c944caba229c7ec51e40dec22ecb11e86b92864b8b9c8bf3442d44feeb7011fed + languageName: node + linkType: hard + +"read-json-safe@npm:^1.0.5": + version: 1.0.5 + resolution: "read-json-safe@npm:1.0.5" + dependencies: + parse-json-object: "npm:^1.0.5" + read-file-safe: "npm:^1.0.5" + checksum: 10c0/cff70a6ff39caa667aeccc55bc8cad6a3656adfb92d61fcc9e712c108d886faa62915bcd7ce3e731854c9774afb28b4b0a06801c1d7aa05babfd48f378dfebf9 + languageName: node + linkType: hard + +"read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": + version: 2.0.3 + resolution: "read-package-json-fast@npm:2.0.3" + dependencies: + json-parse-even-better-errors: "npm:^2.3.0" + npm-normalize-package-bin: "npm:^1.0.1" + checksum: 10c0/c265a5d6c85f4c8ee0bf35b0b0d92800a7439e5cf4d1f5a2b3f9615a02ee2fd46bca6c2f07e244bfac1c40816eb0d28aec259ae99d7552d144dd9f971a5d2028 + languageName: node + linkType: hard + +"read-package-json@npm:^5.0.0, read-package-json@npm:^5.0.2": + version: 5.0.2 + resolution: "read-package-json@npm:5.0.2" + dependencies: + glob: "npm:^8.0.1" + json-parse-even-better-errors: "npm:^2.3.1" + normalize-package-data: "npm:^4.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + checksum: 10c0/78972bda869efb6191f7b70ab0ca1e7a86549a4aaf73cb379dfeb57098e4ecaa1128ba3f81485ed0b52174605ef16fce1599a551228e5f656a17a1a53a1793e7 + languageName: node + linkType: hard + +"read-pkg-up@npm:^7.0.0, read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: "npm:^4.1.0" + read-pkg: "npm:^5.2.0" + type-fest: "npm:^0.8.1" + checksum: 10c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 + languageName: node + linkType: hard + +"read-pkg-up@npm:^9.1.0": + version: 9.1.0 + resolution: "read-pkg-up@npm:9.1.0" + dependencies: + find-up: "npm:^6.3.0" + read-pkg: "npm:^7.1.0" + type-fest: "npm:^2.5.0" + checksum: 10c0/3fb44889ff930b5c7b5cef9929fc5b2a8a80bc877682be0aef8daff7fc65b1f150bb4e61e7d4e7a11772b7b9b8e05843528031fe8111a7696b6deb652ee4287f + languageName: node + linkType: hard + +"read-pkg@npm:^5.0.0, read-pkg@npm:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": "npm:^2.4.0" + normalize-package-data: "npm:^2.5.0" + parse-json: "npm:^5.0.0" + type-fest: "npm:^0.6.0" + checksum: 10c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb + languageName: node + linkType: hard + +"read-pkg@npm:^7.1.0": + version: 7.1.0 + resolution: "read-pkg@npm:7.1.0" + dependencies: + "@types/normalize-package-data": "npm:^2.4.1" + normalize-package-data: "npm:^3.0.2" + parse-json: "npm:^5.2.0" + type-fest: "npm:^2.0.0" + checksum: 10c0/5d67a9a1c96f6ee7765743c741f446e0556388dd60236ebfe3a8675019753b49da0863a871763bbdde81a8b3a07d03039088a21bf2dbf6ec485728958d9e93a3 + languageName: node + linkType: hard + +"read@npm:1, read@npm:^1.0.7, read@npm:~1.0.7": + version: 1.0.7 + resolution: "read@npm:1.0.7" + dependencies: + mute-stream: "npm:~0.0.4" + checksum: 10c0/443533f05d5bb11b36ef1c6d625aae4e2ced8967e93cf546f35aa77b4eb6bd157f4256619e446bae43467f8f6619c7bc5c76983348dffaf36afedf4224f46216 + languageName: node + linkType: hard + +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.2, readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readdir-scoped-modules@npm:^1.1.0": + version: 1.1.0 + resolution: "readdir-scoped-modules@npm:1.1.0" + dependencies: + debuglog: "npm:^1.0.1" + dezalgo: "npm:^1.0.0" + graceful-fs: "npm:^4.1.2" + once: "npm:^1.3.0" + checksum: 10c0/21a53741c488775cbf78b0b51f1b897e9c523b1bcf54567fc2c8ed09b12d9027741f45fcb720f388c0c3088021b54dc3f616c07af1531417678cc7962fc15e5c + languageName: node + linkType: hard + +"recast@npm:^0.23.5": + version: 0.23.11 + resolution: "recast@npm:0.23.11" + dependencies: + ast-types: "npm:^0.16.1" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tiny-invariant: "npm:^1.3.3" + tslib: "npm:^2.0.1" + checksum: 10c0/45b520a8f0868a5a24ecde495be9de3c48e69a54295d82a7331106554b75cfba75d16c909959d056e9ceed47a1be5e061e2db8b9ecbcd6ba44c2f3ef9a47bd18 + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + +"redeyed@npm:~2.1.0": + version: 2.1.1 + resolution: "redeyed@npm:2.1.1" + dependencies: + esprima: "npm:~4.0.0" + checksum: 10c0/350f5e39aebab3886713a170235c38155ee64a74f0f7e629ecc0144ba33905efea30c2c3befe1fcbf0b0366e344e7bfa34e6b2502b423c9a467d32f1306ef166 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": "npm:^7.8.4" + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + +"regexpu-core@npm:^6.2.0": + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.12.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 + languageName: node + linkType: hard + +"registry-auth-token@npm:^4.2.2": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: "npm:1.2.8" + checksum: 10c0/1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 + languageName: node + linkType: hard + +"registry-auth-token@npm:^5.0.0, registry-auth-token@npm:^5.0.1": + version: 5.1.0 + resolution: "registry-auth-token@npm:5.1.0" + dependencies: + "@pnpm/npm-conf": "npm:^2.1.0" + checksum: 10c0/316229bd8a4acc29a362a7a3862ff809e608256f0fd9e0b133412b43d6a9ea18743756a0ec5ee1467a5384e1023602b85461b3d88d1336b11879e42f7cf02c12 + languageName: node + linkType: hard + +"registry-url@npm:^6.0.0, registry-url@npm:^6.0.1": + version: 6.0.1 + resolution: "registry-url@npm:6.0.1" + dependencies: + rc: "npm:1.2.8" + checksum: 10c0/66e2221c8113fc35ee9d23fe58cb516fc8d556a189fb8d6f1011a02efccc846c4c9b5075b4027b99a5d5c9ad1345ac37f297bea3c0ca30d607ec8084bf561b90 + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-from@npm:3.0.0" + checksum: 10c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.22.8": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: "npm:^2.0.0" + checksum: 10c0/360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5 + languageName: node + linkType: hard + +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" + dependencies: + lowercase-keys: "npm:^3.0.0" + checksum: 10c0/8af27153f7e47aa2c07a5f2d538cb1e5872995f0e9ff77def858ecce5c3fe677d42b824a62cde502e56d275ab832b0a8bd350d5cd6b467ac0425214ac12ae658 + languageName: node + linkType: hard + +"restore-cursor@npm:^2.0.0": + version: 2.0.0 + resolution: "restore-cursor@npm:2.0.0" + dependencies: + onetime: "npm:^2.0.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/f5b335bee06f440445e976a7031a3ef53691f9b7c4a9d42a469a0edaf8a5508158a0d561ff2b26a1f4f38783bcca2c0e5c3a44f927326f6694d5b44d7a4993e6 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 + languageName: node + linkType: hard + +"rimraf@npm:^2.6.3": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rollup-plugin-typescript2@npm:^0.36.0": + version: 0.36.0 + resolution: "rollup-plugin-typescript2@npm:0.36.0" + dependencies: + "@rollup/pluginutils": "npm:^4.1.2" + find-cache-dir: "npm:^3.3.2" + fs-extra: "npm:^10.0.0" + semver: "npm:^7.5.4" + tslib: "npm:^2.6.2" + peerDependencies: + rollup: ">=1.26.3" + typescript: ">=2.4.0" + checksum: 10c0/3c8d17cd852ded36eaad2759caf170f90e091d8f86ff7b016d1823bc8b507b8f689156bcccda348fc88471681dc79cc9eb13ddb09a4dfcf0d07ac9a249e2d79b + languageName: node + linkType: hard + +"rollup@npm:^2.70.1": + version: 2.79.2 + resolution: "rollup@npm:2.79.2" + dependencies: + fsevents: "npm:~2.3.2" + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/bc3746c988d903c2211266ddc539379d53d92689b9cc5c2b4e3ae161689de9af491957a567c629b6cc81f48d0928a7591fc4c383fba68a48d2966c9fb8a2bce9 + languageName: node + linkType: hard + +"rollup@npm:^4.20.0": + version: 4.39.0 + resolution: "rollup@npm:4.39.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.39.0" + "@rollup/rollup-android-arm64": "npm:4.39.0" + "@rollup/rollup-darwin-arm64": "npm:4.39.0" + "@rollup/rollup-darwin-x64": "npm:4.39.0" + "@rollup/rollup-freebsd-arm64": "npm:4.39.0" + "@rollup/rollup-freebsd-x64": "npm:4.39.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.39.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.39.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.39.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.39.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.39.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.39.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.39.0" + "@rollup/rollup-linux-x64-musl": "npm:4.39.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.39.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.39.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.39.0" + "@types/estree": "npm:1.0.7" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/2dc0c23ca04bd00295035b405c977261559aed8acc9902ee9ff44e4a6b54734fcb64999c32143c43804dcb543da7983032831b893a902633b006c21848a093ce + languageName: node + linkType: hard + +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 10c0/127b8ca6c8aac45e2755abbae6138d4a813b1bedc2caabf79466ae83ab3cfc84b5bfab513b7033f0aa4561c7753edf787d0dd01163ceacdee2e8eb1b6bf7237e + languageName: node + linkType: hard + +"rrweb-cssom@npm:^0.8.0": + version: 0.8.0 + resolution: "rrweb-cssom@npm:0.8.0" + checksum: 10c0/56f2bfd56733adb92c0b56e274c43f864b8dd48784d6fe946ef5ff8d438234015e59ad837fc2ad54714b6421384141c1add4eb569e72054e350d1f8a50b8ac7b + languageName: node + linkType: hard + +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: "npm:^5.0.0" + checksum: 10c0/f9977db5770929f3f0db434b8e6aa266498c70dec913c84320c0a06add510cf44e3a048c44da088abee312006f9cbf572fd065cdc8f15d7682afda8755f4114c + languageName: node + linkType: hard + +"run-async@npm:^2.2.0, run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-async@npm:^3.0.0": + version: 3.0.0 + resolution: "run-async@npm:3.0.0" + checksum: 10c0/b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85 + languageName: node + linkType: hard + +"run-node@npm:^1.0.0": + version: 1.0.0 + resolution: "run-node@npm:1.0.0" + bin: + run-node: run-node + checksum: 10c0/ab32a065194903e5cd2e4c01e4a5568d22720b4eaa5c853d5386e8d116c59c313e84591f0375913dbe6cc973c2181aed4f54d6b32dba9f7d0d5d01a762de8b6b + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:^6.3.3, rxjs@npm:^6.4.0, rxjs@npm:^6.5.3, rxjs@npm:^6.6.0": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: "npm:^1.9.0" + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + languageName: node + linkType: hard + +"rxjs@npm:^7.8.0, rxjs@npm:^7.8.1": + version: 7.8.2 + resolution: "rxjs@npm:7.8.2" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0, scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 + languageName: node + linkType: hard + +"scheduler@npm:^0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: 10c0/5b8d5bfddaae3513410eda54f2268e98a376a429931921a81b5c3a2873aab7ca4d775a8caac5498f8cbc7d0daeab947cf923dbd8e215d61671f9f4e392d34356 + languageName: node + linkType: hard + +"schema-utils@npm:^2.6.5": + version: 2.7.1 + resolution: "schema-utils@npm:2.7.1" + dependencies: + "@types/json-schema": "npm:^7.0.5" + ajv: "npm:^6.12.4" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f + languageName: node + linkType: hard + +"scoped-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "scoped-regex@npm:3.0.0" + checksum: 10c0/484d137f4f30d531786442214e1f15b86e36929aa5b7e808e466eff365adff759cc34f450290658a47ec6d2baf0509eb94829948c0fb01625cf24436234743ab + languageName: node + linkType: hard + +"semantic-release@npm:^19.0.2": + version: 19.0.5 + resolution: "semantic-release@npm:19.0.5" + dependencies: + "@semantic-release/commit-analyzer": "npm:^9.0.2" + "@semantic-release/error": "npm:^3.0.0" + "@semantic-release/github": "npm:^8.0.0" + "@semantic-release/npm": "npm:^9.0.0" + "@semantic-release/release-notes-generator": "npm:^10.0.0" + aggregate-error: "npm:^3.0.0" + cosmiconfig: "npm:^7.0.0" + debug: "npm:^4.0.0" + env-ci: "npm:^5.0.0" + execa: "npm:^5.0.0" + figures: "npm:^3.0.0" + find-versions: "npm:^4.0.0" + get-stream: "npm:^6.0.0" + git-log-parser: "npm:^1.2.0" + hook-std: "npm:^2.0.0" + hosted-git-info: "npm:^4.0.0" + lodash: "npm:^4.17.21" + marked: "npm:^4.0.10" + marked-terminal: "npm:^5.0.0" + micromatch: "npm:^4.0.2" + p-each-series: "npm:^2.1.0" + p-reduce: "npm:^2.0.0" + read-pkg-up: "npm:^7.0.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.3.2" + semver-diff: "npm:^3.1.1" + signale: "npm:^1.2.1" + yargs: "npm:^16.2.0" + bin: + semantic-release: bin/semantic-release.js + checksum: 10c0/b1fee9c6393a986a80ecfbfa1a95d811a012f991a6c0ee2be649172ecd83b3d3a58efb6524e5451ad12c7c8b9db48642b70bdb12c259048d36e84c6cc8934a24 + languageName: node + linkType: hard + +"semver-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "semver-compare@npm:1.0.0" + checksum: 10c0/9ef4d8b81847556f0865f46ddc4d276bace118c7cb46811867af82e837b7fc473911981d5a0abc561fa2db487065572217e5b06e18701c4281bcdd2a1affaff1 + languageName: node + linkType: hard + +"semver-diff@npm:^3.1.1": + version: 3.1.1 + resolution: "semver-diff@npm:3.1.1" + dependencies: + semver: "npm:^6.3.0" + checksum: 10c0/7d350f1450b9577d538ef866a9bc4cd97bfbf1f1d92070291495a31d0ec3aa808e826c223e5454ea9877cc06eaa886ffd71bb3a1f331b44bc210f9ff525c68d2 + languageName: node + linkType: hard + +"semver-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "semver-diff@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/3ed1bb22f39b4b6e98785bb066e821eabb9445d3b23e092866c50e7df8b9bd3eda617b242f81db4159586e0e39b0deb908dd160a24f783bd6f52095b22cd68ea + languageName: node + linkType: hard + +"semver-regex@npm:^3.1.2": + version: 3.1.4 + resolution: "semver-regex@npm:3.1.4" + checksum: 10c0/17bb7742b280e113c7850ce40b274341c74f61077a0712babd84782ea11b5bc343cde5b4e6d06721b29a2a4a17a42c5b8d1559efd9fd3de799997e83d361162c + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.1, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.7.1": + version: 7.7.1 + resolution: "semver@npm:7.7.1" + bin: + semver: bin/semver.js + checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c + languageName: node + linkType: hard + +"shebang-command@npm:^1.2.0": + version: 1.2.0 + resolution: "shebang-command@npm:1.2.0" + dependencies: + shebang-regex: "npm:^1.0.0" + checksum: 10c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "shebang-regex@npm:1.0.0" + checksum: 10c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"signale@npm:^1.2.1": + version: 1.4.0 + resolution: "signale@npm:1.4.0" + dependencies: + chalk: "npm:^2.3.2" + figures: "npm:^2.0.0" + pkg-conf: "npm:^2.1.0" + checksum: 10c0/3b637421368a30805da3948f82350cb9959ddfb19073f44609495384b98baba1c62b1c5c094db57000836c8bc84c6c05c979aa7e072ceeaaf0032d7991b329c7 + languageName: node + linkType: hard + +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + languageName: node + linkType: hard + +"slice-ansi@npm:0.0.4": + version: 0.0.4 + resolution: "slice-ansi@npm:0.0.4" + checksum: 10c0/997d4cc73e34aa8c0f60bdb71701b16c062cc4acd7a95e3b10e8c05d790eb5e735d9b470270dc6f443b1ba21492db7ceb849d5c93011d1256061bf7ed7216c7a + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.6.2, socks@npm:^2.8.3": + version: 2.8.4 + resolution: "socks@npm:2.8.4" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/00c3271e233ccf1fb83a3dd2060b94cc37817e0f797a93c560b9a7a86c4a0ec2961fb31263bdd24a3c28945e24868b5f063cd98744171d9e942c513454b50ae5 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"spawn-error-forwarder@npm:~1.0.0": + version: 1.0.0 + resolution: "spawn-error-forwarder@npm:1.0.0" + checksum: 10c0/531cb73404af88b5400f9b7a976836b9f09cb48e4c0c79784ad80001ea942eb256e311f14cc7d171539cd1a86297c1c5461177c3fa736ac30627f5f8a6b06db6 + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" + dependencies: + spdx-expression-parse: "npm:^3.0.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.21 + resolution: "spdx-license-ids@npm:3.0.21" + checksum: 10c0/ecb24c698d8496aa9efe23e0b1f751f8a7a89faedcdfcbfabae772b546c2db46ccde8f3bc447a238eb86bbcd4f73fea88720ef3b8394f7896381bec3d7736411 + languageName: node + linkType: hard + +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 10c0/56df8344f5a5de8521898a5c090023df1d8b8c75be6228f56c52491e0fc1617a5236f2ac3a066adb67a73231eac216ccea7b5b4a2423a543c277cb2f48d24c29 + languageName: node + linkType: hard + +"split2@npm:^3.0.0": + version: 3.2.2 + resolution: "split2@npm:3.2.2" + dependencies: + readable-stream: "npm:^3.0.0" + checksum: 10c0/2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e + languageName: node + linkType: hard + +"split2@npm:~1.0.0": + version: 1.0.0 + resolution: "split2@npm:1.0.0" + dependencies: + through2: "npm:~2.0.0" + checksum: 10c0/5923936c492ebbdfed66705a25a1d53eb98d2cff740421f4b558842fdf731f108872c24fe13fa091feef8b564543bdf25c967c03fce6ea09b7119b9d3ed07eda + languageName: node + linkType: hard + +"split@npm:^1.0.0": + version: 1.0.1 + resolution: "split@npm:1.0.1" + dependencies: + through: "npm:2" + checksum: 10c0/7f489e7ed5ff8a2e43295f30a5197ffcb2d6202c9cf99357f9690d645b19c812bccf0be3ff336fea5054cda17ac96b91d67147d95dbfc31fbb5804c61962af85 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + languageName: node + linkType: hard + +"ssri@npm:^9.0.0, ssri@npm:^9.0.1": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: 10c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 + languageName: node + linkType: hard + +"stable-hash@npm:^0.0.5": + version: 0.0.5 + resolution: "stable-hash@npm:0.0.5" + checksum: 10c0/ca670cb6d172f1c834950e4ec661e2055885df32fee3ebf3647c5df94993b7c2666a5dbc1c9a62ee11fc5c24928579ec5e81bb5ad31971d355d5a341aab493b3 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 + languageName: node + linkType: hard + +"statuses@npm:^2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"std-env@npm:^3.5.0": + version: 3.9.0 + resolution: "std-env@npm:3.9.0" + checksum: 10c0/4a6f9218aef3f41046c3c7ecf1f98df00b30a07f4f35c6d47b28329bc2531eef820828951c7d7b39a1c5eb19ad8a46e3ddfc7deb28f0a2f3ceebee11bab7ba50 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + +"storybook-dark-mode@npm:^4.0.2": + version: 4.0.2 + resolution: "storybook-dark-mode@npm:4.0.2" + dependencies: + "@storybook/components": "npm:^8.0.0" + "@storybook/core-events": "npm:^8.0.0" + "@storybook/global": "npm:^5.0.0" + "@storybook/icons": "npm:^1.2.5" + "@storybook/manager-api": "npm:^8.0.0" + "@storybook/theming": "npm:^8.0.0" + fast-deep-equal: "npm:^3.1.3" + memoizerific: "npm:^1.11.3" + checksum: 10c0/d4fc652ff080f6cc9f0effab0c989b66ead3372b267c2c328eef608f27c9822bf47aaa177405e42768b2de22f8a3e9a0280af50430efd0cf78bd6ed1f12c8b29 + languageName: node + linkType: hard + +"storybook@npm:^8.2.5": + version: 8.6.12 + resolution: "storybook@npm:8.6.12" + dependencies: + "@storybook/core": "npm:8.6.12" + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + bin: + getstorybook: ./bin/index.cjs + sb: ./bin/index.cjs + storybook: ./bin/index.cjs + checksum: 10c0/9e52fed104fe9b0e8baad84651f5ea13d37ad885f1cfaf3fb27858c928920abbc05f624516545c360975c5bb86c1107ca8cdf484725fc8ddb540e55a6d536cb6 + languageName: node + linkType: hard + +"stream-combiner2@npm:~1.1.1": + version: 1.1.1 + resolution: "stream-combiner2@npm:1.1.1" + dependencies: + duplexer2: "npm:~0.1.0" + readable-stream: "npm:^2.0.2" + checksum: 10c0/96a14ae94493aad307176d0c0a795446cedf6c49d11d08e5d0a56bcf9f22352b0dd148b0497c8456f08b00da0867288e9750bf0286b71f6b621c0f2ba6768758 + languageName: node + linkType: hard + +"strict-event-emitter@npm:^0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7 + languageName: node + linkType: hard + +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: 10c0/010cbc78da0e2cf833b0f5dc769e21ae74cdc5d5f5bd555f14a4a4876c8ad2c85ab8b5bdf9a722dc71a11dcd3184085e1c3c0bd50ec6bb85fffc0f28cf82597d + languageName: node + linkType: hard + +"string-argv@npm:^0.3.0, string-argv@npm:^0.3.1": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^1.0.1": + version: 1.0.2 + resolution: "string-width@npm:1.0.2" + dependencies: + code-point-at: "npm:^1.0.0" + is-fullwidth-code-point: "npm:^1.0.0" + strip-ansi: "npm:^3.0.0" + checksum: 10c0/c558438baed23a9ab9370bb6a939acbdb2b2ffc517838d651aad0f5b2b674fb85d460d9b1d0b6a4c210dffd09e3235222d89a5bd4c0c1587f78b2bb7bc00c65e + languageName: node + linkType: hard + +"string-width@npm:^2.1.0, string-width@npm:^2.1.1": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^4.0.0" + checksum: 10c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610 + languageName: node + linkType: hard + +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"stringify-object@npm:^3.3.0": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: "npm:^3.0.0" + is-obj: "npm:^1.0.1" + is-regexp: "npm:^1.0.0" + checksum: 10c0/ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "strip-ansi@npm:3.0.1" + dependencies: + ansi-regex: "npm:^2.0.0" + checksum: 10c0/f6e7fbe8e700105dccf7102eae20e4f03477537c74b286fd22cfc970f139002ed6f0d9c10d0e21aa9ed9245e0fa3c9275930e8795c5b947da136e4ecb644a70f + languageName: node + linkType: hard + +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: "npm:^3.0.0" + checksum: 10c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d + languageName: node + linkType: hard + +"strip-ansi@npm:^5.1.0": + version: 5.2.0 + resolution: "strip-ansi@npm:5.2.0" + dependencies: + ansi-regex: "npm:^4.1.0" + checksum: 10c0/de4658c8a097ce3b15955bc6008f67c0790f85748bdc025b7bc8c52c7aee94bc4f9e50624516150ed173c3db72d851826cd57e7a85fe4e4bb6dbbebd5d297fdf + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-eof@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-eof@npm:1.0.0" + checksum: 10c0/f336beed8622f7c1dd02f2cbd8422da9208fae81daf184f73656332899978919d5c0ca84dc6cfc49ad1fc4dd7badcde5412a063cf4e0d7f8ed95a13a63f68f45 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" + dependencies: + min-indent: "npm:^1.0.1" + checksum: 10c0/6b1fb4e22056867f5c9e7a6f3f45922d9a2436cac758607d58aeaac0d3b16ec40b1c43317de7900f1b8dd7a4107352fa47fb960f2c23566538c51e8585c8870e + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"strip-literal@npm:^2.0.0": + version: 2.1.1 + resolution: "strip-literal@npm:2.1.1" + dependencies: + js-tokens: "npm:^9.0.1" + checksum: 10c0/66a7353f5ba1ae6a4fb2805b4aba228171847200640083117c41512692e6b2c020e18580402984f55c0ae69c30f857f9a55abd672863e4ca8fdb463fdf93ba19 + languageName: node + linkType: hard + +"supports-color@npm:^2.0.0": + version: 2.0.0 + resolution: "supports-color@npm:2.0.0" + checksum: 10c0/570e0b63be36cccdd25186350a6cb2eaad332a95ff162fa06d9499982315f2fe4217e69dd98e862fbcd9c81eaff300a825a1fe7bf5cc752e5b84dfed042b0dda + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.2.0, supports-hyperlinks@npm:^2.3.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"swr@npm:^2.2.4": + version: 2.3.3 + resolution: "swr@npm:2.3.3" + dependencies: + dequal: "npm:^2.0.3" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/882fc8291912860e0c50eae3470ebf0cd58b0144cb12adcc4b14c5cef913ea06479043830508d8b0b3d4061d99ad8dd52485c9c879fbd4e9b893484e6d8da9e3 + languageName: node + linkType: hard + +"symbol-observable@npm:^1.1.0": + version: 1.2.0 + resolution: "symbol-observable@npm:1.2.0" + checksum: 10c0/009fee50798ef80ed4b8195048288f108b03de162db07493f2e1fd993b33fafa72d659e832b584da5a2427daa78e5a738fb2a9ab027ee9454252e0bedbcd1fdc + languageName: node + linkType: hard + +"symbol-observable@npm:^4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + +"tabbable@npm:^6.0.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 + languageName: node + linkType: hard + +"tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + languageName: node + linkType: hard + +"temp-dir@npm:^2.0.0": + version: 2.0.0 + resolution: "temp-dir@npm:2.0.0" + checksum: 10c0/b1df969e3f3f7903f3426861887ed76ba3b495f63f6d0c8e1ce22588679d9384d336df6064210fda14e640ed422e2a17d5c40d901f60e161c99482d723f4d309 + languageName: node + linkType: hard + +"tempy@npm:^1.0.0": + version: 1.0.1 + resolution: "tempy@npm:1.0.1" + dependencies: + del: "npm:^6.0.0" + is-stream: "npm:^2.0.0" + temp-dir: "npm:^2.0.0" + type-fest: "npm:^0.16.0" + unique-string: "npm:^2.0.0" + checksum: 10c0/864a1cf1b5536dc21e84ae45dbbc3ba4dd2c7ec1674d895f99c349cf209df959a53d797ca38d0b2cf69c7684d565fde5cfc67faaa63b7208ffb21d454b957472 + languageName: node + linkType: hard + +"terminal-link@npm:^3.0.0": + version: 3.0.0 + resolution: "terminal-link@npm:3.0.0" + dependencies: + ansi-escapes: "npm:^5.0.0" + supports-hyperlinks: "npm:^2.2.0" + checksum: 10c0/2ccf93f474d9c4fe1ac75764a48836e61c281def08f4aff154696bc83dd764078ee2f5a6a6148382fb928943d53f44313ae513c5f457649d2961a95e5cd343b3 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-extensions@npm:^1.0.0": + version: 1.9.0 + resolution: "text-extensions@npm:1.9.0" + checksum: 10c0/9ad5a9f723a871e2d884e132d7e93f281c60b5759c95f3f6b04704856548715d93a36c10dbaf5f12b91bf405f0cf3893bf169d4d143c0f5509563b992d385443 + languageName: node + linkType: hard + +"text-table@npm:~0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"through2@npm:^4.0.0": + version: 4.0.2 + resolution: "through2@npm:4.0.2" + dependencies: + readable-stream: "npm:3" + checksum: 10c0/3741564ae99990a4a79097fe7a4152c22348adc4faf2df9199a07a66c81ed2011da39f631e479fdc56483996a9d34a037ad64e76d79f18c782ab178ea9b6778c + languageName: node + linkType: hard + +"through2@npm:~2.0.0": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: "npm:~2.3.6" + xtend: "npm:~4.0.1" + checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + languageName: node + linkType: hard + +"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10c0/65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a + languageName: node + linkType: hard + +"tiny-relative-date@npm:^1.3.0": + version: 1.3.0 + resolution: "tiny-relative-date@npm:1.3.0" + checksum: 10c0/70a0818793bd00345771a4ddfa9e339c102f891766c5ebce6a011905a1a20e30212851c9ffb11b52b79e2445be32bc21d164c4c6d317aef730766b2a61008f30 + languageName: node + linkType: hard + +"tinybench@npm:^2.5.1": + version: 2.9.0 + resolution: "tinybench@npm:2.9.0" + checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c + languageName: node + linkType: hard + +"tinycolor2@npm:^1.4.2": + version: 1.6.0 + resolution: "tinycolor2@npm:1.6.0" + checksum: 10c0/9aa79a36ba2c2a87cb221453465cabacd04b9e35f9694373e846fdc78b1c768110f81e581ea41440106c0f24d9a023891d0887e8075885e790ac40eb0e74a5c1 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12": + version: 0.2.12 + resolution: "tinyglobby@npm:0.2.12" + dependencies: + fdir: "npm:^6.4.3" + picomatch: "npm:^4.0.2" + checksum: 10c0/7c9be4fd3625630e262dcb19015302aad3b4ba7fc620f269313e688f2161ea8724d6cb4444baab5ef2826eb6bed72647b169a33ec8eea37501832a2526ff540f + languageName: node + linkType: hard + +"tinypool@npm:^0.8.3": + version: 0.8.4 + resolution: "tinypool@npm:0.8.4" + checksum: 10c0/779c790adcb0316a45359652f4b025958c1dff5a82460fe49f553c864309b12ad732c8288be52f852973bc76317f5e7b3598878aee0beb8a33322c0e72c4a66c + languageName: node + linkType: hard + +"tinyspy@npm:^2.2.0": + version: 2.2.1 + resolution: "tinyspy@npm:2.2.1" + checksum: 10c0/0b4cfd07c09871e12c592dfa7b91528124dc49a4766a0b23350638c62e6a483d5a2a667de7e6282246c0d4f09996482ddaacbd01f0c05b7ed7e0f79d32409bdc + languageName: node + linkType: hard + +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 10c0/5ae6084ba299b5782f95e3fe85ea9f0fa4d74b8ae722b6b3208157e975589fbb27733aeba4e5080fa9314a856044ef52caa61b87caea4b1baade951a55c06336 + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.4": + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/aca7ff96054f367d53d1e813e62ceb7dd2eda25d7752058a74d64b7266fd07be75908f3753a32ccf866a2f997604b414cfb1916d6e7f69bc64d9d9939b0d6c45 + languageName: node + linkType: hard + +"tr46@npm:^5.1.0": + version: 5.1.0 + resolution: "tr46@npm:5.1.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/d761f7144e0cb296187674ef245c74f761e334d7cf25ca73ef60e4c72c097c75051031c093fa1a2fee04b904977b316716a7915854bcae8fb1a371746513cbe8 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"traefik-proxy-dashboard@workspace:.": + version: 0.0.0-use.local + resolution: "traefik-proxy-dashboard@workspace:." + dependencies: + "@eslint/js": "npm:^9.23.0" + "@testing-library/jest-dom": "npm:^6.4.2" + "@testing-library/react": "npm:^14.2.1" + "@testing-library/user-event": "npm:^14.5.2" + "@traefiklabs/faency": "npm:11.1.4" + "@types/lodash": "npm:^4.17.16" + "@types/node": "npm:^22.15.18" + "@types/react": "npm:^18.2.0" + "@types/react-dom": "npm:^18.2.19" + "@types/react-router-dom": "npm:^5.1.3" + "@typescript-eslint/parser": "npm:^8.29.0" + "@vitejs/plugin-react": "npm:^4.2.1" + "@vitest/coverage-v8": "npm:^1.3.1" + chart.js: "npm:^4.4.1" + eslint: "npm:^9.23.0" + eslint-config-prettier: "npm:^10.0.2" + eslint-import-resolver-typescript: "npm:^3.8.3" + eslint-plugin-import: "npm:^2.31.0" + eslint-plugin-jsx-a11y: "npm:^6.10.2" + eslint-plugin-react: "npm:^7.37.4" + eslint-plugin-react-hooks: "npm:^5.1.0" + framer-motion: "npm:^11.18.2" + globals: "npm:^16.0.0" + husky: "npm:^3.1.0" + jest-extended: "npm:^4.0.2" + jsdom: "npm:^24.0.0" + lint-staged: "npm:^9.5.0" + lodash: "npm:^4.17.21" + msw: "npm:^2.1.7" + prettier: "npm:^3.5.3" + query-string: "npm:^6.9.0" + react: "npm:^18.2.0" + react-chartjs-2: "npm:^5.2.0" + react-dom: "npm:^18.2.0" + react-error-boundary: "npm:^4.0.12" + react-helmet-async: "npm:^2.0.4" + react-icons: "npm:^5.0.1" + react-infinite-scroll-hook: "npm:^4.1.1" + react-router-dom: "npm:6.22.1" + swr: "npm:^2.2.4" + typescript: "npm:^5.2.2" + typescript-eslint: "npm:^8.24.1" + usehooks-ts: "npm:^2.14.0" + vite: "npm:^5.1.4" + vite-tsconfig-paths: "npm:^4.3.1" + vitest: "npm:^1.3.1" + vitest-canvas-mock: "npm:^0.3.3" + languageName: unknown + linkType: soft + +"traverse@npm:0.6.8": + version: 0.6.8 + resolution: "traverse@npm:0.6.8" + checksum: 10c0/d97a71be2ca895ff6b813840db37f9b5d88e30f7c4c4bd5b22c5c68ebc22d4a10c4599e02c51414523cc7ada3432e118ea62ebd53cf6f3a4f3aa951bd45072a9 + languageName: node + linkType: hard + +"treeverse@npm:^2.0.0": + version: 2.0.0 + resolution: "treeverse@npm:2.0.0" + checksum: 10c0/be37fd0d4d62c62fe7f4bfcac164d82f11456184dc397473896ed2efcdf9b307c3e433e1d275a1dd924fc7e66aa280ab36be8b8966b87f23e0f545417eb52900 + languageName: node + linkType: hard + +"trim-newlines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-newlines@npm:3.0.1" + checksum: 10c0/03cfefde6c59ff57138412b8c6be922ecc5aec30694d784f2a65ef8dcbd47faef580b7de0c949345abdc56ec4b4abf64dd1e5aea619b200316e471a3dd5bf1f6 + languageName: node + linkType: hard + +"ts-api-utils@npm:^2.0.1": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f + languageName: node + linkType: hard + +"ts-dedent@npm:^2.0.0": + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 10c0/175adea838468cc2ff7d5e97f970dcb798bbcb623f29c6088cb21aa2880d207c5784be81ab1741f56b9ac37840cbaba0c0d79f7f8b67ffe61c02634cafa5c303 + languageName: node + linkType: hard + +"tsconfck@npm:^3.0.3": + version: 3.1.5 + resolution: "tsconfck@npm:3.1.5" + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + bin: + tsconfck: bin/tsconfck.js + checksum: 10c0/9b62cd85d5702aa23ea50ea578d7124f3d59cc4518fcc7eacc04f4f9c9c481f720738ff8351bd4472247c0723a17dfd01af95a5b60ad623cdb8727fbe4881847 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + +"tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a + languageName: node + linkType: hard + +"type-fest@npm:^0.16.0": + version: 0.16.0 + resolution: "type-fest@npm:0.16.0" + checksum: 10c0/6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 + languageName: node + linkType: hard + +"type-fest@npm:^0.18.0": + version: 0.18.1 + resolution: "type-fest@npm:0.18.1" + checksum: 10c0/303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: 10c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 + languageName: node + linkType: hard + +"type-fest@npm:^0.8.1": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: 10c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.1, type-fest@npm:^1.0.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 + languageName: node + linkType: hard + +"type-fest@npm:^2.0.0, type-fest@npm:^2.11.2, type-fest@npm:^2.13.0, type-fest@npm:^2.5.0, type-fest@npm:^2.5.1": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + +"type-fest@npm:^4.26.1": + version: 4.39.1 + resolution: "type-fest@npm:4.39.1" + checksum: 10c0/f5bf302eb2e2f70658be1757aa578f4a09da3f65699b0b12b7ae5502ccea76e5124521a6e6b69540f442c3dc924c394202a2ab58718d0582725c7ac23c072594 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + languageName: node + linkType: hard + +"typedarray-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: "npm:^1.0.0" + checksum: 10c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 + languageName: node + linkType: hard + +"types-eslintrc@npm:^1.0.3": + version: 1.0.3 + resolution: "types-eslintrc@npm:1.0.3" + dependencies: + types-json: "npm:^1.2.2" + checksum: 10c0/ae30c64095ad7cfde0b045ff85f59afe93eec9eaa64b53c0920525703402f04f795e2a07793eaf3496534d44268e3103f4d052d1d3839d01079d0690188cbd73 + languageName: node + linkType: hard + +"types-json@npm:^1.0.6, types-json@npm:^1.2.0, types-json@npm:^1.2.2": + version: 1.2.2 + resolution: "types-json@npm:1.2.2" + checksum: 10c0/042b2678d93721c768f0111ef5f0faa3b1aaba208c65d574d9fdffaa54cf3aa0b1badb7861acd1ba06753bef5463cd790c92e8c8a8962a890dc33c90310588b0 + languageName: node + linkType: hard + +"types-pkg-json@npm:^1.1.0": + version: 1.2.1 + resolution: "types-pkg-json@npm:1.2.1" + dependencies: + types-eslintrc: "npm:^1.0.3" + types-json: "npm:^1.2.2" + checksum: 10c0/4e2eefa8a946616d525b41ab9c7a92b672ce0f29cc7622df34608f09950ab4d015167c4ada6a4aa70de57f9275f4cd23e95f66c5f89d2e2b2a0871fe125ee2e9 + languageName: node + linkType: hard + +"typescript-eslint@npm:^8.24.1": + version: 8.29.0 + resolution: "typescript-eslint@npm:8.29.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.29.0" + "@typescript-eslint/parser": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/1438b80fc875acc65acc842dc870070be31d6a30f756a6d9985fadd063f4f568e74a83bac7aaf94d2320e434df3c033a6e2ab7258b1429cae2aa7c4b16fb5088 + languageName: node + linkType: hard + +"typescript@npm:5.4.5": + version: 5.4.5 + resolution: "typescript@npm:5.4.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e + languageName: node + linkType: hard + +"typescript@npm:^5.2.2": + version: 5.8.3 + resolution: "typescript@npm:5.8.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": + version: 5.4.5 + resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.2.2#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb + languageName: node + linkType: hard + +"ufo@npm:^1.5.4": + version: 1.5.4 + resolution: "ufo@npm:1.5.4" + checksum: 10c0/b5dc4dc435c49c9ef8890f1b280a19ee4d0954d1d6f9ab66ce62ce64dd04c7be476781531f952a07c678d51638d02ad4b98e16237be29149295b0f7c09cda765 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" + bin: + uglifyjs: bin/uglifyjs + checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 10c0/f83bc492fdbe662860795ef37a85910944df7310cac91bd778f1c19ebc911e8b9cde84e703de631e5a2fcca3905e39896f8fc5fc6a44ddaf7f4aff1cda24f381 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: "npm:^3.0.0" + checksum: 10c0/55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 + languageName: node + linkType: hard + +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 + languageName: node + linkType: hard + +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + languageName: node + linkType: hard + +"unique-string@npm:^2.0.0": + version: 2.0.0 + resolution: "unique-string@npm:2.0.0" + dependencies: + crypto-random-string: "npm:^2.0.0" + checksum: 10c0/11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b + languageName: node + linkType: hard + +"unique-string@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-string@npm:3.0.0" + dependencies: + crypto-random-string: "npm:^4.0.0" + checksum: 10c0/b35ea034b161b2a573666ec16c93076b4b6106b8b16c2415808d747ab3a0566b5db0c4be231d4b11cfbc16d7fd915c9d8a45884bff0e2db11b799775b2e1e017 + languageName: node + linkType: hard + +"universal-user-agent@npm:^6.0.0": + version: 6.0.1 + resolution: "universal-user-agent@npm:6.0.1" + checksum: 10c0/5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unplugin@npm:^1.3.1": + version: 1.16.1 + resolution: "unplugin@npm:1.16.1" + dependencies: + acorn: "npm:^8.14.0" + webpack-virtual-modules: "npm:^0.6.2" + checksum: 10c0/dd5f8c5727d0135847da73cf03fb199107f1acf458167034886fda3405737dab871ad3926431b4f70e1e82cdac482ac1383cea4019d782a68515c8e3e611b6cc + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.3.2": + version: 1.4.1 + resolution: "unrs-resolver@npm:1.4.1" + dependencies: + "@unrs/resolver-binding-darwin-arm64": "npm:1.4.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.4.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.4.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.4.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.4.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.4.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.4.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.4.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.4.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.4.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.4.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.4.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.4.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.4.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.4.1" + dependenciesMeta: + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/cc0b148d8fafeb303389fd10c8c2df8806e44b5aa6cec59ef1b7f8a64554f1f53a7a7de81a58bdd438d25a50b5045b1b8e192a9b8acd156fabff1206406316d4 + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 10c0/d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.1": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + languageName: node + linkType: hard + +"update-notifier@npm:^6.0.2": + version: 6.0.2 + resolution: "update-notifier@npm:6.0.2" + dependencies: + boxen: "npm:^7.0.0" + chalk: "npm:^5.0.1" + configstore: "npm:^6.0.0" + has-yarn: "npm:^3.0.0" + import-lazy: "npm:^4.0.0" + is-ci: "npm:^3.0.1" + is-installed-globally: "npm:^0.4.0" + is-npm: "npm:^6.0.0" + is-yarn-global: "npm:^0.4.0" + latest-version: "npm:^7.0.0" + pupa: "npm:^3.1.0" + semver: "npm:^7.3.7" + semver-diff: "npm:^4.0.0" + xdg-basedir: "npm:^5.1.0" + checksum: 10c0/ad3980073312df904133a6e6c554a7f9d0832ed6275e55f5a546313fe77a0f20f23a7b1b4aeb409e20a78afb06f4d3b2b28b332d9cfb55745b5d1ea155810bcc + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"url-join@npm:^4.0.0": + version: 4.0.1 + resolution: "url-join@npm:4.0.1" + checksum: 10c0/ac65e2c7c562d7b49b68edddcf55385d3e922bc1dd5d90419ea40b53b6de1607d1e45ceb71efb9d60da02c681d13c6cb3a1aa8b13fc0c989dfc219df97ee992d + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + languageName: node + linkType: hard + +"use-callback-ref@npm:^1.3.3": + version: 1.3.3 + resolution: "use-callback-ref@npm:1.3.3" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/f887488c6e6075cdad4962979da1714b217bcb1ee009a9e57ce9a844bcfc4c3a99e93983dfc2e5af9e0913824d24e730090ff255e902c516dcb58d2d3837e01c + languageName: node + linkType: hard + +"use-debounce@npm:9.0.2": + version: 9.0.2 + resolution: "use-debounce@npm:9.0.2" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/42acc0228a104cefad00d4a134d27e10da541c6eb8502838ef15da61cf86b7d31bd8eeb2e2331dcb9c01142b322a87b9045ad8a0fdb9c8861ebde8da563211da + languageName: node + linkType: hard + +"use-sidecar@npm:^1.1.3": + version: 1.1.3 + resolution: "use-sidecar@npm:1.1.3" + dependencies: + detect-node-es: "npm:^1.1.0" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/161599bf921cfaa41c85d2b01c871975ee99260f3e874c2d41c05890d41170297bdcf314bc5185e7a700de2034ac5b888e3efc8e9f35724f4918f53538d717c9 + languageName: node + linkType: hard + +"use-sync-external-store@npm:^1.4.0": + version: 1.5.0 + resolution: "use-sync-external-store@npm:1.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/1b8663515c0be34fa653feb724fdcce3984037c78dd4a18f68b2c8be55cc1a1084c578d5b75f158d41b5ddffc2bf5600766d1af3c19c8e329bb20af2ec6f52f4 + languageName: node + linkType: hard + +"usehooks-ts@npm:^2.14.0": + version: 2.16.0 + resolution: "usehooks-ts@npm:2.16.0" + dependencies: + lodash.debounce: "npm:^4.0.8" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + checksum: 10c0/0b7babf09b587cf7af71644dd603ee2efd820ec173c414af1c2afc2c61decc357738b093cabb6a881ac97d8a4e614723ee20096bddd459779f3a0786f4e6b2bf + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"uuid@npm:^9.0.0": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"vali-date@npm:^1.0.0": + version: 1.0.0 + resolution: "vali-date@npm:1.0.0" + checksum: 10c0/5755215f6734caab535f60af0a32bbbf2052c61b1a40668d773df78fd3754e4fe9da2ea5466731505f3e0a599acc209d5578c4b70488ed120fb03f0c2ab06449 + languageName: node + linkType: hard + +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: "npm:^3.0.0" + spdx-expression-parse: "npm:^3.0.0" + checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^3.0.0": + version: 3.0.0 + resolution: "validate-npm-package-name@npm:3.0.0" + dependencies: + builtins: "npm:^1.0.3" + checksum: 10c0/064f21f59aefae6cc286dd4a50b15d14adb0227e0facab4316197dfb8d06801669e997af5081966c15f7828a5e6ff1957bd20886aeb6b9d0fa430e4cb5db9c4a + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^4.0.0": + version: 4.0.0 + resolution: "validate-npm-package-name@npm:4.0.0" + dependencies: + builtins: "npm:^5.0.0" + checksum: 10c0/d7f753c0aac0a2b8dd06752e7278d18165a21e28b5064d897a1b6f10350d857b339d6bd9e08dd140710433479940bec9ba151b619196780dc6e49dd8fbff6df8 + languageName: node + linkType: hard + +"vite-node@npm:1.6.1": + version: 1.6.1 + resolution: "vite-node@npm:1.6.1" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.3.4" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + vite: "npm:^5.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10c0/4d96da9f11bd0df8b60c46e65a740edaad7dd2d1aff3cdb3da5714ea8c10b5f2683111b60bfe45545c7e8c1f33e7e8a5095573d5e9ba55f50a845233292c2e02 + languageName: node + linkType: hard + +"vite-tsconfig-paths@npm:^4.3.1": + version: 4.3.2 + resolution: "vite-tsconfig-paths@npm:4.3.2" + dependencies: + debug: "npm:^4.1.1" + globrex: "npm:^0.1.2" + tsconfck: "npm:^3.0.3" + peerDependencies: + vite: "*" + peerDependenciesMeta: + vite: + optional: true + checksum: 10c0/f390ac1d1c3992fc5ac50f9274c1090f8b55ab34a89ea88893db9a6924a3b26c9f64bc1163615150ad100749db73b6b2cf1d57f6cd60df6e762ceb5b8ad30024 + languageName: node + linkType: hard + +"vite@npm:^5.0.0, vite@npm:^5.1.4, vite@npm:^5.1.5": + version: 5.4.17 + resolution: "vite@npm:5.4.17" + dependencies: + esbuild: "npm:^0.21.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.43" + rollup: "npm:^4.20.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/3322bd6d8da30cbc87b1b24cd14fdbca75abb36de81217d1062c8b4c574a1a0d28d11dfe23a3eed08b3d179d2bdc1510e0d7b9f3e1b722a45bd7631c7cec72eb + languageName: node + linkType: hard + +"vitest-canvas-mock@npm:^0.3.3": + version: 0.3.3 + resolution: "vitest-canvas-mock@npm:0.3.3" + dependencies: + jest-canvas-mock: "npm:~2.5.2" + peerDependencies: + vitest: "*" + checksum: 10c0/c14eec888d06e0a91706c2902cba115c6563de132d1b4c0f87897c550345674849cac3f62b36c4b3c1180ed352d25dd53525ccd2267d164ac1926557f58708b9 + languageName: node + linkType: hard + +"vitest@npm:^1.3.1": + version: 1.6.1 + resolution: "vitest@npm:1.6.1" + dependencies: + "@vitest/expect": "npm:1.6.1" + "@vitest/runner": "npm:1.6.1" + "@vitest/snapshot": "npm:1.6.1" + "@vitest/spy": "npm:1.6.1" + "@vitest/utils": "npm:1.6.1" + acorn-walk: "npm:^8.3.2" + chai: "npm:^4.3.10" + debug: "npm:^4.3.4" + execa: "npm:^8.0.1" + local-pkg: "npm:^0.5.0" + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + std-env: "npm:^3.5.0" + strip-literal: "npm:^2.0.0" + tinybench: "npm:^2.5.1" + tinypool: "npm:^0.8.3" + vite: "npm:^5.0.0" + vite-node: "npm:1.6.1" + why-is-node-running: "npm:^2.2.2" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 1.6.1 + "@vitest/ui": 1.6.1 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 10c0/511d27d7f697683964826db2fad7ac303f9bc7eeb59d9422111dc488371ccf1f9eed47ac3a80eb47ca86b7242228ba5ca9cc3613290830d0e916973768cac215 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" + dependencies: + xml-name-validator: "npm:^5.0.0" + checksum: 10c0/8712774c1aeb62dec22928bf1cdfd11426c2c9383a1a63f2bcae18db87ca574165a0fbe96b312b73652149167ac6c7f4cf5409f2eb101d9c805efe0e4bae798b + languageName: node + linkType: hard + +"walk-up-path@npm:^1.0.0": + version: 1.0.0 + resolution: "walk-up-path@npm:1.0.0" + checksum: 10c0/e2dc2346acfeec355c8af17095aa8689b57906f0f3ad5f3ff1b0a29a36ee41904608e9a3545a933a2cfa22f20905e2bbe5dd6469cb31b110c8e129c23103e985 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"webpack-virtual-modules@npm:^0.6.2": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 10c0/5ffbddf0e84bf1562ff86cf6fcf039c74edf09d78358a6904a09bbd4484e8bb6812dc385fe14330b715031892dcd8423f7a88278b57c9f5002c84c2860179add + languageName: node + linkType: hard + +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/273b5f441c2f7fda3368a496c3009edbaa5e43b71b09728f90425e7f487e5cef9eb2b846a31bd760dd8077739c26faf6b5ca43a5f24033172b003b72cf61a93e + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: 10c0/a773cdc8126b514d790bdae7052e8bf242970cebd84af62fb2f35a33411e78e981f6c0ab9ed1fe6ec5071b09d5340ac9178e05b52d35a9c4bcf558ba1b1551df + languageName: node + linkType: hard + +"whatwg-url@npm:^14.0.0": + version: 14.2.0 + resolution: "whatwg-url@npm:14.2.0" + dependencies: + tr46: "npm:^5.1.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f746fc2f4c906607d09537de1227b13f9494c171141e5427ed7d2c0dd0b6a48b43d8e71abaae57d368d0c06b673fd8ec63550b32ad5ed64990c7b0266c2b4272 + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2, which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.2.1" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + languageName: node + linkType: hard + +"which@npm:^1.2.9": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: "npm:^2.0.0" + bin: + which: ./bin/which + checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + +"why-is-node-running@npm:^2.2.2": + version: 2.3.0 + resolution: "why-is-node-running@npm:2.3.0" + dependencies: + siginfo: "npm:^2.0.0" + stackback: "npm:0.0.2" + bin: + why-is-node-running: cli.js + checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 + languageName: node + linkType: hard + +"widest-line@npm:^4.0.1": + version: 4.0.1 + resolution: "widest-line@npm:4.0.1" + dependencies: + string-width: "npm:^5.0.1" + checksum: 10c0/7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "wrap-ansi@npm:3.0.1" + dependencies: + string-width: "npm:^2.1.1" + strip-ansi: "npm:^4.0.0" + checksum: 10c0/ad6fed8f242c26755badaf452da154122d0d862f8b7aab56e758466857f230efafdc5fbffca026650b947ac3fc0eb563df5c05b9e2190a52a4a68f4eef3d4555 + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^3.0.3": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: "npm:^0.1.4" + is-typedarray: "npm:^1.0.0" + signal-exit: "npm:^3.0.2" + typedarray-to-buffer: "npm:^3.1.5" + checksum: 10c0/7fb67affd811c7a1221bed0c905c26e28f0041e138fb19ccf02db57a0ef93ea69220959af3906b920f9b0411d1914474cdd90b93a96e5cd9e8368d9777caac0e + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.0, write-file-atomic@npm:^4.0.1": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"ws@npm:^8.18.0, ws@npm:^8.2.3": + version: 8.18.1 + resolution: "ws@npm:8.18.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/e498965d6938c63058c4310ffb6967f07d4fa06789d3364829028af380d299fe05762961742971c764973dce3d1f6a2633fe8b2d9410c9b52e534b4b882a99fa + languageName: node + linkType: hard + +"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": + version: 5.1.0 + resolution: "xdg-basedir@npm:5.1.0" + checksum: 10c0/c88efabc71ffd996ba9ad8923a8cc1c7c020a03e2c59f0ffa72e06be9e724ad2a0fccef488757bc6ed3d8849d753dd25082d1035d95cb179e79eae4d034d0b80 + languageName: node + linkType: hard + +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 10c0/3fcf44e7b73fb18be917fdd4ccffff3639373c7cb83f8fc35df6001fecba7942f1dbead29d91ebb8315e2f2ff786b508f0c9dc0215b6353f9983c6b7d62cb1f5 + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yaml@npm:^2.1.3, yaml@npm:^2.2.2": + version: 2.7.1 + resolution: "yaml@npm:2.7.1" + bin: + yaml: bin.mjs + checksum: 10c0/ee2126398ab7d1fdde566b4013b68e36930b9e6d8e68b6db356875c99614c10d678b6f45597a145ff6d63814961221fc305bf9242af8bf7450177f8a68537590 + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.2.1 + resolution: "yocto-queue@npm:1.2.1" + checksum: 10c0/5762caa3d0b421f4bdb7a1926b2ae2189fc6e4a14469258f183600028eb16db3e9e0306f46e8ebf5a52ff4b81a881f22637afefbef5399d6ad440824e9b27f9f + languageName: node + linkType: hard + +"yoctocolors-cjs@npm:^2.1.2": + version: 2.1.2 + resolution: "yoctocolors-cjs@npm:2.1.2" + checksum: 10c0/a0e36eb88fea2c7981eab22d1ba45e15d8d268626e6c4143305e2c1628fa17ebfaa40cd306161a8ce04c0a60ee0262058eab12567493d5eb1409780853454c6f + languageName: node + linkType: hard

    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 + + + + + #ddee6d + + + diff --git a/webui/public/favicon-16x16.png b/webui/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..3d57b6754a58210a38b166aa1dc7a129c944f2eb GIT binary patch literal 664 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 literal 0 HcmV?d00001 diff --git a/webui/public/manifest.json b/webui/public/manifest.json new file mode 100644 index 000000000..73d155b68 --- /dev/null +++ b/webui/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "Traefik Proxy", + "name": "Traefik Proxy", + "icons": [ + { + "src": "favicon-16x16.png", + "sizes": "16x16", + "type": "image/png" + }, + { + "src": "favicon-32x32.png", + "sizes": "32x32", + "type": "image/png" + }, + { + "src": "favicon-96x96.png", + "sizes": "96x96", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#ddee6d", + "background_color": "#091827" +} diff --git a/webui/public/mockServiceWorker.js b/webui/public/mockServiceWorker.js new file mode 100644 index 000000000..34057e898 --- /dev/null +++ b/webui/public/mockServiceWorker.js @@ -0,0 +1,307 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.7.3' +const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = 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 + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && 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 + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + 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)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [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. +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) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = 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 requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + 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: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +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].concat(transferrables.filter(Boolean)), + ) + }) +} + +async 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 +} diff --git a/webui/public/providers/consul.svg b/webui/public/providers/consul.svg deleted file mode 100644 index b9b33d374..000000000 --- a/webui/public/providers/consul.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/consulcatalog.svg b/webui/public/providers/consulcatalog.svg deleted file mode 100644 index a692dede2..000000000 --- a/webui/public/providers/consulcatalog.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/webui/public/providers/docker.svg b/webui/public/providers/docker.svg deleted file mode 100644 index db4a729e6..000000000 --- a/webui/public/providers/docker.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/ecs.svg b/webui/public/providers/ecs.svg deleted file mode 100644 index aad9305b5..000000000 --- a/webui/public/providers/ecs.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/webui/public/providers/etcd.svg b/webui/public/providers/etcd.svg deleted file mode 100644 index 3c270f632..000000000 --- a/webui/public/providers/etcd.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/file.svg b/webui/public/providers/file.svg deleted file mode 100644 index bf4d1cae1..000000000 --- a/webui/public/providers/file.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/http.svg b/webui/public/providers/http.svg deleted file mode 100644 index 338e1afca..000000000 --- a/webui/public/providers/http.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/webui/public/providers/hub.svg b/webui/public/providers/hub.svg deleted file mode 100644 index 1df28d7a8..000000000 --- a/webui/public/providers/hub.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/webui/public/providers/internal.svg b/webui/public/providers/internal.svg deleted file mode 100644 index ce0fc3496..000000000 --- a/webui/public/providers/internal.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/webui/public/providers/kubernetes.svg b/webui/public/providers/kubernetes.svg deleted file mode 100644 index b6670fe5d..000000000 --- a/webui/public/providers/kubernetes.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/kubernetescrd.svg b/webui/public/providers/kubernetescrd.svg deleted file mode 100644 index b6670fe5d..000000000 --- a/webui/public/providers/kubernetescrd.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/kubernetesgateway.svg b/webui/public/providers/kubernetesgateway.svg deleted file mode 100644 index b6670fe5d..000000000 --- a/webui/public/providers/kubernetesgateway.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/kubernetesingress.svg b/webui/public/providers/kubernetesingress.svg deleted file mode 100644 index b6670fe5d..000000000 --- a/webui/public/providers/kubernetesingress.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/marathon.svg b/webui/public/providers/marathon.svg deleted file mode 100644 index 0d65d89b6..000000000 --- a/webui/public/providers/marathon.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/webui/public/providers/nomad.svg b/webui/public/providers/nomad.svg deleted file mode 100755 index e71d75007..000000000 --- a/webui/public/providers/nomad.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/webui/public/providers/plugin.svg b/webui/public/providers/plugin.svg deleted file mode 100644 index 5a6a63769..000000000 --- a/webui/public/providers/plugin.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - plugin - - - - - - - \ No newline at end of file diff --git a/webui/public/providers/rancher.svg b/webui/public/providers/rancher.svg deleted file mode 100644 index 7d9a4e776..000000000 --- a/webui/public/providers/rancher.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/redis.svg b/webui/public/providers/redis.svg deleted file mode 100644 index e0944a282..000000000 --- a/webui/public/providers/redis.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/webui/public/providers/rest.svg b/webui/public/providers/rest.svg deleted file mode 100644 index 9a877e0d4..000000000 --- a/webui/public/providers/rest.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/swarm.svg b/webui/public/providers/swarm.svg deleted file mode 100644 index db4a729e6..000000000 --- a/webui/public/providers/swarm.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/webui/public/providers/zookeeper.svg b/webui/public/providers/zookeeper.svg deleted file mode 100644 index 0b9f1be63..000000000 --- a/webui/public/providers/zookeeper.svg +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/webui/public/robots.txt b/webui/public/robots.txt new file mode 100644 index 000000000..1f53798bb --- /dev/null +++ b/webui/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / diff --git a/webui/public/traefiklabs-hub-button-app/main-v1.js b/webui/public/traefiklabs-hub-button-app/main-v1.js index 2c912be53..9a90cc6b2 100644 --- a/webui/public/traefiklabs-hub-button-app/main-v1.js +++ b/webui/public/traefiklabs-hub-button-app/main-v1.js @@ -1,3 +1,3 @@ /* eslint-disable */ -!function(){var e={110:function(e,t,n){"use strict";var r=n(441),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},l={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function u(e){return r.isMemo(e)?o:i[e.$$typeof]||a}i[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[r.Memo]=o;var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var o=c(n);f&&(o=o.concat(f(n)));for(var i=u(t),m=u(n),g=0;g