From f50dff99f34f4bf40099f772403d8e3f3b92ab99 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sun, 16 Feb 2025 10:48:16 +0100 Subject: [PATCH] base structure transfered from ff admin --- .dockerignore | 5 + .env.example | 5 + .env.production | 5 + .eslintrc.cjs | 15 + .gitignore | 32 + .prettierrc | 5 + Dockerfile | 25 + README.md | 75 +- entrypoint.sh | 27 + env.d.ts | 1 + index.html | 12 + nginx.conf | 16 + package-lock.json | 10399 ++++++++++++++++ package.json | 76 + postcss.config.js | 6 + public/Logo.png | Bin 0 -> 66416 bytes public/favicon.ico | Bin 0 -> 9662 bytes public/favicon.png | Bin 0 -> 24919 bytes src/App.vue | 40 + src/components/ContextMenu.vue | 48 + src/components/FailureXMark.vue | 61 + src/components/Footer.vue | 43 + src/components/FormBottomBar.vue | 18 + src/components/Header.vue | 54 + src/components/Modal.vue | 32 + src/components/Notification.vue | 130 + src/components/Pagination.vue | 265 + src/components/Spinner.vue | 3 + src/components/SuccessCheckmark.vue | 60 + src/components/TextCopy.vue | 44 + src/components/UserMenu.vue | 55 + src/components/admin/ForceSearchSelect.vue | 182 + src/components/admin/Permission.vue | 198 + src/components/admin/RoutingLink.vue | 36 + src/components/admin/TopLevelLink.vue | 43 + .../configuration/force/CreateForceModal.vue | 88 + .../configuration/force/DeleteForceModal.vue | 87 + .../configuration/force/ForceListItem.vue | 31 + .../management/backup/BackupListItem.vue | 58 + .../management/backup/CreateBackupModal.vue | 67 + .../management/backup/RestoreBackupModal.vue | 112 + .../management/backup/UploadBackupModal.vue | 97 + .../admin/management/role/CreateRoleModal.vue | 72 + .../admin/management/role/DeleteRoleModal.vue | 75 + .../admin/management/role/RoleListItem.vue | 54 + .../admin/management/user/DeleteUserModal.vue | 75 + .../admin/management/user/InviteListItem.vue | 48 + .../admin/management/user/InviteUserModal.vue | 95 + .../admin/management/user/UserListItem.vue | 85 + src/config.ts | 15 + src/globalProperties.config.ts | 13 + src/helpers/piniaReset.ts | 9 + src/helpers/quillConfig.ts | 8 + src/layouts/FullContent.vue | 7 + src/layouts/Sidebar.vue | 41 + src/main.css | 151 + src/main.ts | 21 + src/router/accountGuard.ts | 6 + src/router/adminGuard.ts | 37 + src/router/authGuard.ts | 83 + src/router/backupGuard.ts | 19 + src/router/index.ts | 321 + src/router/setupGuard.ts | 16 + src/serverCom.ts | 105 + src/shims-vue.d.ts | 5 + src/stores/ability.ts | 81 + src/stores/account.ts | 29 + src/stores/admin/configuration/forces.ts | 89 + src/stores/admin/management/backup.ts | 57 + src/stores/admin/management/invite.ts | 41 + src/stores/admin/management/role.ts | 57 + src/stores/admin/management/user.ts | 60 + src/stores/admin/navigation.ts | 118 + src/stores/auth.ts | 17 + src/stores/context-menu.ts | 32 + src/stores/modal.ts | 23 + src/stores/notification.ts | 48 + src/templates/Main.vue | 74 + src/templates/Sidebar.vue | 75 + src/types/backupTypes.ts | 3 + src/types/permissionTypes.ts | 33 + .../admin/configuration/force.models.ts | 19 + .../admin/management/backup.models.ts | 8 + .../admin/management/invite.models.ts | 13 + .../admin/management/role.models.ts | 7 + .../admin/management/user.models.ts | 29 + src/viewmodels/version.models.ts | 21 + src/views/Login.vue | 92 + src/views/NoPermission.vue | 32 + src/views/RouterView.vue | 7 + src/views/account/Administration.vue | 159 + src/views/account/LoginData.vue | 94 + src/views/account/Me.vue | 126 + src/views/account/Permission.vue | 31 + src/views/account/View.vue | 57 + src/views/account/ViewSelect.vue | 3 + src/views/admin/View.vue | 73 + src/views/admin/ViewSelect.vue | 3 + src/views/admin/configuration/force/Force.vue | 69 + .../admin/management/backup/BackupRouting.vue | 78 + .../management/backup/GeneratedBackup.vue | 48 + .../management/backup/UploadedBackup.vue | 48 + src/views/admin/management/role/Role.vue | 52 + src/views/admin/management/role/RoleEdit.vue | 116 + .../management/role/RoleEditPermission.vue | 87 + src/views/admin/management/user/Invite.vue | 39 + src/views/admin/management/user/User.vue | 56 + src/views/admin/management/user/UserEdit.vue | 135 + .../management/user/UserEditPermission.vue | 88 + .../admin/management/user/UserEditRoles.vue | 149 + .../management/version/VersionDisplay.vue | 151 + src/views/invite/Verify.vue | 116 + src/views/notFound.vue | 282 + src/views/reset/Reset.vue | 114 + src/views/reset/Start.vue | 69 + src/views/setup/Setup.vue | 80 + src/views/setup/Verify.vue | 115 + tailwind.config.js | 18 + tsconfig.app.json | 16 + tsconfig.json | 11 + tsconfig.node.json | 13 + vite.config.ts | 61 + 122 files changed, 17537 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 .env.production create mode 100644 .eslintrc.cjs create mode 100644 .prettierrc create mode 100644 Dockerfile create mode 100644 entrypoint.sh create mode 100644 env.d.ts create mode 100644 index.html create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/Logo.png create mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 100644 src/App.vue create mode 100644 src/components/ContextMenu.vue create mode 100644 src/components/FailureXMark.vue create mode 100644 src/components/Footer.vue create mode 100644 src/components/FormBottomBar.vue create mode 100644 src/components/Header.vue create mode 100644 src/components/Modal.vue create mode 100644 src/components/Notification.vue create mode 100644 src/components/Pagination.vue create mode 100644 src/components/Spinner.vue create mode 100644 src/components/SuccessCheckmark.vue create mode 100644 src/components/TextCopy.vue create mode 100644 src/components/UserMenu.vue create mode 100644 src/components/admin/ForceSearchSelect.vue create mode 100644 src/components/admin/Permission.vue create mode 100644 src/components/admin/RoutingLink.vue create mode 100644 src/components/admin/TopLevelLink.vue create mode 100644 src/components/admin/configuration/force/CreateForceModal.vue create mode 100644 src/components/admin/configuration/force/DeleteForceModal.vue create mode 100644 src/components/admin/configuration/force/ForceListItem.vue create mode 100644 src/components/admin/management/backup/BackupListItem.vue create mode 100644 src/components/admin/management/backup/CreateBackupModal.vue create mode 100644 src/components/admin/management/backup/RestoreBackupModal.vue create mode 100644 src/components/admin/management/backup/UploadBackupModal.vue create mode 100644 src/components/admin/management/role/CreateRoleModal.vue create mode 100644 src/components/admin/management/role/DeleteRoleModal.vue create mode 100644 src/components/admin/management/role/RoleListItem.vue create mode 100644 src/components/admin/management/user/DeleteUserModal.vue create mode 100644 src/components/admin/management/user/InviteListItem.vue create mode 100644 src/components/admin/management/user/InviteUserModal.vue create mode 100644 src/components/admin/management/user/UserListItem.vue create mode 100644 src/config.ts create mode 100644 src/globalProperties.config.ts create mode 100644 src/helpers/piniaReset.ts create mode 100644 src/helpers/quillConfig.ts create mode 100644 src/layouts/FullContent.vue create mode 100644 src/layouts/Sidebar.vue create mode 100644 src/main.css create mode 100644 src/main.ts create mode 100644 src/router/accountGuard.ts create mode 100644 src/router/adminGuard.ts create mode 100644 src/router/authGuard.ts create mode 100644 src/router/backupGuard.ts create mode 100644 src/router/index.ts create mode 100644 src/router/setupGuard.ts create mode 100644 src/serverCom.ts create mode 100644 src/shims-vue.d.ts create mode 100644 src/stores/ability.ts create mode 100644 src/stores/account.ts create mode 100644 src/stores/admin/configuration/forces.ts create mode 100644 src/stores/admin/management/backup.ts create mode 100644 src/stores/admin/management/invite.ts create mode 100644 src/stores/admin/management/role.ts create mode 100644 src/stores/admin/management/user.ts create mode 100644 src/stores/admin/navigation.ts create mode 100644 src/stores/auth.ts create mode 100644 src/stores/context-menu.ts create mode 100644 src/stores/modal.ts create mode 100644 src/stores/notification.ts create mode 100644 src/templates/Main.vue create mode 100644 src/templates/Sidebar.vue create mode 100644 src/types/backupTypes.ts create mode 100644 src/types/permissionTypes.ts create mode 100644 src/viewmodels/admin/configuration/force.models.ts create mode 100644 src/viewmodels/admin/management/backup.models.ts create mode 100644 src/viewmodels/admin/management/invite.models.ts create mode 100644 src/viewmodels/admin/management/role.models.ts create mode 100644 src/viewmodels/admin/management/user.models.ts create mode 100644 src/viewmodels/version.models.ts create mode 100644 src/views/Login.vue create mode 100644 src/views/NoPermission.vue create mode 100644 src/views/RouterView.vue create mode 100644 src/views/account/Administration.vue create mode 100644 src/views/account/LoginData.vue create mode 100644 src/views/account/Me.vue create mode 100644 src/views/account/Permission.vue create mode 100644 src/views/account/View.vue create mode 100644 src/views/account/ViewSelect.vue create mode 100644 src/views/admin/View.vue create mode 100644 src/views/admin/ViewSelect.vue create mode 100644 src/views/admin/configuration/force/Force.vue create mode 100644 src/views/admin/management/backup/BackupRouting.vue create mode 100644 src/views/admin/management/backup/GeneratedBackup.vue create mode 100644 src/views/admin/management/backup/UploadedBackup.vue create mode 100644 src/views/admin/management/role/Role.vue create mode 100644 src/views/admin/management/role/RoleEdit.vue create mode 100644 src/views/admin/management/role/RoleEditPermission.vue create mode 100644 src/views/admin/management/user/Invite.vue create mode 100644 src/views/admin/management/user/User.vue create mode 100644 src/views/admin/management/user/UserEdit.vue create mode 100644 src/views/admin/management/user/UserEditPermission.vue create mode 100644 src/views/admin/management/user/UserEditRoles.vue create mode 100644 src/views/admin/management/version/VersionDisplay.vue create mode 100644 src/views/invite/Verify.vue create mode 100644 src/views/notFound.vue create mode 100644 src/views/reset/Reset.vue create mode 100644 src/views/reset/Start.vue create mode 100644 src/views/setup/Setup.vue create mode 100644 src/views/setup/Verify.vue create mode 100644 tailwind.config.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7e495ed --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +# NodeJs +node_modules/ +dist/ +.git/ +.env diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..937afce --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +VITE_SERVER_ADDRESS = backend_url #ohne pfad +VITE_APP_NAME_OVERWRITE = Mitgliederverwaltung # overwrites FF Operation +VITE_IMPRINT_LINK = https://mywebsite-imprint-url +VITE_PRIVACY_LINK = https://mywebsite-privacy-url +VITE_CUSTOM_LOGIN_MESSAGE = betrieben von xy diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..6696bbd --- /dev/null +++ b/.env.production @@ -0,0 +1,5 @@ +VITE_SERVER_ADDRESS = __SERVERADDRESS__ +VITE_APP_NAME_OVERWRITE = __APPNAMEOVERWRITE__ +VITE_IMPRINT_LINK = __IMPRINTLINK__ +VITE_PRIVACY_LINK = __PRIVACYLINK__ +VITE_CUSTOM_LOGIN_MESSAGE = __CUSTOMLOGINMESSAGE__ \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..6f40582 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,15 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier/skip-formatting' + ], + parserOptions: { + ecmaVersion: 'latest' + } +} diff --git a/.gitignore b/.gitignore index a19f004..9a2b281 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,35 @@ docs/_book # TODO: where does this rule come from? test/ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo + +.env \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..c4795ed --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "printWidth": 120 +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ce8bb1b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM node:18-alpine AS build + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . /app + +RUN npm run build-only + +FROM nginx:stable-alpine AS prod + +WORKDIR /app + +COPY --from=build /app/dist /usr/share/nginx/html +COPY ./nginx.conf /etc/nginx/nginx.conf + +EXPOSE 80 + +COPY ./entrypoint.sh /entrypoint.sh +RUN apk add --no-cache dos2unix +RUN dos2unix /entrypoint.sh && chmod +x /entrypoint.sh +ENTRYPOINT [ "/entrypoint.sh" ] \ No newline at end of file diff --git a/README.md b/README.md index 28108f0..016a602 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,74 @@ -# ff-operation +# FF Operation -Einsatzverwaltung für Feuerwehren und Vereine. \ No newline at end of file +Einsatzverwaltung für Feuerwehren und Vereine. + +## Einleitung + +Dieses Repository dient hauptsächlich zur Verwaltung Einsätzen oder Übungen der Feuerwehr oder Arbeitseinsätzen eines Vereins. Es ist ein Frontend-Client, der auf die Daten des [ff-operation-server Backends](https://forgejo.jk-effects.cloud/Ehrenamt/ff-operation-server) zugreift. Die Webapp bietet eine Möglichkeit Anwesenheiten und Zeiten zu verwalten. Benutzer können eingeladen und Rollen zugewiesen werden. + +Eine Demo dieser Seite finden Sie unter [https://operation-demo.ff-admin.de](https://operation-demo.ff-admin.de). + +## Installation + +### Docker Compose Setup + +Um den Container hochzufahren, erstellen Sie eine `docker-compose.yml` Datei mit folgendem Inhalt: + +```yaml +version: "3" + +services: + ff-operation-app: + image: docker.registry.jk-effects.cloud/ehrenamt/ff-operation/app:latest + container_name: ff_operation + restart: unless-stopped + + #environment: + # - SERVERADDRESS= # wichtig: ohne Pfad + # - APPNAMEOVERWRITE= # ersetzt den Namen FF-operation auf der Login-Seite und sonstigen Positionen in der Oberfläche + # - IMPRINTLINK= + # - PRIVACYLINK= + # - CUSTOMLOGINMESSAGE=betrieben von xy + #volumes: + # - /favicon.ico:/usr/share/nginx/html/favicon.ico # 48x48 px Auflösung + # - /favicon.png:/usr/share/nginx/html/favicon.png # 512x512 px Auflösung - wird als pwa Icon genutzt + # - /Logo.png:/usr/share/nginx/html/Logo.png +``` + +Wenn keine Server-Adresse angegeben wird, wird versucht das Backend unter der URL des Frontends zu erreichen. Dazu muss das Backend auf der gleichen URL wie das Frontend laufen. Zur Unterscheidung von Frontend und Backend bei gleicher URL müssen alle Anfragen mit dem PathPrefix `/api` an das Backend weitergeleitet werden. + +Führen Sie dann den folgenden Befehl im Verzeichnis der compose-Datei aus, um den Container zu starten: + +```sh +docker-compose up -d +``` + +### Manuelle Installation + +Klonen Sie dieses Repository und installieren Sie die Abhängigkeiten: + +```sh +git clone https://forgejo.jk-effects.cloud/Ehrenamt/ff-operation.git +cd ff-operation +npm install +npm run build +npm run start +``` + +### Konfiguration + +Ein eigenes Favicon und Logo kann über das verwenden Volume ausgetauscht werden. Es dürfen jedoch nur einzelne Dateien ausgetauscht werden. + +## Einrichtung + +1. **Admin Benutzer erstellen**: Erstellen Sie einen Admin Benutzer unter dem Pfad /setup, um auf die Einsatzverwaltung Zugriff zu erhalten. Nach der Erstellung des ersten Benutzers wird der Pfad automatisch geblockt. + +2. **Rollen und Berechtigungen**: Unter `Benutzer > Rollen` können die Rollen und Berechtigungen für die Benutzer erstellt und angepasst werden. + +3. **Nutzer einladen**: Unter `Benutzer > Benutzer` können weitere Nutzer eingeladen werden. Diese erhalten dann eine E-Mail mit einem Link, um ein TOTP zu erhalten. + +## Fragen und Wünsche + +Bei Fragen, Anregungen oder Wünschen können Sie sich gerne melden.\ +Wir freuen uns über Ihr Feedback und helfen Ihnen gerne weiter.\ +Schreiben Sie dafür eine Mail an julian.krauser@jk-effects.com. diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..9c346c9 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +keys="SERVERADDRESS APPNAMEOVERWRITE IMPRINTLINK PRIVACYLINK CUSTOMLOGINMESSAGE" +files="/usr/share/nginx/html/assets/config-*.js /usr/share/nginx/html/manifest.webmanifest" + +# Replace env vars in files served by NGINX +for file in $files +do + echo "Processing $file ..."; + for key in $keys + do + # Get environment variable + value=$(eval echo "\$$key") + + # Set default value for APPNAMEOVERWRITE if empty + if [ "$key" = "APPNAMEOVERWRITE" ] && [ -z "$value" ]; then + value="FF Operation" + fi + + echo "replace $key by $value" + + # replace __[variable_name]__ value with environment variable + sed -i 's|__'"$key"'__|'"$value"'|g' $file + done +done + +nginx -g 'daemon off;' \ No newline at end of file diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/index.html b/index.html new file mode 100644 index 0000000..35046b4 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + + + +
+ + + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..469c2b7 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,16 @@ +worker_processes 4; + +events { worker_connections 1024; } + +http { + include mime.types; + + server { + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f0cae47 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10399 @@ +{ + "name": "ff-operation", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ff-operation", + "version": "0.0.0", + "license": "AGPL-3.0-only", + "dependencies": { + "@headlessui/vue": "^1.7.13", + "@heroicons/vue": "^2.1.5", + "@vueup/vue-quill": "^1.2.0", + "axios": "^1.7.9", + "jwt-decode": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "lodash.difference": "^4.5.0", + "lodash.differencewith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "nprogress": "^0.2.0", + "pinia": "^2.3.0", + "qrcode": "^1.5.3", + "qs": "^6.11.2", + "socket.io-client": "^4.5.0", + "uuid": "^9.0.0", + "vue": "^3.4.29", + "vue-router": "^4.3.3" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.8.0", + "@tsconfig/node20": "^20.1.4", + "@types/eslint": "~9.6.0", + "@types/lodash.clonedeep": "^4.5.9", + "@types/lodash.difference": "^4.5.9", + "@types/lodash.differencewith": "^4.5.9", + "@types/lodash.isequal": "^4.5.8", + "@types/node": "^20.14.5", + "@types/nprogress": "^0.2.0", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.11", + "@types/uuid": "^9.0.3", + "@vite-pwa/assets-generator": "^0.2.2", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "@vue/tsconfig": "^0.5.1", + "autoprefixer": "^10.4.20", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.23.0", + "npm-run-all2": "^6.2.0", + "postcss": "^8.4.41", + "prettier": "^3.2.5", + "tailwindcss": "^3.4.10", + "typescript": "~5.4.0", + "vite": "^5.3.1", + "vite-plugin-pwa": "^0.17.4", + "vite-plugin-vue-devtools": "^7.6.8", + "vue-tsc": "^2.0.21" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@canvas/image-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", + "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==", + "dev": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@headlessui/vue": { + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.22.tgz", + "integrity": "sha512-Hoffjoolq1rY+LOfJ+B/OvkhuBXXBFgd8oBlN+l1TApma2dB0En0ucFZrwQtb33SmcCqd32EQd0y07oziXWNYg==", + "dependencies": { + "@tanstack/vue-virtual": "^3.0.0-beta.60" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@heroicons/vue": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.1.5.tgz", + "integrity": "sha512-IpqR72sFqFs55kyKfFS7tN+Ww6odFNeH/7UxycIOrlVYfj4WUGAdzQtLBnJspucSeqWFQsKM0g0YrgU655BEfA==", + "license": "MIT", + "peerDependencies": { + "vue": ">= 3" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.9.0.tgz", + "integrity": "sha512-Saga7/QRGej/IDCVP5BgJ1oDqlDT2d9rQyoflS3fgMS8ntJ8JGw/LBqK2GorHa06+VrNFc0tGz65XQHJQJetFQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-virtual": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.9.0.tgz", + "integrity": "sha512-MVJhQh57OR3wg2pWL/25IN1/nITFNnpFaz4gOvRCqnxhsH0WRePBBKvixOaFTgiyYfmrjFbb4d0nRMTvsjZZdQ==", + "dependencies": { + "@tanstack/virtual-core": "3.9.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", + "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash.clonedeep": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", + "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.difference": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@types/lodash.difference/-/lodash.difference-4.5.9.tgz", + "integrity": "sha512-MNlajcjtwzLpXk+cw38UkBvEXJNEPhULgS8A4EHwtUwT7f7yFH/SFKD0iw5Rfilwh60yJIgFo0vsMr7xsa5+aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.differencewith": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@types/lodash.differencewith/-/lodash.differencewith-4.5.9.tgz", + "integrity": "sha512-nMaREKoe7J3WvnsO7HDRxvnPT3mWmZD3EAECpy7gBGJ6S5nQ66uVlkRe+ZXs6261ZNb2fH9Ny4oUUiSOCmTnLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.isequal": { + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.8.tgz", + "integrity": "sha512-uput6pg4E/tj2LGxCZo9+y27JNyB2OZuuI/T5F+ylVDYuqICLG2/ktjxx0v6GvVntAf8TvEzeQLcV0ffRirXuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz", + "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/nprogress": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz", + "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==", + "dev": true + }, + "node_modules/@types/qrcode": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", + "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vite-pwa/assets-generator": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@vite-pwa/assets-generator/-/assets-generator-0.2.4.tgz", + "integrity": "sha512-DXyPLPR/IpbZPSpo1amZEPghY/ziIwpTUKNaz0v1xG+ELzCXmrVQhVzEMqr2JLSqRxjc+UzKfGJA/YdUuaao3w==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "sharp": "^0.32.6", + "sharp-ico": "^0.1.5", + "unconfig": "^0.3.11" + }, + "bin": { + "pwa-assets-generator": "bin/pwa-assets-generator.mjs" + }, + "engines": { + "node": ">=16.14.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz", + "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", + "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.0-alpha.18" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", + "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", + "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.0-alpha.18", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==" + }, + "node_modules/@vue/devtools-core": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.6.8.tgz", + "integrity": "sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.6.8", + "@vue/devtools-shared": "^7.6.8", + "mitt": "^3.0.1", + "nanoid": "^5.0.9", + "pathe": "^1.1.2", + "vite-hot-client": "^0.2.4" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-core/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.6.8.tgz", + "integrity": "sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.6.8", + "birpc": "^0.2.19", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.6.8.tgz", + "integrity": "sha512-9MBPO5Z3X1nYGFqTJyohl6Gmf/J7UNN1oicHdyzBVZP4jnhZ4c20MgtaHDIzWmHDHCMYVS5bwKxT3jxh7gOOKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", + "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "peerDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": ">=4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz", + "integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.0-alpha.18", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vue/tsconfig": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", + "dev": true + }, + "node_modules/@vueup/vue-quill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.2.0.tgz", + "integrity": "sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==", + "license": "MIT", + "dependencies": { + "quill": "^1.3.7", + "quill-delta": "^4.2.2" + }, + "peerDependencies": { + "vue": "^3.2.41" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.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" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", + "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", + "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", + "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", + "dev": true, + "optional": true, + "dependencies": { + "streamx": "^2.18.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/birpc": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", + "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-bmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/decode-bmp/-/decode-bmp-0.2.1.tgz", + "integrity": "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==", + "dev": true, + "dependencies": { + "@canvas/image-data": "^1.0.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/decode-ico": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/decode-ico/-/decode-ico-0.4.1.tgz", + "integrity": "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==", + "dev": true, + "dependencies": { + "@canvas/image-data": "^1.0.0", + "decode-bmp": "^0.2.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.8.tgz", + "integrity": "sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", + "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "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" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz", + "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==", + "dev": true, + "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.0", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/ico-endec": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ico-endec/-/ico-endec-0.1.6.tgz", + "integrity": "sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==", + "dev": true + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT" + }, + "node_modules/lodash.differencewith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", + "integrity": "sha512-/8JFjydAS+4bQuo3CpLMBv7WxGFyk7/etOAsrQUCu0a9QVDemxv0YQ0rFyeZvqlUD314SERfNlgnlqqHmaQ0Cg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-all2": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz", + "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-package-json-fast": "^3.0.2", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || ^16.13.0 || >=18.0.0", + "npm": ">= 8" + } + }, + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "license": "BSD-3-Clause" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinia": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.0.tgz", + "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "license": "BSD-3-Clause", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-4.2.2.tgz", + "integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==", + "license": "MIT", + "dependencies": { + "fast-diff": "1.2.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + } + }, + "node_modules/quill-delta/node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "license": "Apache-2.0" + }, + "node_modules/quill/node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "license": "Apache-2.0" + }, + "node_modules/quill/node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "license": "MIT", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sharp": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/sharp-ico": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/sharp-ico/-/sharp-ico-0.1.5.tgz", + "integrity": "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q==", + "dev": true, + "dependencies": { + "decode-ico": "*", + "ico-endec": "*", + "sharp": "*" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamx": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", + "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "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", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "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" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", + "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-data-view": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", + "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unconfig": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.13.tgz", + "integrity": "sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", + "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.40", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "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 + } + } + }, + "node_modules/vite-hot-client": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz", + "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", + "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.3", + "debug": "^4.3.7", + "error-stack-parser-es": "^0.1.5", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.1.1", + "sirv": "^3.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite-plugin-pwa": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.17.5.tgz", + "integrity": "sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "pretty-bytes": "^6.1.1", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + } + }, + "node_modules/vite-plugin-vue-devtools": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.6.8.tgz", + "integrity": "sha512-32aIps8C1Y7UEoqyWf+ES3J1OozsCYMIqTqd+I5qass+R0Tcf8SaA2bX1/rskAzkcKCteVoBjEENmqwTcMebbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-core": "^7.6.8", + "@vue/devtools-kit": "^7.6.8", + "@vue/devtools-shared": "^7.6.8", + "execa": "^9.5.1", + "sirv": "^3.0.0", + "vite-plugin-inspect": "~0.8.9", + "vite-plugin-vue-inspector": "^5.3.1" + }, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", + "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "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" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.3.tgz", + "integrity": "sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==", + "dependencies": { + "@vue/devtools-api": "^6.6.3" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz", + "integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.0-alpha.18", + "@vue/language-core": "2.0.29", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.1.0.tgz", + "integrity": "sha512-rMbgrzueVWDFcEq1610YyDW71z0oAXLfdRHRQcKw4SGihkfOK0JUEvqWHFwA6rJ+6TClnMIn7KQI5PNN1XQXwQ==", + "dev": true, + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.1.0.tgz", + "integrity": "sha512-O36hIfhjej/c5ar95pO67k1GQw0/bw5tKP7CERNgK+JdxBANQhDmIuOXZTNvwb2IHBx9hj2kxvcDyRIh5nzOgQ==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-build": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.1.tgz", + "integrity": "sha512-WdkVdC70VMpf5NBCtNbiwdSZeKVuhTEd5PV3mAwpTQCGAB5XbOny1P9egEgNdetv4srAMmMKjvBk4RD58LpooA==", + "dev": true, + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^2.4.1", + "@rollup/plugin-terser": "^0.4.3", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.1.0", + "workbox-broadcast-update": "7.1.0", + "workbox-cacheable-response": "7.1.0", + "workbox-core": "7.1.0", + "workbox-expiration": "7.1.0", + "workbox-google-analytics": "7.1.0", + "workbox-navigation-preload": "7.1.0", + "workbox-precaching": "7.1.0", + "workbox-range-requests": "7.1.0", + "workbox-recipes": "7.1.0", + "workbox-routing": "7.1.0", + "workbox-strategies": "7.1.0", + "workbox-streams": "7.1.0", + "workbox-sw": "7.1.0", + "workbox-window": "7.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.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 + } + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/workbox-build/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.1.0.tgz", + "integrity": "sha512-iwsLBll8Hvua3xCuBB9h92+/e0wdsmSVgR2ZlvcfjepZWwhd3osumQB3x9o7flj+FehtWM2VHbZn8UJeBXXo6Q==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-core": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.1.0.tgz", + "integrity": "sha512-5KB4KOY8rtL31nEF7BfvU7FMzKT4B5TkbYa2tzkS+Peqj0gayMT9SytSFtNzlrvMaWgv6y/yvP9C0IbpFjV30Q==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.1.0.tgz", + "integrity": "sha512-m5DcMY+A63rJlPTbbBNtpJ20i3enkyOtSgYfv/l8h+D6YbbNiA0zKEkCUaMsdDlxggla1oOfRkyqTvl5Ni5KQQ==", + "dev": true, + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.1.0.tgz", + "integrity": "sha512-FvE53kBQHfVTcZyczeBVRexhh7JTkyQ8HAvbVY6mXd2n2A7Oyz/9fIwnY406ZcDhvE4NFfKGjW56N4gBiqkrew==", + "dev": true, + "dependencies": { + "workbox-background-sync": "7.1.0", + "workbox-core": "7.1.0", + "workbox-routing": "7.1.0", + "workbox-strategies": "7.1.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.1.0.tgz", + "integrity": "sha512-4wyAbo0vNI/X0uWNJhCMKxnPanNyhybsReMGN9QUpaePLTiDpKxPqFxl4oUmBNddPwIXug01eTSLVIFXimRG/A==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.1.0.tgz", + "integrity": "sha512-LyxzQts+UEpgtmfnolo0hHdNjoB7EoRWcF7EDslt+lQGd0lW4iTvvSe3v5JiIckQSB5KTW5xiCqjFviRKPj1zA==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0", + "workbox-routing": "7.1.0", + "workbox-strategies": "7.1.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.1.0.tgz", + "integrity": "sha512-m7+O4EHolNs5yb/79CrnwPR/g/PRzMFYEdo01LqwixVnc/sbzNSvKz0d04OE3aMRel1CwAAZQheRsqGDwATgPQ==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.1.0.tgz", + "integrity": "sha512-NRrk4ycFN9BHXJB6WrKiRX3W3w75YNrNrzSX9cEZgFB5ubeGoO8s/SDmOYVrFYp9HMw6sh1Pm3eAY/1gVS8YLg==", + "dev": true, + "dependencies": { + "workbox-cacheable-response": "7.1.0", + "workbox-core": "7.1.0", + "workbox-expiration": "7.1.0", + "workbox-precaching": "7.1.0", + "workbox-routing": "7.1.0", + "workbox-strategies": "7.1.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.1.0.tgz", + "integrity": "sha512-oOYk+kLriUY2QyHkIilxUlVcFqwduLJB7oRZIENbqPGeBP/3TWHYNNdmGNhz1dvKuw7aqvJ7CQxn27/jprlTdg==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.1.0.tgz", + "integrity": "sha512-/UracPiGhUNehGjRm/tLUQ+9PtWmCbRufWtV0tNrALuf+HZ4F7cmObSEK+E4/Bx1p8Syx2tM+pkIrvtyetdlew==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.1.0.tgz", + "integrity": "sha512-WyHAVxRXBMfysM8ORwiZnI98wvGWTVAq/lOyBjf00pXFvG0mNaVz4Ji+u+fKa/mf1i2SnTfikoYKto4ihHeS6w==", + "dev": true, + "dependencies": { + "workbox-core": "7.1.0", + "workbox-routing": "7.1.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.1.0.tgz", + "integrity": "sha512-Hml/9+/njUXBglv3dtZ9WBKHI235AQJyLBV1G7EFmh4/mUdSQuXui80RtjDeVRrXnm/6QWgRUEHG3/YBVbxtsA==", + "dev": true + }, + "node_modules/workbox-window": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.1.0.tgz", + "integrity": "sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g==", + "dev": true, + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.1.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e307f39 --- /dev/null +++ b/package.json @@ -0,0 +1,76 @@ +{ + "name": "ff-operation", + "version": "0.0.0", + "description": "Feuerwehr/Verein Einsatzverwaltung UI", + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/", + "bnp": "npm run build-only && npm run preview", + "generate-pwa-assets": "pwa-assets-generator --preset minimal-2023 public/fw-wappen.png" + }, + "repository": { + "type": "git", + "url": "https://forgejo.jk-effects.cloud/Ehrenamt/ff-operation.git" + }, + "keywords": [ + "Feuerwehr" + ], + "author": "JK Effects", + "license": "AGPL-3.0-only", + "dependencies": { + "@headlessui/vue": "^1.7.13", + "@heroicons/vue": "^2.1.5", + "@vueup/vue-quill": "^1.2.0", + "axios": "^1.7.9", + "jwt-decode": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "lodash.difference": "^4.5.0", + "lodash.differencewith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "nprogress": "^0.2.0", + "pinia": "^2.3.0", + "qrcode": "^1.5.3", + "qs": "^6.11.2", + "socket.io-client": "^4.5.0", + "uuid": "^9.0.0", + "vue": "^3.4.29", + "vue-router": "^4.3.3" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.8.0", + "@tsconfig/node20": "^20.1.4", + "@types/eslint": "~9.6.0", + "@types/lodash.clonedeep": "^4.5.9", + "@types/lodash.difference": "^4.5.9", + "@types/lodash.differencewith": "^4.5.9", + "@types/lodash.isequal": "^4.5.8", + "@types/node": "^20.14.5", + "@types/nprogress": "^0.2.0", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.11", + "@types/uuid": "^9.0.3", + "@vite-pwa/assets-generator": "^0.2.2", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "@vue/tsconfig": "^0.5.1", + "autoprefixer": "^10.4.20", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.23.0", + "npm-run-all2": "^6.2.0", + "postcss": "^8.4.41", + "prettier": "^3.2.5", + "tailwindcss": "^3.4.10", + "typescript": "~5.4.0", + "vite": "^5.3.1", + "vite-plugin-pwa": "^0.17.4", + "vite-plugin-vue-devtools": "^7.6.8", + "vue-tsc": "^2.0.21" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/Logo.png b/public/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b7d80a7dc7de0787e7c86c9aa9fd974d70ef12 GIT binary patch literal 66416 zcmZU)2UJsA^FB-wv4I5@rCP3Xy;4MazY2nig0zHQL@CmVp$D*mN)rnp5ONWuB!qx8 zNk~8uqEe#5A+!(>C3+|UV+bUKeDS^i3;x!3)?#G=`^=s_GkfNlXYbs*WMd_@MQ)3T zh=|m=vljLuB3scSBBDPxZ4~|`vs9BU{N+ZVx%nlSz18Uh=gyexY8vS3s-0BV6cPC| z8=l>2ecEm}+06CwW1mar=C>?#0-aCwfBNUK1n|#B7d1+*nOFlk-tuhFhrf1PsPW}M zjS8Ir>6_0sJ!>9#mh+Gr``5l~M&#V`D3iztXEu9h`Sn+Q{FWN5j!QKcr6dHunoQ`( ze5AWE{7-aokHyhv{SB1(U`Pwwr2$0osIECODO(zkPG~yyv0guV-8UWE^I361S_iAT z6}34Y-u%xz@;UkV%H;_3Yx>^lkKsFJLS7g3Yh(&8>tOxweEs_KidN7yw&{Si`@KwmiL-Sitz-kfwqKhn|Y~jeIzw)Q3*?~Ek#S@#=VGS#Q`M%{HMCZOZ z={DkK22@9lv{lya!*azjynT+`o7s1Nv>;ChZ5s~zC${!e9cZeueFyCU4xd6qe0#*2 zd#-#o)qn7D_ak$mPd102b%BY9>^<`9NA#TiAM+w22SmiYp2f!|T0wrZL<)}|$M=k1oN=MB5Cc_1jKVK^6op+id)yP1IrREC z;ICW3;pHHWx4irvph6!@2o?PINe=n^pi;c;)D#b$#{9b4>IQ$1y<*N*5sqvIf*`+- zR6AW_s7kqonbaHQ`~z;0x$^YA0pP%i6j)(ovHDy8lPDr`{F$BNUd}kE9^Wk33mkzI zUM1*bC= z&x2Z1g{)Q#wP$|GI^?sam+8ED;}e+yGzk{cR5?cA>i;Gu)e_!#pNS5=M2rLv9Ok;i z7gKn1uEe05s%hN!N0sVuwgE3)*bfmaGbe#FQ|IelbKRqPCO|Wwg9)o=$^Be+*xoWb zWF@T>e~ta3@|Nnii$JdKC?^OwhRJ&IwWWE&V64CjN+-2;_ZnR_*n=i{6 zXDL_r262Oe5X9z*hHy4ma|9{A{`TO<%*r`WV%c~3+Z+fA(y7I65}pvlE}MB?*_xMuc`oZphlNFRXFDj*$0*qW3W#$na*Z{W-b zc1p@pSUvM7A_H{mv-1eY8rOfX9@3JlMrEl*H?PlL)1c_a_wUntp7gx<9Pja0^=MQz z>0Wx1^C{^Ja5C0K*4@D?fKC1R4$z^3ACBPmtiRfLJ01(r^+IlOn=rCaj>}vmXL?b} z$S25=-W)m-jwHSetY)QZB;8worOTJ#MNetv&HX6>A4CH@v}{#?&AJR{yc<*n>J^Bm^-)~9BBsHYLZux--4JMI z_mZv0gN1G>v$_&)Z)9@{W4RqWrxWhlK0W^heAwl6XkCgbQ)(69hS7o)`gm2lAX=ElD&>yUirz7@Cc}}TVIbS5UpFzF;4ABn zOY%a5zhfx@;c6rjcMd#cU9^2oyvW|j4)6&!k@|DHlZGn>3oZgp+}=@K(4bR%3EK#5 zcKOWmOa%$9Fcz-XiUnE{6U({Z!D@`N!n%m=&rbn*1NSJ~Dy zd2w=G=wKQ-`ji734c-B=rKG;g^ZnsdrkO@KfLWE80Pjsvu!5w{GV&f#O%?^}M&pKZ zKoiMBic0ZnTA>aNN#TUR;lIcEsaw{w#gtex zPmf?3a-gGs-B@3^hZ>K~$pYY*v?{;f>Zd|*s2dFjXqP87_;7y8LZEcpGM-aXc*SPN*+j8VvJc<>;?E&a6*2L?!k9&m!6I{ei7F>Je%rBsUqo~|0MXH zieWgCs|d`mKzy#Yvg9HUro7;*0H1;(Zh{Ha}x^@=cl zU|t#Ex%H@n6m+QPtl{5fWJmgF*8&F@+L%jLCQU>zt5#!K<=%avPKda6_b_zziS~U_ zj$WfZa@8XyI!yLb4%~MX_WXDrB|~0rAeV1wQo=Pm?ke-2xkW^bK1jMvmPpP*he159haE?~v(E9nh+nbL^& zb?XUQYyk_wy%?9hzsY@73k11^mP|9y(N3~M7DX5+mEN_FnIGZ7L6ctiq|*x`(h);> zvj|wGFuoE|0Xi3l-GVxnXavPdVd)i~muP`9vDKs;Mtl5z z26I>-4f1}BgP7^g*bq2i(CNZdl7B(0HuUSQ)kaeoQ9vNJ>=-ZfxND#BBDG@GONy|f zG2OD_);`T1e2&|-HcN8INnOD;V6^YgOZm}Su6+3OZGr@zM z3d>}F0NtiLxjgXw)+>D#rl{6Hor@p=!@&hyWDR5a7g05hDaAdkyNWc=7>(1r}O}=o=#i%#GURHPa2)V<` zm_-J$CxNb9ZSp-}1XG|Mn6Ng}_<`CWP^9|{0aKtiBa&F$8D=jCFh4x=1j8D3f5bh4 zHVX?_9Gg5IG&x!mQP9s>$_2}*Q~HDn_tD}wpZ4m$ROaMMb4)7K7Q6|IzN1}PM{IdE z!A01#2YCnU1;)&pHBV$5U7Jp1#=9wSkRQ)^2+jg*zwV#oV61#+tS7r|IY&R&fr|=S z{)#YOw3AojeBKFLVS*z;ldD#6v6naam8Qf}_Zd%x+u# zwpt3tvlTTdTd9&!zaDGj2Vmd&MfLx|K(er*ZXThVCzFWW=P8zKPIvgI7TRkxoPHQh zS3XAdGbzT;xE7ftVtk-WXsRR5l@Nvy=fULiyU0HXfQ-DSgB~u_ix~E1A^I5=;^nbW zsO-6rfSG>)s>oG0*YdBK%kWh&<*GjGrWH9F?##ZC(?s~Gh>`Ekp3XwU^wQZ6u2B_y zGbT<0<|8~gGbj;j7*9h`FzTe+3gx(h$(`2wlENBUnV`FOwjzL0x1-g^O(%A`l#+lN z@%4p?7`45S>z565T%9GRvnve9t|_fxTabW#qz7w4dYin9K|7 z-n;P45NOp)^!@Ionl}yAP3M$v&1?#mtz3=4nhrczP6sEf3t2-R;fbEEicN2t7e7>x zw9;u6B(kj|YJ@V#8fXSQ_P$+5q;2;V>`j`uO`Rcs@>9Wsz!}-Mi|JCntDf*Bu}SQ( zqFnDQ1mpyj%etPnr@Pz^;qMF)Zka4ycY&`S2IWeFy$W7ePIV|rC-Lz2BuK8;fxdQX zB$D7WI-+)B%BEas5!E_7L>6JzKQneZO{(>9wXVJ8`kR)KXD9V4QF^DVi8>9W>$fAK z@iO@F1llzTR!Ea2+XHy6`!r%dn<0g3#`^8a0OO5I43o@QJ#GZc-py-bf_+nM6vq!l zWrK!*22@Wju$ux!g$A7TdNTn4!q)RWs07Q5{;WW5X)^TfU2eRegw3qzeQNl2?~md# z8iHpkMMyR)<__F8DEs*qdSO13h ziU2kKd*T$bY3z~*?B3IL;e)9Ry-?q8`vIio`(Mrwc(zxM7qD-FU-rKUD;sOlo%<^5 zIs}e3F}nrR)`dX?Z8W`>J6PyKuFiEN3(>1q0osngOA3drr7RSnyVN!H)=VTaZA{`a zJ3}^^RO08(F0cN>UBuU-JQPjZ7s84(c~$IJXZALomX`-8!LdEy$a6csCTvQf&J;rX z2mkXS)iA44PPiwA!ac``sBNr%$(+J<$T$8^^jY?U&L9z!R>N{U`R@K`C!CAkYL}n> z;%T6DMunLNkAr_3#keE=wF}86&0aO7v5n>>Tn^=F#LV#fvS3FqW;g#!UO8!KF^0Gf z6@rcEZnW|RIWr2TNGr0_T3g$m`E>G$mO}h@P(wZpQBWBTffm8An4hC5e(XMsm&+#w zH=-T?G$6>=DzRh(dT1yy$joJ`GP>Tx6Sr=Qk@rIxBR`kp4>Jg7*(&l=c^yQ#XoLeY z^=hmiyUSW338RNLi|b901ImLOTQ3XwgLuxPz=1dfJi|$ST|e(~d^Fo%%IKdgU}kyg z$d?t26l`TBogCzd8i0g3qVNVDCES%zPeg)QvmaJZXT|2XrrX90f*gpEDoV2RXfnL~ zrBKk~Q9Faz!6%<;8zZ<|e?Opr`ngAE&nbGZPXsTYz zLMQ6fnzS18z+DQ|9!zwm{@6Q!lchhVMAn-rOKfgnw%Q}&HnYO#xpmrT<{!+8#21F} z(uGhjq!Uf}xh5f5&9a0WllUyI@2oG86c^PMXpf8g8;)rhDTihS1*oQIj#l6Y`Va1- z(IHt?Hu4eO%GFAmpJUbpwC#-$R*b0R0_b*3VvS+K?S-)#-7zc6eL*F@XtRpy);SUn znpD@8Cvc%f-+X%i(l51YQjCr7n`XB0>C!KQ!0tv%5l}x}BmPd{fRGUy6V+t1^tf zy%0L|p=PyoXXkp%G>T+^tmZ`a^XyJ;IQ&+2XMTsR6AI<+8C7lMDA0y)f`C~Vfdf+W zQw$WXuJg%x%|0R{ojMpRi1M{Tess2BLtGr3wdZQmJib{_hwr^Vb+y?hkTlIKJ#xk6 zr%tVKTV;mOn^7lxs(a#sCrxZMD%A1AOY6e=nlG?%8PxRU%sqaB4j~SkT4nF)?THL| zV#%f#X{B1SUqyvE;_yk6CQzJn$n~{1y@OLP2raQ300(xG3Fq1Gc9KVOQP`pZ38UQt zYa!SPJf2tZ)#$lTxzJC|TtfCqIVlcZE~0;!Ck5mrRY`lDSmy)Ua()hX2Cl9ow5tzbuHOS= zr%$#-zNu{;(`Q`m=5~RDJE<=fFVHGh=M5N8H-e{!2dSeapj6e?`NXRqSp7?i+Q8N2o;|$;Kn{q8 zYE)->Og&T4JyXKH2kWhD^ruxXv;^EX7C>kueE;3wD3_cm2q5X&a_>hIhM??SE$}dj z@=(;9v*&(u&B=mBE5y$5hwf*91o?d5ESJyta&4i=B#J@#u#kM~WL0IKP-cvTYw=VUsh+RC&EaqW)Y&@4ee;`c$vYJd;mP+rS`6W@GX|x2 zq9FnQWtc;*0+a}hZuS!}b;>xZoLiJan`XKr4I=gq+GJK#*DSJUc6J)oah={*{)pj!vBW)i4~r83^etq8ZOqV4<3# zR!}pO3^PwYggpYAitAN)+8NH>w!geu)=Ac*H_*9K$WQWBdJO0+MxpI&dR#30X(y+9 z=L_P|9&pXDZMQ?+iMWV--K2otZSit|*+5M@hct67z?JTR8neyeRK<^;nd)w+nC-71 z5#rd9HtpvF9if=&q-zOQjiQ#}rlg|4On6k)^h6?2?f zlIeDU;@s%=%j;^^1~QluJCBQYUEvd8pwK&~;Xfb#SYNExFAnqg^><+X&Q1d&-hn+P z(W#HccPo$)p*IYM2r?L|_KZbR=Np%C?W| z-Jth1$0Wuk--O~g3pQ?RCd^%S=6nJY%uAU%Ulu_YW_&BCSHAvM47&%UmrL6zdeTCb z&3JEJXS);`c}%qsn&li%SG$rPe?xQ3-UC+n8*$EClmV!6`RxoW4#L@|*~hI7GyeS2 z!I0R|yU@>0!lb1qLUN`bPq|H>gY|M&3>YJ5_M8EweNb2*_M^g+eNpbj1T!+TQUhzU z_zrkt<@IW5Z>*;+X6^;|?SCr}X?yjBjG;8fm``udES$ER?i@Ro0h$ebP~di#h5cRB zv>NfV?uC#Ql*J%FRCu-*L@dHraM~^E%oB0o*SNpaOqx*Db1gsm*9D%M7*HcU68a*} z`fb!Cd@{*r^Q7%}(nWf5%h?c>|4I5(k?6=Slp+(+h9twwn`5C9r`5))R=+(dU$-rK zSO=bb1P_5n!fPeS%dYLcExx=cVQCm4tNE-{D!3|Y!S5O*U<@0IefBjLXrU=O?(OA} zRPC9gtKY$y%`mmkEkag^tSgW!8u(C?m|goD&5&L@@r-uYts+^UKf z(g04?pG+xqmLmgd>-MqG7Y`Sbh4p1&hDFbd+!dQ|vudviEq6Qv9O)7-5Hzp)vEKq# z>&A+@nd;kM=!cHggK)|$2-#b}+w3mgOzuG!+04B>aB605ju5H?$Nl%kwxD01SF zhGUW!BJhT0=uq!6Yn}gfepX(;Bux;wd-!(7YB&jxwU(c4b(Z({E%TE18P!~|?_(wq ztGF|F8G&1b1YVVp3r5fghQwtQ?=VDp|JpJJL-&S25U@JEN+>a6c8TMJ3$5)WLzzdY z{R9HN=^)kMBK=ZJm0=y0m69AAAe5wy4ht*S5x@jlGGEsE=;T|S!t*cZ4=^-AUB9yu zP{iPRB4#)^gozKf) zL2BTFVz`&PN$@MpRVe&Do|zrO9>?*MQXnxZ1ZJID$lIFGiH}m#t^WD_dU#sDXmT^(f}LTIX;h3~dh4<#V*H;*nw*eEK$6-P7)~gU z@brvHMDbR+!y2>)5y$bT;gi>*+4bOHBc0Xy7b-;GtZnf}1Ly!#;!S}B%kFi1+e3*pt~+8URL&WHhIB~f_H$nm;&4V0X=}cT(#F&&4^J! zG!o?fGSt@z8O3${TQ#Jf0Y+CB0iSyYqLmMJkyg%_m&8dKaT6)K7{lpQh{nY_c1yJr z?J~II68}2shP9J0)U^PSYY#Jdo`&=BC^+&L#O1I`B||$uH9Dzw&N0g zds_$?Xtn8&#>F=&dLO#uiUg(NtvA-9PGqnwv1z%$z!sNSiD#R3t}Zm7aAs3i0SBx1 ziK!_Y*(ScN82r##Uns)Md;t4tiBAT63f}T_)E>Z#hSAz+4Tys_+UxR-7J`sU&$7~? zH?77FLW4|-Db*RRXO6z(hy!L$sjB*O?EKbKu`_Yz<_@bJ zdQbWBXjaqTb1u^qy=IbAUj@ne;>U{BGK0D~VclmvWw^IqeOS7te49NH(~)nW(fBSl z%84@?J`)Q-<)bD%`a3ueXE9sTIRID?zaMrV9|P}K2+|MRdIi;BYDhMOp88cdK})tk z?qHoId%18h;kT2-y!Pr!@tKYebZd2WYui33hD3TtF7o1EWv2oAgE+I-0$#5Y!Bw@W zA`--dQ2a60wk!>b8~(CjrCY_=BX#kSEKVK&chMOkTs_lXJ?}Mr6Q-NCH6uSjr`nYd z^dB5-RQDv}@gMt7NniGwGfLVXHn0rrA!n@@-l}0r!(eE;z|+I8w^BOiTKC1E+L4BM z2djxqg3_At@3)Z^ylB{oM{55~DUuvA^#GhzYwVj3%X<8Ej<-+H4=Nq*snv+CUTrS+ zNd#$SC@)&0VesbZ!nhFDfE8L^Z6cw&D-)FT8nQz~2nJ>td@W$R?auXsD(CL%y+LEf z&4!oXsFEFRN4kvtb!Ms)f1ZV5QLJg;Y5Y?d!2aIARyO@1$5|TQ>pXb~PFS#gH>!QEK zD7erQk?YD2W=kW5^FZsJCz)PZd#-3GIV0Unu4tGUJ?CbD+o>c0hE!LHNSbR{WS;^y zr)^Mpt)WM>a^ya=l?K;+z%P%!x#IF{z zDi^>fk_kD3RrC-NW6e4u`pH-!^i)K5sfMp0I=4iM*rIzYi(aD0D+zEue`Q4u_-fT% ze^xAKKH~6uiBn$Pm8CJJdFK=}o!|{rZm-aIvI(EmeqEvXa4(p4Pf~ zakR(r?)U(9y2OvrCvoTD#o3ge8!Ok%O9cHv%5}Y%)$84lv?Yy%4!ml`j-a(J7o{c@ z9XP(GV6Z$U_{Z3{x8Twg9pHZlP)>}joNsNtSS1%ldm`cvD|6zo@Koc9;A_g!X(xkc zczgKZ7KZyB52>)6nEw7#$<4$XZo5Gy!2&+|(r!(xHzQ9-irfaN4CBQ#z{s-uWES&j z%xX_u7+V(TLAzaiJYfesQpu0s6Ke0__si*H5Tx#;re0MdeDivtPnICQ95(Ss8lM^? zF5dyq^t5JP9rzx!99mlsg!T62uew(~3pE+oT=4Oj))jZJ{~Fm02QO^m&t%FjRt&7p zOj$r%jO|-L{Z!E28#plfR|e?BxyGFWGT07MMipTa{(Agn=QBitVPq*xcWVYHX~k!z z*jjwpO*Gc4=nYzAOeH$pUdKa=b3doT291e^3G8eRCs~&O`A<_ZiA~#>FI4 zh>KMQY}oIa5M@&v(8uQ(3|n+m$kaO@A1hrRE7}JB`nTloeZ1h=@&a0|k@fS8oSb;m zO>=a6nY0}-46Ecpd|4bDc};j|X$rr)$B2mM3KQdxG3tl;q_?ifPxJ4@d6A*;)h&^B z{!Yrsg}ipTvHEouyGlz)!FZ{kU}8GAy)bWifuD0VL3~z?cgJ#D0jYB7lcLl=d93>> zR8Y7zUYqj2D3Dh|+RN8{AQJS8dvO4s$m*{y_(}{-nYx->#wzJY>xBCpjMfhkT*|d_obl0U3Q-?N!G7AjfnhI&(hD!4b z-yQ;rXfu?d@TT2Rg7XJaNj^)uz51 za~MBCDB2pjy=da)R;a+87P`N9Z4Ph3P{Xs>Y8ORPTSB>$m!d{*fT<%bUV>E!K{^sK zSXyZ!O?VV+R^p=v&R&7S6X3#)p#Kj|3Rmd@ZshHoUIA%SZrZ$)4!jISJt(JF+%k_=geV-$++l5Ib9M)=x^RGOcRiZ+6uatY4y;JCgQt z+7uU;z`mPJ_7DQUVlBKudH2)V|Ce?`fH+PeW8zNy{^=}#g-NayO1l;p?C;om!r!!W zAt`@0j(Z9I`HypJsbl=W&#I}gLncl55%4f&CI?7$^VFJ+3UD-QUZ5fthX<*+v6kBl zxgHugb#2amnu4(D1zIw|RIL2u8GzCgv(kVO82{ZkyLe8_2&kg=Yn9zwKjxD}orxMU zjn|kAaZ+*gZ!Gj1#*S62ZUyw@l4#S>M@g>i+9TbyGjUz+{?}Q*5D`lkt!$5Ax_ZQQ z`es#|*4zu$%h!^h%xC9w6WHdD{#e^^$!cFdREjIK*$G>vS3C@>T)Or$H6Y+64fycV zs7xNpbm#D`Byt(s@c66BVmSh)1FgQQ;+#%=T zdQ3Im@UT|kZ2^*?sg&3iNertqt!|gB%cqxF0bFD`N66;~yi_EdlW z&R~vTRJ^G+aa(${baerIxxdr61wY}cXyUKFINOp!hu1kzp|EQnu2EBkS+U6wJ?HTy zg0Of=Z?87BBPPDyCW+ZzFYvfa!3qQ9+qKW>pXC4BVvFGam=DXaEA;)EhHu3$ax)ldjoJcFgs}SYru@@8B*V8`voo_H)Qfad;`L z(>H$D1JO8h$WoHCVw&jFh z=dF6gzXM;-@;K96di$zrgCRja5rwQRwn0ts!XPMj-oMc3#Qm$fXpPSl`TSF5KU%;& zJ;Ey|@_=B!Uhk<%8Gr&22=9dy_I)s}K?=_$L+xl~hOyv*3!f#?X6Q^B#dnMv&KGcw zl2?{f6o-}Z&f2;YGJqF^Q#g^Q^4v}_XX3OJ%04m!1gF8jq*{G7oD_AP^rPy7AWc}M z5Az$#T8nghGvSW(<>4_0Xh2Mcm$6iqDjAM>gpP;m;cSq)(yBmpN~>+iibwnt@T61{ zDxcH0b7;Q}*0d#;d)D07=zs2MD^tVR@l!GJ!UA1@*1*w7iR_yxij{(hTIYfv!xC9Z z*WiilHytGk*GbO&>7z=VUhpZPp|00kQSITOBCHb_c}J*Go3E({F(gGZsgzp`rwd-C zlj~x=(5ugfCQwM;AqpK^p}BV!~7<6w4?Bn$Doz=%$AsXh@iFK6I9+Di!wPgHnV5d$>WjLA* zes~-CTo}<8qM-g46)&d|PPNM)4(qE4;%fGF-gsK52^SeGwT8b^387Wt!TJdOw~9_Q zA1qqP^vAa+IUrnCFK+vvvgzM$Ptg&Ke$aEeb9jlRqH4fH%0;z#m@&4i$M*6Zy{@go z8Xc~AvgZCYy*lgaP4vamGeL8;cq?{0nr`%W%5jSRl*giGrXrBbBmsdviAet3ZXchm z_$c;ZO3D*f{whV}`4kq{VVMeP3R`llwAJRrO8XD7tzHel8&YiZj0{jV#f`Q|FTORq zCV1fATrP>!l=mag-vf^bZ}rRM8VlOxquLOo4;d~@4YVyboP_=MZmR+>sN}gb((I|B z$Z^;ebD3A9l?e9N{hb60Hf-yW%R4pRtB0RRGe^5YTKncZ(c2wcJ!sFcoajq=9ZAB| z)HHoOKEAz`PI4rYxXXS?GD^WZo|C~k^pW{{NldKir+L3`Zcy3$le@deAAmeG!x4pB z^@2C86#Sd|^7?rBVbMqyItVMzc+QI%J;`q$R)D(d(O(FC?UVYkGFmSmUDQ9n(3X}L zC&lV_7LtL^zbsd>{e&QkqCd94+b`^CFbg!H)eyzNii?Oo$P#c5Q0pM+V-*w2HgZVSzpL=^ zLyc)#>xDjbqrPl_k8aXkLC&rMcgnYII6gmBDPHwq0eFP5g=$oW>VzmbL zqnzPcDSF~W!bH#CvPkWnRRdS$O>3tfgPt<}|3;gou3rfkrLBFuXEF?3faR@1F&HSl z+9o(4j{D)zg!K4d!V5Y!-&a5@xmEI)SL5~Im+VeMBHnr=EV_%}7>yKCXLT@)p5Bp>k%PiQw_UHL7AUx( zKPbGa9>L~7sh-C}*r#(G7 z4YoQn@AY#W(5;FQEl$m0@UNBTB3itFI)QZj`y0w)Bd?Jdj&{qrg-BrnaT@tfsPw9z zcvNO;Z&GD=U8rQ75nrcwU_l%ZUSFmp$s}il(&xX6wPv@b{aZvD^&lnO5==q5_CPe0 zI@-l=9jGax7fTssX^hAVFM-oYlr2*ulUGA1Dbp@A*p~&Hs>FydLbfvpc>b#+ok{B< zO-|XWAKp~;p-0Yi`D>W`Druu+33B*NT!6VR*9xtotzFgrDxjRyIb;~>Ocd4uZQ)tt zd+D&Huva*Yx=F;pt+KbM@9cTuS85Ik$<8_;Ddckm3f=2UK%6yy#9xN>Hk-wp4y;ZC zmD6)(^@h=#Ss~YlU1vj`87HxqP2yn|lg81q*YvIEN>w8L#;%K9gUe5(vRsLVY-R+ZZ$+m{(%KH=&W4ltAbSLB`A#JABQDT)hIS;z> zmWIlO*LXD`NPCZv+snF>2ZhK6@YkQZ+(ROK_rO3YG2M{x3+?dvX<)le;Z;@oh@fR` zXtftJMh_>>^?2zRGg0m?hdO^2rr5$>(zlTlYVltpKeyQ%zl^htf~KIg zP()s4Zb{Xu{%Z5F(wz_g-lTY%skXr)|Lo4nz4yiJ&-`ss$~C{Fdf=|2-QN;t9vr&q zEoxDE@8`oyQWgh(DxKf*eVHFIr<2-nw!lnWOuZ$QWVP&qY~LU zqGqL<%z|}V!;K4Bv2QO=Z!}0a+};>B(y5$g4Lyl}5KJD`9+y$NcmGPgez?>sBTy>i zac65qrrM2jOJ?PAa>p_>4%t_oNlu$LYt+$3pPVY*9Cc{@c|J)TomWI2PHQ(5jBecL z7Hs%@@sGvP(cA?_qNsvXg5jwI*(J5``shQV*G0(jDhJg`;w#-oo8QeQjCX9yQr@Pp z|4-TMXEPg&Zyt5J`_u7GXxCOzx_D>@{?YxnVoos`)`pF5j#^?WAf@_>gYZ|jaVqPR zA3C&9C1PwvQrFKC@9H1)E6D_J5%@e6SA#KobqTk zdO4SD$vokS42G<9S~D`BZ%$)a5mzC1ozM<{A%0&HusgRAgK&==Ki**btm3E zd#rxg4)JG=doK!+8|)E4xFBizX_@o2=E!u~57iUpWI@4(mQ=X1!bPqg4%J?i>#{%5 zZ|Ass73`YT-O@<8`?O^I24~rQ;{`V1w`%AfAUW>}?0ER;TVz$~6-A@Y_{_c<>Z<|b z%1nZHlxXbvM3>$sZ@qrXrtG_Cx8_L9y*fI3?`+7`xyF@aZki1 zHOwTH&#gC$&pwe7sTS>w`9FruXo#Df$=;h7)h8zi^YMOuG;z^m%0?jCF#^0+Y!u!iv-8|wU0c`Kxi3GDjGqs-FTL9zl^ZQ)A6Ih2s3vItp1TL!wO_oo8Y1&`Et+ z>T4eSq8%K&cenm2a6>s(<=}6j#%{2$neW=0xY)Kgv9XKp@_`+^qp?2nEIE30d4JVE zq-{quPT<Gejd4KsG` z?6Fx%_pRI5HWsBl9wO=UHmBEoVqtNu%dNsxWIA~^#A|$_w{^Q{jwpBIeI4aIV41VW zaPrAJ3-8_YN+$^S$lE&%$@Cj0xHHqY;ICUn253DHuj}M^_>ha@mV^qp!gklZ{6Aj%aVmBz;1;p(1a3T}sBe}@ z@4OGxaiucSOi>%=n2U7Dsk?nNytB`bioH#bfIDph(Y})_-5=X})jDZqFe8CjZ&-wz z)BL7+2XDRc!@bRC6EW`>U44ZJ1ljOH6d+M>zWoOAngrDRumsV`U zMVup-wSB$q)?;h&Ll_L-khg!!PrE1Uob?u#4ai5~jl^?VWL=EeJgv}dguUdDpRn?j zmN<29TSS~(25kpwdwQUc5q3#?C^7m`vPa|_7wILF#e}aWp=jMj3Dd`u%`?ZCFuYrD z41hEx8>&PVK7N^mwi)V#<{#{Aca~%$ZU85*LNCVqP?nFhne;Z_ReV%# zl^H7<9-cO`bZnj}7MXpSxY2kVdHbwXkXVw$##og@_V$(0ZmV17otS@EoCif`;%=Tj zY%Q83xmQ@cE#h?UPT?Z%uWNVq50|X~=UKy{yU-i^;j0Ms6IzVMu+E&8)=hb-dv4G- zs6K|p6Jr&ZPRvI#8nfE*i@{HPTdb+x11lvRQQf{BM*zj$uyQnHtnECE`Oe6nR4Dvx~Ii(+Y==J_r;Noh7Ob$d-X~{?hYT?`v$LXGzd%DX;OLi$0F~ zI$A4Yx(a@qT`6qY<2-`(3^N!WJ$o7tGr&cFb-nWZFy$kDJU z9#5|ApvfvfBKSqdWAc;1Yx4dj(gUBFyS=r3S#(ZgZ1c~{B8x7t2fsGI?*65w=v@z6 z#FHs8!tMVwLHZ@lX!FjUIlIn2`|mEm&i|fwp+~$EdlxRH=nGL@GeqIj;Z!qm1`y*; zZACpi+LUu}G$a)0c~t2TLLR=nJxzE$@JQwfE0tMrDAD_aK(P9Rs};|}>}627KK zC-%l%-KYG1x$tiP$s1EyL~3E=<7*>g1r-cLDDdG=*2{wHDn3Pb1gw%`yTu5xLu_oi zj`6%HL`PfuMaH|qQq%vm5`LchTba2*jH?FOH+EI8Duz#$=*$x+vTNhS$F5km zT}CD)ZGDMrbH5*{^F1n4^%jt9QY)Psrq4Juw6gQtH1c-+^E0*Q4jekOKNB1E43>X3 z5hoTeQb&}j^ii2HO1=9fdJkLWY1&V5b&0);!o74-{>H`8J?lDTZ@6;IF$sM~-vPEd zdPwa}VcMPt%G+DSyW6)kN{jZs2{qj7vjwsv$z-6x|DbnsuNlE;-}GMk)smZ^Q|A>R zgJyk3*$?wXgQc&F$ke_*dJOe7*{5R1sr%Vq5jc&S3l$cnYW!W!W4{u3zUaz6XZe^{ z2Dz>|U-*x%ocW``KUqAP*dmkt1tCB9M(DqH7w>?-Ro;7lqMZrZJwnZ<>q(B&S%&1R zZT?0AITI+6*Y?Lj1^xpg#6KZqQiPkcWsZ;-bry#68^v%f&~)69oA#-e$d$XlrP zqb+3>;xBjX`&yVr95-syq$xFdBoFSQyA3kg=Y{p8^rx<9qJ)C<3e`aN7;aB8DpqCZJ5_Hn zVPOhjpt8JCYzs8F$y<{7$D!D??IeJZ@ZjT&vBso_fW4XL3jKyQNko^K@#>vk#NCr&q3S ziR-nn_@Tc?z`9(quzOxU_%*+=p0h>qvcz<%Fa4k=S+KNCv);96JvE)Z*K%&PKrHCX zU8>VQnYc1eEi&5OW2x@9usU>V^zT)9v4VyjObFtduSfP}-qRD_A5v$P|%KHD9`tEqDdqC!nJQCvaXw%`Fs0(zQ4!!+u!0f z&Ul{Zd7jr>m7~^(Q~TYy#>mf3P+91bY_Lb(Kqi(G<&H zKBWEHcUYzSE9MB)H+Y^msy5F^dhoxdkYa!_#nLkTouyZ)g&#W2sMW!JKauN$M#+M= z`#i0GsW5RfXz+?V|7QuqpZ__g!Z|J%o3_DB6W7M-Z4mbkOT=0;!r-F`;n#H~R&`HY zTJPavutP${^em{GR4~b#;U(Iw$i7!Lo+7>3&E6vOxVT(-$VY|$TT7XEzotJ9a5c}+ zbnPPp;(;X|r`1xPW1a(7K3@%OOb@V|DH3xiSn!D?;fw_XAW z1OC6KV9@1lU0pnBWN)`_J7&JvcE>V<0XC zjvi4@rH>`|K{TvFAesEe5o*i5;EgnniP6vzJzbIXSS)7V@WD2{l8`|iV_MY$$SzV0 z_3r&V&Hw(*6oZ(Bs|zi)eUjJCbmrRr=?_`eqiQVxyyaENoW}KAp@IzFvHkiS z(_Tm#8NDn!n)l=s*){kh1>>C=9IW*a;y{*V(Yuq5-lRS(W^2u0BiE#c*o-qt-r0@a zR8nvTE79-VNJ*h+XF6N?=7B56TDlcep@wq@MQbDaWb!Z1P)9QUA7@096_B%i3}d^Z zTY41z9)&kr0F z;)nC-_&8TpnQK~NNO7l13dPhDmv;G5Qu=|I5$vh3q~(gaIf^iF*8h1v{m3I4@`LTl z|8c-Cf9zHka;a>yo*T$|fJ>;(eibI8-5gvYa%}7K*EW|UeaOGenUd@%&d7XdG`4c$ zQ!Zh-5T!r~D940ndiw*YjaiRs!^lnYD0~<+)(etS4E)r|)}zF}C8)!Tnhnz+;{Pa{ zwVP345C-~v(^q;%WS_w?J#46Jzd_%dZA2F~Pl6l0?<~4s37xC*rl(MIRCsoO{(b(; z@V+U!pcnhd=PHz6Vbe{ijVEyOc<_c#OL0oo0DQUmpvmJ4l{2L?=y!ra?GrUPM>COL zZN=!h@t|#C=HBHxa2@!v&35PtNOt?(?+jMkxcPG@FS)Nc#q!5rDCfbIuo9uJv%-~^ zIlHyma`iLz)dQPfaIq`?ZYy(tr2Wil-I(`_-x?rh3ggGwx*7NA#&;t5R9?OE{etVw zc^p9>^VLuPI|7U-DB59;8-;x~VhT>{ySAU`lDNh?Z9rfkiijA35l!L1IW(0*LQoo^ z6can9We9PsOtpcN?ob1L_7hR^t};l7;de(u0d}FA&GS`8;+g|k3=G4Jzee};B*&a> zY0dX60ufXjH7k1p&uD&;tob}VBa z`Nb2lk1vk>RF{fM6r78{&1{S@!2}~Uvc6{7HqJ*DM zw_fl)>`PkDRJDKT0)*w6OXoYDdzIrJS)$sT7xJe|C@5YF$-xNk*p z9rMq>;(3`inkGCa9Je7wkX^N>RAD*~PD#2`j}dpEn&w4@y4?t0`#%XH3tm-Z9WWfGZ z&Ofv7P0ZwUs%G3rYy9Xq1sIw>r<@w|Q;m8BD*+%yY79A6GyW4BV^{QWkDAtn`>;s? zAm+_uSA}fN(YVaPzOM{{sBWcq=ZdqB_}F}idb*1p?7*S)$n)Ya4vc+W?Zic4Z}8{O z&>nMevngtR^u?W!!3TsF*xc$XWd^61aYiJCjOeNN4Ia{9R;s_R&oVzT26&Dp58lAo z%nEtaaH%k!10BI%6%2RzdVg~Ny5xucD27Z3?!~1gI>zI%Ey>CdGH+MC;T5;UFA@e# z`+3x}=`p>0@jnzOjx(MgB^=Cr?Wj)^WhQb*cD0LGN?KDNI<4$iQBKFIUo$E_8f~tS z+p#Q-T(a2L*;7PN3;!Mq9{!NK%l=6RNQ$*ti(&KL9>$!cjv&y%3ZuhoiM@6*8g5U3V{BR5>IzzK+{q*qael~$y+A+{PbO53)LnnJ5-iI3w=7@V>usznWxv&Oq8>pWj-h(}&GSw_J+fi|3A>uW{jI zc#!7v5;drj@s?3qE{q{F5~dVt=Ik^vV<+hI-XV>c%m%M`zZv;#3ws_h z`87pV$GFXD$W42Y5}#!)O~(g1;m=Dwmq(+1hch`;kOHQ=9-U^}J3T!h3a{r;)H|Pi z7h)W_vV{pY@lSo-^6ja>dPX2uL&&V3T@6?5g4Ngmq_k?CQZ*?RvGB~+0>DzqqKHF5 z(Wm2LCWb%WW38h{BlZTD@T_>qv(fp(KID4l_xGEfDF)W}w6k#n>WMQUC|3d8`J3-E zhX&YFnW1lo+GaeP$}%`n!;j>*n->=X56@$73@J~DH9F7@IovLvlIK^sY=6m9Oc)VI zh&vhQZ3o5N)&!;gN#@v(&|cx;!3?V3q#ig%f9O5Aj*Ug5W%s+!;%|s4d7?F)sd`g- zM&D#N7{)D6MlOZ8Hk6gHr*4TZ3Mjj*vpwvi4fb9sDIi~XJbe2-H)B0ec;^gFkC60X ztvY)7q@NjCf|T`~5Ek(YO-w;$&C&Gn#5Kg#@Q5(4Z%cBK}f_b z^>8M)zvOgz`0cURfJ*O3$2GxUg7s@Cwhyt~!{#|=h*g_6)FoIrN-m092e#9WJG5U9 zkl)r&LiwsLJVrxoK{6jiYodo$Upze`?*ns^OwnY#3$ z8mRk>WM`?O|E#}7Vr_EjK0Fj80Ia_5tDU~r1ySTat?`EoQI+IbddSN|284(9E9;{m zx__0z9EwzLLEg{o22vlnyjQEW8<>1lvTkU@7PUCRhV9aGx#Utq*c=avY41CSSQ>lI zE#v8rJx;g_p39D9{K5YXc2*)wQXAw#t<97?R=*mUBbBUQORg1 z{dSm7B6m&FGJO5o!{kvwh^HQB@%ZdTC|j9%48x*XOC(tym#W7%Dv%i14CF#}bX+Oy z3+3I=*uG5ErF~7Y%}*4eonTsL)&{KUlhpph&ryVUeh1Dv(s@hxo5T{|iD<$e(8<6t zMjB400pj98MH3JNaCe6vm3sPx@ zeSP&sS&3_F0kFd>mGjrt{+WV!&$3M4PeVMP>5bmj#Qcx&TQ}4(3u}=2R|oI zE}-1OGmd$bprR0h>k;Ym=+Hpu3p9$}emW-o6$ zu<7Q!nC}Q?In7a3T6^Gisq4IE!I)A6S+^Pu5ZxMA8XdlrFE#&d&!|uI4cfT zy{x*7W3awLwnQ+BCiW zH^3MRjf2^~>Y~GrBgMX^hkezfWT`=duv_znyNe!#CV-oLeQjK4PppUS(UVTdU9UTC zpS|teIcD79ab((h{Bc(^s#2oNpqf8wOvhR|wz(erj5XUDXNP&R2Xv%fySlk*6Gh0?sGL@$vO)O0#5^y~ z+V;f-Tq2_#dE?Cd!q_}Y7nIw zVfcZbaBx}RoW*tgW`}_)y0i169@giAs`k@#jUb9d1|q`9ArQ*xfs2hIMbA*|Mj2C zv`NaMU)B~z7CfqtoJwP?pZ_iM!@z9pG4n;cAxLdl9dSvC0=a9dlg}E(`b$O4JAKHq zI`-1G#6-g(4Cr0Om_c30*EmVesJB%AON7xol8`1?-gOx`!mWQ>_b{QVI6SfCnW zi<+oVV_6m=fPjqv&f6MB-t(5*b2{@@+UwSKKbbv9oDWV`x<@`Xlfc#T!g*s2<$1SjkhaGDyOa>GS25cF$_bM38^`v zRl3z;tW*{w`nWi)0V3|1emeCxj+i`0H{QpvkrNz`1D$(a6|OIE9hL73KH=d`>=7EF zE?(y=L3e*vvmWOo%mJ#FX z6zCFIf@*pP6!^oOT*PxZ&znbqEk$5>Sqs#;XRcY$L`5*8ko{`o(R~h0g*m^8{^Qt;HJ-1Sz#6 z*U3g*%P{Wd+AvlV{3S_C+1rhl{0D4dA(NRFOETig#B$U68VCBfwA_RugDVbD29`RV z>}~X1g2dK-xb*W<^B6;dl4}$|HecsXYp|W3R7Z)vnOXN{a@7ZRZ6}-(ce(*wics&h z*!E92065PQy)aOJ-uS3h-9bp_528xvaLdI1u0U(mMVGx_^`##`(&5O;nr-B>Z*$TeFCGYHj$gHymZL(-mKtbK0CB);EnX2-XDJkB z#*fv)9(1#b8>D?P)z#?~`x*-C%l*AHX^*)lNv@3A^2&ki`6QV%YU9*VR7tRGRH=5hHfrQ>EB@!jH@V%DHmlu z&|t3*pDS7vOrjmHXbZ&pBjSPPtuxl5+Pr5jny*W!Fkkx>%mRJszWgm+k!}_|<@yif z0WGUk>j72(7s+8rw;gNnxT?U8GBK zT&5F(YN7p>7;WMDoNT6Hg@#b{QNGol?=6U<#;Bu+{)8&;XORK_jCt`0QSUy@@oDs& zI?F#ezC?OK*|W}Ur9_b0^kc`nI(Tr`>A`Q+HVlJYOK>!2)a`EI7qq8KaqS*KDGREo zhOVZYx2jffH<4u*25%!}JtNt|#{eBiahknetv8vc%#ISxdNFWO9D-tBuC6GO%xXPM zh!kE1J?2hMffdF_V8K1pvLp_~x;d)zFm=wtDKX7bw4i(^I4!g?CM|ISbU}-d#lQjL zE=6}&VA}w2ooFPjMSx3=kUeE}jzXP01#JM6PvZKWg!Ko~es= zoQs@ld6r;2zfgN_N`MPwz5Lq!_xF(jn{4It`{Kc7lwwfU>4Le}(bf*hH zsg5A8Pi^oK9+MHE_)URt#D#5J7dY>O8*fftMXQ(cuwSdpnb9B!W8aDjo<|V64o5x;rfFd-wjM|KQP6{Af-__x z%ddsn=$*V|c1>@hAprP(#nrcC3JB#~#Y5wY;DGzQkxGzW&d<+LuVo^i*fZ4;DbJxD zr!L=$Ta?{jQEliKa^DRkQv8aeBDVtxceADX_z$_{HK|c}DwlRXtt$s$G({-D#G-Ge z!`>u`^H9}q6(zJbAWi{R`1~H?&_rx0kpaXoC+FnUjbeBG;`RkaKdkeKF(v(rab>F9|IbJSKX@ztxEcHKih zrkl)H98?FPK5o&!p2L?^cs%m}Ps)O+foQ^dvsSXs&-kC%7mlCFuNM+NSr5c&7gBW3 zpT;FfSW_R5eGjn$T7Yli7_^!I1tVFp-(ONPxfodcQm#decWHV;O&9wD9rQD7C#o_G)`bZOfv!^jo8sk(m^>GDf7KX18P zT6Z*$jRnL!Gf{Mh-oNr9iBGTJXR-gHPVd!Z00MmG3(T}Tz|k)G>)uS@NC#hJat+k;yYrL zIz@PVM@3HY!_qNGAH2YrZF;*3RG>PL`#YS=B|@r1X#8(N7&)s=TB1!mXy*b*!I`o> zs7;8YcOeixBhtVIRHpL6bR0`Jse2|{lZTT2nSg|4xuA5 zEfd%1qCs8yGQG2O_JJGJ!Cr~>zH{~mMCU8j9^Ze*&Z2~)i z;ZropD|k z?YJH~(o)Jg4lbuWtE*v_BMnS?{r4LI6?hBHJ)MxI0_$K*0oY%Cz~7D^>$-9F`RRy! zPLT5osoVA&*P-Te^gNp9H<$_J0zMN^-B-hReE9HSqj=D<>Tt7GkZxX~b5L&M6zy{d zK;?s+l#S?Fy=gse#tjO`%_0NS74k0Vn@bRzP|X1ASH4l~wQ;ZHMyHsXM{^)HZ3=Sl z)Kdkz#ZIcwU==3(CGS;X(%wMvd7hSBVBNT1tQEWqcvhYhU$DSUFe^IurzQwW55Dkn z;9uYGlW2C!*4}9i`12#=@-~-ir&YA)hB!fm0LAfz4idRJfG!3mg~PgE!ZL^5Who1q ztqFh}sQlQ*tFqKMOFi-4iNOefa9FgrTgCTMo$!Qz7i#;VL>_fok8lDnP~d61JaZ&Q zp&y#S1?q$TIaJ3=+6t2l>mBN8CkonynnQo( zg^`=-Bky^9#{>`bA!fjXq&%r&%hIC}EPyIsyUJ{fY;$j`5zn`7R17Y>VI82}!*%{S z;EQiI-23cSa@iKk^IGO-w#VmCs#w6?lqJpQSFY#m!JD2=5NnF+O=byzijS!{#=^rEbo{nj0BPgZ)EJM6kWee|1M3!#-ao zo)nV)X1oacZ9jS+&&5Bwq)V}3MEdYRJ=8SllQp!9`~0A_csMamy;TvG7*l(=iH?5dOiv(Sro3C3gZ9 zAsGw8CuAcMwI#X~LSXfBR=D%^?l1HmK+b{#!~!UqAFinIyd4tCiiFWN`_PTn z{R+Dj7&qC|7|GLW&hILv1dh|%hJ+%V7q5Ajs^KaB7_$5Y4o&py*}$kr~WRp;m->)U&eUTtEZa?DNvOmaR7*Pf(TK^vCm`=aE~gzsWz`-g=#q60c6u?%U^UPnvaO z5sO+p2TWy)u@l$Og?KxPV;_^5eK8nHIsg9r&A1{bZC96Ib1vX!48PC}>C{mw@ zA#TcN`Ezi-aL}%2zPcX>P^9|!x#t3RU`5eAu?y|rqY&))Q>G@!Q9(frYXxhr(3$-H z%^c0_dPd#(plui#xbeqmK+cip7$Tz(~* zd8I@Wvhw{=bxlb0QtGjKqpHP^b;xuVb{boUAAaBXelNKh>V>*r3FZIjylsj`zG=Q1 z0%JdsGCU~&+h8c=zKic)suzBiVqoTQ!DKi98rYf?AV@92+ks5PBL4NJt1wZ->#Ip% zO<5+8`P~Wu3h^=XxoQ-dB-OLON0QA9f20JpuS4t4eh`P&ej2*ExYGDs-Yxj*ZTx;Z za?`v3vi`2;SVbr|L9|6|I`s{rI4JX2{eROl3)H^mo*gSsEWo$E6|z$w=QD`Si>rKSW^hrLNX~AB5-@ZlMyD5pkgCFB)(!*D2 zEP4FpLd8+7hkp(3ws4K@S{~j!ArF3ZBfsO-H;GZ$uZ&B_VxC>kd~n0TTAp`xnF!}+ z_?KHO2URQKoCR*zHobib9QoQF*456wU<}jJJkd!L zcMFJ_=*)0-QAM6sMCpG6=+(m#mnbCflPye2mg07t?;c+;ps!e&>W?$c%>s64q`fiS zHRI~Ihq@J`z*I1H4fRKF^E)b7LHxPZ!Jj^2-sr@PgS<_r7a{O zYN~L7Ijk@4sZe`ns&;DC{2>>qQSnXdXT#Mz;~MiGrnX=D2i(EUTUPgxH6b=q*3{fj zLgII|5EDFBQJ3cN-JV@pT2|@0ii+Xso3yWAw~XI*(c80e z{qj{^Vhn59uf0Et1kPrrXD?&`d90#{L1&>Uy{o$oTRL} z0wDE1*t1y_q{H2rYCZCMN93DP6eatdFmGWvLgotT#m#5GJ7`hOVh!tSZLB^_|M*Xl z$E%Qg{<}z!@jl4e$4%eX|K~&Rm&wvJ-`+jBdie;N`0)j~I*dQ+2g9At0xHL3er4?e ztwS`_K=$^S98(vGlxuY&iSR9irW@Q>BALEQ`h?y|G(~S%MrST;0!kW#cS$gQuvIY7 zVS#`$_JAKC0Yn0Zx%t+wyn{PPvA|h)h|&SG_umh#? z$@V|@arh>+!NyK4ED`a|l=RS*@|yq3;Zz;Q^ju*7mXmtj$dX!jZ&XDMe^w&KUM#|F z)NP^ae$DNipnRI>Z>rRz-ZV~0tZ|D`6Tzc~SV(q;isioR$v7g z*uG}$1rRBEXs^L%zZq7JfgC~O3cH{dI?Q9h8wzg5^U5EuW_V)zilDe_*2HvwuJ__t z93mMg&HgM}I97Ng#vd!RMRp|T(7M+C=EWkBq^v9FE5xv7s>cGhWJ+Oa(t)pGfh|8c zk9*ho2=6}1M;&Re95#{9fJOo3bnIEG|K@nWt3FtCvv;Mucc6>VF>N@J3`hC#Y7@#H z)0x0>+-flgyS{vp@gFd~Ps{3Bz&n87a;s1u(gfT&`5_W`45EhNkTOz6!giohwLxv1 zd|L|o)?BV$?dNj2n#+-y=?3Fy{Lg=sKlIFNs{}nw-}9~j;_J0ENxh?Ft6A>EwJxxv zeu~xSC~RZ(SA#K@;~v;`Ir$*tR2XgSiV~m_Bn1-Kafe)FeZGOb#dEB)bj?%1D!IVW#k%0n`uOUr9|TMw0PY$ zS-q4%odoVT!|&77{DRYD$E*Yw&E8w1oZdwAgaLe6xFp#Ng58olqe=^W^Ms*5_otiL zNms*NK$Wrw!9~+}TVC<>#L>{B z3?W-_W3WWqV}RLofoylcQvQmx)i1mHh}wq5Af(|XZmmBw9@ZL0p2hR4$APt$3ytb3 zVNHm}Qu6Y}Xo|db_Ac#aq?M0&mOJ7zKzCfR+^EzN3?Z_<149$r4*biy1fnTM&+8u89*77|V%17b2aFuG zT;5~>SDUM?PTDc!W*+R#4VSTsls;lv1I->OmYTe*ajZ|m04tsFOI(ZJc9LFn{c&Q< z31}w>+zZ|i#~1j-wT8kdQSt>z2^4ufm~XvEmvW#t*X1Bj%BnQ-#Q~fbGsVu24Z$Xi z#H}ay&@jEHt?wMP`#Nlof&Jw1v3+__U}csy&bN|^Hgus56|$@q8}R$gX6_bmU;%7+QtviPP5xE*GH|=M_%kcgx@is9FJD-%Fx*BM zXN}Q)WAn!R6po!Ce)(Vz7D45NJ4ynr);B$Wn1e;P^KZ{esPp!XF76;s5f5o+f4fuq zNlK1BF{P=ROUteZ+uXmmX4PNv3%`7aKwE`>*67U->s#lJy60MxLQ1o@AkmL`Jv}z@ zp%fAy9KwryvF8!Uwt4ijPr)`X)_En)pE6^Mlve_L*+@I}MXtz(WBs*o=722>Lw|>+0;i&BV-7aVOT6o*tr(^K?FW&Fh?jOe} zD+r{wDK|_}Mg=CsYDFToT?LWpK;f$KxA@2Cg?uqw{2{VoTJAPdXwU`W_U^#aGVsb2 zGONz1CFkpW|3SAEP>%cuR^hheG!OW8zCL7NsVVmV85g^$dd3@+tXD`+=JE6VXiath zQpa~`wZy|w{j_Wvw2GkUnLI})8?lk`_=e!26XBHg)B3H&Ue4W)H%B8PXR7;l7W?&@ zJ|Cahv}q2S++4VM9NM@P%g_9%q<>U*QQ-E@_BvF$$07c3CEEeEVJ{0PB~UPKZud+6i7p2SZ95P}`hgkAGJx`J zW(jBk8sDnJQ~>1~Fa2}t3oP~1ok}wONHL*j-`VR^pnTgc!7|Ts+0(DXT>P0+-C|z# zg|RAD1B|EwA{m0qd7B%W^6w^LlPDN|{HB|skicw*M%}`8qF`QEk!w5Q#PF{|z-Ktf z8p)~D2I5%o1p#$gj#PXCk7hDA(nT9=K9%85+ww#S?bE2;k)`5{m4`K>pcuZz-b;mR z%yvU=GW$hQy1(Aeul&MKlBH_^jE7>9X~nmxQFt8rcc81$fyX`g@Z6);9zc?e0ad{G z%Z;Y1Z?!kr?eY~E05xuM6-LG#Vi_aOiFu+{YovHWO3T+%(r zT)?rw)T4;-{r@ir_^XQXCDb^W6S1N*H!$ULi+K#igoS3CKUtG% zKZoZ7dJ=ICP^lhi%&P-Xwv&+nb=9jnY{gLd2rbC^Q#+I8GH{nG&yX3BH>vdJE=D*e z``c$+m6_hOSHX&J1!AqM@Rp4J%zfski62Rw>qaM0?0Usf&hPTM&$_X`ZO{lG4ktzK zk4=JY*R6~hvJA6c+CaoFCx*;rYz9Wl&;#!?Q^)?{juUbMhAvPq>6I+8n zWs`3WxWSmK>rj^ms2kE*G3{o+Y_SnXg^KvETRxuO*c&cM38+@4U9D~M;vYY_68iy( zLj()s*gbP`Aru_7b}kzSNL4gu%xx-$A3p^=*-Ep(9-y_IjFpf4&b7`dJO0&g;L})F zs2Zmd*+fuElzQxnpLmusAJp`5%9OjWt3iLb!nL!V{SNea^va{fCMDae>u!>51J~0< zZ8dF5J70HABFgy|8)*s`neFn!xV9@{Ck1@4bOVi=P;0K5G);b3mgtxFhA0VAG%$V* zZGnK99#tlXG)ECV%z}D;=S!&yuH&91 zZF^G2uXgZ+-q>f3eusgrF@r#_sY&@Z_PU~rAPa`?3FD$Khie55%Lpt~kd1_`A zUrIL!KgCRKL0CtOarpcc2&?mlbb&EWOR2&lcy8bGwaYsBb$t~-{#1!^7#UouyMsIs z{n?1x2Wjy&YCSxbWjB2v1W;0u;p= z+)Z7X@bMz35eDkQn@^*`u3CAcO(>M8C^||c%&7H8gAZG8JBpVi@K=Uh`^~Q$7k`YuWlti}M3rU~_Wl?Q zYS*OVW(hccii=W6km(FyT$X8JwogfalL+Ro!w&ErnDy zt}QF)A4(P^tv--!@UHr_2u4WrEjnl9;|zk6)cb*yDc{T3%^q-kuZSjN*R(7FfOpTD zx!?`(NeIq~C0r`V*mJ)8aCmpUMPdJHm>7WWMfgG-IBAH1I6N?AL^HahDC4<$<%`Z< zj=Dzrujh+vl>X#qfI>Sx)?T?iZwvfeA1NN#5YHjf&)#A_R}LopW0cp+Uk>CKdVq*W zyJg%q=BQmcP>AkZiUpN;OBW}u9jgrHLc?dhzw0*Lcw<$17giqBUNT;WWdb_?FB4Pyu6tSG9`td>ufA{Jea)#R)3RoCvQkg~nIx5n ztYF;Gh-m=E_*fHw-s1bN8F4@DXg`Xy*V(Go-1e?Eu6aP*MbG}cCn9S?`^iJo)%;i9 ze>{LjSjgq!4CQR7v>B*f7b*TMQNOeZC>CY+_iFyxSGj%Ky6Hn1Alrv+ay_Bhc$=#E zjm_2F)#{{C*l2yaM&;gG`sqC{t=LI2SR7D|nbp!%-H_Z@JO(Db+%z%<*3O_2@!Of| zjbw~ep_llo?opHVQTpweqD2N-+avzXV6(qynDdY80fPSM>hey5aA#%5Nf4F#0H-Hc z78wy3L*BY@UEc5uVG;lkdnz2O8=*8b?_lo@s*!78_!qEmmvY~&ObZcTz;#8JCPT~@ zQ=O`{Sn_yOJvi!_3YWOg1qk-IL&A*BX)qE~5puM3l?(t`01PG%7rSuXI;)z3&Kurx z&APwxiWj`0lhOT=Oh>G8!j|<_Irez|~I3=&h=VlzW7jIkiEAw6SoKR^|bbWMe z7rt7oc20wy`uWddtP?J2neel}@8?WLj-9Nzog{>{(XRJ`A7LG=!z%Gqn`1xF7i)=Gcx8ZHRO~iPS`cTpoKMhuA1BICV#OW)G*NU656R+;CP47iuFdp?mB`o&kLZm<0kxz zVPq#_+d;qbAouFiI5==tr%iwn1syOn7Pl|HX!lg2Pk>ocRv( ztb9B(aYL2)tIsP#^QC$fl?;U|wM#jy&=KA${nq+>awGk=Sq1~ja1OwtLH}Lf$MfnG z8xf6B-o~|R8P?)73AAi;>4mL2sz^Sw1M;Zz8lU+6ghSHOI#r^V%_JN-!=O93FDx#@ml{y06rNpn=#R~P?XqlBf#%{dJujjxc@==aok@0?Vu z`6KzvMCw8%8lQzjOT2F-uHExtipI&Gg~?w5?>F*KMj_bM}AD*-|LSR%)exe}4}+(2n1pTRpuN_@cHX!-XZ) zpcUE|ra{?#S+%mCtE>E|wO_VSylxp`MCwX9lxi0I=6t6N%%Kx z^+$Oes8tw8VV`uU2Tc1rBl)a`q(c>&9+Hmz*p8zLC!@Y%ursC@Z&f<(wIbazz>kI= z8`r`wUSAMt{FTD{%VkMh?W0{4ptC>0_Yg> zsHa=#Cx9u$jmWn>P^Pe#3>toj00Mu`;IwDUTj1@5wIgyMm;Q+`k=p-H0t#gqKj)4X(&6NSawWs^*()%X0IQX9n z2fB?Ihv4WV%EP+gGmXo+A4$3`(`4Mts+GM~HVa8N^?{&k?LTtw&{_M0)-x`*m&c)D z_``lbaY*W)ukNf(%nHg~!>OPPz5HM*1Da;ZH9*rPC8uLQnyoJ{|HbG!I$tL+xBOeL8l3pl6?(iZlT{ zy;U)L84%>%B$M+>=f6X_Y`c>h)UE(wlgK|$$;hg|p|jV4?GwgH73^W4JhE8?2a%Ei zcO>Q@Btv@YHL%7%PTGroD<)KDysD!3goO$K4P|XM8MJEHdhAMAXPs(p3AuXw%G1oG z9tj;O?P3BY1Cwq~@g(52X4NzCOx5QB#zvZbHtSLLiolC z$1zmiv6Qj4!z3hZ%L5Db+x6po)Ya2*6;LZ{0N#{=>%-o9fBfiI_yIZb4)UJp2SgqG zmMLk0GL(8gIIU#-%^|;;Ai3?ux%S7N56>!Em)TQu^Ql%&Dy9Ol>SmplVJN0)Mw_~u zMb+a4o_M=vmiL%y`$-t|l|SLfeM_UkgB=2UG($ zCQP#jGe@qsGex8IRKFVw%R$e>MFifY*~)=jf?pH;Qy2|BbAW^Kw8Oxvi0I zzsJKxW0tr^zP2sJ`uV&yY~g39_4qk%;SUW>PuNodHBcX?6#S$=$x<)=Nm?u=hs7=S zfwV+FkcIBezPl{!bXPcaZ&ISeboA9|6lsKnmJe{f2S0;U+Y5s|CLWFsuk2|YTcDyQ z^MgkVRa+l!z6sWt7ukxmpGcJ9diSig*+9+2=PA!Q;z9V`3 z)M-O(kVRW@pI^5ujplHoH>S?z>UYk1Ec@&DBwD<&r1xOR%4(jjJk@14N_N{iz_?Cn zK%>lSazMOai6cD!Boy~g#Iqemv!)w)lCrC+YF3o;k+XlKLz8KCY>TO*yz}MDm-qO> z9F!zW))4DSSk^MUhe@EY=kY`Dwg$Mxn#g@~leB{8;y9hX!gRg-zwlY;c#WjrE)r}9 zPJaT+e*$&F!oFPHauEd2(+zVC5CM5RpIda8&1k{m zy#iv-Uj>>xKE9pUF-ZO+Uhq;p?6<}_G{SONxK^!Je*w3w(ibQgkf4^Tr9{SPBPPUt zI=8B(hF|`kxaI-;lNUvavJTg4n30F2L!)pMt$#aqN^TV=wwi$ssp2+wrIqaa-bV ztZa>a&(H|_;C#9U*C&TgyUh8i$4WKc^~>(GBt`$)sDObJyyNw1Ra0M#m*6teMk#q-M_C3h>CxE{;Em$lR_ssj|?$2#dI5I%uc)>2sw1 z%#TGm%PQb=)?C}KuI;Cx_2P3&_TUxqFlQrbr`rvWO{T|q#%*Ev4sr|%P%cI4S4!q%2SN!fJuEF46?jFs7RWIRXRVr<8#$(WuR(OG) zYPcAqIqB>xy3g$K92>xKU_g|I!wHSjIHbnl^sTb<5&jT5Q;S_Q&d%lGUGWq zdx==!6K4(6NSFePhsWw?Pqui__&(w56RZmj4-*TOD;`QFUZ$gzFtZ< z{$+T082Wam<=(%uYia5ryfynwy|^FcmX(-WkkPZ1iOhN0$^UqqAISM)2jbXjLY}HN zx@9Zo$)VE}C)taf-7aOS!RNbO)Qd9JN_-{M^OTMvDVsX#lGC`t1j)?D+b zbtTp{GGI8AU#GLl`A(5R){^1D;b;vTO$&n@L~fo9ec(P*CZ=|=i~OOv+%H2RVx5ep z4nOs<9`5RPMR0dFI;hxe(r2g424v6%aGzz&Tt@aNQF1}f{!^xHAHzNej7`r}Kn9f- zB#l32^DTAwb(PA2%hb`<%m?hZh8?A8PI9gB^>Wnsq9cx9j%E^h)_D{gQfa>6ot_t< zdir_+z8%i7hrX{r^@r7tM4S!$Md#^TbJXfjMq8I!3_K>#t%)1~qn$cMy02D=clfoL zg8ysK|7=Bld%QfB^RgBG`a zb^3e!zPf9xg$0FzId|d&yXnG3frG?TshG3RB(6m3487^%K377?1Daj0f*>+V=>QsZR%3?9D+83X9iYAaGtmr#=o4FtQ z%q}@D&)2^~#@>JW2Snlw@>pX9uk!MyRQ^7(9?hN$PyAPAH^GR5VNcgYhShEqymsGf z!2VfnfBl8T*GHLGVfwxvoNiDgw?!^P9ouAryPgdzjT}jA^(eCRnN-hFMH7`(@6*@| zt5l{ltb5+5Sv4auZ>kc8p2Z$Ka&3JU+kTIQJy9hsg2F|8Z9Uu)6N&D?o>St6$M?~5 z=GKjR?H{FwoX|_w?A}PwK7}c3f1919qjsI;75t4fosjXcn$^+Xe^`bKS8cn}duDA@ z-3w}d;M)BU8-gHphA3=n5?n(dnr&43)TY*AmSyAc=kc&k^SQgqPhQj3Hu9&19$te=HDlCLIcMEIu08S&A(x&t z(Bh9c^0pLHmYft?rR|Kn6|sUJ?EX9TlqkhIC4lz&84dpPwyw z1QOz79ZricdL8g;YecvG_UHMx=9*l+2iLzozEMm$%gM(!w&%V>$ZID|OM7QQ1uSf; z1$tc9JZi(VVj03^n>$sqoEOMrZ^x9p)bA4`QWbCQCIgoH;SF^_=)1n151L?Cp+CRJ z*xYTyW*B!CqFBOI1L5NI9AhD7Y7FA{ui2bEbMN&=Ctif40-{ zyD`=_f!~m6hn*87mUDP)qv!7Nfus^pa>Z}=%@S3<#mDIz*#gW9*hhZrJDUpy;Q0WxuZV>72(nY#lx)wwwB}5toR-{9^ zmqt>Ml3YMS8Ub1QH~V^jzW2HR_js7+&Ro}{t{Ez)UTBi{1?c^%A0Dd>(=UAmf=;r( z7WjGIej~1AUGp(#RGS^Y@FvXfmC()oa4(PQ4^6+Q(TsmC z_0aVEW!+2r^02|Qm5!Sg#960mHd|p1A>e(rxK;buycFHT!yZVdH;3(b=Ik-|cbQS1 zsMtL8K3nU0LG`1`VE3W&rnjaJcSm37_vA$d6lHE$acg0YKeiTb-wstPs-gJQqaEiO zYo}Bb(PxP)LikTKMYgeepJczzZ6bkc>DufJ$Q@2SpgOetMS0QjxdEy)ms8UeeA_`i zNt3&SD|$A-O>yKg&rYSI1i7(h)|&|J*VFV-^)7;3nsFPx25h`TL-^HS#NpJJsNStt zdarxFg@3QjPq8H^qlf!}Qz2=FLxUAf=!LfV-o6yE^{JW*PoSPz$Sq30M>9~k(gQ&n z;YQsf6EX3!;d=ojhrIWOtHRlP64ySDOFt)ycyh9ixh=n~BFE2hyc`NvXpUK7l4>)9 zqApDDKAAH$L-oLPt`@cg7Ug8*F`B|*@d6LVf=8!z3Cr8wUe4ovJ2@SPyxkNK@>+0@ z=Z4(LhAykMt+CX!I6o-Vp5ye=H*CV;d-1OM?9JT9H>tSV4VBIEuQ;(u;JS@!sNbC{ zv4s$4t1XI*Gzasj>!aEmw0x0@bHSm<@rL2eA;TeFP**MUVTH;sr5()yD{)E=?_PPG5_lJ-_&2N9Xw??9m4iDlV27H;W zOR%F@HTj!G##lZ|d2>zc99TAyA6qX_Rk0*Fp7$pXcJY?iOG5SMJ-MbaGsD!b+27U0 zz0RVn@zSYUY%m4BpMMd%yVS`HeSgOTyk1SNx(-55YMCly#3O^LSK?@(hFTdVl&?A% zC(GjM4B38k)*|*r#T+peXM`QauR8`m4_;CE7!VAOGNa(&806{FMqUM@7Pb#wUyUcX zmLoLZSs5nEuSaX;LWrv0^p^KasNp)htrJ*#58?WkQ!k>5#FFRzpMZ+Xn1^lohxy3x z4gux`5myR^BjxehUgw59pL@6#Dkqy44Nm<&(ytrh2wZj8#`GdY3jm2nS+oC~7|hI!D@HEAXS*W6Jh znehVExh`tKW(X-Q|3Vw+!eEv50@>$b06*s~FI-XgFmS>w?fAh{5wU%0%B%P-hk2^{ z;!n7wtg!n7FXj3xRQHRXtTm{IoA4=BZ8#!1I|R11Q9oV`LhNxi;>C-(fmveJ`-8ouM$tC zjx;ozdpaN^i;xzpEJZoaQ%p%oGdYdB(`$*1uHkP>BjN3{AS-|9;^GVzaLC}(M=V&9 zzv<%ot_uUC>x|g=L(SWlV%UNQ51snI5+{(1_9E2~?}}7#C~N<;3=v`r%{c)Uf81d8;rBwfJyNBh(k9VY0j9OBooAG{(!#C4y)c!*Yp?JO4oG# z!t#cc0T{q=HMb9n0grXv8l(&sqWv;r)C2s{3^Hz4puVvKwxrGN-) zGYkEYWCRySKq~0f;{@ntT7J_)7qssdH~$#H7o?jZL30(!g7*U;4{Fa47INv11}JXp zkL=gn;}^Dd?7?v#n>F^8Id6Y6*5K5v>riT^q0Y^~iQ(1H!JB7d_*q=0W^t1*6TrkW z968mKgs?p^FTEA0o~4+QxA7$hZ*TKoN({JIIoc;H4nQW7X&Tie6T=WOZ?k{D(@g|~ z33|ao?RnQ|GE&nx00jMvM}uj*V3dvz1_^hsQml@}`@{;fHYM?O8TBRcyGun1rFNH< z&HUaFKlu0LHlE~*U0KkCnRInR*Bng71M++>wMJzIhd;m_0B`EW+KBfSF+97KK3bA# zq00HmM3+1OjG`eM!)7$r1Ng#U-_%;V4>=%4GhXGtcboT+s^ka!XihjRwK#5TY&ut5 zxL7o6Vq%$OMbbYg^P`?Y&XM9YGu5}jjaRxpAKo=<_5nsPbZ#1l=K1`#3v-hDJ^J2& z{sJK35K$d>5f(oiu^O4%(AEnVYaSphTZAKWEQYR3ySA)ij{QSG5nKfOFHK4&?w zmSyNMJb`wd+$ZwwpDjq}_F>G#-l1doY563o=CcEbuH3F}P_OcDF`xORAf(ZR+AT(P z)At2`aZuBp=*D#7OoAP*C>bi6VinM0P6zBA_8?iALJl3B%E&jUR0E!=r;JJ}FoRtG zV+L!+Z82)>i=^xl#eMBx1FGX;^F}zt-HoqV&eM(i13X_-w0Aphh@oD=?&u$dBh&vp z9iMu@DMDzM@eAq6ZJQk$hEyR;lr-2zn zwx+F@^k^MzZt$Cql;7>ny#1Ug?o0;h7G`G}BuUmn;A;w`jSILI;pz>&s4=aK52m$- zNH{Fp>W#*}irU_o?B;t_oy)P;VPFwUb*ejk%ht43$wxng))y!|d_MYoy=6!bWG=wx z&Uk@$&~4%gq)$Nv;N>{UEE#cs&)>t_2Y#R)QF)e%V+#)I#zk!L+6wYPRGSa|4 z+jE%)jEx(!n?GyXVhuvJfgs`ZQxcWm?Xs~4;Lop@VX0!gz9RHP?;Kq75wY;3h{LZq z0T4bSul|J|Bqfq4Y{m{Q^`lKCUD4y}STZ0x{n%1_Uj6Lew_3ZG)|3Ao@9hNYLM0Q~ zR+_j#9ACb(ot-lcaI*ykjKu}$`hI`pskLHu{%+6^Sn4UVU<4DPq}47qt@1P~I}Yn0 zuxro^BGuxvx>>Ts^(B=2Tpiw9xTXz>fj;I#9%FgGwA)DLsqZ@7t@P98uJ)D+FVJ3? zCM`+K53Qb5d(Vx1NuA0b1+G$#o)DVAuM5@JM?5j0ZFaajtu$Qbj z>M};j+O_;$sM^*UCq|oXY_uBr6nu2(V|Nu;^J(b4PHS^b zm;zP9T`GM)CjWg7S((=dHJL4-k-Scbar3JCGi)&5tC-_NMBU$(f0GY2br* z5X%1V)_9}sTDt7z$q_TE3Y9ASv?ol);HZK`ZHe(=qxQn=BtrgVfEv$!PuBVq=un!E zq&^gf4YaYT(40hrO5$u>2a(Rx?0lAD_YQFZ{{za1BTJuG3kM|)bc#D8abtdRcMBI( zmT-V;*Kv%BlW5-%PnJDv)3`jlYf{)oF3QcHZ7_O-@T)2rqsrD`hV?xi{FQ_Z2>m)4 z`M!nFB>^3TByfKi<;@Klfsj)5LXH`Jj<^?@zTD1|Cr!V5jE-*!~n71zvkESY}s&Atq z%_QbK*rKV}k{A{&yBfL+zOOqDzgbo{mgj=pU}^GwtarpK%G5^l5z*b;A(#WUz0HJj zL5xnYn&OGlFN7u1gf77C6%R{xp1+RR%7A2Gi$t!7$R#zsnnRfvTJnOLA~6N|L>yPN zRnUgVFU-H_jG99FIxeyCOw5}D+N2O_m3SK0^c5TRLW(ViKvZXY<+90lb-$|-v* zzR{~SXS+Q5uQsO?VU(!KF~r_^LbiOpFBgyrJ#_8us+Xho3P_tU=wpUgJZshv>GAZudCHcY%iAEG=28r-}Ztk4S zn*BBa{WF-mgX2pr6`@zq@&cU^gZALSadE1R6eiBGpZvpw@V{MoCI^OKNN( zl1eb=_XI|LU^9;MIAW7Dbg$60(Tu`aA?u9^aUV7)--VPEv%~-kUX%Ft{btGJh-nq~ z~XuY zMm!Q*(Tb8d2t&?`*I7``x+=DU$;1uPRfHzz9^s&mA)3^Eo>r5EdvLF)l;&s zm9Z#oaA3JERA^ej`1+iL|%|`Um`xbkDI$wVNY!fz5^8?r66QA+CX3B}k z_dJ^ZBMb|*b<-@UaHLco8iv>@Zj<0Qq-`$;1-$j{sD;5kUe6JmkAA&(DH-=Y2E9oQ zsdMpT_TlU$G~NLj>`qYNUEeam427|&iDN_v8XEhpHsxX4Fo{YqF&CY%sxSkCTc}#4 zyHah~4u5ME$JVv~eRO_%>FM;`yU=^!r{TdI{Easz0(ov&@9Zc50sguA4BYO_G3g+<3p@5TR=rVW9wwP!# ze}6TQBD4&k#DB~PVg_}P47+FVD|tIkM#PF`eftOq(K5#7n9IK!8SG`)smu!R@eqvi$nub`H^OlV;CMl}i5%(!iXWcn2Dkw2Qcj$vshe zTAnDG`@Vcdhv~_y<|rkd9gkNMC)2TcHZk;_zl+rNBQ^s#4vro>jhZ57I|TM2OeArH z4jmJo@I&h5qpE2JR1)w8QgJV3fedll85?f*$*?e(z+G*ueg63-Jpj;)TZ*NBm9g#{ zvDw7JSQkA@9RDMktP~+Qq6|QRFD>`v(YI0tWh$i?>!K)$7I}r_*?NSZuu5t=#T^}b zACiG{b9duOeE&)m9XvVOtH}v2jmX6y`_vxk6V41^x14pw~;|Nl@aEp}-MK>7(;`a=T;_g0$klT6>+!hMUfRnRlJWiGpw7yRI$MK}vP zmIZbY`-H@o`M;8t$yIaS5LwgQTMV$&QtmcuR&zewCE{@Ov5;}~U*LLNLCur2?_v&k zk5UOiUkl#CmEr5$a~z}~Mu5K?u@yqu{RS;2YZY$!=O^+xs9Klt6O-nT&zp5P_P@88 znGLhJSV@+5E!E!sBe#<0n)HP0$BNV{^SI*&4YmCflWYO%NB=JiFo588;z}@VxnHaa zXqqbwV%Q|~!~4a(_ioNZV5rGvTmumxDp=iQLPA>smddMN&uK=2juMZQyEM;2lAAlf z8e<{|#?O4t$G|^Px%bM?BAfAXmy<+^YRT9V5lQ%pPg;s2i z=9Gl38gx8F`0cC$8Pu3qlmVT`9?V0nb>d_q1A_~nkhB2dsS(5H)Q+TY{@fGMDRYwN6^3Y1Z178m zGjNaSn-?yY4ZnA@M7`DWbJVrJB6*)v;gQ=^Yo}nH3`zu!7GB?**JLz}W(*D5K@Vhb zrByHGv*CfHXc?5S+|DdapRdyfnL>P>1tjVcdj@q=_-fhI&Ms0*HLGXH(}T^uNSx3~ z9oQ!p-HwKtn8NTm!^DCoSJRpt{5Hk26f+iC-48tX3$nLKO%3ml#*c*G*INjKZ_1x! zgoBU-SDznl$y@c%`og3_xEj(e;QA-`05$T(Q@rP}F$C|du&7dQQ?c>Wb4#M)fF%dI zIbz#u4RXrya^nQz0?P+H&uWcKu>u(y!fKA*%+ijxEM$N?k35X9rf$a&JPs1sx>30l zKX9gL-&eP|EH$Ya#a?28{a94bjCLqhJHNM-!Kbh z5BJcA28G)xhln&0_Oj%VmQyY$lzDOwVP{OBP?L(S^ z_O74*<2lRip8wRD!{xu+Hh%R~t|V?l zjg09=Ve7}~eN^yE`NwGt3~v4y7^XxcI)o2gO%wZvp|NicKj84=3BHqs9k*M-U%gaNCP65qOQB9q{pF!Z9%f(lffJHGGg} z2v;%X9}nrWm?Un#QB1$ zTm|lv{4qM&&dxdym~Z8V0I5)ldH>MYOixcs=Glnbl8A588`Wd86@Km%f5V$914PZ+ zV!`*HmPH^I9CGlo?^#RAH}SPcocr{d#y#Dq`%YrdZ4U$x+&)Qqw5t11(*@&!tIm!= zs9U13}FxU@*`w~RO<#j!?gKGY3eae{2^a`>Xzo@_f%{~!@9(VmxDuF;_l#~h3ZOtYQS2?I zy!DUV9j}tiJw=p;Yvd7%9>Gf_<_~G`OugC5ddX@FW&B>%ycmwO`#)Md&$TmLI^qeE za*;J$b5@g)sU$y7)sE5|{UPWi@kr(vNF7m}pOm|-`*ZqvmT`sgMV8~V26d>_HeO!< zH6LAdi%?lZaXBge;@ds3KWyMy8hSuDUp+=mH<;x7(ddcT%9^301vmyT%uhEkMYolv zHzEDDVmdX$XfaPQZGA;Mp{=~5?7dd^?o*GhBQ7AfD$9$Z`Q7ObDngCNVtu=olA@bv z>y_E)e;d3$ZSvK3V^F>>82eSVTdHcfqq4cA7alu*f56mdB(L?f>tXuSGGZB}8?o__ zOf%r?2=(34rFe6mxhLbzcl3F9sJkul+RMArBhc@it6^dISPq{;tlcw-^A%^!%k95c z@ec*LMhGIMROYRFJx>i*Dj3J2i_=$L)hs2KKN!~d^+OpaCHE@8&-WNSK1W+>VfEnJ zZ7qxI?`xsM{fJ2n9TRqZ2w0w*eB98MHO|v%oyn265*R1P&VR^eviBTG{Aw|&tatch zyR7#D$}XKChHu*%-!!(t%>;Xx^LMzfZ3S;I&Q679C!LcBD)v9l<89Uks;dG;gUd{5XC->QrN# zl%KOg?q|=ps5sok&wx7heM4$)J>u*?wZt##LPI+Q?mynuFCz!Xt4J*AmpgmgJ85F` zhwq6GPdyeV^QC+ervpz}k@o6w6d;lW9lw<4z~|I&N0f#_slH)XW{MMT&-x*G!Jj%d zg>UG3WS{5ORwh9SkDUa15Ju7}G~6Xy_dsF)2OZM$HLY)LQ?%n1nn=`PjXVe*Joe6t z*pqXYxVuCUBx7%|Di5npiC#>*-4Sq_)`vl;?pnkM z-EZK~3_IsoOizZi*{ogCAOK~Kjmp2~iXGnSm0(Rx z>j|*TLh>`@Y9gJn=&?4Es3+F<*kO>ayH`O64uAbow!#d6@dSJq@1~&&$o_2p6-$I@ zl}`cICc@!-E3+7U^oT5Y&!n1uKPR%dL%=PsyF7QQs(^>uM+G)G*$iL9^SEJs|BK6? z^atbQoCpmXlLMp12{vBYub5nk1S#8`uSZEXQm6*fkST5zks`{!TpZde2d`}epj=vbWXvEblsE1Gu|t5tCU86H{gT`^owbhp^J-Tm z8l%Fdk~ETcwoDxnTWhAb7#@w-SfNf<7(Aa6qFqKq($}Dn$`bKNA_r5zi=Q7_JUg>I zD3ASAa;50ON8MvVYz%y`3WcmQV)r_XU8H0>qf;Y*uux`6Zt}JLEPry(_hnt0!5kD> z2X@GzaPHM^eBf0XQ_t^T+L!JFrL?PROB|l7Ui1I^gR$5WnItpTtj$n&o@T{~dmzN& zHtF(W&55MFWJRTphAeGng+3>>nT#XO5}SbWJZbuL(DSSvR*37r=7RUTK0u8mm$ZIaD??;hcs|Db zBbFPo9Ghmg3U4}M_mj#n!9kmLv*jN(*PxE7MvV)J}go4$H!}@GL-iE^gJgV$X zSM&!DnOX~Y@a~G5X35gu?YZ;CwaU>DqLdI$%*AbFry9NZ&_aC+*Kw_x2Hht5t^&Ix z(yPCtPJdhCi_kQ?H6QE_6+dJ~Ty*{UYl{FEYYnr?O73)9Ys_N)v0Z25k4p{T5U%`- z3TE9oYu~%N)u0UcEI|S_4b2ztXf}Kh4p7-(EbUz``%q@7Owk@x1cQ>yOLZ4-6I#Rn zhXW@zAR@&{{3Ve93i2rmRI~bOgTJ&FLIb&oI;vbxgP5y0mTNz*$KLo)%vLCV7upAc zn=mIrxuKVM0>f|Zylm^&@kc2YB_O`$v>|u0MAA#5lS8eN((%#^Ixt11lKF6nqayb= zII0N+RK;9-Uyu=7!j)92OFmS*cueFyOeD@!3_njj7R+u1W(JmT3@#TO^@hshHDg3`fS^?k&lo}NbgSgP)WGWw;Nu<|)V{v~{ zw5@sUJ)?xaeI_YMJ224g!+qi-Rl=eap0eg%{b(>LuVG+1&RB5FO`x5=GD(ymc?|gr zvF`vis1hm{pp61SU(jkDXUn0*&@`vde}223Ne~%7yL+*b*AU-itui72F1NfDV`M*_ zC|Uk_6kBjY?KP?d`3KPntImrhXj4ruxng%XZ7*&NeY#{$#ruh$o=J%Y zIfnEOYk(@~m`j)!GVSXhM?7XDUuu;hSi)Y!d=Q*~63Tw_pFo*L<}DF#Sri+9m)o)H zKx{J5g*Z_AZh)|RIlFN8Qs08?`DK+Yc#A=>2ts}U+Q%DK=>3e@tq@Y^ui6i7gV z;k$Y#73)dT;E|zHJrxKgI9?}c;9hYp-1^%Rd5SSjJuEHWdXC+uHGBSVZnMb+wyjj`le1Ia0PV`>Ecb0@FaKo?G7ulI$?*GXY9xlf z_K1}#n0C)RYQ`ogN#fuBaWP5wVkBY@Ly&8&bQ+)U4 z(?pB%V<2-*f3}rUne7pz8N}*)eI}9DP9M?2_D;_)gfYu1m9LX*t<)Y^MYtBb5`rTw!2-hkLY_M<3<@#bY ziB;(%S6x|<75cFm2&Az-0B zq3LS~&5Uunjt3NL3Akki2?!p;hZ+xISWimQzbbl6;|t&E5q5e>ztX<#mo2+ZZe7lQ zEs9dKxn!qQvk*Yac-Gxfs8qIDx$2|zc7*2Ud`=Vph-SIt?T|D|Zx{lP)$?9lv?0~d-?3)ts z-9EI}o$XuUGgv9J7;=JioOU@gY+0~+595_a5(_#da!nH6eWirDHSXQ{A*m@KFlIt$ zINjlH5!Y`f1Y~b1VUb>jz}p(_RcGKKdH@1D!Y-)?dgHjxH)1x zVFf)$E4OTAE-Fte9r1?Pa$zgT&n3Mnl@$H)QVP zt`q*PUMa(Mel|N0_!B&rMO*Ql^9Ko1Yf|m?=SZ^tVR0b^+5nO9PbV})Ui{l%8ob{~ zKChDtqDPbek;obFK#X>zbutWiKB!FLzrKy}GYwm)LPer&`Ls;U|FY>^nx8EWKH%A0 z;uM9F_T&u&aDj2szljN|ke6FT@%2x7;2QKjc|3SoyO@6(?2?3NHIuhYOr-dsUZCPmju%W=(>F- zMsgbl5`V(A?ko}3RcM|3)=Al?_dpU7pA}NAbm&!myJ($d zoDmmBQd{>FR)uC5-{?@ZA*IJ+OWOOoPJC2J+nf*uO>V|MIp=dP5GMrYrb-Awu#)5F z#PIs0k=CW#M@t{d_4@xxopFwDb!sXzx<)mNUBi2|#KJhwEGtw*j5f&6=+?5(i6hMBHZ6uxX&1jbTY6H~{ zr+9h)Rj3XE;<4s*7O-__YUzh;cFw{QGE8|H_ z3z5LL*bpD;lbt9RkMb|sbL6g(e2+NANCzXBzBDsZxrq|HvlntDnHic5>p;vEia(1CQ{6%WDi_xdw}3R$W&K+2uUj`;oaGn9CowEZ2n`g^Y`Xk<2*xvV4UOTRP8 zKXUEkK57yc`jh2I=1w#pR&y?oZQb8tyb-G2B?^&_ZE!hMcn#NhFYpc6a%{)U|Arn1 z?iixzkxy34OC?I;+w>Nm&sJG;xQJH(vS@t36m);XNxL*Bel+h8IbP*CzlKt{W2(*UIjRS}tbic8VH@t2Veky)RGpT9) z5keZ^>w7zdLH#64>2h0G?05grfEU;KXwLPj19+zF+heBsdr0 znj96J*feAUlIRO#BbAGQZvJF@Jat|1k^&CN39n+1#j~BN5Z3j|(hoeU&Hsv*PFq)> z;otCjdbmq3(eDu#@zaTBkB~Yu72$a5#XKy#%;-i{3=$&@95fP-@TxL$H}@90D?ur|bknJ*}coTfjaR_^gd%1S=jctd=WLy5U(%0IN zm$5hbC-#4s!ps+!)}4MOd-FXwg1>`rIJC3-+#WW~60Nt#ih1BdIpru3>wy$U?6POr z-Yu&3U#NSWNzy{p0OIbkvG`M;naHF7cZy%k*lqf{smQH(Os(DJ!B#XElLq7K^O`s7 zNHa+qX5KZeuMi~@q@O22@*<#*4eBH-z1@eLzS}k1Rl9-&0-&*>J*pZ6-dkr&qgW{k zBds_8VhBPBimvTb9a>Due;(nUrIQ3E=yM~UKtv;txxL%?KX_k$)PMEGQ)FMQ0h+mQN zNK`#1xD?kRr;1{-BuhN%IQV-9E21Y+XB}r6ueUlSFhU=^ODL`5P&*M|!S$nE@2 zHj+hN`pw?#;uOTWzUZePOC||ZC%Y4o`2P>#_()cg4QEIQltf*q9rXylL!TBSd)`8` z8sFC>ZLz~xx+?EF^o?CN$MHg#9>R=*vTNvFOAc*~3xv%D)kx%cA=!7kjU+ezO3Ez; zV+TTJlvBG35Ts>&L|(MzTG;!Py&>rn?t6GPqy--MP4X~RM(%dzm@PDu zcGXq*b}|`x`{x~Gv%j)c>!}`D65WTP;9h)=dVpepu>?KGU3@gM%)$BX)n8k2Cz=p}ELdh)^sX9LxM{1f zK`J}@Y~K&JuiD4Hi8C$~1+Y~68#Qz>n&Z6P!(>$puT7KM4U%=WFs=W{$s!}}S}^|x zt&eGh3~q8E()DzMDIgL9rScFyAGISR`(PAzPk+N^%RMk0J?(yq(N&jTZptJ{rb~g( z6dwm7j%VKD>)IdWlbZq<&%JC}D@}h9%zl|p^sd%!RVIe}dfse0~5>rDY3gVhKx z+qIAt-|zlXMlOmQ=?3QC{j*-&O`|MiAKnW@UrL8-G5-@1)?%3XRbr54@C3LocpP$1u)5%avq-NbZEe+0*JdGMbdD<;@8;YlEq_EZ*y`ShkShs$j%>VBkIn{}NmjB+$ z{NGb|BOt4%uP|M5$_?eBEeE#tWdB~=j$6FP)i;`5aQ0}=amfgs`TA?bmdMYuu8zT` z_htk*Wh3-z{x0di1yDM$JC9R|7(Rm$dN2iOE&P7k=RmL?$17U1``Oo-0Uvh0#Eq?x zYR&-=&t6VUGw~#tCFqC#^E`sLhH_0t-sL`LK3heGgxjSj_w-PG3O5K_)nL9(+n59f zq*soL)vYRw!tl;eIf3ZRh-%$kpeQ$9Xztz$TCeBO0237fmlFJw1We;M+OmPc7w~Bl zwGli`5Q-UnWbNrb#2^!pzAlZ~jrWS4=ZYf;-el2ED-AW#;?2*k~N>|>`%*l+!MGM-uO|s@8l0f68+doA4My+sKNffWjp@4UZBt-hc?py^D&uG%# z*r0-Zr+L-!)QxVf?kg4ZyrQFFGvnKL{M4dqFVT>(wik>7_K4|B`V3y*=$Kzt8P)bH zT|J!=<6M6cD<+vAJ)=`SOgNWEt)UhVDZk4yN|Xgs%z&vu4QEZxOOcW!y@O$>K_f;g zDZ?&B{7*uX5SnX<(FXT+8OzaXC{Q*u+8-hQn!pDB4OQwn)=D!o$ArhgtK4o_rI6f}~h zaj-+NA#7pQ3>uF|^OU*zURkSy?f<`tE^j?6EOWqVhqwjVa6+`%Y^Jn*uq*Q0mbA>d zZKhiFLX|MOe_nH}3XP~F@jUQ(nglZ>qq@l+?=t1rF&%h$kiNsZq293eI}_r!q75nL zuZ!Amy={$S{T;Z%iEdS!Zt$-YV2bJmse?$b!rr>PKJIRv z_Ek{Ci?Qc`F#J4U-ZBeav;CP60OFf>cCgLMHS<=cSV#AIpsn7xpA6V+Y=j@S^XPT} zt5WHE6?m;;97jV?Fre{D)go({d&B_2auP5Z`7uo{lk)#%0aOJDs4TP{4C}VxM-yts z`AWg%<}ANO#qhEn#3apPa&8_TD5{X(7si9qY;*j`u*F~1zG%&a12 zvlE1}h1t#iXt7>i%f^W_WV100#Y0*mslb{jqzF=v?6ve5pI6fmTq#i0%*mf@H=#|` zUIs&%2$<+mH%_w(QBCFMA!XulBD2UE$B7|uzYA|>8sU5{fU}seTZXrmHB{LAC!8#A z*B7WG8#r?~f)kM+UvVEwoG&O;-+yl$6ciEIeAl#9DWsfpox&WYtr4x-%wIxt4Q|jm{o6Jp*-U1v%1*9xEVk=W6w@imwHO7^7FM2RQSYUB&xYe-|lWli3s; zr=!`d>7;=`hWfEYCD#n(4r0lf<Q@s}C;`M=7$iok1(m>wvHXHGa7O&>Kr$pOj*8NcCl=d=Nbs z*?K#2Aqu$wUWt?4C?Wpz*oDUFpbz`{tTxwVa{&^F)u5iG+VKhBvO+V@_MblRgcJRc zIT(}3bEhuz;!Tu^f%EfO&!-sme+b_P-{J4vP?QhxpN`?G&E^ng_o`fzDrp7(gO}7C z=UxT^Mw?D5wTw~0hfADDk#M`VxB3q%j&)Gp9;Bb@et zBv^;AUBO0$8e+>}O9QpKRGAvP5628gB+@JLx27w!#~*(`(Dslex7a{=C81!%pNTcxL1wE`v;Zrampw9c&q#x9 zy+X-eHabj|y@NBV#R{%Rc|}rNa0}dTkQOa4sR@Z+_aA2A#wsU{sb?;#QhJ0L_tHUx z!M^AqTvHxGRxmX|i#Bdx*R@hckxprIK|l7@PgPG~8*aHYQp4tS65w z$s5O^lhnu1r-2#50WtMyd00uOGGp&nCy_TEz4B?|;I00hJiF4p|ao|4GBmlacnd$zuXW!kR%6-%A) zNLMs=WJyo#0}J*0sYEW28*)Vd%w=Rv$O68}cvL@|R9cCSZP4 z;uGsNo$<+APb-xGi<5&*#uUBX1({&^oo$1RJk(p`q#AOCpzLHJSDw8uTh9~lstse* z9a=%;6$}eD7G70=?w?tx`9L8lR14T>^l!T+2vfTqkplqt6s`<}R5NfiHQZivz*y%1 z)eFCyU_77nb<(K5c6}(s4**QEXo`75Nsh_cI(GA4U3i4a7|X_Y)_8B#xYv9KFWjGV zO^1Y96(>D_bhLc53SX~eFw1*cEe~Kgzw#b z`HQQCZr^dLyaEz{Jz7Fp)$31$=5~-i40hqPh;*IRIRT*94+{_%gv3tWS~j4yt1!Gs?}`P->y zhUCg#v83vC8iC8ygN@HJITs&fQvAE2(BUVEH317hH)WQjB=zl>!9}u~^9_jPzR0V9 zA$;Ws@WW*fa2d041+?;|u3xL`og z^FtAsY5FCFG>6@ps>1k;8k}`cfaBmB7ZA~!X5v8&EMzJ2E9z^~m&1SW7WIQD!7lO) z;nivR?LVt(8;;i@Fzop^z#3=#)7%lp2b)*j5mesqwo&q<71hnc{d49;k%eih^PtbuxI$94<~0!8|CSLw?a-Gds-~e0*av>7 zdoJP;sq)UNxAwPmEbix9!eWTkhBJSU;zeDD%?)G6J_UEk{rFzVF`3&-(mNwNeS_Ls*>C>qiM8!lYqPf+GDoiKREYo9uEadrh2~wyY|3mk z%)L+R9N8S*Ftq#fglu+b2#XdckQ_}=bQpGCz0{STQ5CO`^cG#zt+VL6b8|Wi_Ty0T zOQHjsSkjpdA9^;vvjs!B_%{l-}|cs{vV zfy2bq#ptExMR<|4*fo_Fa_6Srj199^hXCCT^%MJ2mD*nAZj-j|RoYkccRgPe6re$% z@v>d`h>7shAoGX>`9}Cim_9D#bAXi$P7L4Gt<@Mj%Lo620=dC*EduU@NMAkp-G9uA zvyt1%8ldkq^hoI8A_cA7m6Ytxc5}dxjY*_(qIbD=PDxf=3A~3m#Nde_6PhTiU6rl( zYi3#1?Mrbf{2he4#){!Fo5wx75?;$BPMYFlhK#pG7hV`A7@J^j!kpCKacAa zZ_a*%%$s6jYJ&;?>6BdmEtuq`1u7b$N$K^&ibhh>zfT_Jt(#IR^$PjOE0hAkQ~mHJ zPU{V*MJFz}4Dz!UQ(4$j`1GUkOiU`jiV&-`&X-Sr_dj=W`aARI4?_4zT0e7N(3j$K z@`l~3r6mcV*xD43-<)6ZV%8jG|74$7>|0=|{Q2cM&Y>3*)7gi2YD=e!%EQgvr}@V2 zJL0+L=tq+o8BI|&M+SxisV#ok4eil6Zk?Q2%jpCy!Qj9uS*Ib*OC_g^DalRl8JlLk z`9-cA-y{liWIfQ9YfSA0NhzKQk3ki|a}%u0a?Hr!@*aL0&W`Nt*6}cMT1_Hv z_~)0GB*%~3nH?zR%+!uT=|T5*F_6$pF?ER{08)dWHwcdwH)YkRFK4Kdef$cshiGvn zedEqj;M|MN^X2vV^q`=p86OP*f_0?u^}^(su(>hr4$l0;p^mLxhMFU+q=>5MI`FT+ zU0ipsEF6X1gWaFks)Qz~4RfX7Ey{5|57tim_8E4_8FAw!z?)~Uk@s;Bj$|V2!^w_34m8yAZFQSq$ zJQSWJRq|Pqu~0z9l7%uEE_HH$W(vM^@@<}x=8UR5GqQL3$Gy3+>t1aa+=j#Oc!%PS z|C1XXjio2ax6Y6XlR@{Q8*a!o7v@TJr2gw#Q$yj9swBet?&9U4G7R&b5Uy zXwdMerc9K~UNtPJ<6mft>Jf1@G3zd-=>CD=CEV1Tp1>g%p%cUyyPsUCsO_q3t6Bz2 zKsSKMC}*(5NeEi(Oe_-BV(sFJ5 zA<1LqcPTRLAx&SSyTC41>r!5j5=g^)*P>yL3=5P>y}Qj|_GJ~nXfDlX)MZKhc2}6c zrYx1z`PGjdt?ITnbbf!FQ=iU7(R?B33HaKV1T1gbKd-*SA4-e`#*KYul#Ad``Z>2S zr&mV@%LbCLx=|Q;u<*B6*NMxSorf|SDCsgIeG9_o#sdxhVo*q_zgz393*%08)Lz`? zc~aBtk*v>>N*^dyvVz40Lr)8PKVjoopod%U^j-bRH5(;KeJ!(dbM4nGR9KudRsJN? zM7~>*zs7i*AMt@!kAP$;bCSJN-**^a%{e3 z(^r2Y9y^p&R$(O3-%b_%%%CDIVVkAW-vx$h=9J-2g7`a!&HwsbvwtS0kNo*7g#Bjs z^*`kfn>+ukFHXm^)t86L?d^5Vzn%;d#a$gP8H=j~#cflFT>sYZI>Q>4`+QhSPNe_x zpQPDgw{8?2aj9I_R-i5Y_U3c4dq>EaW9 zEjG}tXI9awaZ!tJjFZ_a&v3Riq|?L@e*W9UIbkxuJBx|!Y&9k%ef4s*1^DeucjN+0*WC!%|*<5Uv za&VkzGC8xk1d~*nhj+j7X|?Wl-6Paz zpP8tAU%Q5C(i`Q?8}7V}XJ_=@;`HfX9h14dxD|@OeU6qII9FEABhARR(T_|()*#ke2Z_FnUG*%|=LlH2Sc21hdWy!RQJtFtb1HhsQ zGPZO3)PbmQV3Em>=)&>rO#X$r=rMU05j#ySmL9O=550YXD3OYrTQ!B5dHIt$tl_tW z)A%Cz(~q3$Ihw)!yJuQ6^J=c3$fKat*!?WA(mhaAJvCtPFPP4&>rH=q${0~X!eTyP zk@wm8Jg1B-rGQKE@vwWFKqv*H81&olr@yv&ld7vdj&v9@4||(!Z=SjWTH9fj7~qsw z@AfS)(~dOapvj@9+-JE}8Qfa=e0OD5^8xYD+X><7*hr7;QT)<$wOua#kz=<-j~QcE zU!m+w^^M5M(5~d0psa7rv@w>IN= z=W1He0PF)cCB8c$8Yws_Ti#1F|KYwL%^@Arh`7ow-e>bKicZZv+NmN*CNYFM1%3b= z^nBJ})Xsv}DCouM(yxIRJvqcPMghzyG-C8^IyU0vcihg~{V$nJ#;pDt^J9ctqPaSd;(xVpAf8$9 zkG0H5wMVfBuqoG2u$cv`V5`?LRS$+h%)KEMgz{$p7ldgR3ZVIsEaZb_D*`D9(ELZHz@DycQmD@5mNpM@a@7 zj?YzmLz=%|iH#qQb^_9;vAp(WUuQwE?5X$M*{oXe3rsjJ>+$(wBxiwxD(G@%|G3TNY`vZk#?j=m6aJ+@pyE$}#05 zKbkkKk44`!25ipol7+I`SXv$DO{OdsDORzNy!z4d#sU;3m=e2%_3Gl%Sh{y@Uzox|W9 zz#ZFoGij2AcaWAbc%hc|EO|{w(QZ_5+molOCCS&_B3;RB{)=_?hg*+@_wlbu=tP-6 zK<{@J66f-^_x}AD{K5Zf!1b_FxK0JvSN1Ma^Id*-cA++a)@rIv0On*6EkkIV5%-U` zdRH2B?4O!43W-Iw-y`8L`5UnaGv6s>9B=AuNfX&;zWI< z%dmT3@Ml>{s;mm+`|Ac?lpqCuG#a=sJ2Fi62bgb%rK3A>s?v&sTbc8sTO7(5z=wvW zU$M=IxN?O0#E8K?ZFb3R@d0q75)vV-*5@|-KNVcGY+)~3^@B{nM3~rUv-mnA-*Lf7wghpbYqfOc}9Ln~82oAL#4PuMPpX z%+gPY_=Gk8MIQXlhH2Y&TmVv(QA|zD%9pss6t5mDPAe@_YoG;fS&G;w)ECHE%^z! z-A9KnKY;`|o?B(jXXVB#3@f{Uaj*lj@L+>{ZwXl!ZuJg3%)g5xNHbu#6L5J zVPc#Xr|?gH^^UmLZ2%h?R!S_%Ly8^fC4WuSa6)BvfYA`pUHS2o{n9bu1hk*~G)#CD zWRJNdpd8gw5|ItP!$Io{0sEzKYQtZBnF+jwS45{~g%~Hh_5g8?k}rGFM4C+ez0~F1 z#JzJG_klPiV*VP~f1AKZv7u<4oWeT!(V9fOjk3HO%){1h4qK*L_{8h9*()7$;JGV2 z52_t!cnNAJJ$VaokTLFKcK#$Qz^z(Q4+;(m8%#ngW?>s*zCwMlzwKjobp~h3f6s`C zb(m_wbXd?ZHE_h;(Z_TPIUERS-0=NM{jEo%;%jB)1B73YSy0n}A%H(aOWB!Zb61^w zm0Dj8nQYjhNZPhOJ?r(szYkyJT@Vj$Gk7gv+VnejJz@4VQE)t@jHvIOkFY1~cDmll zAUn24%8SStc{${Kob#kHNQMWL=T3hAV(7ej-W1z6Zc>U85v~x*!c;R5Auzk9U+J%z z96TOwl7N5;7iC~@+a7?7u_z-#w*Ew$&J9S+$ttYu1vq;kdsT8E+cr~)vh+3Eo)T^& zz*-z5>3GWSfqy%*b+?xDtTTZsXNW3UR`f}i;>IUkh258pef$t{uTASheaqk-+eI`` zCmWmu^yf^cG2Q>wy2yfc0mFwWEUpl;%35Y7l&VzO?ByB%*g(>^CFwHAW@cHZ zVGFzMm?pkZ$R(gkok_pA{rxo4|E~hogUbcT?%sUmIRGIfxNU*e{rQQ%?#LZ!EjCD$ zAtdB7t%GTlrSHaxJqP=CM6|60EuPQ>($0bZ8&B;1aL%>u&N6kklHrB+-D4v>n_i>U0~I#G7_;EWsbO3e>Bp}Mh1L9EQ;@O8q1;(OBc zjv8vEJ)>Ou#&EW@CBbf*vXxFQUUvEs)Uk7_r2Ifa%37Vf+D4rS27jLb@=q1&cD18z;6%R65cBG4Lb5ApUTh>QY#3o7ZVWElO|F+brD_HC@1msjS z>9lMea-^=d5K?%d4$n-Ft?s%MekysFc&B z!Lea{l|eAZqQ;$nf<}0A@^<%Lz>;C&xLG!$*FV+7MEujerSm8OG8oW?lZRGOB1tWo z<^30&mHf+~(2Q-!(WYsm5S1#pf1_1MeFG!^$3SmNP{pHzM6ti~@LzFUF6sP^$5gQEbD- zkS(P;_RmlmP^X0FKj^Y?EcqyXe($l23-xw_S4^8@izz6S}RBo&s29{k)sNe?^D5h`xNckzWqy`#Zd2{hd zvGfrT#_ph`1eN2PeRl@nq2>e;s9Mfc8nDe9rZ{+HfAprO?5eyE|NY*cD9@*BdU{W_ zB{Z%RD#k~iMw$3bt9nbOL+(*XBvqTC8OJ&}v~AVbLA`k;aF2K|&~04w2l>V+B<7zH z$9mxHYH}Ooa(CzXWFJ`#SP$IB$<6B5TEpUPq z0v2fBy$3(pGF-<8;y_*t!AGC3a+H)P?){Cbm9WMu1Z-^6_S*)t#`E9FRFjR{aYgs% zY-g{5!_|}gDYb@oLTKsOo*%B6F7pqK&6Jh3CS((tmVHONQrfFF+>l#r5 zp$HJ15z$Omy+x^9hAbD1oL_t6dHDL9GuAnvhg*8CgD+5(@qax00kyKoU31jaw&?z{gLks0Wrpc zW!{=1_8wE*dl#J0s(Rr($A4rxoG^D*-||sd#Fcui?V~+gB6pM++=N&JJk$M{WRDk$ z4!s}E11IfD$_Jm#Cm^V`;a__pcd^akr0Zr*75i7kNC{ekEU)1|TvOR35JVE7(vmLwM3 zu}#-RgrP!JI(dk=&P^LcM+6y~IVy|kQuiR$(_h-Q)YC~>03o_E!v2>kdX>qp}@p(+&1fbNhvaqM^lKD|?TN;&825`d4WQ0VVEww6K* z>%6wKy3{RUau-URIRjs$ zMat~vyUIADDJ_GefWOy7%P^{7B2qQzNA0iQ!pzBjxXH z=G1FeLz*J}ykLz=*F3y^kpneN-g9O5S?=GOZ!L21=RM4{cb1G!Pg6Wo@hX!8{+F6K z?%k!D`E+Qdpp*_@<;P=*OPuToSg@4*bJMb*?hg|C+ZZH<+vbiD!L>l2t-bETm9-E5 z5>bjN^;h*}2HoQ3w&v~tE)UPS)KH#mGne1Wlxa2|p*L%nUTi4cNfApU_x(Z_hZNDB zQcEq+&6IpF&0Cz_CYTIxqts@cBlNge;aC@(YM-#=GvKc{;$(8CT)4E!YhBtt%rVPj zsqelCvxvCqNooq7|5@v63!fIS_=2gyrLT-_EE*g&a?Ehh+aNM{-zq}|3o3>P?wI){ zLEl}Y7LS6(P05>g5AY+UP>oH8I)az|1jYYnx`4L0H%8$mC?%#%``r zSRhQi6HX69kJ{?*wHR3`CW)VKP~WNdc0aFTr9_0=o-0ppI}T6@!grL@(VXvTMPcP8N@Mtmb?mDn8+W$u|W%vyzs}i1#b@NSMIfWSzWvK*NX1y z4ICX?uMm;sn$%Un{+Wm1B2Y1BdUbRYI3!=hr6zPIMamwTVTtLa4J*F=oiJXXSX;dNC*-5@k?j48NDQS$Swd>lFWhNsFJVhqgK&>Ee?x?;Na7~b)#vJWiqGM>KyT+^>?@|^|jLRPZ?0S3c# zcSyygjMUrh^1q0?V83UH%ogCDn13B78x9(Uj13UV>3hqhcDSi-- zy@NNCYx^4OBmYY88fywGT~?GrVJck=FYOooSUNwy?6L`5mcaaSsCZAq(u_)G6%*jLTUA!(U|=V?5XUut=(rZeJd8xt z|B*Jt9S=g$?o)hZHo)OqM`7GfxqW-gtQExOY`cnq${X#mt#7sYSzi2O+pS!2@tUb4 z>0;>IF<`*hM`hllWcu2>8i`%Ho$&08gvI$5bXd9F@So|vvdo?RgrmOE)SMaLXs463 zN;OyUmNU*ya6(aIVR5Mg-vQnXJ*fLAWg6w(igx-?$vKeQ0u8Sjb&8I`q< zDVx>S(WYr4xKD)(Y#cY$)c#*0wC(-E*IsCLwXpb)1Y~Gx7CiPR+~hNTgWt%XkSG#% z8n^tviGv*6(y{J|D0ZJf@E~b^PTXziDSTJ<$+5*-oT=}rj_e!b@aY)6qE(G!`&#$p zK;UHDmaaNAb&HOQBt9P54J!%CxRKwTL54Q&#(_NUmtib-bSU9NBCY+-aph&Z5b7L< z9X0}^|JHHA#OH@FDLgovnCj7}%#hS774E>e!Ee)sfRVvUVU9I2lq6b|FTJI7$#V_* zd@G=Xvi_c*cdd2AE8=8tKsqYSB<8(9J`s&97kM*{P-JsL?>vU?R~kSIe@rl%6)?Rp zHUY0p%VV6J6@h(2_cD%_vsm0IJ|b8yTVzDE*b2+dHut*;D6@{lMRE>U@6w+6gd3Gb z6S0e^7;%^={@${?pDIoUd*7eyDnr`uY^=BE&(8t_w_0=4LYPzEt<=lI>9qFcqKK&F z1HgeH&^LGj9#t)Y*^l)nEq)l0a8_3K*+|}np}^_5@en9IrB~)S^$!>v?LR{DBo%zJ zsx|7u$%5*HKwiai@i}r9v$;?vWus!o1j(I5S`Wzd9{*B>(P#7gquQ|*igZ#!=T{p4 zAkPW~ao5rA8d76^gBHp3Q|mLOldbxtVR)z7bXaP97VaZ=E=RI*tHH`EzKS02tpBo- z-A8^Ll8RDz^!II0aY5_F;DN~Mir@_5s{fT=_jIQ&aX8PnPCiTtP0sVAMsI3mHH3L`gf}~&+^c8 zm)EJ4m^}Qt+ZJ=BWBR#0BTu>xvf-)ID?Ss%+Kl^(#9~;wd9bR3Gfsy~N?Mqcyfs;; zagjHSGRa{}F;J^K_^97&Osm_gANTkwRoY zeQ1~c#vNGoGL@PDhK$N=C+$pIrx%U15O+gmtG|YipQ)!e!nvGenG&EerC8)?GMgauM3QOW7qXJ56!YyF9VhaM~7-;hO0-k#PP*i zGr!W&Wc`OW?A(caYi3`pc6HMe9yuIg2wB1)rmV72>Szqi*MUo?O6ZM>u73b+jRE%X z+s317855OLX)JSjJ~5*{ z)!f>IE}cyLRrb@w+kIk0dM#t=kWok@?CTP;)4GQv>1Xg55X{ueHmWqvaHR7TjrrZ$IW%0ag)uq&qYsfU z|8%(COziL0qCjQ^N~;0yUB6AW6%QUEy4|OAa5(C?;9~{zHN~38muEx?ix3wer@s8u zE)E@qLbOho2D7G(-DA#uGLPUY?$5q=@ODv^5URpV!+t3XREaZh{E7L?Bq+rHtqY@g z;b^}v8$k5gN=;1GC=q5Yokw(656^e0hn-gvP*f=7=76tG_0|XS61rVlTnpIP7e5ZE zu7H2`1b?&@a5^TTmGH_Z_E{P29MQ_Hq%*@YP8TSC-hU#TBUp#+OP=xt8RxDXkuoP6 zPMW1%Kaw~4nls?_H2IIQtQ@eZ)pKESsDN2M{z7Qgjbo6T3LP{Q(w+OYTK@H-)gq3N z(;z`(f+x=!fW5o9L%7`Q%XOKO^K_c>m%aVY-BG7Frn+ANnR-PcrlNZb!?f;Uh*d||e@G?>>obwydd8As~>P{N*) zEZOR_7sro;Z)&Q_!rbEG-}7R8(qo9pCTPx>g{rWmH_*j^2a0Ym0}$l6uKB2F9{%dj z+v}c`|J}}iAx{8y#jUIRnDcq|!%7A$u2qTx!gB1@cU~zOIAo=F;glnQfVH1H|4|;J zto4t2&7CJIS8X>%z2Yf*qe>%r%E)?qlyIPt(SjC)&@#3WG zbw=$F_XO#3eit1tQ{;ESf2VOM39^oBbM$ah{y!15YF(;1^y}3l(YXkyLpUCxU8PP3 zmJmJTjz2DA&01aX-xW>36@!ByDlxWkarDCjlGOfe=g4ZK1iJxIL17Ft=+-#8Jm3|4 za{R4J?1FE`)`sYWpUmJqaTM~;r=8l^O;5cTviiHHtaSL!bBK56p6YE1q^0QwMm7EI zP{O^UJ+RQB_CgfSTPt-HB}69GGuHU%_f;aoX!1*QBfa;Thr~5!8?}BjMu_x zX7v}-vyz&?OAx(Fu&Cu9o7%hz%}E`tn3~Cvw{Yw|O)veu;cPF|C+QgcJqldj?b?0K zC4DoPL0)*Zyel?3SycwQyOiKQ5{$rLj)Hr4M$>MZjwgPu*ugCBb^8DNq2DErKo}CU zC#L;!njfja%vCL6TB5wH4+)R+9-PbTO3Vk#^!vqTUdF`3Z01rZE%nb;tvRUA6X0%& zGs!>7+Q5R{PTh9o_4O9CG>ELU0*FH*_hv;7sm0>?51AR;s}@ zyEztx(us?I;f#0n^3>{(QccE0wUl&?H4X!NB5DyNRSi^VLx@7o2A$52clkp$?@I2H z#aF8D!P7(I=j!zH0%ulTphm&UsD!{QYVuQ!8P1BrT--iXz0H)wyl4}~r>exsS2wh4 zG$)S?ZX2oBb1bPzU)(8N{tFZWUd%iUR3=70@6m7GGfg-4$!Bp!4~Ye6(piXwl0!5# zd2ybKwixjPH{6;OWmbGxilH=;nk351Tw7Fxlb&Qs&Q&gj@KT|2@6s@(uj`)*?ciRP zat-_p0KB{#?YbRY@w!Pl;HN|kzVon z(+xOhN9J@(eQvO${R1fi*myA>xcS`>d$GcsdQ9Ful$1^;f!Ptg)VqpK%MeYCB?BYE zJ(`f9@?5@YX4-GI^N1${%i1bRwbA$L`Z7(wvfPGqM`p9TH8U8!t7=Km;oOySHM2J_ zCQV;RZ+DdJV7S!w9D^7iWX@zcGr`4ci3v;pwgb7*KmNslrn)Scmwa+nBghJ0t}d;u6Qe0V zcD@0#64H60vQpxVD~IzWlk&=7P6N^8f)k`_=VObWJ#k0`p{uQn(bIQ*;~T8YGUXOZ zT5WCrvP=sU*8?4Mg(nL*YZ412hPBlGM;aCjrNVDz3ee1@b?pv-VtDo2YDB}a6^PnN z{u77(!U(>H=mK-vvP4tPwDUAyRT>+&$s2|-ayH+Qq-9lf)^ed&wT!>^jmyBv+QIF* ze-X=@x=XoNP8S2KL!kBe2v_v#F?g!4*~rDsPj$#nXy?hR@D+iOFl`= znLPn$kO-IeHtu2$ba_DMMw)P}9FKG2DJ8d@JOl9w3rndnqVb`u166cZCiUarmz3p zpSAj{?$eh47O*Fs&#s*qvSb{#ir%FK4ZkCd-q3HAK#eFx4j3N+<4>fnEq~3#H@l6c3N1J!AmHGw^Iy!#!uY zgZ&Iz1#u4gIUEh=-Ub;Q@m`|Fkp8qXr*C8qjKNmdKqf9sP(=aLU(BuWfcZlunodA+ zs8HUT>AO4NAe#xXosro!3Vc|9}oq>vBzIz)*{GYvDNdurI z#8vq-^Mp=I)$t-7`aUuX+y0j-3Ujr;@WRKwHRjyM8`hzsN)C?Hb5O{=*@DCeC>2Hz zKGqTqM|W8=i2F1RXgq^8xZKyP8%6}FFeEfdW0t$x2zW!oy?}{r?Ie(2*W#L< zW$>oXE34ZZ72^l{Wb2t9XtH4K`y*n*s(orE{du_8N3;sm*?Xaf8R}Lz{t>(qexWww zZ=E#XKup+ZS8I8od|fm%7&+c;=(u;j&o0*iU26X*!}KWt*EqXJylz@zUxjUkgwlSR z*G`TXL#HEv0w&vm)+jx})WaB6sn0zo(BtD5vT_?Q=-EP5G9PG+GL5QHJWmaNc>=CU zqbeTHkJSik)r7|~t=iCqr*W{;Tf7NXuiJX2nstyf9XI+VYvTHw1AWb9vK&xeOvtvy zVG9Ds^QM_>RtLqADMzwdSl36|6LX#Le&rPS7ZB(z{wtH|<*HKu9?RGqeT;KDLu;LqOlJ~npdVoW-%mKkIS$lW_zDq33zl&q zqN)yqDQ7M5ue7lORb8BMgzd{#azbgRIJb{8oXkHB7Tpe4t2t2c9$bcP*UML+DHP;*E1&n9O z+22eq4)wz}wbxU0bo5r9WEwVBCYWQ-i|RQenea^=YJ-{}E!-y+F?~L;T_mZp3QKEbB$k#`DR-S^q;B@I{Js&@Ml>QJ-TAUyE-m6Wo z;Wwj^QKRPQ&}xO)U-u{Hl3=$sN`&n7wZ?yKq@z<~nggDm?H*F6C;HrtB&P<-N}AaH zwd#yV@A=$e?+Um-H<|PT^nh@zN-&`iM=KkBA7|ks=qRmYzqApcJG95V?gAvkpPim6 z$s87|Ot1w?V{Apypf;a2|8)(lX((W+(r$t-4?cdhf659dVC+I8>>Ud{2w0#jZaZl&5qFgR;a4h}W8vuPM3Ue`VjWlY0||;ZjXy8`eI2N| zo}?6J1mhIsaV$7tcgj_Km|SMbw6lDsl}l&gb7(%}p(WKG4g8S}_D@mT;ko0Bk}4sV z^pe9CFgX**;{jC|v^apQv;|xaJ$o+W-)Bf}PjBwd+ z)t9uJU$@5?I2W}9k$a2t70S6oDSYSv`4ntI?&1HR_ts3aXLK%DquhSHp~Rn2J^ih* z=29b5JeDZFT|A-n&kplSKeI0KeUO{-cD)jf2|IJ^MCy52Sn&isLH66hsP_POLejkn zeE?t45!1hsT{(E6?FW(&DwVfElT%OM)52P&*+$t&v=b0v%zvaldBW#A*0Vj50Wy#i_Nvo8~a{Ydv_n6n~{chjA-LLLbzx$l?oaKGaInP;cQzlcypH7`J z{5&o*v0Wx}WG0ho512B2Kzml&W-`qi{KG$n3V#++S_kSy)Q$4B(T9TN`N|-E?Tnhc*E+~O}U}VGy zbSbDU8xF(3xeI5_*!w2wT4nD%}`a1UMFbT%NNVoyUfa_9OsZE2a5cl8oz*tAekbVG8 ziP=K(bP`)2**-15ih7PQS@st;aU4|w11Z?g#r9X7frvCq<7}HmfY@e1lE?u9r zvK83dKvm>o8vP2P-`%8VLt`+8UGqkeCbclW454kB{xd3HhBl7U>O6|Q2&y9bSO$w> zCKyj|fa7vs^?{1yRtnR6GF}FQ`|>*I3hp1zw}-$ro(l`$0;sCE-`zWlU_I;s{dpSv zmghx9ayEsVAUTGm*gXGpiSbz@3&( z)X7(WOFyll(9(qu`~v#*1?azLcD{b*s^{6%5eh9$_`rP756@E1Pw&iJerf*;{(#>j zOlym``I-Ewa3JJHK4N@(rx>^EAo%hp>7C#{SPJjK9B|)w?*+_jp9jXDcVRIozPB2} z{+{>tl_qsC_Jl$32;2{&zCmxwPp9L*ZWd5-x(OzISN4Pw`H5-W^9=yeGbb5L5Z+S=3(~YvVon zJ=_Vkpb%mll|n112d;Z>@SXT3d;rOPnrkfXhmDXdcMmm#LP&i&y%mgq=WheJfAvAX z-J70KNuQE=&m+g{9hfYejV&3UnD$E=)A}Zu0cmp|IFq=lifLREJzcCn2_Xlb#I5tG;@VjR4<}ZQ)Az2IBtcU#>IBb0=*+ zR$)H@szdZ^KIrdO@ZI41*jQ>0N%7o^&$sb230$N2xJ(=S_Tyf4ZGQ&mYA!T@eB_Wk zDtR`RKu@>~y2D^dzI$t98v>q3abG_n@0l96nVt^cf%E+tyaVnB=O#%`CA}gaSj{8 z(Qqp0%kkiNrobAof7gErXnPRcWBOoRZGyG%dc;h$`#tX0BJ!?7ux%!7U!JwWrnb*3 zAYW-hMeqGnBF;dc2F>Ap(9h@LdKd@B=|u2+4Es8K{~K)cz<5r^&^Bx{Aoy$D(J&3% zU&fK^<2>j~zG9rX293aZ*MHkLhO40)gqUhU+Of8UOQ07FgO}h7_z;X?W6X3Im)br3 z7K9jbKYR|3YXvx0uHR^A0Qri(>9?`d8d}2X;QZ$+j{iuo-2^ap-h{0XAHyv2#+o+E zw?yf9ohPtWMm&G&L=Bpu&xEE?zAEZ58tKm(a6Vm^ui-s#Ul>2mxp#9i{%m&_R7H-V zk$d;Bsx*$Z8BRLPr+&I`jTK`g?CB+>KY~y%=)KsC*~*IRUktS>+c2g6iP#3hSa6@u z2KRzzk7JP`@G%6xgZ>FydpMXZh&+?Fem9&1=R59j*uj=_= zOa$9_((bdGD)-}9@Kx71%{Rm6JGiNTu&-WeVFMygR-gSfFIq*#M z?cn~6`|f&dhx4JPiT*DDeXI!gwr`A@DE)9M+^uP2@Lsh}O_lmM_8{znr2jjyje`As zm(WE)r7peq0Pk31#rMJl@I4dWha_vf_%`r&Qs3XE3nJSxeX{-fKvZ&Rf9dcy;c~B@ zph=czm~M3`<&mySS(8`BH4!_o<7bdXX+W)coImd|x#H literal 0 HcmV?d00001 diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..eeda0c7c5592228efaca117e28be4cbd383c2c06 GIT binary patch literal 24919 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 DVgX02 literal 0 HcmV?d00001 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..385415e --- /dev/null +++ b/src/App.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/ContextMenu.vue b/src/components/ContextMenu.vue new file mode 100644 index 0000000..aa44235 --- /dev/null +++ b/src/components/ContextMenu.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/components/FailureXMark.vue b/src/components/FailureXMark.vue new file mode 100644 index 0000000..ae14637 --- /dev/null +++ b/src/components/FailureXMark.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/Footer.vue b/src/components/Footer.vue new file mode 100644 index 0000000..8579003 --- /dev/null +++ b/src/components/Footer.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/FormBottomBar.vue b/src/components/FormBottomBar.vue new file mode 100644 index 0000000..2475086 --- /dev/null +++ b/src/components/FormBottomBar.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/Header.vue b/src/components/Header.vue new file mode 100644 index 0000000..5ca7d07 --- /dev/null +++ b/src/components/Header.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/Modal.vue b/src/components/Modal.vue new file mode 100644 index 0000000..fac5fcf --- /dev/null +++ b/src/components/Modal.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/components/Notification.vue b/src/components/Notification.vue new file mode 100644 index 0000000..e320e19 --- /dev/null +++ b/src/components/Notification.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/Pagination.vue b/src/components/Pagination.vue new file mode 100644 index 0000000..0464f59 --- /dev/null +++ b/src/components/Pagination.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/components/Spinner.vue b/src/components/Spinner.vue new file mode 100644 index 0000000..acb32d6 --- /dev/null +++ b/src/components/Spinner.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/SuccessCheckmark.vue b/src/components/SuccessCheckmark.vue new file mode 100644 index 0000000..2cb9f24 --- /dev/null +++ b/src/components/SuccessCheckmark.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/TextCopy.vue b/src/components/TextCopy.vue new file mode 100644 index 0000000..7fd8ce7 --- /dev/null +++ b/src/components/TextCopy.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/UserMenu.vue b/src/components/UserMenu.vue new file mode 100644 index 0000000..fecb0af --- /dev/null +++ b/src/components/UserMenu.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/admin/ForceSearchSelect.vue b/src/components/admin/ForceSearchSelect.vue new file mode 100644 index 0000000..da9346a --- /dev/null +++ b/src/components/admin/ForceSearchSelect.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/components/admin/Permission.vue b/src/components/admin/Permission.vue new file mode 100644 index 0000000..31b1060 --- /dev/null +++ b/src/components/admin/Permission.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/components/admin/RoutingLink.vue b/src/components/admin/RoutingLink.vue new file mode 100644 index 0000000..0848948 --- /dev/null +++ b/src/components/admin/RoutingLink.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/src/components/admin/TopLevelLink.vue b/src/components/admin/TopLevelLink.vue new file mode 100644 index 0000000..9e559d9 --- /dev/null +++ b/src/components/admin/TopLevelLink.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/admin/configuration/force/CreateForceModal.vue b/src/components/admin/configuration/force/CreateForceModal.vue new file mode 100644 index 0000000..e41d958 --- /dev/null +++ b/src/components/admin/configuration/force/CreateForceModal.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/admin/configuration/force/DeleteForceModal.vue b/src/components/admin/configuration/force/DeleteForceModal.vue new file mode 100644 index 0000000..712fd03 --- /dev/null +++ b/src/components/admin/configuration/force/DeleteForceModal.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/components/admin/configuration/force/ForceListItem.vue b/src/components/admin/configuration/force/ForceListItem.vue new file mode 100644 index 0000000..fcd2837 --- /dev/null +++ b/src/components/admin/configuration/force/ForceListItem.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/components/admin/management/backup/BackupListItem.vue b/src/components/admin/management/backup/BackupListItem.vue new file mode 100644 index 0000000..1962f15 --- /dev/null +++ b/src/components/admin/management/backup/BackupListItem.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/components/admin/management/backup/CreateBackupModal.vue b/src/components/admin/management/backup/CreateBackupModal.vue new file mode 100644 index 0000000..60380d1 --- /dev/null +++ b/src/components/admin/management/backup/CreateBackupModal.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/components/admin/management/backup/RestoreBackupModal.vue b/src/components/admin/management/backup/RestoreBackupModal.vue new file mode 100644 index 0000000..aa58db8 --- /dev/null +++ b/src/components/admin/management/backup/RestoreBackupModal.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/components/admin/management/backup/UploadBackupModal.vue b/src/components/admin/management/backup/UploadBackupModal.vue new file mode 100644 index 0000000..fad36f8 --- /dev/null +++ b/src/components/admin/management/backup/UploadBackupModal.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/admin/management/role/CreateRoleModal.vue b/src/components/admin/management/role/CreateRoleModal.vue new file mode 100644 index 0000000..a1ab5d5 --- /dev/null +++ b/src/components/admin/management/role/CreateRoleModal.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/admin/management/role/DeleteRoleModal.vue b/src/components/admin/management/role/DeleteRoleModal.vue new file mode 100644 index 0000000..cd2c9c2 --- /dev/null +++ b/src/components/admin/management/role/DeleteRoleModal.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/admin/management/role/RoleListItem.vue b/src/components/admin/management/role/RoleListItem.vue new file mode 100644 index 0000000..ac9b0f2 --- /dev/null +++ b/src/components/admin/management/role/RoleListItem.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/admin/management/user/DeleteUserModal.vue b/src/components/admin/management/user/DeleteUserModal.vue new file mode 100644 index 0000000..b0e9bc7 --- /dev/null +++ b/src/components/admin/management/user/DeleteUserModal.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/admin/management/user/InviteListItem.vue b/src/components/admin/management/user/InviteListItem.vue new file mode 100644 index 0000000..55774e7 --- /dev/null +++ b/src/components/admin/management/user/InviteListItem.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/components/admin/management/user/InviteUserModal.vue b/src/components/admin/management/user/InviteUserModal.vue new file mode 100644 index 0000000..b450b7d --- /dev/null +++ b/src/components/admin/management/user/InviteUserModal.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/admin/management/user/UserListItem.vue b/src/components/admin/management/user/UserListItem.vue new file mode 100644 index 0000000..0aa8c44 --- /dev/null +++ b/src/components/admin/management/user/UserListItem.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..1351e98 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,15 @@ +export interface Config { + server_address: string; + app_name_overwrite: string; + imprint_link: string; + privacy_link: string; + custom_login_message: string; +} + +export const config: Config = { + server_address: import.meta.env.VITE_SERVER_ADDRESS, + app_name_overwrite: import.meta.env.VITE_APP_NAME_OVERWRITE, + imprint_link: import.meta.env.VITE_IMPRINT_LINK, + privacy_link: import.meta.env.VITE_PRIVACY_LINK, + custom_login_message: import.meta.env.VITE_CUSTOM_LOGIN_MESSAGE, +}; diff --git a/src/globalProperties.config.ts b/src/globalProperties.config.ts new file mode 100644 index 0000000..89d63ce --- /dev/null +++ b/src/globalProperties.config.ts @@ -0,0 +1,13 @@ +import type { AxiosInstance } from "axios"; +import type { RouteLocationNormalizedLoaded, Router } from "vue-router"; + +declare module "@vue/runtime-core" { + interface ComponentCustomProperties { + $dev: boolean; + $http: AxiosInstance; + $router: Router; + $route: RouteLocationNormalizedLoaded; + } +} + +export {}; // Important! See note. diff --git a/src/helpers/piniaReset.ts b/src/helpers/piniaReset.ts new file mode 100644 index 0000000..90e2e5c --- /dev/null +++ b/src/helpers/piniaReset.ts @@ -0,0 +1,9 @@ +import { getActivePinia, type Pinia, type Store } from "pinia"; + +interface ExtendedPinia extends Pinia { + _s: Map; +} + +export const resetAllPiniaStores = () => { + (getActivePinia() as ExtendedPinia)?._s?.forEach((store: Store) => store.$reset()); +}; diff --git a/src/helpers/quillConfig.ts b/src/helpers/quillConfig.ts new file mode 100644 index 0000000..40e7eaf --- /dev/null +++ b/src/helpers/quillConfig.ts @@ -0,0 +1,8 @@ +export const toolbarOptions = [ + [{ header: [1, 2, 3, 4, false] }, { font: [] }], + //[{ header: 1 }, { header: 2 }], + ["bold", "italic", "underline", "strike"], + ["blockquote", "code-block", "link"], + [{ list: "ordered" }, { list: "bullet" }, { list: "check" }], + ["clean"], +]; diff --git a/src/layouts/FullContent.vue b/src/layouts/FullContent.vue new file mode 100644 index 0000000..494bb47 --- /dev/null +++ b/src/layouts/FullContent.vue @@ -0,0 +1,7 @@ + diff --git a/src/layouts/Sidebar.vue b/src/layouts/Sidebar.vue new file mode 100644 index 0000000..8133a15 --- /dev/null +++ b/src/layouts/Sidebar.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/main.css b/src/main.css new file mode 100644 index 0000000..f23dcde --- /dev/null +++ b/src/main.css @@ -0,0 +1,151 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --primary: #990b00; + --secondary: #0c6672; + --accent: #bb1e10; + --error: #9a0d55; + --warning: #bb6210; + --info: #388994; + --success: #73ad0f; + } + .dark { + --primary: #ff0d00; + --secondary: #0f9aa9; + --accent: #bb1e10; + --error: #9a0d55; + --warning: #bb6210; + --info: #4ccbda; + --success: #73ad0f; + } +} + +/* ===== Scrollbar CSS ===== */ +/* Firefox */ +* { + scrollbar-width: thin; + scrollbar-color: #c9c9c9 transparent; +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +*::-webkit-scrollbar-track { + background: transparent; /*f1f1f1;*/ +} + +*::-webkit-scrollbar-thumb { + background-color: #c9c9c9; + border-radius: 12px; + border: 0px solid #ffffff; +} + +html, +body { + @apply h-full w-screen m-0 p-0 overflow-hidden bg-gray-100; + height: 100svh; +} + +#app { + @apply w-full h-full overflow-hidden flex flex-col; +} + +/*:not([headlessui]):not([id*="headlessui"]):not([class*="headlessui"])*/ +button:not([class*="ql"] *):not([class*="fc"]):not([id*="headlessui-combobox"]), +a[button] { + @apply relative box-border h-10 w-full flex justify-center py-2 px-4 text-sm font-medium rounded-md focus:outline-none focus:ring-0; +} + +button[primary]:not([primary="false"]), +a[button][primary]:not([primary="false"]) { + @apply border border-transparent text-white bg-primary hover:bg-primary; +} + +button[primary-outline]:not([primary-outline="false"]), +a[button][primary-outline]:not([primary-outline="false"]) { + @apply border-2 border-primary text-black hover:bg-primary; +} + +button:disabled, +a[button]:disabled, +a[button].disabled { + @apply opacity-75 pointer-events-none; +} + +input:not([type="checkbox"]), +textarea, +select { + @apply rounded-md shadow-sm relative block w-full px-3 py-2 border border-gray-300 focus:border-primary placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-0 focus:z-10 sm:text-sm resize-none; +} + +input[readonly], +textarea[readonly], +select[readonly] { + @apply select-none; + /* pointer-events-none; */ +} + +input[disabled], +textarea[disabled], +select[disabled] { + @apply opacity-75 pointer-events-none; +} + +details { + user-select: none; + & summary svg[indicator] { + transform: rotate(90deg); + } +} +details[open] { + & summary svg[indicator] { + transform: rotate(-90deg); + } +} + +details[open] summary ~ * { + animation: ease-opacity-t-b 0.5s ease; +} + +summary { + cursor: pointer; +} +summary > svg { + transition: all 0.3s; +} + +summary::-webkit-details-marker { + display: none; +} + +.fc-button-primary { + @apply !bg-primary !border-primary !outline-none !ring-0 hover:!bg-red-700 hover:!border-red-700 h-10 text-center; +} +.fc-button-active { + @apply !bg-red-500 !border-red-500; +} +.fc-toolbar { + @apply flex-wrap; +} + +/* For screens between 850px and 768px */ +@media (max-width: 850px) and (min-width: 768px) { + .fc-header-toolbar.fc-toolbar.fc-toolbar-ltr > .fc-toolbar-chunk:nth-child(2) { + @apply !order-1; + } + /* Your styles for this range */ +} + +/* For screens between 525px and 0px */ +@media (max-width: 525px) and (min-width: 0px) { + /* Your styles for this range */ + .fc-header-toolbar.fc-toolbar.fc-toolbar-ltr > .fc-toolbar-chunk:nth-child(2) { + @apply !order-1; + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..fdb7f03 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,21 @@ +import { createApp } from "vue"; +import { createPinia } from "pinia"; + +import App from "./App.vue"; +import router from "./router"; +import NProgress from "nprogress"; +import "../node_modules/nprogress/nprogress.css"; + +import { http } from "./serverCom"; +import "./main.css"; + +NProgress.configure({ showSpinner: false }); + +const app = createApp(App); + +app.use(createPinia()); +app.use(router); +app.config.globalProperties.$http = http; +app.config.globalProperties.$progress = NProgress; + +app.mount("#app"); diff --git a/src/router/accountGuard.ts b/src/router/accountGuard.ts new file mode 100644 index 0000000..af6a6ab --- /dev/null +++ b/src/router/accountGuard.ts @@ -0,0 +1,6 @@ +import { useAccountStore } from "@/stores/account"; + +export async function loadAccountData(to: any, from: any, next: any) { + const account = useAccountStore(); + next(); +} diff --git a/src/router/adminGuard.ts b/src/router/adminGuard.ts new file mode 100644 index 0000000..83d1331 --- /dev/null +++ b/src/router/adminGuard.ts @@ -0,0 +1,37 @@ +import NProgress from "nprogress"; +import { useAbilityStore } from "@/stores/ability"; +import { useNavigationStore } from "@/stores/admin/navigation"; + +export async function abilityAndNavUpdate(to: any, from: any, next: any) { + NProgress.start(); + const ability = useAbilityStore(); + const navigation = useNavigationStore(); + + let admin = to.meta.admin || false; + let type = to.meta.type; + let section = to.meta.section; + let module = to.meta.module; + + if ((admin && ability.isAdmin()) || ability.can(type, section, module)) { + NProgress.done(); + navigation.activeNavigation = to.name.split("-")[1]; + navigation.activeLink = to.name.split("-")[2]; + next(); + } else { + NProgress.done(); + next({ name: "admin-default" }); + } +} + +export async function isOwner(to: any, from: any, next: any) { + NProgress.start(); + const ability = useAbilityStore(); + + if (ability.isOwner) { + NProgress.done(); + next(); + } else { + NProgress.done(); + next(false); + } +} diff --git a/src/router/authGuard.ts b/src/router/authGuard.ts new file mode 100644 index 0000000..d7e5be2 --- /dev/null +++ b/src/router/authGuard.ts @@ -0,0 +1,83 @@ +import NProgress from "nprogress"; +import { useAuthStore } from "@/stores/auth"; +import { useAccountStore } from "@/stores/account"; +import { jwtDecode, type JwtPayload } from "jwt-decode"; +import { refreshToken } from "@/serverCom"; +import type { PermissionObject } from "@/types/permissionTypes"; +import { useAbilityStore } from "@/stores/ability"; + +export type Payload = JwtPayload & { + userId: string; + username: string; + firstname: string; + lastname: string; + mail: string; + isOwner: boolean; + permissions: PermissionObject; +}; + +export async function isAuthenticated(to: any, from: any, next: any) { + const auth = useAuthStore(); + NProgress.start(); + if (auth.authCheck && localStorage.getItem("access_token") && localStorage.getItem("refresh_token")) { + NProgress.done(); + next(); + return; + } + await isAuthenticatedPromise() + .then(async (result: Payload) => { + NProgress.done(); + next(); + }) + .catch((err: string) => { + NProgress.done(); + next({ name: err ?? "login" }); + }); +} + +export async function isAuthenticatedPromise(forceRefresh: boolean = false): Promise { + return new Promise(async (resolve, reject) => { + const auth = useAuthStore(); + const account = useAccountStore(); + const ability = useAbilityStore(); + let decoded: Payload | string = ""; + try { + decoded = jwtDecode(localStorage.getItem("accessToken") ?? ""); + } catch (error) { + auth.setFailed(); + reject("login"); + } + + if (typeof decoded == "string" || !decoded) { + auth.setFailed(); + reject("login"); + } else { + // check jwt expiry + const exp = decoded.exp ?? 0; + const correctedLocalTime = new Date().getTime(); + if (exp < Math.floor(correctedLocalTime / 1000) || forceRefresh) { + await refreshToken() + .then(() => { + console.log("fetched new token"); + }) + .catch((err: string) => { + console.log("expired"); + auth.setFailed(); + reject(err); + }); + } + + var { userId, firstname, lastname, mail, username, permissions, isOwner } = decoded; + + if (Object.keys(permissions ?? {}).length === 0 && !isOwner) { + auth.setFailed(); + reject("nopermissions"); + } + + auth.setSuccess(); + account.setAccountData(userId, firstname, lastname, mail, username); + ability.setAbility(permissions, isOwner); + resolve(decoded); + } + }); +} diff --git a/src/router/backupGuard.ts b/src/router/backupGuard.ts new file mode 100644 index 0000000..097b198 --- /dev/null +++ b/src/router/backupGuard.ts @@ -0,0 +1,19 @@ +import { useBackupStore } from "../stores/admin/management/backup"; + +export async function setBackupPage(to: any, from: any, next: any) { + const backup = useBackupStore(); + + let uploadPage = to.name.includes("uploaded"); + + if (uploadPage) { + backup.page = "uploaded"; + backup.backups = []; + } else { + backup.page = "generated"; + backup.backups = []; + } + + backup.fetchBackups(); + + next(); +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..83d86bb --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,321 @@ +import { createRouter, createWebHistory } from "vue-router"; +import Login from "@/views/Login.vue"; + +import { isAuthenticated } from "./authGuard"; +import { isSetup } from "./setupGuard"; +import { abilityAndNavUpdate } from "./adminGuard"; +import type { PermissionType, PermissionSection, PermissionModule } from "@/types/permissionTypes"; +import { config } from "../config"; +import { setBackupPage } from "./backupGuard"; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: "/", + redirect: { name: "admin" }, + }, + { + path: "/login", + name: "login", + component: Login, + }, + { + path: "/setup", + name: "setup", + component: () => import("@/views/RouterView.vue"), + beforeEnter: [isSetup], + children: [ + { + path: "", + name: "setup-create", + component: () => import("@/views/setup/Setup.vue"), + }, + { + path: "verify", + name: "setup-verify", + component: () => import("@/views/setup/Verify.vue"), + props: (route) => ({ mail: route.query.mail, token: route.query.token }), + }, + ], + }, + { + path: "/reset", + name: "reset", + component: () => import("@/views/RouterView.vue"), + children: [ + { + path: "", + name: "reset-start", + component: () => import("@/views/reset/Start.vue"), + }, + { + path: "reset", + name: "reset-reset", + component: () => import("@/views/reset/Reset.vue"), + props: (route) => ({ mail: route.query.mail, token: route.query.token }), + }, + ], + }, + { + path: "/invite", + name: "invite", + component: () => import("@/views/RouterView.vue"), + children: [ + { + path: "verify", + name: "invite-verify", + component: () => import("@/views/invite/Verify.vue"), + props: (route) => ({ mail: route.query.mail, token: route.query.token }), + }, + ], + }, + { + path: "/admin", + name: "admin", + component: () => import("@/views/admin/View.vue"), + beforeEnter: [isAuthenticated], + children: [ + { + path: "", + name: "admin-default", + component: () => import("@/views/admin/ViewSelect.vue"), + }, + { + path: "operation", + name: "admin-operation", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "operation" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-operation-default", + redirect: { name: "admin-operation-mission" }, + }, + { + path: "mission", + name: "admin-operation-mission", + component: () => import("@/views/admin/ViewSelect.vue"), + meta: { type: "read", section: "operation", module: "mission" }, + beforeEnter: [abilityAndNavUpdate], + }, + ], + }, + { + path: "configuration", + name: "admin-configuration", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "configuration" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-configuration-default", + component: () => import("@/views/admin/ViewSelect.vue"), + meta: { type: "read", section: "configuration" }, + beforeEnter: [abilityAndNavUpdate], + }, + { + path: "force", + name: "admin-configuration-force", + component: () => import("@/views/admin/ViewSelect.vue"), + meta: { type: "read", section: "configuration", module: "force" }, + beforeEnter: [abilityAndNavUpdate], + }, + ], + }, + { + path: "management", + name: "admin-management", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "management" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-management-default", + component: () => import("@/views/admin/ViewSelect.vue"), + meta: { type: "read", section: "management" }, + beforeEnter: [abilityAndNavUpdate], + }, + { + path: "user", + name: "admin-management-user-route", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "management", module: "user" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-management-user", + component: () => import("@/views/admin/management/user/User.vue"), + }, + { + path: "invites", + name: "admin-management-user-invites", + component: () => import("@/views/admin/management/user/Invite.vue"), + }, + { + path: ":id/edit", + name: "admin-management-user-edit", + component: () => import("@/views/admin/management/user/UserEdit.vue"), + meta: { type: "update", section: "management", module: "user" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + { + path: ":id/permission", + name: "admin-management-user-permission", + component: () => import("@/views/admin/management/user/UserEditPermission.vue"), + meta: { type: "update", section: "management", module: "user" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + { + path: ":id/roles", + name: "admin-management-user-roles", + component: () => import("@/views/admin/management/user/UserEditRoles.vue"), + meta: { type: "update", section: "management", module: "user" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + ], + }, + { + path: "role", + name: "admin-management-role-route", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "management", module: "role" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-management-role", + component: () => import("@/views/admin/management/role/Role.vue"), + }, + { + path: ":id/edit", + name: "admin-management-role-edit", + component: () => import("@/views/admin/management/role/RoleEdit.vue"), + meta: { type: "update", section: "management", module: "role" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + { + path: ":id/permission", + name: "admin-management-role-permission", + component: () => import("@/views/admin/management/role/RoleEditPermission.vue"), + meta: { type: "update", section: "management", module: "role" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + ], + }, + { + path: "backup", + name: "admin-management-backup-route", + component: () => import("@/views/admin/management/backup/BackupRouting.vue"), + meta: { type: "read", section: "management", module: "backup" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-management-backup", + redirect: { name: "admin-management-backup-generated" }, + }, + { + path: "generated", + name: "admin-management-backup-generated", + component: () => import("@/views/admin/management/backup/GeneratedBackup.vue"), + beforeEnter: [setBackupPage], + }, + { + path: "uploads", + name: "admin-management-backup-uploaded", + component: () => import("@/views/admin/management/backup/UploadedBackup.vue"), + beforeEnter: [setBackupPage], + }, + ], + }, + { + path: "version", + name: "admin-management-version", + component: () => import("@/views/admin/management/version/VersionDisplay.vue"), + meta: { admin: true }, + beforeEnter: [abilityAndNavUpdate], + }, + ], + }, + { + path: ":pathMatch(.*)*", + name: "admin-404", + component: () => import("@/views/notFound.vue"), + }, + ], + }, + { + path: "/account", + name: "account", + component: () => import("@/views/account/View.vue"), + beforeEnter: [isAuthenticated], + children: [ + { + path: "", + name: "account-default", + component: () => import("@/views/account/ViewSelect.vue"), + }, + { + path: "me", + name: "account-me", + component: () => import("@/views/account/Me.vue"), + }, + { + path: "logindata", + name: "account-logindata", + component: () => import("@/views/account/LoginData.vue"), + }, + { + path: "permission", + name: "account-permission", + component: () => import("@/views/account/Permission.vue"), + }, + { + path: "administration", + name: "account-administration", + component: () => import("@/views/account/Administration.vue"), + }, + { + path: ":pathMatch(.*)*", + name: "account-404", + component: () => import("@/views/notFound.vue"), + }, + ], + }, + { + path: "/nopermissions", + name: "nopermissions", + component: () => import("@/views/NoPermission.vue"), + }, + { + path: "/:pathMatch(.*)*", + name: "404", + component: () => import("@/views/notFound.vue"), + }, + ], +}); + +router.afterEach((to, from) => { + document.title = config.app_name_overwrite || "FF Operation"; +}); + +export default router; + +declare module "vue-router" { + interface RouteMeta { + admin?: boolean; + type?: PermissionType | "admin"; + section?: PermissionSection; + module?: PermissionModule; + } +} diff --git a/src/router/setupGuard.ts b/src/router/setupGuard.ts new file mode 100644 index 0000000..47fda9d --- /dev/null +++ b/src/router/setupGuard.ts @@ -0,0 +1,16 @@ +import NProgress from "nprogress"; +import { http } from "@/serverCom"; + +export async function isSetup(to: any, from: any, next: any) { + NProgress.start(); + await http + .get("/setup") + .then(() => { + NProgress.done(); + next(); + }) + .catch(() => { + NProgress.done(); + next({ name: "login" }); + }); +} diff --git a/src/serverCom.ts b/src/serverCom.ts new file mode 100644 index 0000000..cce0f8b --- /dev/null +++ b/src/serverCom.ts @@ -0,0 +1,105 @@ +import axios from "axios"; +import { isAuthenticatedPromise, type Payload } from "./router/authGuard"; +import router from "./router"; +import { useNotificationStore } from "./stores/notification"; +import { config } from "./config"; + +let devMode = process.env.NODE_ENV === "development"; + +let host = devMode ? "localhost:5000" : (config.server_address ?? "").replace(/(^\w+:|^)\/\//, ""); +let url = devMode ? "http://" + host : config.server_address; + +const http = axios.create({ + baseURL: url + "/api", + headers: { + "Cache-Control": "no-cache", + Pragma: "no-cache", + Expires: "0", + }, +}); + +http.interceptors.request.use( + (config) => { + const token = localStorage.getItem("accessToken"); + if (token) { + if (config.headers) { + config.headers.Authorization = `Bearer ${token}`; + } + } + + const isPWA = + window.matchMedia("(display-mode: standalone)").matches || + window.matchMedia("(display-mode: fullscreen)").matches; + if (isPWA) { + if (config.headers) { + config.headers["X-PWA-Client"] = isPWA ? "true" : "false"; + } + } + + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +http.interceptors.response.use( + (response) => { + return response; + }, + async (error) => { + if (!error.config.url.includes("/admin") && !error.config.url.includes("/user")) { + return Promise.reject(error); + } + + const originalRequest = error.config; + + // Handle token expiration and retry the request with a refreshed token + if (error.response && error.response.status === 401 && !originalRequest._retry) { + originalRequest._retry = true; + return await refreshToken() + .then(() => { + return http(originalRequest); + }) + .catch(() => {}); + } + + const notificationStore = useNotificationStore(); + if (error.toString().includes("Network Error")) { + notificationStore.push("Netzwerkfehler", "Server nicht erreichbar!", "error"); + } else { + notificationStore.push("Fehler", error.response.data, "error"); + } + + return Promise.reject(error); + } +); + +export async function refreshToken(): Promise { + return new Promise(async (resolve, reject) => { + await http + .post(`/auth/refresh`, { + accessToken: localStorage.getItem("accessToken"), + refreshToken: localStorage.getItem("refreshToken"), + }) + .then(async (response) => { + const { accessToken, refreshToken } = response.data; + + localStorage.setItem("accessToken", accessToken); + localStorage.setItem("refreshToken", refreshToken); + + await isAuthenticatedPromise().catch((err: string) => { + router.push({ name: err ?? "login" }); + reject(err); + }); + + resolve(); + }) + .catch((error) => { + console.error("Error refreshing token:", error); + reject("login"); + }); + }); +} + +export { http, host }; diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..d77b62b --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,5 @@ +declare module "*.vue" { + import type { DefineComponent } from "vue"; + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/src/stores/ability.ts b/src/stores/ability.ts new file mode 100644 index 0000000..d5190af --- /dev/null +++ b/src/stores/ability.ts @@ -0,0 +1,81 @@ +import { defineStore } from "pinia"; +import type { PermissionModule, PermissionObject, PermissionSection, PermissionType } from "@/types/permissionTypes"; + +export const useAbilityStore = defineStore("ability", { + state: () => { + return { + permissions: {} as PermissionObject, + isOwner: false as boolean, + }; + }, + getters: { + can: + (state) => + (type: PermissionType | "admin", section: PermissionSection, module?: PermissionModule): boolean => { + const permissions = state.permissions; + if (state.isOwner) return true; + if (type == "admin") return permissions?.admin ?? false; + if (permissions?.admin) return true; + if ( + (!module && + permissions[section] != undefined && + (permissions[section]?.all == "*" || permissions[section]?.all?.includes(type))) || + permissions[section]?.all == "*" || + permissions[section]?.all?.includes(type) + ) + return true; + if (module && (permissions[section]?.[module] == "*" || permissions[section]?.[module]?.includes(type))) + return true; + return false; + }, + canSection: + (state) => + (type: PermissionType | "admin", section: PermissionSection): boolean => { + const permissions = state.permissions; + if (state.isOwner) return true; + if (type == "admin") return permissions?.admin ?? false; + if (permissions?.admin) return true; + if ( + permissions[section]?.all == "*" || + permissions[section]?.all?.includes(type) || + permissions[section] != undefined + ) + return true; + return false; + }, + isAdmin: (state) => (): boolean => { + const permissions = state.permissions; + if (state.isOwner) return true; + return permissions?.admin ?? false; + }, + _can: + () => + ( + permissions: PermissionObject, + type: PermissionType | "admin", + section: PermissionSection, + module?: PermissionModule + ): boolean => { + // ignores ownership + if (type == "admin") return permissions?.admin ?? false; + if (permissions?.admin) return true; + if ( + (!module && + permissions[section] != undefined && + (permissions[section]?.all == "*" || permissions[section]?.all?.includes(type))) || + permissions[section]?.all == "*" || + permissions[section]?.all?.includes(type) + ) + return true; + if (module && (permissions[section]?.[module] == "*" || permissions[section]?.[module]?.includes(type))) + return true; + return false; + }, + }, + actions: { + setAbility(permissions: PermissionObject, isOwner: boolean) { + this.permissions = permissions; + this.isOwner = isOwner; + }, + }, +}); diff --git a/src/stores/account.ts b/src/stores/account.ts new file mode 100644 index 0000000..f3de2af --- /dev/null +++ b/src/stores/account.ts @@ -0,0 +1,29 @@ +import { defineStore } from "pinia"; +import type { PermissionObject } from "@/types/permissionTypes"; +import { useAbilityStore } from "./ability"; + +export const useAccountStore = defineStore("account", { + state: () => { + return { + id: "" as string, + firstname: "" as string, + lastname: "" as string, + mail: "" as string, + alias: "" as string, + }; + }, + actions: { + logoutAccount() { + localStorage.removeItem("accessToken"); + localStorage.removeItem("refreshToken"); + window.open("/login", "_self"); + }, + setAccountData(id: string, firstname: string, lastname: string, mail: string, alias: string) { + this.id = id; + this.firstname = firstname; + this.lastname = lastname; + this.mail = mail; + this.alias = alias; + }, + }, +}); diff --git a/src/stores/admin/configuration/forces.ts b/src/stores/admin/configuration/forces.ts new file mode 100644 index 0000000..3e1c62e --- /dev/null +++ b/src/stores/admin/configuration/forces.ts @@ -0,0 +1,89 @@ +import { defineStore } from "pinia"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; +import type { + ForceViewModel, + CreateForceViewModel, + UpdateForceViewModel, +} from "../../../viewmodels/admin/configuration/force.models"; + +export const useForceStore = defineStore("force", { + state: () => { + return { + forces: [] as Array, + totalCount: 0 as number, + loading: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchForces(offset = 0, count = 25, search = "", clear = false) { + if (clear) this.forces = []; + this.loading = "loading"; + http + .get(`/admin/force?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) + .then((result) => { + this.totalCount = result.data.total; + result.data.forces + .filter((elem: ForceViewModel) => this.forces.findIndex((m) => m.id == elem.id) == -1) + .map((elem: ForceViewModel, index: number): ForceViewModel & { tab_pos: number } => { + return { + ...elem, + tab_pos: index + offset, + }; + }) + .forEach((elem: ForceViewModel & { tab_pos: number }) => { + this.forces.push(elem); + }); + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async getAllForces(): Promise> { + return await http.get(`/admin/force?noLimit=true`).then((res) => { + return { ...res, data: res.data.forces }; + }); + }, + async getForcesByIds(ids: Array): Promise> { + return await http + .post(`/admin/force/ids`, { + ids, + }) + .then((res) => { + return { ...res, data: res.data.forces }; + }); + }, + async searchForces(search: string): Promise> { + return await http.get(`/admin/force?search=${search}&noLimit=true`).then((res) => { + return { ...res, data: res.data.forces }; + }); + }, + fetchForceById(id: string) { + return http.get(`/admin/force/${id}`); + }, + async createForce(force: CreateForceViewModel): Promise> { + const result = await http.post(`/admin/force`, { + firstname: force.firstname, + lastname: force.lastname, + nameaffix: force.nameaffix, + }); + this.fetchForces(); + return result; + }, + async updateActiveForce(force: UpdateForceViewModel): Promise> { + const result = await http.patch(`/admin/force/${force.id}`, { + firstname: force.firstname, + lastname: force.lastname, + nameaffix: force.nameaffix, + }); + this.fetchForces(); + return result; + }, + async deleteForce(force: number): Promise> { + const result = await http.delete(`/admin/force/${force}`); + this.fetchForces(); + return result; + }, + }, +}); diff --git a/src/stores/admin/management/backup.ts b/src/stores/admin/management/backup.ts new file mode 100644 index 0000000..ab0b0e7 --- /dev/null +++ b/src/stores/admin/management/backup.ts @@ -0,0 +1,57 @@ +import { defineStore } from "pinia"; +import { http } from "@/serverCom"; +import type { AxiosResponse, AxiosProgressEvent } from "axios"; +import type { BackupRestoreViewModel } from "../../../viewmodels/admin/management/backup.models"; + +export const useBackupStore = defineStore("backup", { + state: () => { + return { + backups: [] as Array, + loading: null as null | "loading" | "success" | "failed", + page: "generated" as "generated" | "uploaded", + }; + }, + actions: { + fetchBackups() { + this.loading = "loading"; + http + .get(`/admin/backup/${this.page}`) + .then((result) => { + this.backups = result.data; + this.loading = "success"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + fetchBackupById(filename: string): Promise> { + return http.get(`/admin/backup/${this.page}/${filename}`); + }, + async restoreBackup(backup: BackupRestoreViewModel): Promise> { + return await http.post(`/admin/backup/${this.page}/restore`, backup); + }, + async triggerBackupCreate(): Promise> { + const result = await http.post("/admin/backup"); + this.fetchBackups(); + return result; + }, + async uploadBackup(file: File): Promise> { + const formData = new FormData(); + formData.append("file", file); + + const options = { + headers: { + "Content-Type": "multipart/form-data", + }, + onUploadProgress: (progressEvent: AxiosProgressEvent) => { + const { loaded, total = 1 } = progressEvent; + console.log("progress", Math.floor((loaded * 100) / total)); + }, + }; + + const result = await http.post("/admin/backup/upload", formData, options); + this.fetchBackups(); + return result; + }, + }, +}); diff --git a/src/stores/admin/management/invite.ts b/src/stores/admin/management/invite.ts new file mode 100644 index 0000000..c6ad5f2 --- /dev/null +++ b/src/stores/admin/management/invite.ts @@ -0,0 +1,41 @@ +import { defineStore } from "pinia"; +import type { CreateInviteViewModel, InviteViewModel } from "@/viewmodels/admin/management/invite.models"; +import { http } from "@/serverCom"; +import type { PermissionObject } from "@/types/permissionTypes"; +import type { AxiosResponse } from "axios"; + +export const useInviteStore = defineStore("invite", { + state: () => { + return { + invites: [] as Array, + loading: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchInvites() { + this.loading = "loading"; + http + .get("/admin/invite") + .then((result) => { + this.invites = result.data; + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + createInvite(createInvite: CreateInviteViewModel): Promise> { + return http.post(`/admin/invite`, { + username: createInvite.username, + mail: createInvite.mail, + firstname: createInvite.firstname, + lastname: createInvite.lastname, + }); + }, + async deleteInvite(mail: string): Promise> { + const result = await http.delete(`/admin/invite/${mail}`); + this.fetchInvites(); + return result; + }, + }, +}); diff --git a/src/stores/admin/management/role.ts b/src/stores/admin/management/role.ts new file mode 100644 index 0000000..8c1c594 --- /dev/null +++ b/src/stores/admin/management/role.ts @@ -0,0 +1,57 @@ +import { defineStore } from "pinia"; +import type { RoleViewModel } from "@/viewmodels/admin/management/role.models"; +import { http } from "@/serverCom"; +import type { PermissionObject } from "@/types/permissionTypes"; +import type { AxiosResponse } from "axios"; + +export const useRoleStore = defineStore("role", { + state: () => { + return { + roles: [] as Array, + loading: null as null | "loading" | "success" | "failed", + }; + }, + actions: { + fetchRoles() { + this.loading = "loading"; + http + .get("/admin/role") + .then((result) => { + this.roles = result.data; + this.loading = "success"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + fetchRoleById(id: number): Promise> { + return http.get(`/admin/role/${id}`); + }, + async createRole(role: string): Promise> { + const result = await http.post("/admin/role", { + role: role, + }); + this.fetchRoles(); + return result; + }, + async updateActiveRole(id: number, role: string): Promise> { + const result = await http.patch(`/admin/role/${id}`, { + role: role, + }); + this.fetchRoles(); + return result; + }, + async updateActiveRolePermissions(role: number, permission: PermissionObject): Promise> { + const result = await http.patch(`/admin/role/${role}/permissions`, { + permissions: permission, + }); + this.fetchRoles(); + return result; + }, + async deleteRole(role: number): Promise> { + const result = await http.delete(`/admin/role/${role}`); + this.fetchRoles(); + return result; + }, + }, +}); diff --git a/src/stores/admin/management/user.ts b/src/stores/admin/management/user.ts new file mode 100644 index 0000000..b6002d3 --- /dev/null +++ b/src/stores/admin/management/user.ts @@ -0,0 +1,60 @@ +import { defineStore } from "pinia"; +import type { UpdateUserViewModel, UserViewModel } from "@/viewmodels/admin/management/user.models"; +import { http } from "@/serverCom"; +import type { PermissionObject } from "@/types/permissionTypes"; +import type { AxiosResponse } from "axios"; + +export const useUserStore = defineStore("user", { + state: () => { + return { + users: [] as Array, + loading: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchUsers() { + this.loading = "loading"; + http + .get("/admin/user") + .then((result) => { + this.users = result.data; + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + fetchUserById(id: string): Promise> { + return http.get(`/admin/user/${id}`); + }, + async updateActiveUser(user: UpdateUserViewModel): Promise> { + const result = await http.patch(`/admin/user/${user.id}`, { + username: user.username, + firstname: user.firstname, + lastname: user.lastname, + mail: user.mail, + }); + this.fetchUsers(); + return result; + }, + async updateActiveUserPermissions(userId: string, permission: PermissionObject): Promise> { + const result = await http.patch(`/admin/user/${userId}/permissions`, { + permissions: permission, + }); + this.fetchUsers(); + return result; + }, + async updateActiveUserRoles(userId: string, roles: Array): Promise> { + const result = await http.patch(`/admin/user/${userId}/roles`, { + roleIds: roles, + }); + this.fetchUsers(); + return result; + }, + async deleteUser(userId: string): Promise> { + const result = await http.delete(`/admin/user/${userId}`); + this.fetchUsers(); + return result; + }, + }, +}); diff --git a/src/stores/admin/navigation.ts b/src/stores/admin/navigation.ts new file mode 100644 index 0000000..8eebb2e --- /dev/null +++ b/src/stores/admin/navigation.ts @@ -0,0 +1,118 @@ +import { defineStore } from "pinia"; +import { useAbilityStore } from "@/stores/ability"; +import router from "@/router"; +import type { PermissionSection } from "../../types/permissionTypes"; + +export type navigationModel = { + [key in topLevelNavigationType]: navigationSplitModel; +}; + +export interface navigationSplitModel { + topTitle?: string; + top?: Array; + mainTitle: string; + main: Array; +} + +export type topLevelNavigationType = PermissionSection; + +export interface topLevelNavigationModel { + key: topLevelNavigationType; + title: string; + levelDefault: string; + showSidebar?: boolean; +} + +export interface navigationLinkModel { + key: string; + title: string; +} + +export const useNavigationStore = defineStore("navigation", { + state: () => { + return { + activeNavigation: "operation" as topLevelNavigationType, + activeLink: null as null | string, + topLevel: [] as Array, + navigation: {} as navigationModel, + }; + }, + getters: { + activeNavigationObject: (state) => (state.navigation[state.activeNavigation] ?? {}) as navigationSplitModel, + activeTopLevelObject: (state) => + (state.topLevel.find((elem) => elem.key == state.activeNavigation) ?? {}) as topLevelNavigationModel, + }, + actions: { + resetNavigation() { + this.$reset(); + }, + updateTopLevel() { + const abilityStore = useAbilityStore(); + this.topLevel = [ + ...(abilityStore.canSection("read", "operation") + ? [ + { + key: "operation", + title: "Einsätze", + levelDefault: "mission", + showSidebar: false, + } as topLevelNavigationModel, + ] + : []), + ...(abilityStore.canSection("read", "configuration") + ? [ + { + key: "configuration", + title: "Konfiguration", + levelDefault: "force", + showSidebar: true, + } as topLevelNavigationModel, + ] + : []), + ...(abilityStore.canSection("read", "management") + ? [ + { + key: "management", + title: "Verwaltung", + levelDefault: "user", + showSidebar: true, + } as topLevelNavigationModel, + ] + : []), + ]; + if (this.topLevel.findIndex((e) => e.key == this.activeNavigation) == -1) { + this.activeNavigation = this.topLevel[0]?.key ?? "operation"; + router.push({ name: `admin-${this.topLevel[0]?.key ?? "operation"}-default` }); + } + }, + updateNavigation() { + const abilityStore = useAbilityStore(); + this.navigation = { + operation: { + mainTitle: "Einsätze", + main: [...(abilityStore.can("read", "operation", "mission") ? [{ key: "mission", title: "Einsätze" }] : [])], + }, + configuration: { + mainTitle: "Konfiguration", + main: [...(abilityStore.can("read", "configuration", "force") ? [{ key: "force", title: "Kräfte" }] : [])], + }, + management: { + mainTitle: "Verwaltung", + main: [ + ...(abilityStore.can("read", "management", "user") ? [{ key: "user", title: "Benutzer" }] : []), + ...(abilityStore.can("read", "management", "role") ? [{ key: "role", title: "Rollen" }] : []), + ...(abilityStore.can("read", "management", "backup") ? [{ key: "backup", title: "Backups" }] : []), + ...(abilityStore.isAdmin() ? [{ key: "version", title: "Version" }] : []), + ], + }, + } as navigationModel; + if ( + this.activeNavigationObject.main.findIndex((e) => e.key == this.activeLink) == -1 || + this.activeLink == "default" + ) { + let link = this.activeNavigationObject.main[0].key; + router.push({ name: `admin-${this.activeNavigation}-${link}` }); + } + }, + }, +}); diff --git a/src/stores/auth.ts b/src/stores/auth.ts new file mode 100644 index 0000000..21133cc --- /dev/null +++ b/src/stores/auth.ts @@ -0,0 +1,17 @@ +import { defineStore } from "pinia"; + +export const useAuthStore = defineStore("auth", { + state: () => { + return { + authCheck: false, + }; + }, + actions: { + setSuccess() { + this.authCheck = true; + }, + setFailed() { + this.authCheck = false; + }, + }, +}); diff --git a/src/stores/context-menu.ts b/src/stores/context-menu.ts new file mode 100644 index 0000000..43d529b --- /dev/null +++ b/src/stores/context-menu.ts @@ -0,0 +1,32 @@ +import { defineStore } from "pinia"; + +export const useContextMenuStore = defineStore("context-menu", { + state: () => { + return { + contextX: 0, + contextY: 0, + show: false, + component_ref: null as any, + data: null as any, + }; + }, + getters: { + contextMenuStyle: (state) => { + return `left: ${state.contextX}px; top: ${state.contextY}px`; + }, + }, + actions: { + openContextMenu(e: MouseEvent, content: { component_ref: any; data: any }) { + this.component_ref = content.component_ref; + this.data = content.data; + this.contextX = e.pageX; + this.contextY = e.pageY; + this.show = true; + }, + closeContextMenu() { + this.component_ref = null; + this.data = null; + this.show = false; + }, + }, +}); diff --git a/src/stores/modal.ts b/src/stores/modal.ts new file mode 100644 index 0000000..cdc4c49 --- /dev/null +++ b/src/stores/modal.ts @@ -0,0 +1,23 @@ +import { defineStore } from "pinia"; + +export const useModalStore = defineStore("modal", { + state: () => { + return { + show: false, + component_ref: null as any, + data: null as any, + }; + }, + actions: { + openModal(component_ref: any, data?: any) { + this.component_ref = component_ref; + this.data = data; + this.show = true; + }, + closeModal() { + this.component_ref = null; + this.data = null; + this.show = false; + }, + }, +}); diff --git a/src/stores/notification.ts b/src/stores/notification.ts new file mode 100644 index 0000000..872b108 --- /dev/null +++ b/src/stores/notification.ts @@ -0,0 +1,48 @@ +import { defineStore } from "pinia"; + +export interface Notification { + id: string; + title: string; + text: string; + type: NotificationType; + indicator: boolean; +} + +export type NotificationType = "info" | "warning" | "error"; + +export const useNotificationStore = defineStore("notification", { + state: () => { + return { + notifications: [] as Array, + timeouts: {} as { [key: string]: any }, + }; + }, + actions: { + push(title: string, text: string, type: NotificationType, timeout: number = 5000) { + let id = `${Date.now()}_${Math.random()}`; + this.notifications.push({ + id, + title, + text, + type, + indicator: false, + }); + if (timeout != 0) { + setTimeout(() => { + this.notifications[this.notifications.findIndex((n) => n.id === id)].indicator = true; + }, 100); + this.timeouts[id] = setTimeout(() => { + this.revoke(id); + }, timeout); + } + }, + revoke(id: string) { + this.notifications.splice( + this.notifications.findIndex((n) => n.id === id), + 1 + ); + clearTimeout(this.timeouts[id]); + delete this.timeouts[id]; + }, + }, +}); diff --git a/src/templates/Main.vue b/src/templates/Main.vue new file mode 100644 index 0000000..1027055 --- /dev/null +++ b/src/templates/Main.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/templates/Sidebar.vue b/src/templates/Sidebar.vue new file mode 100644 index 0000000..a5f6a16 --- /dev/null +++ b/src/templates/Sidebar.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/types/backupTypes.ts b/src/types/backupTypes.ts new file mode 100644 index 0000000..b76535a --- /dev/null +++ b/src/types/backupTypes.ts @@ -0,0 +1,3 @@ +export type BackupSection = "base" | "user"; + +export const backupSections: Array = ["base", "user"]; diff --git a/src/types/permissionTypes.ts b/src/types/permissionTypes.ts new file mode 100644 index 0000000..5581de5 --- /dev/null +++ b/src/types/permissionTypes.ts @@ -0,0 +1,33 @@ +export type PermissionSection = "operation" | "configuration" | "management"; + +export type PermissionModule = "mission" | "force" | "user" | "role" | "backup"; + +export type PermissionType = "read" | "create" | "update" | "delete"; + +export type PermissionString = + | `${PermissionSection}.${PermissionModule}.${PermissionType}` // für spezifische Berechtigungen + | `${PermissionSection}.${PermissionModule}.*` // für alle Berechtigungen in einem Modul + | `${PermissionSection}.${PermissionType}` // für spezifische Berechtigungen in einem Abschnitt + | `${PermissionSection}.*` // für alle Berechtigungen in einem Abschnitt + | "*"; // für Admin + +export type PermissionObject = { + [section in PermissionSection]?: { + [module in PermissionModule]?: Array | "*"; + } & { all?: Array | "*" }; +} & { + admin?: boolean; +}; + +export type SectionsAndModulesObject = { + [section in PermissionSection]: Array; +}; + +export const permissionSections: Array = ["operation", "configuration", "management"]; +export const permissionModules: Array = ["mission", "force", "user", "role", "backup"]; +export const permissionTypes: Array = ["read", "create", "update", "delete"]; +export const sectionsAndModules: SectionsAndModulesObject = { + operation: ["mission"], + configuration: ["force"], + management: ["user", "role", "backup"], +}; diff --git a/src/viewmodels/admin/configuration/force.models.ts b/src/viewmodels/admin/configuration/force.models.ts new file mode 100644 index 0000000..b30ced1 --- /dev/null +++ b/src/viewmodels/admin/configuration/force.models.ts @@ -0,0 +1,19 @@ +export interface ForceViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; +} + +export interface CreateForceViewModel { + firstname: string; + lastname: string; + nameaffix: string; +} + +export interface UpdateForceViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; +} diff --git a/src/viewmodels/admin/management/backup.models.ts b/src/viewmodels/admin/management/backup.models.ts new file mode 100644 index 0000000..522c0ff --- /dev/null +++ b/src/viewmodels/admin/management/backup.models.ts @@ -0,0 +1,8 @@ +import type { BackupSection } from "../../../types/backupTypes"; + +export interface BackupRestoreViewModel { + filename: string; + partial: boolean; + include: Array; + overwrite: boolean; +} diff --git a/src/viewmodels/admin/management/invite.models.ts b/src/viewmodels/admin/management/invite.models.ts new file mode 100644 index 0000000..f1a6264 --- /dev/null +++ b/src/viewmodels/admin/management/invite.models.ts @@ -0,0 +1,13 @@ +export interface InviteViewModel { + username: string; + mail: string; + firstname: string; + lastname: string; +} + +export interface CreateInviteViewModel { + username: string; + mail: string; + firstname: string; + lastname: string; +} diff --git a/src/viewmodels/admin/management/role.models.ts b/src/viewmodels/admin/management/role.models.ts new file mode 100644 index 0000000..4eb121c --- /dev/null +++ b/src/viewmodels/admin/management/role.models.ts @@ -0,0 +1,7 @@ +import type { PermissionObject } from "@/types/permissionTypes"; + +export interface RoleViewModel { + id: number; + permissions: PermissionObject; + role: string; +} diff --git a/src/viewmodels/admin/management/user.models.ts b/src/viewmodels/admin/management/user.models.ts new file mode 100644 index 0000000..d13b38a --- /dev/null +++ b/src/viewmodels/admin/management/user.models.ts @@ -0,0 +1,29 @@ +import type { PermissionObject } from "@/types/permissionTypes"; +import type { RoleViewModel } from "./role.models"; + +export interface UserViewModel { + id: string; + username: string; + mail: string; + firstname: string; + lastname: string; + isOwner: boolean; + permissions: PermissionObject; + roles: Array; + permissions_total: PermissionObject; +} + +export interface CreateUserViewModel { + username: string; + mail: string; + firstname: string; + lastname: string; +} + +export interface UpdateUserViewModel { + id: string; + username: string; + mail: string; + firstname: string; + lastname: string; +} diff --git a/src/viewmodels/version.models.ts b/src/viewmodels/version.models.ts new file mode 100644 index 0000000..fe2bf37 --- /dev/null +++ b/src/viewmodels/version.models.ts @@ -0,0 +1,21 @@ +export interface Release { + creator: string; + title: string; + link: string; + pubDate: string; + author: string; + "content:encoded": string; + "content:encodedSnippet": string; + content: string; + contentSnippet: string; + guid: string; + isoDate: string; +} + +export interface Releases { + items: Release[]; + title: string; + description: string; + pubDate: string; + link: string; +} diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..a3b38a8 --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/NoPermission.vue b/src/views/NoPermission.vue new file mode 100644 index 0000000..9ca26b2 --- /dev/null +++ b/src/views/NoPermission.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/views/RouterView.vue b/src/views/RouterView.vue new file mode 100644 index 0000000..543cfdb --- /dev/null +++ b/src/views/RouterView.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/views/account/Administration.vue b/src/views/account/Administration.vue new file mode 100644 index 0000000..6ae2830 --- /dev/null +++ b/src/views/account/Administration.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/views/account/LoginData.vue b/src/views/account/LoginData.vue new file mode 100644 index 0000000..7ba75bb --- /dev/null +++ b/src/views/account/LoginData.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/account/Me.vue b/src/views/account/Me.vue new file mode 100644 index 0000000..af500de --- /dev/null +++ b/src/views/account/Me.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/views/account/Permission.vue b/src/views/account/Permission.vue new file mode 100644 index 0000000..57374f9 --- /dev/null +++ b/src/views/account/Permission.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/views/account/View.vue b/src/views/account/View.vue new file mode 100644 index 0000000..3613ad2 --- /dev/null +++ b/src/views/account/View.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/account/ViewSelect.vue b/src/views/account/ViewSelect.vue new file mode 100644 index 0000000..693ea42 --- /dev/null +++ b/src/views/account/ViewSelect.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/admin/View.vue b/src/views/admin/View.vue new file mode 100644 index 0000000..ac3783c --- /dev/null +++ b/src/views/admin/View.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/views/admin/ViewSelect.vue b/src/views/admin/ViewSelect.vue new file mode 100644 index 0000000..693ea42 --- /dev/null +++ b/src/views/admin/ViewSelect.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/admin/configuration/force/Force.vue b/src/views/admin/configuration/force/Force.vue new file mode 100644 index 0000000..fcb0263 --- /dev/null +++ b/src/views/admin/configuration/force/Force.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/views/admin/management/backup/BackupRouting.vue b/src/views/admin/management/backup/BackupRouting.vue new file mode 100644 index 0000000..53c7580 --- /dev/null +++ b/src/views/admin/management/backup/BackupRouting.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/views/admin/management/backup/GeneratedBackup.vue b/src/views/admin/management/backup/GeneratedBackup.vue new file mode 100644 index 0000000..b339e98 --- /dev/null +++ b/src/views/admin/management/backup/GeneratedBackup.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/views/admin/management/backup/UploadedBackup.vue b/src/views/admin/management/backup/UploadedBackup.vue new file mode 100644 index 0000000..ff650fc --- /dev/null +++ b/src/views/admin/management/backup/UploadedBackup.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/views/admin/management/role/Role.vue b/src/views/admin/management/role/Role.vue new file mode 100644 index 0000000..2567b24 --- /dev/null +++ b/src/views/admin/management/role/Role.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/views/admin/management/role/RoleEdit.vue b/src/views/admin/management/role/RoleEdit.vue new file mode 100644 index 0000000..714bdfc --- /dev/null +++ b/src/views/admin/management/role/RoleEdit.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/admin/management/role/RoleEditPermission.vue b/src/views/admin/management/role/RoleEditPermission.vue new file mode 100644 index 0000000..1937922 --- /dev/null +++ b/src/views/admin/management/role/RoleEditPermission.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/admin/management/user/Invite.vue b/src/views/admin/management/user/Invite.vue new file mode 100644 index 0000000..ace0038 --- /dev/null +++ b/src/views/admin/management/user/Invite.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/views/admin/management/user/User.vue b/src/views/admin/management/user/User.vue new file mode 100644 index 0000000..96315c7 --- /dev/null +++ b/src/views/admin/management/user/User.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/views/admin/management/user/UserEdit.vue b/src/views/admin/management/user/UserEdit.vue new file mode 100644 index 0000000..53554f7 --- /dev/null +++ b/src/views/admin/management/user/UserEdit.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/views/admin/management/user/UserEditPermission.vue b/src/views/admin/management/user/UserEditPermission.vue new file mode 100644 index 0000000..ea374bc --- /dev/null +++ b/src/views/admin/management/user/UserEditPermission.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/views/admin/management/user/UserEditRoles.vue b/src/views/admin/management/user/UserEditRoles.vue new file mode 100644 index 0000000..720cdc4 --- /dev/null +++ b/src/views/admin/management/user/UserEditRoles.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/admin/management/version/VersionDisplay.vue b/src/views/admin/management/version/VersionDisplay.vue new file mode 100644 index 0000000..06cbcda --- /dev/null +++ b/src/views/admin/management/version/VersionDisplay.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/views/invite/Verify.vue b/src/views/invite/Verify.vue new file mode 100644 index 0000000..8fa1b2c --- /dev/null +++ b/src/views/invite/Verify.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/notFound.vue b/src/views/notFound.vue new file mode 100644 index 0000000..1a4e66c --- /dev/null +++ b/src/views/notFound.vue @@ -0,0 +1,282 @@ + diff --git a/src/views/reset/Reset.vue b/src/views/reset/Reset.vue new file mode 100644 index 0000000..5910c22 --- /dev/null +++ b/src/views/reset/Reset.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/views/reset/Start.vue b/src/views/reset/Start.vue new file mode 100644 index 0000000..5a76d1d --- /dev/null +++ b/src/views/reset/Start.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/views/setup/Setup.vue b/src/views/setup/Setup.vue new file mode 100644 index 0000000..e265862 --- /dev/null +++ b/src/views/setup/Setup.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/setup/Verify.vue b/src/views/setup/Verify.vue new file mode 100644 index 0000000..6e6c666 --- /dev/null +++ b/src/views/setup/Verify.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..59560d6 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,18 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], + theme: { + extend: { + colors: { + primary: "var(--primary)", + secondary: "var(--secondary)", + accent: "var(--accent)", + error: "var(--error)", + warning: "var(--warning)", + info: "var(--info)", + success: "var(--success)", + }, + }, + }, + plugins: [], +}; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..eaccc6c --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,16 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "package.json", "config.example.ts", "config.ts"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "resolveJsonModule": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "types": ["node"] + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..2c669ee --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "nightwatch.conf.*", "playwright.config.*"], + "compilerOptions": { + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..b839117 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,61 @@ +import { fileURLToPath, URL } from "node:url"; + +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import vueDevTools from "vite-plugin-vue-devtools"; +import { VitePWA } from "vite-plugin-pwa"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue({ + include: [/\.vue$/, /\.md$/], + }), + vueDevTools(), + VitePWA({ + registerType: "autoUpdate", + injectRegister: "auto", + includeAssets: ["favicon.png", "favicon.ico"], + manifest: { + name: "__APPNAMEOVERWRITE__", + short_name: "__APPNAMEOVERWRITE__", + theme_color: "#990b00", + display: "standalone", + start_url: "/", + icons: [ + { + src: "favicon.ico", + sizes: "48x48", + type: "image/ico", + }, + { + src: "favicon.png", + sizes: "512x512", + type: "image/png", + }, + ], + }, + }), + ], + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", import.meta.url)), + }, + }, + build: { + rollupOptions: { + output: { + // Define the main output bundle (e.g., for your application) + entryFileNames: "[name]-[hash].js", + // Define the directory where the main bundle should be output + dir: "dist", + // Create a separate output bundle for your specific file + manualChunks(id) { + if (id.endsWith("src/config.ts")) { + return "config"; // This will create a separate bundle for config-[hash].js + } + }, + }, + }, + }, +});