From 302416c83ee120a98ba2ad5c902cbdceea48a667 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 9 Nov 2025 18:00:07 +0000 Subject: [PATCH] Initial Commit --- .env | 2 + .env.development | 2 + .gitignore | 18 + assets/airbnblogo.svg | 7 + assets/atsymbolicon.svg | 7 + assets/bookingcomlogo.svg | 17 + assets/checkicon.svg | 30 + assets/closeicon.svg | 10 + assets/digitalicon.svg | 1 + assets/downloadfileicon.svg | 10 + assets/dropdownicon.svg | 15 + assets/exitfullscreenicon.svg | 7 + assets/fullscreen.svg | 7 + assets/fullscreenicon.svg | 9 + assets/iconloading.svg | 7 + assets/lefticon.svg | 8 + assets/linkicon.svg | 7 + assets/loadingicon.svg | 29 + assets/loggedouticon.svg | 12 + assets/logo.svg | 19 + assets/menuicon.svg | 35 + assets/mloading.svg | 7 + assets/muteicon.svg | 8 + assets/oloading.svg | 7 + assets/padlockicon.svg | 7 + assets/pauseicon.svg | 7 + assets/personicon.svg | 7 + assets/playicon.svg | 7 + assets/printicon.svg | 9 + assets/righticon.svg | 10 + assets/scrollicon.svg | 19 + assets/shareicon.svg | 12 + assets/tloading.svg | 7 + assets/usericon.svg | 7 + assets/visiticon.svg | 15 + assets/volume1icon.svg | 8 + assets/volume2icon.svg | 9 + assets/volume3icon.svg | 10 + assets/website2024.svg | 18 + assets/website2025.svg | 26 + assets/website2026.svg | 16 + assets/websiteselectoricon.svg | 13 + eslint.config.js | 38 + index.html | 33 + main.jsx | 9 + package.json | 80 + public/assets/favicon.svg | 15 + public/assets/favicon192.png | Bin 0 -> 5066 bytes public/assets/grain-texture.png | Bin 0 -> 780208 bytes public/assets/grain.svg | 6 + public/data/pages.json | 131 + public/manifest.json | 18 + public/silent-check-sso.html | 13 + readme.md | 119 + src/App.jsx | 838 ++ src/components/Blogs/BlogList.jsx | 23 + src/components/Blogs/BlogListItem.jsx | 29 + src/components/Blogs/BlogPage.jsx | 92 + src/components/Buttons/AccountButton.jsx | 48 + src/components/Buttons/MenuButton.jsx | 29 + src/components/Buttons/ShareButton.jsx | 54 + src/components/Buttons/VisitButton.jsx | 20 + src/components/ContentRenderer.jsx | 622 + src/components/Experience/CompaniesList.jsx | 22 + .../Experience/CompaniesListItem.jsx | 39 + src/components/Experience/ExperiencePage.jsx | 154 + src/components/Footer.jsx | 66 + src/components/Forms/ContactForm.jsx | 148 + src/components/Forms/Turnstile.jsx | 186 + src/components/Header.jsx | 44 + src/components/HeaderLogo.jsx | 38 + src/components/Image.jsx | 249 + src/components/LoadingModal.jsx | 58 + src/components/Menu/CVDownloadPopupMenu.jsx | 202 + .../Menu/CVVersionsSelectorPopup.jsx | 140 + src/components/Menu/SharePopupMenu.jsx | 201 + .../Menu/WebsiteSelectorPopupMenu.jsx | 142 + src/components/Page.jsx | 110 + src/components/ParticlesBackground.jsx | 177 + src/components/Projects/ProjectCard.jsx | 39 + src/components/Projects/ProjectCards.jsx | 21 + src/components/Projects/ProjectPage.jsx | 134 + src/components/Projects/ProjectStatus.jsx | 22 + src/components/SubPage.jsx | 97 + src/components/Video.jsx | 570 + src/components/VideoVolume.jsx | 149 + src/contexts/AccountContext.jsx | 233 + src/contexts/ActionContext.jsx | 29 + src/contexts/BlogsContext.jsx | 34 + src/contexts/CompaniesContext.jsx | 34 + src/contexts/FileContext.jsx | 232 + src/contexts/ImageContext.jsx | 311 + src/contexts/KeycloakContext.jsx | 93 + src/contexts/MenuContext.jsx | 196 + src/contexts/ProjectsContext.jsx | 34 + src/contexts/SettingsContext.jsx | 32 + src/contexts/ThemeContext.jsx | 52 + src/contexts/VideoContext.jsx | 336 + src/icons/AtSymbolIcon.jsx | 7 + src/icons/CheckIcon.jsx | 7 + src/icons/CloseIcon.jsx | 6 + src/icons/DigitalIcon.jsx | 7 + src/icons/DownloadFileIcon.jsx | 7 + src/icons/DropdownIcon.jsx | 7 + src/icons/ExitFullScreenIcon.jsx | 7 + src/icons/FullScreenIcon.jsx | 7 + src/icons/LeftIcon.jsx | 7 + src/icons/LinkIcon.jsx | 7 + src/icons/LoadingIcon.jsx | 7 + src/icons/LoggedOutIcon.jsx | 7 + src/icons/MenuIcon.jsx | 7 + src/icons/MuteIcon.jsx | 7 + src/icons/PadlockIcon.jsx | 6 + src/icons/PauseIcon.jsx | 7 + src/icons/PersonIcon.jsx | 7 + src/icons/PlayIcon.jsx | 7 + src/icons/PrintIcon.jsx | 7 + src/icons/RightIcon.jsx | 7 + src/icons/ScrollIcon.jsx | 23 + src/icons/ShareIcon.jsx | 7 + src/icons/UserIcon.jsx | 7 + src/icons/VisitIcon.jsx | 7 + src/icons/Volume1Icon.jsx | 7 + src/icons/Volume2Icon.jsx | 7 + src/icons/Volume3Icon.jsx | 7 + src/icons/WebsiteSelectorIcon.jsx | 7 + src/main.jsx | 20 + src/styles/animations.css | 114 + src/styles/base.css | 250 + src/styles/components.css | 2917 ++++ src/styles/global.css | 8 + src/styles/layout.css | 661 + src/styles/utilities.css | 41 + src/svgs/Website2024.jsx | 7 + src/svgs/Website2025.jsx | 7 + src/svgs/Website2026.jsx | 7 + src/utils/CacheReloadView.jsx | 64 + vite.config.js | 14 + wrangler.jsonc | 4 + yarn.lock | 11563 ++++++++++++++++ 140 files changed, 23216 insertions(+) create mode 100644 .env create mode 100644 .env.development create mode 100644 .gitignore create mode 100644 assets/airbnblogo.svg create mode 100644 assets/atsymbolicon.svg create mode 100644 assets/bookingcomlogo.svg create mode 100644 assets/checkicon.svg create mode 100644 assets/closeicon.svg create mode 100644 assets/digitalicon.svg create mode 100644 assets/downloadfileicon.svg create mode 100644 assets/dropdownicon.svg create mode 100644 assets/exitfullscreenicon.svg create mode 100644 assets/fullscreen.svg create mode 100644 assets/fullscreenicon.svg create mode 100644 assets/iconloading.svg create mode 100644 assets/lefticon.svg create mode 100644 assets/linkicon.svg create mode 100644 assets/loadingicon.svg create mode 100644 assets/loggedouticon.svg create mode 100644 assets/logo.svg create mode 100644 assets/menuicon.svg create mode 100644 assets/mloading.svg create mode 100644 assets/muteicon.svg create mode 100644 assets/oloading.svg create mode 100644 assets/padlockicon.svg create mode 100644 assets/pauseicon.svg create mode 100644 assets/personicon.svg create mode 100644 assets/playicon.svg create mode 100644 assets/printicon.svg create mode 100644 assets/righticon.svg create mode 100644 assets/scrollicon.svg create mode 100644 assets/shareicon.svg create mode 100644 assets/tloading.svg create mode 100644 assets/usericon.svg create mode 100644 assets/visiticon.svg create mode 100644 assets/volume1icon.svg create mode 100644 assets/volume2icon.svg create mode 100644 assets/volume3icon.svg create mode 100644 assets/website2024.svg create mode 100644 assets/website2025.svg create mode 100644 assets/website2026.svg create mode 100644 assets/websiteselectoricon.svg create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 main.jsx create mode 100644 package.json create mode 100644 public/assets/favicon.svg create mode 100644 public/assets/favicon192.png create mode 100644 public/assets/grain-texture.png create mode 100644 public/assets/grain.svg create mode 100644 public/data/pages.json create mode 100644 public/manifest.json create mode 100644 public/silent-check-sso.html create mode 100644 readme.md create mode 100644 src/App.jsx create mode 100644 src/components/Blogs/BlogList.jsx create mode 100644 src/components/Blogs/BlogListItem.jsx create mode 100644 src/components/Blogs/BlogPage.jsx create mode 100644 src/components/Buttons/AccountButton.jsx create mode 100644 src/components/Buttons/MenuButton.jsx create mode 100644 src/components/Buttons/ShareButton.jsx create mode 100644 src/components/Buttons/VisitButton.jsx create mode 100644 src/components/ContentRenderer.jsx create mode 100644 src/components/Experience/CompaniesList.jsx create mode 100644 src/components/Experience/CompaniesListItem.jsx create mode 100644 src/components/Experience/ExperiencePage.jsx create mode 100644 src/components/Footer.jsx create mode 100644 src/components/Forms/ContactForm.jsx create mode 100644 src/components/Forms/Turnstile.jsx create mode 100644 src/components/Header.jsx create mode 100644 src/components/HeaderLogo.jsx create mode 100644 src/components/Image.jsx create mode 100644 src/components/LoadingModal.jsx create mode 100644 src/components/Menu/CVDownloadPopupMenu.jsx create mode 100644 src/components/Menu/CVVersionsSelectorPopup.jsx create mode 100644 src/components/Menu/SharePopupMenu.jsx create mode 100644 src/components/Menu/WebsiteSelectorPopupMenu.jsx create mode 100644 src/components/Page.jsx create mode 100644 src/components/ParticlesBackground.jsx create mode 100644 src/components/Projects/ProjectCard.jsx create mode 100644 src/components/Projects/ProjectCards.jsx create mode 100644 src/components/Projects/ProjectPage.jsx create mode 100644 src/components/Projects/ProjectStatus.jsx create mode 100644 src/components/SubPage.jsx create mode 100644 src/components/Video.jsx create mode 100644 src/components/VideoVolume.jsx create mode 100644 src/contexts/AccountContext.jsx create mode 100644 src/contexts/ActionContext.jsx create mode 100644 src/contexts/BlogsContext.jsx create mode 100644 src/contexts/CompaniesContext.jsx create mode 100644 src/contexts/FileContext.jsx create mode 100644 src/contexts/ImageContext.jsx create mode 100644 src/contexts/KeycloakContext.jsx create mode 100644 src/contexts/MenuContext.jsx create mode 100644 src/contexts/ProjectsContext.jsx create mode 100644 src/contexts/SettingsContext.jsx create mode 100644 src/contexts/ThemeContext.jsx create mode 100644 src/contexts/VideoContext.jsx create mode 100644 src/icons/AtSymbolIcon.jsx create mode 100644 src/icons/CheckIcon.jsx create mode 100644 src/icons/CloseIcon.jsx create mode 100644 src/icons/DigitalIcon.jsx create mode 100644 src/icons/DownloadFileIcon.jsx create mode 100644 src/icons/DropdownIcon.jsx create mode 100644 src/icons/ExitFullScreenIcon.jsx create mode 100644 src/icons/FullScreenIcon.jsx create mode 100644 src/icons/LeftIcon.jsx create mode 100644 src/icons/LinkIcon.jsx create mode 100644 src/icons/LoadingIcon.jsx create mode 100644 src/icons/LoggedOutIcon.jsx create mode 100644 src/icons/MenuIcon.jsx create mode 100644 src/icons/MuteIcon.jsx create mode 100644 src/icons/PadlockIcon.jsx create mode 100644 src/icons/PauseIcon.jsx create mode 100644 src/icons/PersonIcon.jsx create mode 100644 src/icons/PlayIcon.jsx create mode 100644 src/icons/PrintIcon.jsx create mode 100644 src/icons/RightIcon.jsx create mode 100644 src/icons/ScrollIcon.jsx create mode 100644 src/icons/ShareIcon.jsx create mode 100644 src/icons/UserIcon.jsx create mode 100644 src/icons/VisitIcon.jsx create mode 100644 src/icons/Volume1Icon.jsx create mode 100644 src/icons/Volume2Icon.jsx create mode 100644 src/icons/Volume3Icon.jsx create mode 100644 src/icons/WebsiteSelectorIcon.jsx create mode 100644 src/main.jsx create mode 100644 src/styles/animations.css create mode 100644 src/styles/base.css create mode 100644 src/styles/components.css create mode 100644 src/styles/global.css create mode 100644 src/styles/layout.css create mode 100644 src/styles/utilities.css create mode 100644 src/svgs/Website2024.jsx create mode 100644 src/svgs/Website2025.jsx create mode 100644 src/svgs/Website2026.jsx create mode 100644 src/utils/CacheReloadView.jsx create mode 100644 vite.config.js create mode 100644 wrangler.jsonc create mode 100644 yarn.lock diff --git a/.env b/.env new file mode 100644 index 0000000..1c9e060 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +VITE_API_URL=https://api.thehideoutltd.com +VITE_TURNSTILE_KEY=0x4AAAAAAB2uebWFPXaK8spB diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..419f505 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +VITE_API_URL=https://thehideout.tombutcher.work/api +VITE_TURNSTILE_KEY=0x4AAAAAAB2dBq6i8m4kYzDm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6380609 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +### react ### +.DS_* +*.log +logs +**/*.backup.* +**/*.back.* + +node_modules +bower_components + +*.sublime* + +*.wranger + +dist + +psd +thumb \ No newline at end of file diff --git a/assets/airbnblogo.svg b/assets/airbnblogo.svg new file mode 100644 index 0000000..04ec50d --- /dev/null +++ b/assets/airbnblogo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/atsymbolicon.svg b/assets/atsymbolicon.svg new file mode 100644 index 0000000..2dc0540 --- /dev/null +++ b/assets/atsymbolicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/bookingcomlogo.svg b/assets/bookingcomlogo.svg new file mode 100644 index 0000000..87c1e0c --- /dev/null +++ b/assets/bookingcomlogo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/checkicon.svg b/assets/checkicon.svg new file mode 100644 index 0000000..2c94976 --- /dev/null +++ b/assets/checkicon.svg @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/assets/closeicon.svg b/assets/closeicon.svg new file mode 100644 index 0000000..865ec30 --- /dev/null +++ b/assets/closeicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/digitalicon.svg b/assets/digitalicon.svg new file mode 100644 index 0000000..cf019ec --- /dev/null +++ b/assets/digitalicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/downloadfileicon.svg b/assets/downloadfileicon.svg new file mode 100644 index 0000000..77bd72d --- /dev/null +++ b/assets/downloadfileicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/dropdownicon.svg b/assets/dropdownicon.svg new file mode 100644 index 0000000..daaa9cf --- /dev/null +++ b/assets/dropdownicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/exitfullscreenicon.svg b/assets/exitfullscreenicon.svg new file mode 100644 index 0000000..b54d6c8 --- /dev/null +++ b/assets/exitfullscreenicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/fullscreen.svg b/assets/fullscreen.svg new file mode 100644 index 0000000..b3aebb4 --- /dev/null +++ b/assets/fullscreen.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/fullscreenicon.svg b/assets/fullscreenicon.svg new file mode 100644 index 0000000..d3c831d --- /dev/null +++ b/assets/fullscreenicon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/iconloading.svg b/assets/iconloading.svg new file mode 100644 index 0000000..3d142aa --- /dev/null +++ b/assets/iconloading.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/lefticon.svg b/assets/lefticon.svg new file mode 100644 index 0000000..697f1cb --- /dev/null +++ b/assets/lefticon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/linkicon.svg b/assets/linkicon.svg new file mode 100644 index 0000000..9191f4f --- /dev/null +++ b/assets/linkicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/loadingicon.svg b/assets/loadingicon.svg new file mode 100644 index 0000000..8d18014 --- /dev/null +++ b/assets/loadingicon.svg @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/assets/loggedouticon.svg b/assets/loggedouticon.svg new file mode 100644 index 0000000..9d9e237 --- /dev/null +++ b/assets/loggedouticon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..21e4fc9 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/menuicon.svg b/assets/menuicon.svg new file mode 100644 index 0000000..6a4653f --- /dev/null +++ b/assets/menuicon.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/assets/mloading.svg b/assets/mloading.svg new file mode 100644 index 0000000..6bb5416 --- /dev/null +++ b/assets/mloading.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/muteicon.svg b/assets/muteicon.svg new file mode 100644 index 0000000..13f25fa --- /dev/null +++ b/assets/muteicon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/oloading.svg b/assets/oloading.svg new file mode 100644 index 0000000..3e013cf --- /dev/null +++ b/assets/oloading.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/padlockicon.svg b/assets/padlockicon.svg new file mode 100644 index 0000000..27cb3b8 --- /dev/null +++ b/assets/padlockicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/pauseicon.svg b/assets/pauseicon.svg new file mode 100644 index 0000000..96f8c72 --- /dev/null +++ b/assets/pauseicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/personicon.svg b/assets/personicon.svg new file mode 100644 index 0000000..86e0a69 --- /dev/null +++ b/assets/personicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/playicon.svg b/assets/playicon.svg new file mode 100644 index 0000000..2719296 --- /dev/null +++ b/assets/playicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/printicon.svg b/assets/printicon.svg new file mode 100644 index 0000000..790be7b --- /dev/null +++ b/assets/printicon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/righticon.svg b/assets/righticon.svg new file mode 100644 index 0000000..4121ecc --- /dev/null +++ b/assets/righticon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/scrollicon.svg b/assets/scrollicon.svg new file mode 100644 index 0000000..7caafe1 --- /dev/null +++ b/assets/scrollicon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/assets/shareicon.svg b/assets/shareicon.svg new file mode 100644 index 0000000..99cda22 --- /dev/null +++ b/assets/shareicon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/tloading.svg b/assets/tloading.svg new file mode 100644 index 0000000..ba9f01b --- /dev/null +++ b/assets/tloading.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/usericon.svg b/assets/usericon.svg new file mode 100644 index 0000000..25e1ae9 --- /dev/null +++ b/assets/usericon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/visiticon.svg b/assets/visiticon.svg new file mode 100644 index 0000000..f508561 --- /dev/null +++ b/assets/visiticon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/volume1icon.svg b/assets/volume1icon.svg new file mode 100644 index 0000000..4394216 --- /dev/null +++ b/assets/volume1icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/volume2icon.svg b/assets/volume2icon.svg new file mode 100644 index 0000000..b448c8c --- /dev/null +++ b/assets/volume2icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/volume3icon.svg b/assets/volume3icon.svg new file mode 100644 index 0000000..bff1a5c --- /dev/null +++ b/assets/volume3icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/website2024.svg b/assets/website2024.svg new file mode 100644 index 0000000..9babf03 --- /dev/null +++ b/assets/website2024.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/website2025.svg b/assets/website2025.svg new file mode 100644 index 0000000..58220f8 --- /dev/null +++ b/assets/website2025.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/website2026.svg b/assets/website2026.svg new file mode 100644 index 0000000..a1a236b --- /dev/null +++ b/assets/website2026.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/websiteselectoricon.svg b/assets/websiteselectoricon.svg new file mode 100644 index 0000000..6693345 --- /dev/null +++ b/assets/websiteselectoricon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..238d2e4 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/index.html b/index.html new file mode 100644 index 0000000..5a10e78 --- /dev/null +++ b/index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + Tom Butcher + + + +
+ + + diff --git a/main.jsx b/main.jsx new file mode 100644 index 0000000..637e43b --- /dev/null +++ b/main.jsx @@ -0,0 +1,9 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App.jsx"; + +createRoot(document.getElementById("root")).render( + + + , +); diff --git a/package.json b/package.json new file mode 100644 index 0000000..d4bb019 --- /dev/null +++ b/package.json @@ -0,0 +1,80 @@ +{ + "name": "thehideout-ui", + "version": "1.0.0", + "type": "module", + "private": true, + "homepage": "https://thehideout.uk", + "dependencies": { + "@ant-design/icons": "^6.0.0", + "@marsidev/react-turnstile": "^1.3.1", + "@tanstack/react-query": "^5.90.7", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@tsparticles/react": "^3.0.0", + "@tsparticles/slim": "^3.9.1", + "antd": "^5.24.6", + "axios": "^1.6.0", + "blurhash": "^2.0.5", + "color-convert": "^3.1.2", + "dayjs": "^1.11.19", + "hamburger-react": "^2.5.2", + "keycloak-js": "^26.1.4", + "overlayscrollbars": "^2.12.0", + "overlayscrollbars-react": "^0.5.6", + "rc-slider": "^11.1.9", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-ga4": "^2.1.0", + "react-icons": "^5.5.0", + "react-particles": "^2.12.2", + "react-responsive": "^10.0.1", + "react-router-dom": "^7.5.0", + "react-scripts": "^5.0.1", + "react-scroll": "^1.9.3", + "react-turnstile": "^1.1.4", + "sass": "^1.86.3", + "simplebar": "^6.3.2", + "simplebar-react": "^3.3.2", + "slider": "^1.0.4", + "vite": "^6.2.5", + "vite-plugin-svgo": "^2.0.0", + "vite-plugin-svgr": "^4.5.0", + "web-vitals": "^4.2.4" + }, + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "npm run build && vite preview", + "deploy": "npm run build && wrangler pages deploy ./dist --skip-caching" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@eslint/js": "^9.24.0", + "@types/react": "^19.1.0", + "@types/react-dom": "^19.1.1", + "@vitejs/plugin-react": "^4.3.4", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0" + } +} diff --git a/public/assets/favicon.svg b/public/assets/favicon.svg new file mode 100644 index 0000000..0a80e63 --- /dev/null +++ b/public/assets/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/assets/favicon192.png b/public/assets/favicon192.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e2e3be007296a1f4083a1d059200e67865618a GIT binary patch literal 5066 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�SO3V5dI5 z_v8Or=fo2izWZ)zT1VZAL*_Z835HuT+4 zPzu3NvXHG{%50h#rF>{gu`6cGB722mOBOFKf8wJ!Tz1y&#n!-h2-k-SH!KEm(2G!4 zd9`)1u#l-`3}7rp8lk)kiC>&?kNhfEP0x&0bsm!C4duP$z0iCbDeKflHyu9p&FSB4 zc>KTruLYPs#YyyHwJKW>B9u5FvVA&e@pqACOP`tg3}@=bxWsG3HbSX$p1X+7h(Xie zRuE>PkGtkd7;F-s5YZbj9PQ|-n`5b~LQ-;K^ky}kjvl(`kWrK-T@@M`<#em1bmz}t62<3$Z_ zyzaVT4xSzd^1|1t*}pRdFKxkCjDH~#+R-A>#FWH}#@o?5t@KldS9+)vG+yuVouzIQ z8a;Z<;Tk0-44>Re*Fm24rL!6<@(#RW_JDZNHIJNSg3cG2=krA%EH6$L%=5kARgJrx zSq_@xfNIyX`}z-S01JynBi#fwML8On4B(X8;|Cm3yS5BGwpcgWE)joK@Na*Pn-MC@yAz|CrljQ2amd>VCmcz?~O2;xMA=&bC) z5>qSOG9l~OTz33e`bhW-gfVvem=V`RH&4!vnNL9jysC-SOv669j)-5wi9RB_D2?j% zt<*@DPB}p(WZEG88uKjb(Pm~EL#$Y687)|(B|39?z+>+7B5nIzTSy?bWiMM&VtsYz8Kq$b84)#mY6)SN;W2@Y1a zwT}v)hZBm~Cy&#fJeyg->|yb8-JP0dat(58(9bP>tKvBZHrAB=HAGVmbKz4BAt-fk zdCgq%(_Y#{S;kJ4?qL~9uCwAFku$q+85|O#-PX8m31Qt30&yQ|a~Bl4c*&Bh2uD~` z97dW4@Jm)?eU)9K%)25V#ceF%Abij$c4WH3&_-A$vohfqS07@dQ*|g`s0eh$P0-Gj zZ}@{(nvzZ|$ogRAjAoAMp|iziC?~$&ZrhN9uGvxIMj@LbDQ5Um-C)O=c~vA=*{5L^ zJs#cHjOU+F`I#T|8(zui?M+|33teZ4OVibi^b1bDxp(i^s!jc`ZGz(Ehj29RVzK1V z_m6Fp`m~WRhGG~nQmLwABkUU+AmP z;(-z>dtTwbD4Iobj8`AGE5#G7!Y_*HgYYpjajJBJgbJ11AqcpA+$n#ji$~7K+Q;TPQH_(l6OJpz#;i(mPtei zr*uSsW{AiU$l@9qt5n5HuD$l(1=V-iWjV2~KRB17AMqu-ylgv_J)a{byAV43s?gdJ zxK{6Miyjs5E=p5)JEJKohoZKxUiaCtw0Ea+I&nQFGnrc)3PC0DSheNvz4zXBqmNn} zjOIU1D$@Q%)80+h>~5h@a7p@_4lIuL&CBytLF}C*tqd_@UZyx5yn6F;j8Zz zNpJBx1X2!o`f8YzGh$<)FckxM9Fvn?yxue=8pLaKjU z?`4eI;*JObMUR)^vv=RExZxJ6qhcbIZ&;z@>wk}=$~14-`%XWTE-2hHXZ^3j&$@ZN zulvUN#K>1YWS5A5+uz4&WC7Gv0}JOfwn^XqYG3y-L-=i;LE@}mG3~gp0#2sa7%- zrLM(G*ricv=&y9t=q2HMwp&7_fema3P7q917N<6M$snfP# z^zDy{SCdLG^M;gWlt)$i&Hi=oS3tyY?pIu~`-}+>|GIJ%+?&&krNfIrssns!=*cK!Q+eV{r~%oB}9JV`cMB|N#g3_ z_&Pum%P_bdw^W-&rfV~PGS+Gm_FgGD?D(^;x#qd&PQ(_0zm@S&AzZpIx935SJgm{J zKei1; z|3THjO8jqVOYZZ6wa7S|O(Z0nsePEB0v?mHUjJ^wooJyfH*)W)Ub3q9+O=9&4c$XN zGRa0%T>76arAvG0As1(qhM`DZB1~h9xXW|dlE4JSz4r^ zz)*KqP|qFki7lstDUckwOwb5v;=ce{*W~gczmbHMzGjg!Ujd$;pi)t<_iWv~i{I>Z zj9P5o|Iu_Ga9_{u`}iyEXipSvBcptgtz1nZBw5MTuqo@#Y->tFLQx@`h7po>B#OF| z-BKZxkx=?Q5ANUn`2QZ?KkB+ZpZELqI?v-g&f`2zj`JdU`uR>!7v?h-1XMiXXYcl- z)vFgXO^J3y+Ue%i5Y=Ba>`1kAcu&_Tdz1Y(T}Hnxt`aciwx7N}1=jcwKbakV;Kjg; zuDkyF<=QWNs-K)PWuSANc{sJcwqt`MkL)=3g3r#~fyYRh0tu!+y!<$B%LtJl<> zf@yyZ3Aq9#9HtEja+C6E*?~>xZp@x2p49$?cXC>nxd2n_l(FQ9({jj5O;=S(M#QGP zf4iwb^Zm;d2k|rj(X1#q=iLVq&6%#ics=;IO1|6v-hDgDWH5i3O!z5bybSPuiBp?p zi*W+eg>zXs&@GOBgFBH_jM(nYhXa>&c+Iu>aR_KAy=+@FU>Sw!-UpmK0jDzJ{0|h5 z-a`XUNMhS|(O%6EhfoDl^mKR%eXtHvIs)3@D>ibFp^mkq_R@mx(*I@QC;KEFmQ6@j zzG}sEU*eOYb*D+TN!ZAokM~Y1yz`G=8W(|@duTEg{$@|tawnGfC3_>zd%m-KRX*2z z_Use+3&^Wg009x)nd;?lXtI)0M*nd|8MOpUhNbcdo3SV&&`^Vnu}xOHHtIn9nC0hd zpIpf{?AT+U76TNF{_+CZ*iUO@dQDUXr`md|2$6N(N?f^c`ZK&sJZg+dN*Cbg?=^HJ zJTy7-6>%fJg+)$R2P{y%$B*;xU4LX=n)U_BlZ}i@wx{43=`u+&bDfY(y2kLVLBBdG z(Cu%0rgG`ktF^;M;FJM(fHWH${NCd*QYpTDvs`Rp!rN-0u6e`KCx%=8MZ7519v`e= z&8Dt%47h^Z{1P5SG<-RZtVOhDGinE<4_lnkO&$5U#@CeSA632b(&4-R-o2k|fpO1j z=&Z^UuG`T1Xg5dk1UN$($Ei!6kU+G@h4O)Dq!fKA0y?va3_`Q$<+vAIRFQ=ZGV3JH~$P)$I{4 z!p?%FOGhYLJ)Rg=2>DeOuTm$o?Ge=v0vDs%P=;mc*!20c!9-P)JXG#7DDX}q5SQa_ zjVcXJ$+OzNn-#-G78@z4vZFpOrS247ct3=y$=5S__IzsEoR=E4~lmeFjzd`uTn|Gi^yy&Tm0rkffZdT2RZ zofyQ(a~|he72<$3bA&wi%m_mTm&bq1&H_KKjh%8pgDO0h{#p!LD=kl*T11q1-vNW< zA~=p1TdAhB1QM<3j@hY^p)6QgI|2V)#CH;@hoCMpg^k|QdF$MNH)H`uNo?t79G^?- z{~|Y?uzjFu*1|1{+*SREuA?+1y~l{-gav6Wrh>{hbt@;{xD|V>-hR1SAEI)Y&EGqB z%4+KqJZ-dsYpzici@Ses7dV$;b;X6)*L8sCNxbAX@N}lWS zKw6tjbRbHQ^~Lqvr<6R#lr+Scu4_g@d{?@-j$8X>SVkOCVRRGMea?#2stpmA@WBK+ zeYjpzNY)!Q8qX{_VXLLm+ zmd<#44l;bGG7}1j`W?C>X&*#f#jdO3+iU4fy4!I_`6M^Qm=0=8O$3{Ep=ozovQWoN zjs_kF@B6ph?H)feYgY4hmtMc5$h};Hq?h&Zl8wxQX>;y^AZ&$10e0In*3;9J z<8nLLLnF!yP8t07>n3xth10PMeyy96xePBR!>t;I$%RioS=<-tGtF5qv-cG`Ule;) z_bji${fx?m+BTnKgHS=~nV0t=;#aN2R6W!;3hPQMUh4I@P`@>r z!|T63+4B$fvl>zupGky>f5&KXLmLfzV%B)wEYT`}+Z?lQ9gCVg}5RQPd{R_&+jso@>1+U4#rmzS;{zA zV6wv1FzTcIOWxy*I@F2)f2J6uxz@{bHA@d)4Yc*)V>3YcnDv`UsEl$emFg!VvGCrH zoUG-jS80vr%{BtDnA*eNmR8b8N}`$z@&N%CDRIb*we zn%Ihql-uo@X4i|iG4R1Tx*qFlzU&Ekw^Pd5p8GDQj=SgcD|-0LS%jNy5`ESePdC5o z?3xZOseCrzdRp?-hP7)?#c2$#KL z&c@bb{d&!`m&W%tIfNUl!S3x0y&m1o`01f_IOxCY_)%U}xpoL9rQ&}3o$fqq;Udg% z30d8x?Oaz)=s?7{88NF`H?UFxDwPHQK=PFS@9sU5p4_q9#`?p&^G)7g;Y~Fy1M$!$ zk@*0K14?1L+&EFD!DW1VS~~vv+qHUHcil>w3to?S*0Bw)Ce+1#ALqS5^p7%YM}bL=?~El1s4AbI%Xv6T~S(^Y4t+V3(2uq$I}`3sd{q2(&Tzs`b3>A_f|wQgsPJMv(!YFD)!S&E}b*M zTTuGW(|5l0&tDG~UgL&SxO?U3*{_L6CMq$_r>*!XbrspgFrMM5en0rZ>=J z%2F&<>JHjdYzM_@Y@Ol6==Ft$U2>j6V`S@;2j290@h>ywm^edT%k=7ewGuWxR~CiW z9UK;G$LTZ-O)Fp5_-wL*jNq7nZZ1f@kU7|=5r0s z3r%w7*d14WtAZuWe|&s-vdc_Q<&FtUpTAiuRa?7cV${(j~u~L`9SqEfwt+ z0N+uq{?`xa){oxl*UyOydzkiiDI)@?NRX{D_ii3|AR(4zB{Pw~>yXOC=1!DE zNu)ESI89S1Q&VgMZ@J|dhqaqpgonk?#vZ{q8@Ur$wE$+uEAp$i-}gy+|K~rKyH%+@ zTnOtKvym(JRa+=Uf~dVg=Ng0v|Lo^!ojl@t;dTZ8YJYA}owD{{q>NEXGdRDr)7tYo zb;8P4KI~zCuF|$qls@F`=}SnKM%ou8N;Ye@9*P6S!}1aJstupgZBvY8W3C&?!n4LJ z?|ZG{)1f;v1r-IQ7+&tVsWQK4&`@Qq!5yzO9HzoBaxcg(!eY-8(Ney)D6mv|i1ivj zn9R~Z0%(GRnl#x+c3$j=tB@uHY%yt#NC19i}ZT{>ftv6O;+%;EKBHIu$Am(@PEwb)Ykfg(^Os;(N54Zwt@+ zPFx5chl)-}UY-vjkppEvv`S&U8BbJ??^}TYquy{g?Us| zn3#TB!Y71}EFF79V=`G+Y~a;(jEm`|;At5xmj^`EdD(P=c_6Qxj-Lc&V^AZTMn$9x z+Fdr0k{2Gj+YitDJP_maEXF`dlhLhf1P2r-zQ0}d?EPEXRiIPzoiT~?pb6^))~X)o z&mmJd-ITS8ZtItCg?9<_krfjZ70J=)UkNCCgHR2F^bP4x^yYuYC{+5c9HVVbjF>2q zZz4h#9ro75#cIFP)w)4#EUYnFg6}~Cukjc6-1tOiW&x7BPj@bJDCtv*!-2Hu``rPo zsj$RO2pBEeE{(#bY}xd(;>jRzmcHV@<~1|Qs%xO1WA1JsmbS=3GLdpu$DhK+cgKQy zVys#>vNSCSdZKS=847D$2>7m;qa79x^Ed`EBZqe$wk;T8U$K89tc=D}e?<=kOo(q& zq=I#}?mAgtyfc34|JMQphp>oA6JJ-c@ecWB&OdfpjGxIun`zWWiRwT{!f#w5FM7&? zzo{hR3!!d|Wc1l*+pSs+0e9iigJ@|5tTGvkwWZr|H`$i6Cv?N@qt#QX>|89CBKJYj zndHU~mstH5N&|>{L_H|PmvRbGr5ha);P9i-CmrBO>VRb`o1)Htjcy0#AYY4LIGmJ2 z?ce+3kp@eFeq|cx5Og#XakUl%2vsJ(_F8pFxaePc#G7zoTsx{bx%y@PV*-(XH*(+W z-x~iEmR-dgahf`*;OeJ59U=VwapM+aMuy#U&mxha({uU(qcH)ZH6Pl2!%lwrWk?mp zKzyh$;ACQ2UzPp%_>36OSjpeY@a8{rRW_+RLq@mM-2V-QY)g=);jr38L-DkLKYFz-m zF`p6;fiU&ZnkBcfn3+p^^ z9VmObvacFo%`6Br(qV1ZDv$VRWE?{8Y`Ua`^d@v;X|)e5o+V8LfHWYifQBG7Zt!)L zox_AIVi2>gF3FE0D}rGFi9DzGO9rGqqQXHdIICK>mMIdke@cDDcHZQ>W01#AU6JE&aA zhj?NmAG+PGK}M(oqqU7K1{Qo!$$biSz*Ta4X>b`Qj(M$Kr}KX1udQT}g)T*j+Sifk zO?fl6;Zz>Ts>Lf;-k<)TQ5_vin%5VU4cK#>ZA_OU@)m2SbX|4b5qalc#7*C=ihnwZ zI>}rX%c!R;02}6n0hOU84B^!Mk)cfw^Im)+%kjm9Ng8zCU#4wv;DP;-HPfHI_MI!Q zGvVX1nj9Mx>G+Rdv>+%oMN@b170ZuOt&FG46BM-CvlCJ;D(y^xl6nlTZ>B_dY(|23 z{SW=ajbNv#6XYutd#ox)t=Z+FzRb>h;E{r;NuPP?rKt#vIQRJ|(fJv^EK$)m&=y~O z3~0wM25_tK)?Y3{=vFUIXsMv%lLiTtCJ(nY7XiY#XQsVJuwoN30`dW0x}k--NpVT> zD7@KF_xPo-k-ms|5{9A$N>|j3=Um;3g7Wbl(b0Jl!|uDC&KeS@LJYyB?n!@Ici@+C zk&b@)BKA`@j?z=()S{t*U4DzO*t1uJgubMHQ%msU4ol&u(sJ}>E$sL}x!ER?5{oVr zCLf|mhY4c%4)Pgkj5ALrIKaHc-f)MZS)K}NX6G;9uxZzxvv2;Y-_d*a>^b7#f={2= z_S$*3JoSQgnD1WGao-Ug4{mq*!3F=OFmS`lGrs$C_qrRu z?eoSRdj_4kdBWyfPyF%s&wse>jJ6eboGFSbAR-Ji(WfNVq!>7K=+INk+lQ5Xr4$<9 ze(}apj{W6~L^3_=+hvRlvbj=J(lgem4f+>f|IyS{ahK)ac%t-TBm4O?_)_!2umgCJ>qWs=>6fbpM@kTMypONj_+)2r9iws$@B;DbR2 z@m*%21+iK{Jxt3Sd$Jt%%{UGmA<}0719B>xcM>cRYEJt0Iu?^w5I(1`e$zVfS+hiy zpn3$AK1ge3K_&oY(>6rnppdnW+34eN6%Z;4vSxu9Ge<9o@x3exgyzkoorN(YmUn0e z4;?BOv;k){h=8JLVwP~Q*iFCH2>AFFUGYOcFC3Z104ipkz?~v?>(&kmsBO)ayz8xB zkO|U2iE{Vtw`*sZH)D#lwP!r3^u{r#cF5c%Pi}$I(G$9#Z}_be4rQnJuJ!uG)DCW~mRC49COoOK1~HPXE8^u-@HZ zh+j<#KjQRpf(c8smRElW);n$v&u=Zyn?!4aYb7_iH>rOQ>DtLew(+q@C-Pc>P4H{}7 z=cDCXQJ27JIbCezq8UdS*r;=#aytgXiZ09&>ZASE9hbg+TRMl@&y}m)!`~+UQo@zd z+w{_$w|q6nX0U4AA1V~yT0VX}{wB}Roe-mPuyv89{1o(do>6fAv=>2c2yV5xsum0fNsEaqrOO2 z8t$a*u0FgI^sv1nS$<27WT`KldlwSGzjyA&Gns6mckxxxkQjiMt1$nqq+U<4@-9{R zJ0q8#GxY08^@qLU5PIaYP1T`I&5JQ*+rDE*_2bIJFHvcmT3mSbLz?v=h*qzzjM5^C z(c#hV=#2pILg}ZPz?(LmJs`FM@0kuoP~72w=zgnub96mufB$Eap(sIJ$?Tznj4$(k z@*kkyx|{fI9I8B4K#gIw(!c0l$~M))5$0Ad-FgGW(E(@Udv=ey_0NnW={$g%KtX*9 zPN%jDSpcwJwc^xBt29xjJq3LPMv0w!vB-`vL)o8o8^X)oBuvFE^ktmiO;AK^CZyWnqGPW8Y@z-ds&~Qa)z!7G0LILV z(t?6#+o5uMPzp3oQCQUrj`9aGx#T#+>%@io!d$uHExrNDK-VVCI$fkpmuZ%IwolW{ zA*bcxGzlruoP$#S#q={x`{xMy(=#Ykw?8%!1QZH0d8BK)#3L-;dA07I@2c#}+<3Bz zkWa#2(yuajTg&^?cgzr&swvU~AC-4}OGnee6QV}>SQ#O4?33QP8^vgZ<6*@fXR!XI zAX0)W^a>T}8Ih1Sz3ve65JhZMy%E}cqO6KqHuGp-X(*;EF0vU|Q?;q~HI!5A=!uU$ zI?`-SmojGAGqa&f)SET8%8st0Qk5!u9ay@5*qv{k)ax0j9klQ?E!ViAkc(p2*)F4t zN=^CnTth4tXml&?K@F8WQdFsRw(u)PG?OG`-Y{k?#zyE7w0+ODUKb~UHS{{p@9-aL znbB@LSP~by;w7^iQ)x#tQ>D%j4q-9zlBra+`u*{Oio~6IbIlt!KHae;F!7lGcLVzn zlIa7ln&uGasi#wE>JL|m+RJ>wz@q~})ODG}P$ZiDh^l$rA^L0?W!t)&&G#VGrC*c^ zK`E1krQ7%ZzoU*?uwcPyYYIG%%-Kd+DfpoZ&s#hE#TQ<1dWXLIuo~?s+)%cXq5O*9 zjI`t0$|j_ufIM3o^b9Lvv@#0git z1lLE;pPwE$xq5v&WSzK7M(TIDuK^caP@4Xofg>!Csk*SYcD$og_fq_4&zd(B6Uub6 z&p4x}Qz_yNLL!#g__8Y1{AT)oKG0>e_JtO4Gga*=MTlXr|5wJw=YX}x81DCWY(Vzw zlwm8hpA)>g;^z?*e zrZ!uf%JIwaYb=Yh3F63KZ=SFfQfQ~WsEkVsiZ&}F1RhU`$BtHz%Q1@I(@R}m;h%jf1Y7D80}?kj#e_(oIZIF+B1_8GiD@Kx`>zMK#$n}~-m`KdQVTd!>Az95(HRZ8 zHu2eo$q^{q_=FQK>TvAwe=o0H>YLG5Z8gfGuy~5(3ejuJ-I=%D_U4$$xfZArAvNMO zpGhhk0@i$_S=494ohJL#_fcJi>6KKPX;RCdp(doZg{08`R=z`gOb5Cr^pqW4nD96@ zDhgtHBcev%5#t-bOZMU{J^PB;u=Tx?z|W2~oW{pwGE9@&AI1TETC1@9ttHGDp8U#D zh(D`wVbnrz<39ezEGxfoV&BLeS%!hzDBJO2a#ij)G1>GrLl@n5*dd1<))T9T3Wyeq zX3__Z?X?d6G(@HQ^r`lZl;v0T7mBmZT9bXKTAkvzJ1H3&he~lMxgju;HH`SCgfw!i z3?@f`YK1f>8T?zEURC-ygiLy6s}2*I zR}wx|)Fnl9y!zF8k} z^wEoYpbXDK@{D-)yVxpmDAkSv?G02d_oADt+am+S+U3^y@F84G_oR3fr(~tDkG5Ry z)CJnpw1lExIsn&Irsh3(i4@g5`pLPGJ_a53#<5@QZhI6Xr{C4)?J4!! zefn=J^#gQZL|F2}jV8Z|Z;0~L2u_qn(k@0JO4k+L_HU{;6m2HWY?@$;jG9A^NX3>udIZn84l=HCA!)~w(r#%uS zvSmrXo!g3{F@SXOo!4y%X>fYwEw}=c7jr#mZ3@V13sKXS-!AIXWv%!ME|*v^d#~SW z)vkSy6hp7F9uyWXH5<;mmA%OGFwJzIISN29bWm5yTjSP zes{zrZwB(qW-@e^Xki^tvW&3WZrne1xDfwNEE_50B+P~=h0BV+zOb^;~$Wsj- zR{jn;hlXbQMP=wQYAa>xVvRHVIxq!ftCe4QTYr+d`C`#2LKRTN8k?d{7fxrs1D|1K zAq)76Hp*Q%PGj1U%R|z~)1ztYq=diZ8WW}lvllN~Sbp&N8Poao*PFB^BV-mBV#KD9 zCBK=EnM+GgvCjF>R9ripc>V+;UD;=bzt(X#JlT;+$@5%tGLVD(BdE>SdiY^xa=PLAo<`jDRnKARzRt)VeN}@#m=bvaMrCyi1<~!D^h*NYK4!7L$ z+P0yyElG=vohm{jQ|e1MmB=AJn37P&$ov##Qt7Kf^14oDCi)q0RXTo;9S3?vbs=W> zR91-0%GQG6t`e^CeZV!o+wgam+oMLBjy?a}b8R!Ikls-(hpU|R1(8|lN15@Vma*#X z9wwae05CzR>6P}lK$2zUmSYkRXH)|a80s?%6BW#kF+rW{m3G(*ObY++1w~@LwvzJT zT^u8+X5@=Hr1nU*(~QxkGL?PLp1=RfRk^!-?WIu9qQ2ijP$}p=?t~_s3(YAmX$8Ai z(s{ru6LF^YRTwy{>QnLt!h+pYOEuMUC%g!g>XkTfO|Dt7;q z2Fo}mGB}>eIMlfAI|Q+H_jhOC`B&#v|I~ldd_20ee$Z_zeH}%PjZ>8P$!OYgvF1rb z25wETQ(>ot67tXohf_9Evpp4Q;z1)np z_UtMhY+3@h{RqFP;O(OwKd+zOyh+#ppjt9l0JEfhqI``bkunO#Ys4nbeNV>(_2*K1 zTq~(U;N}qN4jw*Oc~kf23Sw-vzkZWBJbx;!bZkjBSNayd&mjLRGD}`GA=vK58;=6U zYiwC9o#F+vOq0B^QnMq-ovGjWzie8!U})G^m9r#y77J8z_?Ca;x$f331u2ZPSzWVG z?QSQ+n`~qQkX`KZa{wASD(VUyC)+TRkj!kdH`1zz5o75usw#`XAd$C zSmowLq$-K$w14SWXm~{zk#l3dmA?nlcs5Nfg44H-IBmt#<$v3$6bWH3I7Ep>69Y7b zl0)IdDJHTzH_ZjjDq4Sv5`l4VR$5ZZ^@EU5eredF}PVZ5evk{E` z2K~UfUy)dh#zJ#D}j_Uy9er! z5aN-7p=3jAJ;=S4E1xl+j`|ML~MRPr;jJD$0Mf;7y0~kG%arNK7zq3bmxXdL9 z$na%6=F9jlxNrN2vhZ{YIxYS5?c?2uby9;57*NRT8DLpdN0OJ5eY-=@<_>n2GHH>z_5>GsHh z?B23mb>LK~{X~Wl$schha~>i*P#ujt{N^P^vn6i*^@)>yTjm0t_Gmt_ek$nolfUEq z2vxSDE<}u`8LH?47}F@Ku-eIuBN(ERW&%GPgm3B#bdT;jACzwdI#B+!Q8#inP0dL55V4Jy4{;0I8Ny3n^3qF> z=vIfm)%SF|B2q8DeL4_@%a__qSE!K4P2j|GX%sMs6Kd_F=;lPpEaj!g2QH!)BX^Y} z-WQMY&8^zB8A@Vf2VIz~A#cUmtHH`9Bd7O;q7(69&j2`|uWx02P=*o&mA{wMlP>8BGSX_FE z_AZisUBR^8{daFjlNFO*%f0fzdS(-f&6^I?x^KQ|*!fIqT$T!ZgC&qctD`0lDt>G9 zEZ1Jkuj&4sd+#GXqyTUF9~1f&n?3l@L*1{v_8wQ!&EJgYD;ztMem1STY17vB+w<1} z&Q|P9Ub!(lxTUr%@$vzme*5i-5^roN&Yt&H+BrkZS9@eNL?4v`s;>CGYn_zLIBvNd zHJtfQ*^Bl$E1P@wo_1=b->udIc)g6w1gu_6*)wxoj;O$a1mZ#2 zNWDzeAl*Y1uvpcE%ydtLnQRn2mH0+TRT&GH{&it6B&T7QRC($ABNBYQo!qOG)f81{ zkN*+cr`3A2_lm~T?i2G6e=M!y@M>ICwVHbCODnmdpdU^;))0froJu+D4XB8?% z9EY$s2TdczRtLn^R`r`P9MMtGj9^{cn$aKM{#UPf%A=_RG!W+usowms!}d`Qs1NFw zznefhcTU4$hPjhCXsq}#r|16ut{Uk@O?}%8pEYZsn*=>(%^R_MvDZGC7Xe^_Mr4sO z)RjGQsPy%+R1rhtx-g`>VXNTE(5&kF*IeII-B(K_^$fcvmlz zP9qM!&HPSf#K)#w{Dmp<{0s2YMHo?aC)7rSu@2|!oe!&uNjg^bZ6>eut`}ev#nXK0 z$@NPs7b2iS+34JR>FGnL5dZLGT^f53vh#BN=FM${9Ri#QC*S!<{4+57ROs(fq}8;O z2D%7Vgddu+u+1)Rcmaf1k1QyH7QRHp9}up4T} zpa_MXEpi$dnzS(&n|S=qg&4spg?{02`1t`wp{b6FEeu@KzXR?}upLbT8At|r2Z%eF zIpiIhddo}P_zO6j)4cZ588RnVOz+K?^jf@-?E5Y3-aT6xbRd1ldAIbFVI;iEQK1yt z`}r*Ya~t*$#qK`raKaZj3n{+cE?$cd`wQ7qpZ>s@ceV9T)2Tb?p!9<7x@%6&o{H3T zp+(X*292ZSSu=gFe*OBThwPTW_wKul2P!~p6DCf~J~03f)b=UUF$p2Phg&3<6kAeL zPsK=IL6cExiLx7)cAcPT#6s<=YH;}B)x;(wS;+{U^G9j%2(`0oyHX>X!O#z?iE&^? z+TBf?uG66e3%CEh`*yc&m~0KIN>b_7$Pl^WLRv%fz!+G~=)+dbgaYd~YE)7%XW|75KHjtYr+&p6zR0{6xV4&NR&vXpXsn`;_07x-#5%08mRHdU%ww=db4lezD#(QE2$#+;U{GC z3cjLO{#F=>e}#-LsNFQl#zIV%yiKWPA}WU2f1r1ZM6<3LE;Pp(MuoKSo;kB-b-AOl zVsSV>u4Cqv|D;u$S$%lz1Tm~#d*JHKA;wb+?&SZQNj5l*R3+^qEh0%@pwcg2%5-u3 zDg90c$W^iWrHya<7VNH1Rz$FuwF^Q>K00*l2xX8NZ;1YELDP{g9M5@NriylK%`c;U zbHmMvG(2QFpqD;AMtb;yu1k)e{6xzOSkvLmB9uVuirRhH@UMH|rz58T$z}KJ!DQu% z{nO#bmcmjES64uDg<1gm>rRlRm}d-k%aan4&LP!Igx7C9>ePRykF8A1${ICRy=9xB zX%+0AzrNmMHC6_T1-R5aZfU}+>hp3J%lqk#_7v>=DZlHizLz95NRt`&PT$7bL2VU( zVDJk~$ZYW-I{9-YSfSzhBa0z(YoTS8r45(8>=_rk^$27RDvzz`Ts;_n*D2P5TPw!} zX}rH(l>n~oMZGegyqdm0xTBQ^bYbt%EXJ$kglD}{U4WJRHC9s={o)+ke z>#r9SGW9!P-Qfox9Hq7{jl*`tb7RnE5?IE_G`{X3Mu*kgct(ImQ|0iUnMDyy6VL?Y zK7K(N*Q%wygx8khV9 zKFOB^T}>leP_`gJ9hD3v$Q3;Z-IQyUs#kBVODymy!^ermGf0ahMUA_XlETxPG6*K! zoS{!V@kHC1=XdJlXv|AXgJGxh7lkK<%Rf%Qlyja=m^Bq!;+5fGVF7{BLdR6Gk+BGo zc8S26Jgn7;+Ivj@?;|1;+{;MC!0DvhidyK+1#fnnmpw8H0pC%u+xllEABaj?JOA z9uV9{rR4?uZzOUk^2L{VPn8j(QhAcQ&wNCs#nk+*XSVLcdq?7HQ6)=_d_e?aaR`3E zUdIUh$|jUKJ6zrBvG2a9VgQNe`@8&OT9cVd5oxPq1Ec*G?qc?4HceWO)1`{RN{;@@ z360(NJo+-FOJ~BlaQ7=3W4bUceMMy^tT*hXX$WxEKLkibpYm_|zM3T+r#Y=+&jM`uVZd@6p5ZSUc?{OF6Mm+W@3Olv{x zrevJ|LUkK?Jg7|TxdRb5k|!xMa??bN3`IB$G2oR>1B|dgjRYV$E&Bk87SsWeIAGO!v*uW?v| zPyz>h`TF$-h-QLV92K?tL{FBRnN2{@3;_zlUjJ+EHp;(j`Xa4ywVP*C+opCxLBu<3 z?>%;qoBK`MqTsyk_{ONlz;oJ+dZnKR3Vng7MBs_UTRDRRLs`s&0x+|NVT<3nE8Art z849eZe?_V2RopyH`i5RFyq82JQAa!GpaXjQrfW1F6R(A?P^k_ZyYu zTi&?aeiZ0au3KeJM?BSmGT^zd=S=*NjUPXJ_G&6pv0A^d)ib?<7_YuMJs%2|VTu9? zB2ZmXkkfz?$Xp@IL;N1iV@Iro>+%-(Wqlj zI`PCP@-zy}on}9FTDdwGt(Jd<@|3&fw>t2dbUzo7?(J&2-z)!$eVe7*dR=PT-$cj} zvR}Z8C!4-{jBOz_T|ZfEpx1mZ;!Zy9Rt^G$>dMS3dnus`I9YG@QKYVh^i;rg4?3uA z#mcnQ{}i%U{g$Z9x1#q_KVR^BdHg~tF1v#b@Z!Yg^A6BZJ*Q*Gxk4OX;VDzMPDNxj z>5F#mTs>=5EZnB@6;L8F!EUCNgG|owOVfvAp)FZH%?(~*>SfWCg&EAQFKP80quNgP z8v^ZDUwwr<`WcOFhIF1_8xK3@xD9c;30yo{6ul>%R9o%s-oTy}_pHRdjBNi!q}7~w zBUe%KrNUC+dqLlYWGVt$d>j?15&9{xG{W}Qhl)HN-vl;C0B`R6 z-b`(&rwj-*eE0F%r)<=uT)*1|s>#nhQ<~&ZPFW-FWun9Co&B>TgzO}4a_X^Y zM)9q&&eWc+w{f*`(vSD({!D1zXJ8~?JT!#dAv>Du^PozanuQf{I`SECLY|yDb;Q1# z*xwk8=x*jM#W38GK0Fabge0D+{EXsFMt9)n+LnSP+y;(hVFMXS+m=^fafL#)z>Ns~ z{qNMty4$xjUrS!`IG)Maj8Agb_+~xJikzBbCABD0-6_S?q&-woxXhuMho<{hFVS{C z1sv>MtJ&cA0(f0+V{2GI4omA;WLKkF6s!OpihrfaO;|>&xDb!J-XFUJXuH@OLSt#U z350b&FsKPVVW1!%$%b%xEi}o-C1z726=YGHosdyj(sv(|O z;}Is!C=V_hxOGM0>n!On{Xl1Dx;55VD_;`NIKnMJ;iXk8+C)hB_~T#iDLRj@&q%!w zxDJiA?dyJfqF~?@Izp(x;AaTK#3_O}EABCuRgaxJ`pq?Y@P{AXi^qn}!I=DZ1%@Et z^3|xlMoZ#IiUxHjeaZn;*%=!4d}W}sy!}?se6PfDn+Ia}=*SQekV>dEG_C2WN&UIRV5ymjMOUcO#zo@Pdzeh< zzn9F$F>~~>%?`=LNc4plI*c0Qg<=cq``z+rtdjJRt(MpTT*T1(ixDTB^L6blAC}*z z_mTx?swKz|wvj+&U6PWSlDM(@I5l$k5toiEIS6-QM3a~bw#R8XdzVs?KLQVA2E#r7ZGC~B*b!RhuBKJJ45}R=R z%_B4l=iIe>1d!c)|K=y05LKA(7*&{q7XnA;Z49L>Hj13Br-CjTSKTL$Nn;*(pvS)h zyT!$1{YJybRe<7H^nzsuA55n~ou1DAGzL-jx6 z*5qI7wnY3d??id1UYs)Xs}>v3E75s70)>}dHctUCcvog2eU_uRTY{yn(IqkG$5Z>2 zu`CDd20y>sCL$xG<=(eRqx*37jbafAkkwXE4Jhr&V^ro{iq;WK7Z6;!wW*mrjfmc* zpIj1En~A)$SWV%oM5-JR_b9f#NKL0`1)&VWC4{SH_=$J^`G9)_@)VTp$)8Eo{fOp5 zGhz#0AWt|QBaP%VP$!rEY0bG6Y9HU}#7EUgqC$i<#E$8!87Mi+*q90BN;PKUAPYIg zk9o_OLg>FAzdS*@?VwqLh*QT|P}#u+bC%QNy?%W)v9j`FP{8 zLS3`Z`7d5L#4NPO)*W8YWF^KtvkinA&)UoaI)o+F9#M5I6sY6KQD->hHqFA;*xOSm zH8<0w>W1nDsa%Vm|CZ34uBU#2lu&r(m61fG(sF7gz&880J^qE6wTEpHe$Qo^LKv#N z+(0RqC*tg8j9#=;8O*bBgfK=ymZk+gL^Rm$OH8i1&bcEFrNvv$Ijy}$-Xi}x3c`qt z9iYNXZtz^!mDea+=KyNy1VQ-f*&?V<0t`h&pP9wiUw{3;-8Z+5C#n0BHEEe{(NA_R zd8MVoT)1da9|QvWJ_B&5Ii@rd@uupeA%;jaK6Gbe+2IcI4nFXhW5$urXToWr#2(5Q z$Jom5*CZoHHN7S?iT!VlYY2`i!C$SUQl7G8ydwy*#7{{>*z+o-aj~w{mQz1nyl~;L ziL1r&>HHzb3^Tj)i@kulScAOfY5RY`rIr4psd2dcJmo>mT_~6k8~2YLTW{>wVo3|z`u|#hFPFNAkawlpv=>)tF(G|Vbifva)(#|B zh=a%fS$orxpiPwApha1IY>I>I=*#6&etA1F|29xX*7}|! z7%i(ga}quc-7I2Z*D!b0s;d1}2^RLX0@oe1NFBOjZIcgh_A-`M;oyI23R0= zH&S(&;39Z|Ea3(qzWCw`Dfy``3n)-BZ-s!sFtA!0DVG9+xW!5bK13ELuTmhHpBkq) z%)H@M?F|^_MdC0G=Cx|Sbk7st&Hnnf-e2#z~VR6 z!ROR_@a+pf?)cszLvATEzkhV+9jEN+zyJ0-zWV*nOYU8A zYu8GXva|$`d(euHeRpRwlceBWw)NGRZ>*6lzyn_Ib*BHSqpWTA&xY6q>=s9Px#>Z= z%V4k}$)j%lxkscCf_M_1XIKA}Qyxe8>PvUXu+Qkx8SaUV5K1tPE-P1Vkb`7CrEc-L zaN!l#TodAD%8XAQtIeThi78#jOGGweqs|{EYym|Y&<6i&1v!aS?r3|V2}=^6U{Kss zjIBOSP__?jn+zfYlS9g^@W@>lR9H*=5>_qlyKoGmp}WTL8@K)T-1zmc++PD2iY2-- zJbQO&0!S01*n%jjpLnN~nJYQAvtw51(K*i~YM)wHoOK-rCM^~Mf++8#2(#lO0UFJP zd4gR;5sR1Y_-&$Wrcz1uP8%4rIf_hG#|A$&z8uo@k)S3*HzuN*r#WJ@dXz;E+hoJ! z0KU!)szDkIL^ML~Yl?o?EVMl}cCqpZxzltZ`~j(f>%y4|cv&tr6(%5SZ6rZOOU@g* zEcQ7VmBE81TT<3(t@)yY@7JnoCpN1;iC^N{W2@Kmoy>Yd^_ zj2U{Bu7B7Ik^paa6nZmAI?yU}-#k=L<*Bb-@gos%ZM(F4n>r z9+>~1>`cr8VqA$MvcJ_G;uLV%MbAx6Xe%^CQmJeY0<)Va^O4T1*P6A8Z}9N~8`JZ2 zZnGs?NE4c>jQ_ygP#?W6pErF7V0Qx@Yn-cv9xpJorN6lmPLy)m{9314)v7ca)tW@D z_zTh!kY_?vUzbp-9dT7GT>!EMrcs5zNjf9GutO1}55sfOPjjS@E<}5`VZMZE!$yr~ zx2VO4N+Z>GrvbNgBr^B}vp3fm#uSIG^B@gM)}MQtuC`@q)uPt7*-KfE-l<9E8-YMUSgaD_H-#vJH?QMg-@j?a4H%V4-y(t#t~I8pr0({S#6NLO z8_}uE%|GBA4^mhGwy^@E5HGXWC-El&<8pUEM!3AX0!NLN@RA_pt+1V&f#SF3Gt)z1 zU36gLFKdc31!qvOpy1c`K!XfCIX%o&xw{Ar)+OT=^P^s9vz<2B? z_^V+v2O|MZIrEdQzdP7*coZ^x{YDp-G69@25mywSo|j+#Y0tcKH*ebXv&)xVv>0Q| zRK-(%36wtO7~S+!4QyWVM5d2asSz?o#hbAt!AfvVutE8hsdt$fm}y`0zTgJA9CnFH z1^KD#!!=}x$N0=GC&OSksVbl*?IkI1F$+L87T8wQyBsR22nxuxn5P69K5A6e3p@HY zS`^t`4~QUZsqO|ldwtuze%jkK4Y6g01fwn$WZ5eVmpS~I5Ts(34@)%8hT$x`)+Qfu zd{6pBuRS*(zaq~SG=EmE)}|yqY&EkXVnz#-Y9+OWw;(&}k1gH?EBmH{@LgNFzkb&5 zK2y9~b$WAH5nKIx0)?BMaOM7y=qeU9R;Cz(8d7wxlIs8T(7hJHgJ66JVp?siT-j?{ zkM}AI5}7y9N&VkGRv|Fma6Bg3^hS0Ws$-HC?pEg&c|_b=BC~@h8GR3J<~kCv zm+%g92?uoe$(awK_ukm}x?`TYPO`Go>|5p$?Bm zG{&!*RTwQ4NniXsqcr?t_N`SAf#`|kJMsnBEJNnlflOLv+?}LFxDl@%&3&}Lvv8E4 z4_%ohvODL*l9sr%<%-oOH@(*&vaG>>FXb$Is)4%V*z1POgVb_au1wB=2}=E-U?Iph4quuB6qAr&!vm`+vu2qGJ}~wNx8i7ssdFMFqPVKw`R6MYJ6ud( zZdLAx$KN7XNpiO*NH5ImAMwZreO;`48vzxf=b*j}H5Jk$g_s}dXRov)Iij@NZcB5n zUfr)>>N0^Zm>Bwn?a`RG8|1$hBOF#U4yUhqE~FOWog&@kj**Am93g%ImWX**t?GoQ zP2nM8J>^NqncW+~(>55p08O7A%2&2BUZzkh-18&TI%JK~E?P++E^Wa-r~Pom0%OPN zjyW{Z8R4d4_D$4bE$atPjR~>rOQhuOqm`2`kG0hPy-CL5>LnkyCD|dmdZ81vqBLC% zH~B{WSA5FMo(lyV&2Esy<8kD%EBHq1pZq_)MK^dqTNV~0Wr7Lx$}2> zIx^Yiq>>p?E+!d}nQ6f@x)l56mtV3cF9T`n6+1a_MI(J5duFqfSdxm0P>I;;=CdiA z{p8F`_Nn#YxN*I*X`oS~kKF$%j{Q6O&{bIU_-5#^dA z&F+LL<@OjQbK?Inf9K>jGOn|xsOaM-Wb-xZC&1B-(8efS^|rQ#gEkbRF(yO~b=DnC zKmYvmb0zLcEe4JE_C;|0lApooBoW8+O zyN?OG2#2SCwEvTbDKON^6pdKk3OMJ&3(=FY4>7k>tj0^c0gMu+JZIo2c&83Zywofu zTT2f_w}cj=LDwM9#^wf~n)N^Z6mM+f`1O`OgaaXaX>JR*gk~%xp5PH4W%}TSv7Ty` zga6j@Z+gb&g7r z)H);8?P02DI$Z1sYkkaR@?Sbynx@&n?$_WN1{XX>{49=?y?qLFC4Hf{vPM7&hpI_D z_d{_^Bfz+z7t<0>C+2F*77{=ivysvkzSCx2tdZdGF-oGb&tZ~RqCfDK_HcOw+2hC8#B*eMn_gJhOc?gQi4)_%>~~~R z%HM!T5Kjv!8mys-M1u$6sdPX*e~JV-YZ}dvy1^zriwL(glR|EWf^GK3op1Ir#Oo^0 z1LCr*L-sYO69aCjA!(eBCImQO#49Pi5Oh_ENs^^PzVy-4QAw~^{)7ZDy)_%xnAibM zE@Vq53lp&3t(!9SXv=;nMxrTFpb?vfxibeC=?bD$&8fAVy^bNb1qb?;ihWloG^UHv z5N^D!6^Yr30+4zx7Gh*cpB$eKpLF3OXF5GCIzc3xNENsSiDJqke46CUKY0DCwxWYV zo5Bubx{Xeh8kMikSG!=RMhoe|6XGBTm+` z6595!T^n(>NUC|^@f5D|@hm`D5>0kipKG?C!R!vg%gAk2|OIH8IqnRYEr@^P9rMWR?Zj z@0QXBHqJ23fY!$xd+ZX@E0t+1R4Fe1H*J&CR=)Nj*W4x`DZNMT-&UPKkP;@9U;+Y+ zA|?GGxTW4j`C*Q57Fudwn+uGslkz0<(y(5LZ0(thc4m{>#V<05^w!tys>%6;a8kC9 zfn-#?{&Z@Z%*rFK(cu}=BH5j_B4YxUNzt}xaK&R9VASeclwSPUu@NPw+;D@FACz;` zr%gN6y`Z0oK6=1sbri|~O@W&r!Gj-}O;##?Llv5FJk8OpR6~SEWU4&yRc{oMHF<|z zPx3WVMQdIq9K^=C#h%#!+x8L%`XrH5e={s>Ir?4WNYe9YOt4>;5 z6QGU1u22}7)Dgv=M$YR4Jp26fRjN$`2JgkQMFZfK;>2^vnv7ybP8=nrNIuB1SIOSic zU-R~fY|`@(BZagkbs9h!X(*`CV!gnp(^bwA0XI7#P3Vi?l2KUpE0stVwfiJco%n|V z*gi#6f{{Jsz2khNJ|r;^{YGrt=98-~@13-m-eo+B!>H{+&-5c-im~1o_Uzzdrwc_+ zbiC+PJHWKb(%~AKGL&~ea`=29RYOg=ebFm-W{H`k5RE!rIBYZnT92sohW-3`%y@L- z>758p1t0AAd-q>-Lm3_rXKWj(rJDu~oHy(pt_4&YEB0K|pQ1-6vPNh(_8ei$F)t-{ zAEs*Cf0enK!Wusy?}$Z|Z_P7cFB0im=NGAwz0dBZs0hGTeD>KP=Zpr`p1|aTKxLl$ zILOkZ;geIm30(cbtxwAqJyYa*G~KSh{)i_JP%0MtMP81Tyz%>@PGqY|=bSb1_*SlA zs8_0y4B#HvP!srGqFoQHCx9{V#*+jNP?zsvhCK$>{-2AQ#_J}LDW!Bk>BO1XGEAdA zPy@BaVx9v~1fe{0&8uG<54|(ZKXVoezG0o7=V%Fo#P0%W1^x`iMP(U}`-b|-s;exc zz$uit$sV$M;BsdAIaa!@RV33)Fv0pwv1W`TMiDsESJWH+y%{k-BF~DVlLo7D?b;vs z7f8o@darQiCrF}7vjd--0Npy#nd{8Dw4M;!orN7PG{+)iw0gNSSqyTgbjckKC13ma z$*0UkHkP@l`&)-ys|KBa_zq>D!G+;4EsWku52Vw>pS}2iXCH?nAR{1NU(jK=j0{e4 zn`ZZr(sC9_iQv(|eUj3q)40da)ytzMdGgg)AEY(LPwb7}tEJ43ZJU;Bw6LnZZ1lnE zVydtd*^i0dj7o-hdI47e0jf8(vS?|lkjAL8F@zv3{~7%J2D;KLjj$xc6DYGl72poO zz5$<1eD=NomRVBbGr$_Xk?Ar5^L5C18y<&gg<Y_&>)NW$!T+^cl~z_ zo}*Ww8p?)VRs(_;#k`Ssir}b-{z~$qHLQhc zc+f$mMI~u7OUSZ5 z{^y>QDDt6BtnSwNW14;b&2bW8Yy6e~3}}aNpmr1-e3$H!_mU;=K_U$Y#l12#W-8sK zGg9Rr1c7xDg91IvWDMFUf>${>EpEbq3nnys8Q`AXHPIZHQn`^(#uj*eOQlzWOYks?!C&m8G?$CF8?lzbw$eZ`qGOGo- zWwt;Ax0#k41eWP8r&M}@tG508^Lhx1Xtt@6MuR@zKRZ~Czo|5)2JIVC2oAf({DYW5 zgP8q-EJN0d(?EVUAH+N+BWnnC@?Wi)8Ezq30n{(=gp8_l(!MG>C?sxq(x2)a{=MhX zM<2c76a>I_Hz+&yW)#X{i}V491N3FjnrVZB-c49lSuZ}%SU$DpGew?OzE?4^szsNL z8@RBR50xEO)?44GxfhVVzsQKw z;bb_K@|JKH;XhP80yaf~qRxKEv2BWn zKK$*Ely{l70)f@1%zc*o0%4xWNwjWbH43~%5-SGAyu;B~Jw?##$Ry1>_n8$}o=Qs9 z-l>nF#;&7*_VT-#=^Y^CrjLVzb$#PWV&*H08hqSnKq*@!b3OjE>?U*^m|<9NUEsorWZ4S|3Kdo z-oZ-XEW|Itd)QHvehQ9Z72cUVxvrAKGy8>cn)=mti+c|oJyBcAH;s}OAQ8RQ(iQ@^ zN#(Glmy65^SHfww4u~Yk$Kd5(KbBn=(J*90U;4oMvcp;GdYA z@9H+WbJ;;@f=)S+P(iF`zMb2mQJiMj->j`1c;j`2g%J>to)E5@7(PqyLd-~AM9jBB z!-pYC-ve=~_p2YnfY9cEGG1$yiWU3+tM9T~^PIjd3|E9NA#VcJ%KW+6kuB=nhsIIY zXD;T{MK=uk_5W)DPAwt=WQt#mpkHY6<`%en(krh#Kz*=j`Q!IGKA2?hcBsFNPYlv@ zK~h{`3PU}tu7@+rgo|nt{67sjsk{_afAL6)UiGcW?2$%lr{qFQjppf&y$oL`bH|Lu zny&0b)aQ!h3kIW^@vtZ$00h5FrXa6+Py0v;KIBHxWTW!Pt2lQ}1vfUS@(p~ZySW+nlltB9%epQkb-lw6 zRLT{8`8th{PL1`B)wazLVR^i_mr})o%|2tM9$h$3myv8X%eyHzYBu`fiASRP{8g(S zpza{BUO>s1@S-`2p>8#Ib=toD+k!Rbt)kYTW?OXOMH(N%QxyBYF8ZLyy7@y0h|jus z{D$@GQzvW4oAJz?jrS#UYWh#7>DM0)RE%gsgH^l3y1kfsb-5KccqE-<)8C+?j2JPI z96A|7UAe3z~gv@zE3SL z@=GPLkf(`@d5W%JJdz=?Xq{4ku32-?gx|az(C-m2GTTT}6j6=%i0Oif$nf)_fByBu zbD!-fx0FsIwpv#F`YH&h_*n{DPw0hq;F|=0XE~VEHn(XVUI>o2BV2skOoDW@Tx|3H z?@h1`e%@&fPh7=V_>yLfT*sk&L%1k7jIX8VShp(G%*u8r>-I!9miz@%4xAevML4FCKNPd)ZM zLt7JiXC+OgOD??dkbxr*lX3Dx;AI%*&yQJIWcM5`R;=lI^_sf2Juw1#+F@%p#>3Ri zi3dfV-Kh00jp$vw{!n;V!F9!|QfC&h4@*I?7}_oBc?E&q$59qF6+N6A{Sum-NiU%$ znlxxE^2DcC%Kh1u7Xx-8)f2B|SbrjZx^|_U>J5WV`pkLEx;LRN@Ou;VYTc6QEQ$SZ z76juKrs@^@vc;T&!Q?g4Y#KrrM_W2FRI#-6C70B8d5{hZzq{7Vi1QgY@58&!eiwZd zpF76f*Q}W~KyA&e^>kIY7Z4@H8IK+_{ITus$lxa{VGQUVQ$ieP!6&zxT6G2#xQlp@D|1a$=8i zKE^)$@WF>)=+0!UgZ#rrxnY7jv0CQK=RQ7R;=~dkoh!olpS<5zw-&_V(?!7Y; z57nzTQ>ZyH^Tjhgs%#zC^@@mH^-3&w8e@IQw`ra0``zbqWvl@-NuzY|c{A?3wy$5S zu)DxGiT;OE9^S1|vD;0&2n!jUbZC`h3l&QtzY~j|doDyn(au@v1BHxQ98Eo!Iz>)* zg-Xx}Oh59DH7?@d%VdGk7r%X5H6|+ZZB~I5aQb>(qwzz$djw=)W})`m}7x800skdvla`ih_AJFGf$%|hgXJmD=eHZ zT(~-o;3V&=X(i9LyhyN&ToQv9xui3>=(}YWuPODC@3{G)2r(MN%iTX1a*-A)ubKmE zMR1XuN&BOLe5zV9`pLsDKB#g${Ve_f5(}+>EHU0c<0j?02=CGo!xosd`~Yc&iLQ0 zb7uv2E^oEs9&Q-V7&g`Fc8tM*FL&=5Pyu5SVVjELF&jm9y{{w*elm=LYl&4-`k75u ze%0Lt*(BJg4ojcAN}}?%GBxq9`dRAlSA65s;D^i~r4HR=>Rg_$2=6)GRS`u+tpN+Y)lM>joly(rQrTcI?!tfn`9_ z%;ft|#_h?}=@*BH()j3OC{c?$NY8OFG}fDAR(On?ZhGb2YdrrbhIOH`&I^?{<<0D$ zi*y5ce}km2TdVj4E3`8dhE`JQbXPi>B^`MiJhsP_U*;4<7Y@9b-%&%M$B0_ z;WmwOmC4}w$J?m4v5_&Kv}1L8;;KCG?{7D4x|`bEv8{GSB?Y6yV!zJ){V(E3AH9)a z)M}7X!TVJYR-^V;vl_+9ES|?XO;;?z!Jz zLbWMBo~G#zw6KorQv5ojWK?QluT_m_>yqMc1;1+T{?-o@U5Oa7SQ}~b2>KLlwx3l4 zAA$!dK%wqf!3qsXrFgc{J>mhj1An09`yP~kQE9*m>dI~=86H><<~JbOqNev8Qq#(e zvD9>cN4(blt$CdyM?wO@^6}1lMy6&6`$@4>v^PLviQI6o*4YjPNzVb?^!6QFAV}N>MgAg)h zL9@>{XEQT3oTu3UT?7?mE(;! z&MdMs>%?SsX5{b7U(qxP82C1Grfrq4UV+x&G=2?=63=ixQxAecANcSUpXkigTQu97 z_N0fp{n+4aIp+sZu(8nDCS%M>&Myd;v|-k}elo93iuIri+-K>ItOH+|`wfUVmTE9Q zGwv>l>x7!$vZc!+mfQj$m5cqebGua7zj?>Dt;usga53yoYmLML(A2YGCXp{x)m0Tf zI1c8r$2jfAwzKKHpkVMb^Z#Tj>ji)G;yWe=454HSLjVA`;uGwinWK2znYS|PG(bvs zEwhL&ah;Rzh}0-PL<*mE2mo4~EK$w}d*grT8cAb zB@>L^QUg_cB3=y$rrxI6z4*2^qiIdZ%H5PLU}lWmd^Ak{h^5=$`V5meM!)`g6P%j+ zs`SCfjRhIW^BW&NKs3R~mxWuslYw}ljGH|4oBTig;78DzfHM01XW}M|NE=1!;e9l-F3S%I7*_*<>dqH2=&+HM8t^dK03W@Hwxao z%Z}}Y@lBh0X+1yOtmlZ1WxvLT#iCvzp<6iksP#B^dhP>!5RfT^D$c*gzzI@bq3`TF z5-6j_OGXJ+sS>X4e*XqSTHfS`RE>*FYpzO%&Z)g7B z;_=hL5QtMyj;*#gUhCvLnmbvl)p#IkfsGkA4po10j8~_KL}5)x%fFUV6PqgA62tF!5R4TP{OayuhN<^8<~_8NGjd2grE|Jt=+!4)d@(x_FJNG)hh#HO5%Djz3H;Kk zdn-etqb^%;cT+S%_JDaXjt+_Zg{OAstN8)E5JOhqGBup|7mXpN9!82`$~WH(p*S-Q zQkR8+KV)9|;As=JXuJD=5T4zfXF)|kHK^37|J^{U=dJ|0TdhsLa>%yF#5irL;hnB$ ztW^4y<|mwhmO7y5_n*${Q=bx}`bpPdqsXlY8(**ac8#i4vzyMKLF(}M^LpXAb7?CI zA|jQ%lZx4NOy=mX8m&M|dl^2;8>Qrd1gczY;7*_UCSxuc@h?V2n zu{T|sZ`i8g^Gbg4mx6Y_L%YUgt)QY*-?eAk{^}PE)yl^Mp%-M>%I5;WP_(Bc5hsMd zeOp#?sB}G|w8e}Bn8@hmcSPY%PRGbRdrX{&4X!AQmD2K;P`p!{%l|2o*MUtoc%W|? z6GQwgjpv6bsDBA+yTiEAJJKw-BXT!m$kf3P;&k<{Rzr{KQ<+pq= z1`zu5fP7X}X!=J$fy>aqxMAy>rrB*Tn~Xo{_Sd#-=Pw#>((T25-?3vcTXUyx_}P8` znzv=^)+ReXAxF?tw-Wc{N@FHsn((x{a8clH-QicB(x4xit#~=BtyzTOXaTL%1rc1H zeCP3qr3RpNkd19j>Q+Yp+fx+gB;@L^_(Z8k@TQ#-uR^Si)!T*GxG15N(pheK{4HA# zTJg1%R@9hhxcweK(=!MewRC9})nw08W!ZsA_>E zA-ni$&Yg!ob1U_j>t50R1XR8_TV-~ng+*dDAY(Y;QGkiJl3bneWe{P$ctM$Pke`3Ax2gD{T2*rt>eEMj?kDi@&3k zmiPw13hP~0z1OfogE3T=d{V^Aw8(^uSzrVXuvoQI2v(&IqMcN*nFGro62C6Het!}L zy%xie51{z)xh;g_NJ>D-5Q7|d?o*N*_$LO|%^!x*8_=r4-h0P?6;RN?HD_1fNrd=? z%{9i&p@yU<1-gK!Yy2P@VE{;*$Sy*HU!-GC^>yJ6@mTh&Zb>ba6D{4iDP(;TB zq`{X+yEKDBYR_F_Z%&me3-VCTJhS={6QN$OFuxG^#kAxP%jU6_fg{16kp7(}>Nacu zFC{@f+4WBD_(T0C+~S1%vyV-~1Wd-*tM}%5N-+V+?Ac3Kbnku|tVreMFDAU`ZH9*; zbgg{VDpg)KM|rIepVDv6idXeg9&t3s+Q=mGW?*gq>lMbNVsXifZq>yToM!05vd%Q^ zZe{313XrHaS3X@qY1R{|Av&|*ZgS2~zC*-iz=0*aVGf+c%b8ZN9;k2b3ci(H*824t zKf2|ExL0H$sUpN*nWif*CmQ~{+@whwAf}jOt4ZU)w5Q5DkBja2#(`|Hb*j}enHQf4 zAy|x=iDyM^kbpBEQi*T6*IRwU@1B}@l_p*HqESm$#gwNN4flS8zK5CdF~)iq{cArp z#cmHF{=UxxZ*h_y!iXC0=&G&lUy5OC`*BVp_KIwKr2oHME$HTL6zFI&yXcV zUt1eHHJ`(}q@8%;g-;oDDanztj&3_p5yNH0@M1xrckkYlgbNhQbTmg+#EXWs(irCv zWwZ6b_~Qm)HbMpUle9a1`XBvHocN!M&)U6b=r0eRbpNNPwm#&Ed&U;b|8h+G2Re-y zRnV(JLHk1lmj8S4x_0Nhclb?DcdYePv#}31Xz^`Lgr$kq=^is4dKOe!g6XAAfI{rf2y%W#av z7<^m7;L=0)t~H-jB@+a~dX}9?@$S6#WOU1tdj?Fdx@Y3b7c@x_KBF`lbmKF>M#p>K zWC{V<@e#@@S?>d%+&E1Joa-I&(X)H~wCqXDD&n-Y%TFoLYwg?t#nykrj6xuY+vxqT z3$%fs$aqCgD;zv2MmqCYY6mt(OmSg`%+tvxK?v9tJnQI*|NV@VV2bsEaRI@{ z8TpkCPI+nCV~YEq77BK;?9F}5?v>d6Yo>cY{WM=p2qmAdeD0?o-ptLAfd8B9FqgsY zKYbtSP?BrHmeBi&q}JjE++&8jDV9NV8Pz1@>b7_ijab4f< z=ktD_=W!nAaUN&c|I-58>-P19O_XY*3Q>k?8>wK}Wly3XBt>OSUq?CmV6{{l>(NL| z`&uumSzW}{!5DuZGy%|I{o7x0M22lT9xk4@v58ON6V}+zp#w>FO8-jOi||5lv#et| zP)+r;37TY`nCKI--bn}FM7oznH2|KRY~J$a`=~_K#w?S15PBiJk<^7uoiQ{d;Ukq- z+2e=lAd;Dfe(~k9B^d7m7=d7Jl-x->HdD2~H4-u_uNbL0mPM%96kM#7+4iVVw{ z&D-yY|7zaFq|gA?C=F}@PyxAa^X8!_e=3D3qihd+7k8I-QyM=&O~H2sChOri?B0Ig zT!?H^M`Qp?c5LlX6i&rBFX&_g;3#vlIWYdaMMQPX3SlnN!i=on*%`8;i{n^O=c0e4 z)`V$q?ids1XZGw%cWiQg?x8)!-n>OuDzf)MUIf!g8@RGb?N8hKOTkF+jpEP*t?5U(A=1!!6KwwG#5cI9tszw6wI0bCcVn0-ZU}oQE_Ix zzpP4^!!dfctR$alT{!ydH*Zc8wfd>IzOtpPx%T@fOsIcJv51+R8p9$#g1#PnR*q2D z#NIX*J%AV3kba3DnUJ8-FygM!5Q@5X?y6PytLZ?%L+4)(;z%?vQG57`dJ*fKHm5ZM zLH0+xZdThYl_vLmepjeT}^$}u2-*pgWsC;{{T@ovFSs*!40_4!&oAcM60WA zT&F@OWGm>^Yq95xN~$#NR|)-oJEQ6PBZ67B>>d$1eqhcp`al(50blFfozc1T0qFB? zLOt{s5_{q3Lyo=YPWALx;zpPw;YPu6wtyMYoF^C8UVq!ewoHEd%7yu^$obC=8!e-J)W(i-wD1GK93mt_-MI{KgS;+*>=v z*QvEL)-Q*xAFUaaX#iF?AYjYY%W+|-1SkZ23aMVA#K*(;F{f}cab1Wqt%I=!!hA2T zp>g&hVkpjdtJ;F42+>$znA6}cqU?Cg?RtYfi z%@IXQ-t>j23g?gU3(R;L(M{*tps$&d9SlaLds1oJ@#ca}IO{8X3R=-NllJoT&J@pC zxlos0`dIfP+K)@|t{F2Q`AmWxPL2v77D3p64{j&cGqauMYbMF$K4MjPbF;!D%)Wvs z9x`S;##=_OW0?(ujz5JBrECer7mg!l%xFdg0$`fu&Dp*fvgfbjCE* z(tYs3<8p^+%pk2fj{H@XUWCTDC3m9vk*jeh**=G$AmpreVPlP)?Nc9>wmC)3^$wuc za>ZlMlw6^5430-mAtXlYxs_Q_m6$<$)u)e1jhZ^ltC)zW44q`)k#=K0lQ!|v@O4DQ zDF-*!Ems<(A_mm#!MKOGpxmql-do`X{_#2*u$SGhhX47l#%KNC?vx;he^^7DC0%_5 zkr|xWuyJGh#A@lxIB2ssj7X+q9|J&cBx|KhH>-3R2{pr7C`Wzqub*GwPY z{Wqv1o8q)VplFdeD9fpszhcGN9m~Us7N}$y-jr^alAa**m6Y*)k_l4m5|HY(q@s^z z;h~2Xia0Sb6B*Y}ylWRb@7O_75nK~6x zh=!7FEmk7gsKe?{Ha|3WtZwAPxCUuzEo;8bbg~Ao#{2MZzHpUOZm8uc)b=HdfR!UN*1+nzzGz5u6!XtlMAiP! za-Wzci^1eR_$qMs>h;eX-W)xG`;Y)LSj?FQXI{d!5*b z42B;<0B4NM@v4CtAiso>+C?<5siQq}1_iPkn2qZ=RAU(PU04JVn$hgp9t2sHr~WBM zzyH&g4}Q4ufM%O@S|DcisyEC3BP+iGAT>0KV8@*|DPkgMb8x)^>X<_J2^E(~1a)sF zwoc#u=b??W>?vcdpoa%25oDIc_x=fMREC zO6tgkAJH*r&}gkTi`n<}1JdWvb%m?uoWGw7lyMWIOs zF}m_#k_?*s7V*>_vwcC~Vj6)n=1XD};VQOlPeKOL#{1q_(990lr0Crg3z5DM9n+bp zQhIm_wTG@8zVCltd~q7@5X7Rk<^rD{g^{)Jev$Q^qlE^g>|wH;1JbQWk5&X<4s=(_ zCGTSu?H-7cn%&JZmzN%`=n=Jin3JE-*$mr-2Wq9_K~#O{XUL zTMBis)0S+mVooUXyC}{#?`|;w0NLR8Wxih=!W>1$L$Zt5OQ@E37Lhh{Z9G+*t~*7! zCgj0t8bX}VNV^OK%Q{Cf1eWT!*T6$owWje($;*OwiFtUYOT2YH`Rl~M=0T?9PFz%;4c^@ChYVVzB&ial!K zbyqJ*5sElToBO1`U&m}R$zN+TI!Gj*(3tQfv}l>xaWl~u{87&se9Jga5RsZS9VzBW zr<`(1V?~kks5IOo_zRd?y=F}tc`nm#Vtln)Z{M}+_o0#vYOBytANDdUPBEbYYM$Fr zlMB)+C|cm0v~PdUmbcyJkZsv$k1$G)2PcCW`pHBwomH)-b)1sg4I7^OK>=buK31fY z84ZRreJ14fi9Sau_m8&#Xx!qdC)Ts#t@I z4UEG?@CTrfjeG?e*Z%NxrDz6w=@F`1=R-!Ev1F|>zyHvejxmOLtV!(}r`=v%L|wn% zXzVCNL{K~I@jlZY*s7$%;al{xB>aNkVTZw!+Etn&V;_EasK-!j7+fZb)S3D7C!c)c z52v>cDV6%^4_5+x*AvO@0oc8g+hTcxY|UQ!Bf`FdcR|l1;OIVscmHECxOTM08EBahJSx z^L_GGOc?#&Ot23Kb2>B0t_&*dG2`c{7pW7UUKp;#GfsmM&rcfRay12d#d_kj%v;Ag z-ZepiY=YK9!|Xd&#LN!v(5bY--nQui&vPJvgqNyT;kh`(SzT(F8C?}51|!TMb*G-2 zBlN`=N(*8NiH}DiQ)FsP#1U#9mxrX2Z;YEqqA0tdg`-YDO&vby?go8+0u*;-F+nr_D*x^}5344{@e>g1`)va4JMyrP_N= zdGs_=cC=uAXSB^KlyBe<F9z2JxwnO_*TQtz|kx{f{`k<2$!i7VA%*w#siU5Z($7 z>OnHo`QH<+zB(d-qN1Cje8CgSkJ<iD7I_v7X%-oFf8)Vc*oVpjq@oXPuSR z@08alho$klLiOUt1CPrc3{G3&@9!=9Q z=E(SdQ7@n zL)q>qp+t?x=G^u;KVV-LFK21-lVz&N`z&=ZMw;J+&IsFG6VG<8P- z1VsvM$ep|XJgURO2|L$dH6`o0uqjiT`TAC}vriKCj^Lsz z#s)scbspW6^W0@&g(PRasemXo&4%d+`T-~+9nwE{{_qYRW0{I0C1T&q(HIQAb)%>j z)AM$`=KKWc!dm*;l|I3wYS~rt<@ryg#{mpRTR*HzHfl?Ot)9M#ZZWU%jQb%ex6p`dxc7XP zY(h-4eN;WL`K=#wU!@}a^7N}dJi7P+TR&)@Idct%j7^mpJE34|BA#AZEDnUvY`Yd$ zntIi9T=utMivkr82T^Nqj$XOO)yXPmeDUAW^vhMWA=6)bEoL!FBqzAA?0>}#tno#TJ3^eiY9UXP0c4y=p?pp1+C*zH2 zE#&~t{%Oid}8v`oKPh}|JO7C;XY3+RxFF3aicoln!9ysd!l^=hcBcNiL zN)2hk$Xc-qpAXS7&o~dGYKTeO*m90`pz}YA-@~}aU{z{kR8e7SOWIc|hx#?P?f&!U z(OuqnbJnb~Q$ED)Kyi7Fa%3uc5n{YQfLWFcRb7cG|tuBQI(tBn#esQcJ#GEW(Y`z zmLk{Q=)}?gq}#sXS#K@=HTVaDmMIizymQiOz}yZ+C1Bxd|E0;{)Q7#x)wGw*OIHL3 z5kZ7OsRE6L#S_$G@<70WzY6-Oau1^Vkc~UNcFq2Zh((qcfmB*3_b3weAh7v{*5(l} zDyqmXN@A9xdJ^{knR$Mk;5-JPvML~*o&i9avbEL%`r>I%J~_ne;#LzL(K#oQ8m^J( zJkRqigDsLJJCR!B4SPyqfQQc?R*2QYxeQObhtBh0B*ohg-U<>Vpl} zefM1oH6J(%PG5w1XkU`86-v)ccF-^3f1?{F-qSkhjt!Zz=i0Kfw=SEZ4U^d#a`%Re zL(F@qyTeG(IE$8kcuJ}c9rlUfRJ?p*_Uw#M(oYN!gtX%d08r6dRBq}xIJA$Mabsaj zokO*^3Bn2QqHW1DHaqWSr=l65*!j&#Yxai^B~xCF;3D`P>SMaVw0@6hS!TzJf>Tjd zyY5s14)Kzrs)tyX0eOTq$d-`vKO$Y2J_EOm=Yc0b0CPv+HK)t7M8g)T2 zCvk4$m{~X>F$)Df+#dQ*CYs}2rT4EpvR=JSX*1i8C!qiI&hEdmMv>6zX8R(75B2gR zt75A&;>)YMcAb3l5&cgrNy#yQKV;Y#T&%F}OfNuy@b;ME+sG4BpL}wGzZysKWDZC{ z1pW~K$gG_crbTo-q?sw$0C}>K8;)G-gh22M&E#OUG5zH3hAhs1WvG5k2p15eU{rcc ztQ>{SMPe4RIndG=USlJE5_~Jd4VVmtDblr|HFOsm(8qctE$B)8uQ)>LMP}`xxET!) zQe9}@&isw%Y8i#4USJz!Mf#zN7a4zpryBZ}0SVMd#+f?WkpTCzmqHTCoVrqD_i^3m+$$PufGP&0VFqzwe;S@59}!;DSo%>kNF`( zFbkX$ySTg=a4~_9VI$n0%3_)aE>2XeT)BnDry57vIW}CpCl~v=#8cK4ZJIA#ytsnx zC(--wd$K94IX5JiLWBZr_aZ(QL@pT_4I}^lYUzHsh`c0Chwh$m z?9DM*+D%r=r=e*^YY50z>xFL=B!2hTK8M-PLy%@l-c~Q2Z;zz&!*=^#tyA|Kg~O?S zh}zhaojEvUFDp_!8D_Y-7ae4nsS-dVR*>0OojOxF;IxVfA(R!}FJJe?$q=Ai5qm`> zL^R|KKR#hIBW4!e{PC49ZTSFiT(vY;-PPY39ZJ7zC_J~Qjy znm3O9o8omyM8ms`g}k&U)Pf_wNK?!`jAt{VD9Tu$H|!ju{4gtPVx~~Pb4&R*-6%PM zdPY-ye8_;&ki28>thrLKFS^8ZY|MXvAwyl+!u9DMLGA6aRvsb!Jvc{k9-h9k*NRKnnT z!<>Z(bTlE-j+R_8`$Qb3zzUTJAT4r;duJ;n7#`1NVKk#MU}4;P;`n;iRnK<%7w8b6 znIX{m?EnauZitFP&56gH)TwxgWxi*?EoLfJAsVW$1LK`^GAJ8uF4+Vg6+^P%&Ntms z#6`F3u8T(qmI36;s_IzQpkiQqLn^V9%JZd>(Uyyvy4Jas1ej1rBBOFj@I5 z;3o+qO~K0|Ia(_<^zxu~hF^pfoa&!vHT1uuP5V)22-uH)i3YMfL`@ zMC%}9vc?F4TJ`?>0|Andof&5n5JNK>+tA0)q?1znYu_(X-U?*FN;D@f84UW^7e5aw z4x3U*6}Ax&(>HrrMP-U$g~sJMWOAGZ({J8mkC16jrW(I5R9XDrVe=djz7Sa~mzBy= zMKL!I4Q8ZlDA^BG3@%R8N6#>|{!aX}fq|!H&(6Sx58C#uvwC1vWaJ->e&q0YX(l$O zfrpTcs^aJ_6_-BDMJ9$nylFYn=@mE`bi$4AI00JtVJA&F^ zT)a2S_!h_mG_Vo&7}Nr$P@?wuh}D^!$Iw?>UR-*Jw|w2YiD&MGCmQC)g23(y?$6)8 z5OPX5iVjqaT5tH_1&SLO zF`k@qejv6XPsUBYpKxU(&Ky42;dJ|pGLu1KjC!tEwm`wmH-Gfs1~GXMrP#e7YQ-f>sjNWMFk zLQ8djEncylwN2JzAp8!Ub0UnNeWQXcGp4g=Y(9j5Dwxg_kM2SeUazyMCzLIZsCz*l z88O#Datb1G+(?BlJs6f}21B6Gzz&Km7Ex!4a` zej>1(aZIV1*lo}yor&_$wp1OHe0M6TYTml9e}+u#0%kJ<0B78+P@_c5ou=)eN*_7l zEtKrIJE_ygNvYv}m{ct%n5K-u3*MvVM>Ci|^=;ENX!y~-Wy?xu&6>{Fo5x`0mfVe79c9A2GyeZ7G2VI3Sw4HM%)T^^&R^kM%R-LO(&K+n_ariR59k%fCQl&)*u{n)uP0>642z9X-K@LfeCbp$#O72m!Z zjeEnF{fqu1V7IEj)=d-wE18Zlv*CD(eDTW?yTlEypd;Nrz^HJ(CU*R3(5V&v+6qdV zI+#9V#$0CFDT+63s?%XRP`JR)Q{ep!KP$Q7y2MGjy9t4krAtrom;ie{9O-`K9m`}v zSIyS;0mzd~wfc*)Kpk_60`Vle8t&_{meNGPRH1_7d(7q|t{76~eWfQFLdLdsVKX7u z_!4uRslvyBcG6Ge9GL@IIB3G|(-n!;zPJTSg_2P;o8bzj!Ouv~bI-c^`s=f7 zH0O>sTosVd3%Pg$nJ@LkRGV_t5c%AwTfG~b;y}V=I>y=Hi^q|;ILMWR!Zem{Au&K# zL>g&2##zf`6;XPLQ{V7H(Q-60`^x|R^=jHNRP_?_xGZ{5i=g#0kRky@kq%5r%NZ}l z4SBkoTwZeThehETq?3r}oJ0UQs6%*SoXf;*9ab^DGIUt^TSht{l3PkAqHs-UV;fb{ zJTm)%0X6Fu8G~NCw;LKZpuF}QVi%N#32Cc0x8?WWxFGq&;x@5j5rn0L0);x6UDaxg z7*gNQHyeNAwFh`tQA3#da8X3K&FXZwc6htXrZubP!jzw=5RwH*vo9+rY!@%U z1Hb$3yWm6NFY9IHQ$xH*@dxm$3}41z9X!gVL(inPzUAkqioKWji18m-J}HcM}V z2@tTNVI-r3W^*hHePjs623A42lp*5HWVK34!yy!d-xh%ptV=r(VGh9N21YgM4f@pO zTU;@1w0WfwnfakA@B%Zhu4qwKlgyzJSB80TNkF zaXavw-Rgym?SW(AqP@6u;o{V&?G6Ft{DSPGksrez8b_|{-7%gv+Vp=8kTR)>$}qE@ zjeXz<|unPTfl^~CR*pV?r3RXQfbZK_e^0-_wVkGfRl zGDi2@%XR`L&zxBu znD7V|w6M5wW7q&dG{ROICjJ&_RbcPRk|05#Lq?6-`?(8WC}L7A^_yUx+3%Z5;)^gd z(nllg)a86<`k?-Y_iS?ZIQKfP3Vw|~+Hjo)y!YG{E25Kjd`@90rGd3Aab?n-w)gHJs5R2nfPp4HF& z_M30Iin9a}^PfIZ8%o0yuRB<9(^g9L>XY{+kw#=erY(V8T96D2MHA=Cg^>@#=^-s% zvShp2h4kEDikm?VbzEvd3I}le78ZPZCY1;5<4tD8AwC)8{H?RPmHqwymT$o zNwtP!`v6Q?H_u?hot|YE+Q8Z+`#F;V@*YqEdZ+14yYDTT6NO~`t#(ajKs|;byMDn4 zsNynYDWy_EW`_}U<$uIaP?lC3W_l!Oe{aUp$*j z-oE|c{eC~fC4`*mPYPB&(Kh4_!wU=8Xoka+06@~1^g=Og*q#!@2oYBOtV!qEIz_FT z+PpEJGOAQlL0dk3wXRgG6uE)rJ`wFL3Vqn+aPq}T!!=OyyGfn(M{Cxv|DL!*T9fEN_~%}=yug!3PHW3j5Zr+t3SW9+~eW|G$0>iVX3bHrv(ThzcSSILxx@A z1?v8_R$T)tRVyz-{Ocp8E?T>GZSCrxJaaUZak`{arT-VpuZ%%nsZFL8t2hZ=*MB~v z+n&1c;qpYB3?!y8fn-tsInLdPiuJBT_gOFwyvxE84;)m zuGzR4LdX(eUDmGv1!YHazCW-l1VzBgy z$1M$0N>Y{q7WEf1y~5B$iiyXP zHcj;=H`ddUZw6725onH-T+~D%hGKHx-&Ht9_mxQwKSg~!aA)>j`PgJWZP)ekxkh`c zf@REah}yE7+`|ZL0@YoFtmvVbsr#&E*iX@%3Bj=;Le_*#wjQmf%0R-x)3cCD5eO1) zZ+`u?*M5aZh=)CL``qg(_8N-7UyD}F```Zk=O@uDMT#z(rJlzE^+5riTlG_T&opiq zp+a{on?AjZG56gE-wbp?WcKL3=ih1X3dm@A^iq-uMG}4Py>+XYVAl zF@V9Bsi?&&qH4)RljxDO*-;LKkU1I(*NVe;MfGa8kurIaKTvA#8>BCHVjcOGCXGx8 zm!!u>7&F>;j!TA9#8D)B7&Ca~X2a~Euw5ED(m|qur(1PfVMs>}S&lGKkI>CHlQ@kI zTA8Nqr-)EG$nkp-5cY@sbO|tQt2ibLa>aZ1=~HCElv_%eHWG$Y|6)gTNPs^AG#$=V zf;!hCJ_XvQ-A|wV^NTe;`|aAX?S6UsfkqE5{;}fl_KFiRg z@!UA|WMW4oj3u%lA%7Yb8RX0tbm=kx%L*L=8gVuJTR|}Th`M#lD{h9`f(P~Sysf1)>_i+rpz|;?R$^opPT$BjiS{)k z+EU3NKoTf7EbIpppvt4O4j=6J{nJU`ao4X4NR45EDDy)zdcN?~hB3ZTJs*<5q#3Rg zz=(S6!V9a3u7^6wJbjFw#AZ2Fv={aZHzTaTRAac9*)%3~!#BROdspQ)pL)&jn}`Yg zHaq&wH{WDB!<+K+MUFkqVC%(n_@K>BU32&HBv4k6(BL}&IT(SICaDHmc3ozS71YGS zrUYBQ4}zT@p|DdM4UfVKO|G0MRQo80sPm!eW#Y&JN zw_fanLl4?wxZnawRB4|-2Ir)AtA?+l_OW9Zw5f1sa7j;Q~w`(JffAq%1xU z%Mh0rg-kj>)rV#gG9`j+*WK6L@Z@9qC(z%5`q!&mJo2wTbi!$KP77XEHjH>LKNG`RK8VM0tuGMo zF(l0tSU8jGZxiUG(FNvekmn6={iPR`Z*c|*Q-OH2T`Wk#*FXJqQ)HuHr583|UzGt> zIlnM|5*pu>I%7^vC8wnQO%{tg8rETgdk6;EuRdM*_Z>TieK}UUa*xt`P2xNV+ZrSZ5RujerP#B0;;oJNyVtpQ00)ef zW{9d_Bkf607=|%kC&DEN_*4*W)kZW$$p^Y+Bt)|F-g-Ct9DK@Ru+KP0wHueqfU%*F zypYeeOMU*#5(G%Sa<2|#V2F>4do}vnZMms)=k2P=I^76WsI9*?-#no3ow{lnMk|oPb zx`;Bzne>(u#}O6TIO_OSJ$*1TS8!?VTp+PnU_+6U(d$wqhlBdhF2nCNfADb)8m$*Q zQV&iTL4raHe#N0%uAb0*Jb$4wk8al0jDAxciqO#aPKXfsHi-J}qc~Nh)6;6rak2w$ z5ZSm$ZF7=+ZEn*BkG*@dUQLJopBA8d_vB=q1`}Eviv8QrH|XNmkOq?p=Rn zrck`h&Fl2v5OH(5Wm*KRNmHFCfL{$$tap2&BT$=#auBu=gqcVKtYh%31O~2Otm$TU zp5j0}b-0a^gNi=J%z-Fju{@6jy0y-#pTEYl_oFiEc+XO8FraVfnD*Lt$2n7eL}s$0 zXhaC4+e)RB7{(?`#o<;r;K%sqpMPRKs??pTJ74SAW6uU@!NGN&4?LU=5xMgk6j?qb z%4R#euq~d&>^1ip9?bF#7`zK)HBpDq^x094kDmiPFXMpUw^SnyPavAmiC zzgyQqBDc#>YKW2HW25#0U#DXp@FGQA@-zEbc^F3)0% zs_Z3Hc*B#_;X3Q1j+t;}k=yp^XP;4|Wb`fOk506#5HT&_8Sf#N)G)y!Uy#P{3eQQt zzxadMC-0pNSBIi4pwdh(MXyE}>63-|0s}P$=HR>|sZUq4(M zghom!-$jLayA6w2`D_DWm|vz}$_Xq!5*`?cf2HF0JQImRD4lHpiVv1)sddMy%rck- zLI#?Wqw7Xj&E)#)hLV~BDVqG1PTsVc z8I}Kczvr&L>Z+EvHj#)8VM})TDCjXHh<=TVV+zYqs3tf%=hFDE0{{qNEeAkZZl6Ti zwoC^zcLV)y|8d)AuaCyEjF>SSU6m%JsAuXS9=EL8qM36CN>ur8#0YXVMq%;9ry}D61^0Y$<*p{o z6ULN2m4T9O7EZC%NKx17KN;ALu4%EIUyZ} zAHZX`^{69itv3R%E!r(JjUTKinxb9eHHi1;TGkT}lTMV&h4qVHa%1Y_geI!4Qx*yF zhaG$DzT%T}7V8b+b;E$;4552h^Xp&fZ>Q`fa4UQ6XirTCYZBieZ!E-#T?9_fpy7l8#GVvZz>Y=TxTr+@B%l(KmPa1sgs=3?Y zJ*U0()+O6sx9*$Xtu(!XX|2I3uGOD^-X1DGvR*yih>~&}&==q+H4!n6tQuSARCTEdSe_%cO+gk__~0E$IWx5o(sij_o& zUNLlzp&5`m4PH9(o3WPCo?{Ez&3Aj#K9j~V8p9BMSjt&k(_qUepS6MGUm_X^IHJtm zc1Ad}o^_>`bC;KWQHzCKwPMRKK&q+XM=xmc$GJP z>2T|H1k74M*~y(MLfDgtwpbEAXVDRd9Yz5b@-`!B4laB8`%({*fJ$F^rQDNOs_>d#cH`X_ zIMIf9s{Ha+ho2^R91x^@wMy^8bjR)$2mb*)+aMR60Hz@{5Vs7NRVe7h90Yd)NbWDA z!=1;>IZo(PP?Yskg5ab4Ftb17wb!nY**=H7LgSB+JbkcMt!n05ujtP z-S-0hipGqQpw9S`=@_?E6g#xJ@*pugpNPifvxXf$MSbaB#hYov`fL7KNyn_CW3T$A z((E3{cAO3SuDtTRGm)tmUG%U(RQ&PAX4Saw05(%?ya%R$h`8%{*%K8+WhO1r+bcZo zG@fDYuLjkKC42f78ftqQ6VIhy*P?anaAq-~q1|!F)00q#UIf3^7V6Qz zS+TkBf>!%t6jJsEVR7Q=uflc%G7Ri~R=q6FIu#FQ3sDc2PWk9BMSH5PHvgT87L7~! zVeP~$6ZqA=*N6bL`rJ$1usAa~l%n5!N7}O~zea=h;hK~CAHMXrZJ!K&=bd++K6r0h z5So`}*M6%oBW}vZ5^RvaX9U$!=0|n@XfaZC%M(4s=|QUxLS_)d*gO7smm3oFU8}y5 zQ5Hch9%0P9fEG-31N~Ope!Ks8cGKt6s?tBetR>FNG%-4Ixgw(wZ^Nxgf0F-v0W;kg zY3k70wM(eCRXi-8Yaj^Vg;b>47j*hBPWo?E;?Rq~5sHWW+89GETd>+ZvU*J=f5DW# zj93KX*24J8k3PDBS{jvgu%8z-lL=*aAjVb)_VCYX>26)?)`Q!~jF~m(m$FSA;E7^M z$KMpq6vRTr9+H!KCMz)rPmL(p)pY zt4CdD=3&wN(D>M5oRc$f?XN%oyiuYsTpSg&pSgnw*k4eFm2s8cACSCx+G&@qX>tB} z=NU-;TCyy<{o^GS(%F|3yO4m;1*E^OKK|b-TUX^ritX@`sslXyB!(gC+KBvghizhyU1n)0Gx_+2$VX0WKsER(r9)fluc0w?xv!@70ZEj*{-;}1XV+M`D+Nx=Px z$=?6eh_cQ?2_iDDG{>c-qLbn@u1ZMDOtkYRKm+?ly_>fzwY2ep&kxqCk-#7F!M}z4@;9ue|cxw{G}% z=gvrkJ?3bG@WiNm=tnLFAg-@(yXrv-hD`r?K0Lz9``vz;!Tv>F%Pqz~(z$c!z*$H! zGd;#rBg`T>jGj;U!l(8y22|tpJ0DY{ly9|ND9mUaNNua~2#*3lV^~pL&0(F|5GMfP zaCnusaWvx|c|@f&Pca;r9YVyBbgf71(bhnaWwp5tiszIxzO)tz?TEb?qkRSOn4+UH zExKmW8V)m=`Xm6SiaK}mww8~1@h@3oAw7;)rQ?92xb$gwJuRclF=bb6$+yZQR6Rq> z3J)z6AS+d?cDK7uB$(Ps;dmUH%`b0*6`_&{r$sM^g>3c1ZnO{i01u32@OB(^iI^1F z7)f1A+YqbD`@vTtnkFMXY^)!l7Q+WtuSerUAJFQc`XZ|@?w?D|e%YuIC`Ij7^VcQF z*lG{V^%we5XQ^4O%{T}h-qTbp$TURdYhzzqmwx`JYosVc!M*)KmD5b_a(-jzBI{LD zks)3Xb}n^nq5KWsJx$Q*r5rFfc@H_IIcHjg`-pirikDz*?JnbGKtd@Rin*kr%DFfX zDWN$T#7RAk3!#Jxw&nGod$N8{l$Dm8ss${q2{Lf%m7|4pKbS<}kq(nD}^YXadj9~weH*GKFtS^E#*l)jf_vdCqT zvgj|1t80w~E_XMfz4iJ4daPM~Cds>eQ{@vkC(C@0!%=mVxzaf;H{-)NL6{T5*HtUd zOZjq@>}chw@R>SYLI5=vp%8T!k^y%g(IkUZoZ-@taOz{B&-Fm=95TKi9>SzeAM$nu zIX8jfJ2r6O{R+lJdZ+ybeGmEcA~k?tK|Z9vJC&$8wAO{oC5K+uUW+s?O_$&e#z-W* zBIgZ+XM8l`Z{QzynDzJ2zV@uh$j*8G;Nu!K%6g^MAHqq)PU$#pS}lupp8xs_VjQd& znH)y{25CArqd0IO3{U1%ouLT6G`xc+0j%^y?ZtZnNV`FWnb_=33Z3ymWl1pkE=r@= z8^xki?^FpTQgqRhMd6oyqhmqAlyxJ98hZ9TGVVmPM`IZ04bQK@ozZ-jHT66)4eY^C zxUhqG$mR9;A{7@5fz`{_?XP)C0%%>}K<)aB{uqoos($^dNB!k2^-DpU77?@cy~?HSZyBbkd^*+-60+GESqf!q=Q1`jaqr>;(V8ERndy;c8s zvC!=U{+Fn(wG+n4`e+@??jfyT-pBr_(Bv+iH`AjS8Xki5R*# zkVAD_**SpM`@I^cA1~y8#;N3TRdEOSx^Vkz*REx`GDy)}=AB>tRm!Ph1HQwwWVZ*q zxH`kmi+7hq8RSh-m!|vs`!FMILNP-k9bR6*GGfRr>tAfDdhh!47IeyCSKXC*`1}FB z&Wt`^wS&LLHM!{+O-?5369H5IwEx_4|FZCC=FD;Ff?oZ%tCYHElhl&t?;n5MD#9^{ z9@V)072UfJE8QIP7{34w9hf`|Y8+{NO{Q)%_x72iKrC?`b~dhWhM&4qKW$k5>N$7iA{cz5mE^hl8H4c&5e z8LJZ2@E{7_NzLqj1fL9*qXS~2(>VSm{l;`5KU=crRMYAlmeKDYMvu5O*)V{oR>t@77*y+r)i=l6|09`INC%Q3Q5e^PDm5- z3>GQ5|FJ{`zTY{WJ4eY05cKrMN0k2?&~9&9YZN;DGxl zPCOfM2m-j|ujTK4hV7zhs`|L8gUa+f^)HOe9*4d0o-UQFiD54~`bHs?!I#;y;+hZt zIC6X?4SAts#*J&E77KH^bZL1PjRGXe+b75ruj%k})L{lpz=t`s6o?shN+3;A{?4D5 zpSaLnSa871m-j&hw#kxR*tV5M#Y1gGisey;);Eslqe3~}PPMJy=&duGh!v5G zUtxV4+*x(enDu{>o%42B3jPpl|r$W6GdR zJ+t-HeBAm>9%YMN#|jj}7Kxl;L&852)%=PS$0VAj&cNI4zx}p|R;zt2v*!_tXltzt zTYOUA(!K@su_cy6Pz@THTBd|Y$$aA;A$!e=`lNC$NeUtPL3S7ZoA+MSWYOE?S5oiL zOg?dO)hHm6qqguE=5a{~gcg47yr|?;0d)(Bf)k5;9yIm6dd~QR`35VZBr|d%vrj)=L(-)V=g)tTJ6XI`+Pz?#)=$S_t*`rh=0IYjtb3Yx*RHPKNhEdl zB&zbF1s8Us<`#+kl}ILJ>`Y?$of8yc!!+ zQ0_*6E0Q#yGZ0msDp;l0;q__mu6Oy+DZ?JSPbtLMvn#?Nv0FqP1Mj;f>6|JMDt)vB zix_*#$?H#L=|^K&pkggJ3+kNREh#tJiRiqNxB#EZM!7=-@1wb z((wyBzA>%+_;eFQhnNnjE9m{f>=*`#`kBx)C!T3N6}aD%$vbc?)&Zha?ZWDYlVsxx zC-%apJhoz-?j$K+O6}Gd^R@I;b~m8Qd%o zaUjFk8{W`)8;&TKNTa&;wO3y?wER2&rv>20$rq9gjrL^&fiVV^xIC4wb3^F`NURso zHRLA%wb>LssJ-$zvs=1nFEb;^P=O2N+`<^~O2Kea33`{|@J!NyYkPZxN1!V|Sm<^g zz2-Z|A|AAkZA>tf8kxtX;tG{2MXHk#L?e6MkP&i$NEv_hvuAjFMzb2?>DN~dN>(2! zJvMIL+D?(>s%EM*OMbLWB%XAmbd2;$vg)zo7?QOOo~uxP{yi1(DQAnr#y(UZCCH(% zeBjnP_x_T%Z{Ob}XtDy#7&WIeCtI!)e?@jPFAJ6}+lx&>vyVPQ1VNYGMNlXQ=slw2 zCle-ouKDA^rQ?LWu3<1z4S-r6K5SS-M}8T+r)5^9WCP>^8oA^}Z(CpH&fGU6>MT!O zX6DF}xnQSsV((kEP{(1aR;^vz0nH$jJ;8O(>0~Av`zUw2YMU>_RC%QO>36=>>C9xl zBVWADaElo{H_zFMhh6qInDqst*MpB~a1h|jc9D!xe&;$ze6#MXbIyrLrWwCRh+Je` z)XOcuyEc|>ix!ptwC52wupL_+i`8@!%~z2ZE(YSp`TXg=9DHi$+y8C14`aReoRsmW z-SNiakNbV}D;-Ze!X5~ZQ-pg}``N{DT*i`^9Wahs^ViK(r?ne59;ZN7QlwenB{qNO zEhU`&&4m(Ktd}&ROYVrBoBG12dFq!KM;Mj;Wl;tv#uh3I6STwZv8-~mkYeRVFh@8> zeeSjm{{P+<LgY^`ypvHI!Yc+ z1^KYLI_WjTJONuHN4D@OOhv@7*C1t-EOIUud1SHf$OhLj`!RDK9MUe{WA%7gW;eBC z09tE&-(R!Zt+-BML51Sya~Bv&$q-?U22Ah1eObs~Fy@Fo_o^PD2`JFhm-QR|Hw{2p zljAIhv1O`t-3k)L9*BV2jXxef|NCWwNbD8WSvQzLuJ|Qd$Agbxith+?c=ODdeeST#ha@*&h0aijP%q+kxQ59cF{k!9q>kIQ=F=pq)<=OG6zTJ zB68bgU!5oopjtKJ@ap>-fj{fW3on1`=6D5?LoD(!l!l?QkO(-CP|}hZo_n6BG^AJo zuhoLHFD0WAAJ)8n{lqPe?%MHVvtG6I%FR&Z?1+p%TK8VO9;1z_EAL5@4F*>Uh(M)% z2@Dzn@ote5#uRL%x`D9d zC}<8p>yfOf44PLgY>EBO!_0E*ma|G3 z+2(=k$?jy)s-REhiWO^hE}ib85oR+E$zSRt$guf^4|qG$d*O_${r6CYh1-G9RvYe8 zihCPji8Nm`c#N$sS-Nx|lT8ZSY{3BnVu0~6Gn|6U)OS$~5}D22S=bl{AD;j6NpJ%LsE5U+=i zKiI$I1+vFxWU>jdG@PrAoCwy4@FO zVFb>B@QYewiBl2Knn>@)?L^>iF%@A%D7JX1amz7AMC@$a#aXhJFJ>~m0;JPy!RqKD zmN_Y)zFArhFb9x@O#bxyIxCJM4Kx`8+7AH$A&GoiAwLpxpENT}OO|9eYnhAE^o)8T zBdG6^zt#Qo7`0to02S>ckKX3u6y7=;ECHs%Z|e!%!dsws2M4FC#IbUfDNDS2J`1xDOnfZu z)hIt9J8*?;Es=;GFoKjMOSp7Z-qfMb*DeQwAQR`on4lBb#bF2;AJdf3%Nvo;V8qag!VThMeNTPpnE58OHIk#7|NBqSl`z_-|{J9jfF zBYbl8$}vp%5buX5n&yAH1|=dAr_cHZ&3;4~$=b+H*C*%Qb&Kbqs@3;N4(ZU>K>5*X zz|52Z4L>ufp^l5QHKI660yS1MI_nd+(=2m$NfpNnQ?h9GwL{(++=b+&y%uJ%z}5Xh2qx)VC;#@ny~2cX`Vd<^i} zJRhEX`(w6ra!2@$zC)FD6B)r}G56df8koFhN=ntd>#yG~mqpURROsmSyEz&1Co;e( zmUX0Cbu%&Z2pxXls6f``%eLO2;c&4v1WVRA#T~nx+cGNUoLZ+6_?}ky)^# zD!cy@oWO#Em*77!vN14V5W^*)hDW6I9qXjcP^!b;QLH-B65pkbw_pXvhyk747w5Kit|iP{TJWSbY}?|U>MHSd@Cw?`>(%V!EmU=)LW$yDE)|Y-c`KMh4LDI z?ZQQ@>~f|#P70X4F&u2NP*~$&9;a-n(ZfjAQ|X9XQC|-@3TM&r!VA5D7ADq8E`5g* znd@-7l6O-jv~28?j}+!J_%LC@L2&+jlTPpm1mwunf>GgK*c$Q+fGx4AKcnk7*j!SU zhqtMS-bA80Z?kCADVIScRBTJ39FpM%cTt<0;^R(U9BGlzq+MnRbE#t2-mFuSEzCQL z!;MTaI0tF8yUC)*mtw#klAM>gyu>Y;z zaeS9Oa>7V3+Vd!DRTwkZNMUrEClAI!pNg|jt%pv>klQly+v(=p%akj(fwYyvls00a z|E9gWj^ZTrxcUv^FIg<-ii)#L#q+MY=J_q{ZtBq1iG;~&;^Wh4cgn)M3nh9b&wlc=&z39Z3gs0M1IU6tVQ zJ92ry_)lD2jE2UK&$NdDstm3>S7nQ>@=PN+Q>xKO|Lh53|8wson;ZuhG^@`^Jz74# z8E8$QM@LU0^j1ygj@czzwCU3;$8>Xrx5K`L62w+-Mzwp_4EkL2%3 zbg!g%^%JhDLbl-PUh;g!-DoRI7K0-}fXaKn7L@-ZC%rq+FI44B0RBds= z1rH|rpugVe_iin6haJ0H6uY&*|9AIXuTU%MfwTZE3u`lKQ@tbjE}tUjIre48jA-xNYQh#z`}G#mb!4^8EA*t zP0AG|?g{Zj(8)T4z5BtcV?;Z6$cFlHWx>nfr~exJE%mfplO72Y1mHOVARBb)K~O(d z2TNP=#|eNxO0?~gYd~7hKQnOcN!DuNr*ZS8fr_}Hf{PmU#egrPL8K6l9Q{l%wN5t1A z%oZhWMe(vLHW>MJ-es39_hrou9^qUtRF6YrEiXe=8g=jGE8UQuR%xlPMy%_yd1xQ` zAoe4I&&VrUXz6J*&1Etoq?H@nB_RFH8$*-&`{9MXQ#G~7-M}8MG~xR6sdU{yx{-4g zdmwQd;Bh3RXOQuxB4vzINvEN^B|Y3uX)0 z^(0P3x3_`~Z7}oppMPdqT@`&D_V2jkx@k4ycOOzu<0a;(HR;E{c4d`bBR@;Szttgs z%D4#+eo73EBmt0YlZTLwQZgeK9s1zEJ>1RTnPZvkvtw?_du+wt+d~UQOE*?dIU;~@ z4XRXU5zJnEw0%KM@0LhZE#2Hbb1F_)Key)8Ca^Opt z^5{p(LuXYx_kme6+=u>#*a@@xxav+=hL}nn{e?)Ri2Ttoj5Cx&b-@L@M?d@XUf<68 zYj=ZHlUmL@vfYtQZu`7W_m-cxJ@<)b!&~+^?7TMjU0U(}YWI(L=(Q%#)S299WZ`+M zj$hiY->yUc9Q~h-J5K#++56{y`NQVEm;UhExBVY~G27!D#u68=wNCo>BeTE9mUhxgv9Cstw0WuE5^s}*KFGD0pm%SAuIt|lR~pTi|EdbOQ*k6vG<3zY9u zlox%+c7Bi zHl6nMVD1&*MLu!uud}PZF=GZ%O|`i&KJTSq8v zqm~if%w!%GVu#u%o63mGNX6=26Y=9* z3%fdb`mHB5Y0_8UD&(V}kE(Wt#dEFc%lf811kwzJ|E3d*HWL^GLIt8DALtU}~FnEB4*LQK4QNdzC{Mz6XEvuHdJ!%;$LK zx#yz#*R1tR>y@k_Nkp6HA^wcEi4^~gt8xEVa8KbibC2(DL-7h2IJ@MCCH$g|-+$l1 zk;3Xm7-ZNe4I0@xR+xIrL1%tKZU6Y|We451;@(|%ic=vuhb_E!I|re|u|xsS;=hz* z$|;76K3be5v@5Y%u~GG@_ES(O0pg|}&ZA_>Ov^!cNU$FAsTSrC6z)s9PJ;VU+iubH z*(6W~yqTHJVKooXA-G8MI-({fQl z{@)^ytFAg4P|v8ov$*{$Ql$cyC2CyRjvs0>;!W%z@n$Jaqo@Sv-6EQrJ2%@svkE}V zMC{Fqs@iYGF-n%VUVZgR<3LK5sLZf?&WbplZBi6A;OW3Zyd?IuqMa}?`YjRV z&>J@zR`;TZz0rNoNlQQb?BW51;gU7(=_ZX7?k&|LW7Yot`LC-D=>3RLd z!XQ&I&Sf7x@%4`*Zc6*rxsHMDdWZSGsBdpA8CZ+!e*;2|&Ex0_8E38l4v6;|%bffl ze=&9$=|zy^yG<7AmOmyINB?HVq3Wyr!Xellb4a5kna0~Lcedq6rWAxFH|5G|p*C;* zyjc-@y~Z`gf7^1|-pPO@lKYVNs^i=IU_Wz1$&D{S493#Cty(oO1kCebs_y>` zwLypgg!^2n7~N^wcoeR3*nmq~Klz6^7$ED|H2ZER@vH3jl~A0?4DnxWTO@7M6_W5i zi2vq^{x=|1E+Bc zyww@mSBiv-P&D2&)4L9?Src*p@3%&}3WbJQ;Vbwxi|6CF+p=Y0??d{HscU#`i3VHl zgpLf^Nj3!iM0HM3xh#TAYyGrw6eh^I`AYVv>%47Vk+C0Z*6w>d6_}VQTbf0m}_i(5g)>Y7LD0M2c zM0^kT#G2;XBHN@qWvz)ntU9Tj2tjBxoZwSQm?54L#hP| z(DeIBs&G~sl6`%kXr>HCn@AfoY3QXhdpB#mxXEQJ3G#rY?9sf_TqR-B%^Dq2sS>n- z?l;fNWl9*ehcVsu1G*~)<9)BH$iSQ`)b}o~zi!4Z-&LV%PbLy!R;J9Ir z-`x7NJ>qsRO2mCzFf78lWyT5_-294FH|*Ft^HMP)UH{3AZnTA1c1Zh2{y>_Py8lD{ z4u2W?KJ?D-k!%J`2H_sTp+#Jn(OR`83uQgl7Y&J?QJ>B+j{G44lZmHIP&P&F0N25+ zm509Wr23S6Ob#lhFbdJ3*QJH9P*TXWnFKrK%9RxhYbYx5n`y43Ruk@M$=GL1e0t_- ztQhrl{%_%+Q$Oq0{~oO&5i3mX=l7pE{|H=LJMhyM0}9$^+m3kC_x1<9-hIP^0G4qv z_1i(T!AKYL_|($(;jiT6AtT<cEpl0vnQv;m)FuFU((FeqwTNMGQsN?;q&u~|!U%EjN(s!`=bZdvyvDDY7q>`CF_ zcn%d}$TG@nrft3p{kv7zCK`+08c%JJINIzy_8z!AZ}`xk&hv44O76Bj4KjQft6>f) z#Jhg|eQE(r-b{NP{Qx?P*o^vOgI$m85CfuWH13^!)bZ>i{Q8|GE+AiN&zpR2LHDSS zW*>C>Zh_wF;>FJ0?^NxMWCUK3+^WG)K3amda>ssPC0(|Dmd~6XB%U|!Ht!dlWYkLW zBJ@s0B>;m+qP%b1v#3<~>F3%)>IR2{SfLfCe=#&E8L6%PF@MgS=yQVH0C$BZI(}0R#%g^3l0C6>H_h+PWnPSJJMZBq$ z4i#Ccf!rA;SKr&_eO{fL^p*JZ!Yv~`-tupDZapoIg(>*RRdP$Sx87e0YO?{wQRod+ zu~&Hyoi_i>&h6NWU{OFpi|gTjdlD=3vj&a4hBGeRS?mWI#aO`05tPrzUkZkn4JB15v0 zZmG#Z=XpDWn9vx8c`24u_F;K9Zfs!*Zke@1IG^h8`u$XGN$B9f20P@a;!-f-9Rk^X z$)G{f8gM1R3_;_3^|2oZq@v4b}jw3a7_+p4uMoG zdli{i93pkbfiIe(jM7_M5RY60=2rk#`X&b*Gz!KcR4mZciSkM|_R8iv7PH(|knd|Z zUD;NqTHG>W^^jD!3NUHOvSr;JL(T0Lizi2H?ncjpyUD|utzL3U_q=p>C)ymLV3fJ6GjTnE@V-AC{-^Bn+%SNX&hG!e#H(R}w z1=9|2{80Y*^}D6_A9f}Zqiggu0w0OYeGR|qb@lj1AB`dkq+alf%~HE6pSs3tO|^LZ(>Lr|T51eB*VYN1O)sN?zEQmAZhC=RjpAM+67Oh)RXMMAa91 zP)Ew>yG*$RT#kxB`!98=BN+LV7?kEFtE}G-sd&Ddg-(n&H7#w_x6RHs(EM!UO%6lG zE7MhdSzBxzxDe`RpM4ImTldV{FTyHG8&9m;6u_?aCuYRQLRlnhw>{@*Z(unu^OD;$ zpC-%J+Q)?cX6%pRXk^(X?Ci4hLS)Gq&_M5yid}0(Lte7q*T3+w%bj`AqIr`v=MlN- z

jF#P-qC7uG6x%U8 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%0A@9z-C3 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⪼oAh^U8V? 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\ + \ + \ + \ + \ + \ No newline at end of file diff --git a/public/data/pages.json b/public/data/pages.json new file mode 100644 index 0000000..12c274b --- /dev/null +++ b/public/data/pages.json @@ -0,0 +1,131 @@ +{ + "pages": [ + { + "id": 1, + "slug": "home", + "name": "Home", + "content": [ + { + "type": "title1", + "text": "turning properties into unforgettable stays." + }, + { + "type": "divider" + }, + { + "type": "paragraph", + "text": "we take the stress out of hosting and property management. from professional guest communication and seamless check-ins to maintenance and cleaning, we handle every detail so your property shines and your guests feel at home. enjoy peace of mind while maximising your property's potential. we make hosting effortless and rewarding." + } + ], + "theme": "dark", + "image1": "https://images.pexels.com/photos/20666872/pexels-photo-20666872.jpeg", + "image2": null, + "showScroll": true + }, + { + "id": 2, + "slug": "about", + "name": "About Us", + "content": [ + { + "type": "title2", + "text": "Who we are" + }, + { + "type": "paragraph", + "text": "We are a creative team dedicated to building amazing web experiences. Our passion for design and development drives everything we do." + }, + { + "type": "divider" + }, + { + "type": "title3", + "text": "What We Do" + }, + { + "type": "paragraph", + "text": "From concept to completion, we craft digital solutions that not only meet your needs but exceed your expectations." + } + ], + "theme": "light", + "image1": "https://images.pexels.com/photos/5825527/pexels-photo-5825527.jpeg", + "image2": "https://images.pexels.com/photos/8580720/pexels-photo-8580720.jpeg", + "showScroll": false + }, + { + "id": 3, + "slug": "services", + "name": "Our Services", + "content": [ + { + "type": "title1", + "text": "What We Offer" + }, + { + "type": "title2", + "text": "Web Development" + }, + { + "type": "paragraph", + "text": "Custom websites and web applications built with modern technologies and best practices." + }, + { + "type": "title2", + "text": "Mobile Apps" + }, + { + "type": "paragraph", + "text": "Native and cross-platform mobile applications for iOS and Android devices." + }, + { + "type": "divider" + }, + { + "type": "title3", + "text": "Ready to Get Started?" + }, + { + "type": "title4", + "text": "Let's build something amazing together." + } + ], + "theme": "dark", + "image1": "https://images.pexels.com/photos/5490353/pexels-photo-5490353.jpeg", + "image2": null, + "showScroll": false + }, + { + "id": 4, + "slug": "contact", + "name": "Contact", + "theme": "light", + "image1": "https://images.pexels.com/photos/32168965/pexels-photo-32168965.jpeg", + "image2": "https://images.pexels.com/photos/20927256/pexels-photo-20927256.jpeg", + "showScroll": false + }, + { + "id": 5, + "slug": "thank-you", + "title": "Thank You", + "content": "Thank you for visiting The Hideout. We hope you enjoyed the smooth scrolling experience and look forward to working with you soon!", + "theme": "dark", + "image1": "https://images.pexels.com/photos/14750394/pexels-photo-14750394.jpeg", + "image2": null, + "showScroll": false + } + ], + "themes": [ + { + "name": "dark", + "backgroundColor": "#830B0D", + "textColor": "#ffffff", + "logo": "/assets/logo-light.svg" + }, + { + "name": "light", + "backgroundColor": "#ffffff", + "textColor": "#5E0809", + "logo": "/assets/logo-dark.svg" + } + ] +} diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..8dccbff --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,18 @@ +{ + "short_name": "Tom Butcher", + "name": "TOM BUTCHER", + "icons": [ + { + "src": "https://cdn.tombutcher.work/favicon/favicon192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "https://cdn.tombutcher.work/favicon/favicon512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": "/", + "display": "standalone" +} diff --git a/public/silent-check-sso.html b/public/silent-check-sso.html new file mode 100644 index 0000000..ad5f88b --- /dev/null +++ b/public/silent-check-sso.html @@ -0,0 +1,13 @@ + + + + + + Silent Check SSO + + + + + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..bc7cccd --- /dev/null +++ b/readme.md @@ -0,0 +1,119 @@ + +# 2026 tombutcher.work UI + +This is the front-end web application for **tombutcher.work** ([tombutcher.work](https://tombutcher.work)), built with **React.js** and hosted on **Cloudflare Pages**. The website showcases my personal work. + +## Tech Stack + +- **React 19**: Modern JavaScript library for building user interfaces +- **Vite**: Fast build tool and development server +- **Cloudflare Pages**: Static site hosting with global CDN +- **Cloudflare Turnstile**: Bot protection for form submissions +- **Keycloak**: Authentication and authorization + +## Features + +- Dynamic content delivery: pages, blogs, projects, companies, media, and CV assets load at runtime via React Query from the configured `VITE_API_URL`, so updates ship without redeploys. +- Immersive navigation: smooth-scrolling landing sections, animated sub-pages, and deep-link routing keep transitions fast while preserving stateful context. +- Adaptive theming: global theme context syncs typography and color tokens across devices, reacting to breakpoint changes for desktop, tablet, and mobile layouts. +- Account-aware UI: Keycloak SSO bootstraps user sessions for gated experiences while keeping the rest of the site public-by-default. +- Engagement tooling: Cloudflare Turnstile-secured contact form and multi-version CV download menu (digital vs. print) streamline outreach and asset sharing. + +## Prerequisites + +Before getting started, make sure you have the following installed: + +- [Node.js](https://nodejs.org/) (v18 or higher recommended) +- [npm](https://www.npmjs.com/) or [yarn](https://yarnpkg.com/) +- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/) (for deployment) +- [Git](https://git-scm.com/) + +## Getting Started + +### 1. Clone the Repository + +Clone this repository to your local machine: + +```bash +git clone https://git.tombutcher.work/tom/thehideout-ui.git +cd thehideout-ui +``` + +### 2. Install Dependencies + +Install the necessary dependencies: + +```bash +npm install +``` + +### 3. Configure Environment + +Ensure any necessary environment variables are set up for: +- Cloudflare Turnstile site keys +- Keycloak configuration +- API endpoints + +### 4. Running Locally + +To start the development server locally: + +```bash +npm run dev +``` + +The website will be available at `http://localhost:5173` (Vite default port). + +### 5. Building for Production + +To create a production build: + +```bash +npm run build +``` + +The optimized build will be output to the `./dist` directory. + +### 6. Preview Production Build + +To preview the production build locally: + +```bash +npm run preview +``` + +## Deployment + +### Deploy to Cloudflare Pages + +Deploy using Wrangler CLI: + +```bash +npm run deploy +``` + +This will build the project and deploy it to Cloudflare Pages. + +## Project Structure + +``` +thehideout-ui/ +├── src/ +│ ├── components/ # Reusable React components +│ ├── contexts/ # React context providers +│ ├── icons/ # Custom icon components +│ ├── utils/ # Utility functions +│ ├── App.jsx # Main application component +│ └── main.jsx # Application entry point +├── public/ # Static assets +├── dist/ # Production build output +└── assets/ # Additional assets +``` + +## Resources + +- [React](https://react.dev/) +- [Vite](https://vite.dev/) +- [Ant Design](https://ant.design/) +- [Cloudflare Pages](https://developers.cloudflare.com/pages/) +- [Cloudflare Turnstile](https://developers.cloudflare.com/turnstile/) \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..a970633 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,838 @@ +import PropTypes from "prop-types"; +import { useState, useEffect, useRef, useMemo, useCallback } from "react"; +import { Alert } from "antd"; +import { useMediaQuery } from "react-responsive"; +import { useNavigate, useLocation } from "react-router-dom"; +import { Element, scroller } from "react-scroll"; +import axios from "axios"; +import { useQuery } from "@tanstack/react-query"; +import Page from "./components/Page"; +import { ImageProvider, useImageContext } from "./contexts/ImageContext"; +import LoadingModal from "./components/LoadingModal"; +import { ActionProvider } from "./contexts/ActionContext"; +import SubPage from "./components/SubPage"; +import BlogPage from "./components/Blogs/BlogPage"; +import ProjectPage from "./components/Projects/ProjectPage"; +import ExperiencePage from "./components/Experience/ExperiencePage"; +import { MenuProvider, useMenu } from "./contexts/MenuContext"; +import { ThemeProvider } from "./contexts/ThemeContext"; +import { + SettingsProvider, + useSettingsContext, +} from "./contexts/SettingsContext"; +import { BlogsProvider } from "./contexts/BlogsContext"; +import { ProjectsProvider } from "./contexts/ProjectsContext"; +import { CompaniesProvider } from "./contexts/CompaniesContext"; +import { KeycloakProvider } from "./contexts/KeycloakContext"; +import { VideoProvider } from "./contexts/VideoContext"; +import { FileProvider } from "./contexts/FileContext"; +import Header from "./components/Header"; +import Footer from "./components/Footer"; +import { AccountProvider, useAccount } from "./contexts/AccountContext"; +const apiUrl = import.meta.env.VITE_API_URL; + +// Component that handles image loading after API data is fetched +const AppContent = ({ pages, blogs, images, projects, companies, loading }) => { + const { loadImages } = useImageContext(); + const [loadedOnce, setLoadedOnce] = useState(false); + const [currentPage, setCurrentPage] = useState({ pageType: "landingPage" }); + const [currentSubPage, setCurrentSubPage] = useState({ + pageType: "subPage", + name: "", + slug: "", + theme: "", + notionId: "", + }); + const [nextPage, setNextPage] = useState(null); + const [currentTheme, setCurrentTheme] = useState(); + const [currentBlog, setCurrentBlog] = useState(null); + const [currentProject, setCurrentProject] = useState(null); + const [currentCompany, setCurrentCompany] = useState(null); + const [currentPageIdx, setCurrentPageIdx] = useState(0); + const [nextPageIdx, setNextPageIdx] = useState(0); + const [blogVisible, setBlogVisible] = useState(false); + const [projectVisible, setProjectVisible] = useState(false); + const [experienceVisible, setExperienceVisible] = useState(false); + const [subPageVisible, setSubPageVisible] = useState(false); + const [menuToggled, setMenuToggled] = useState(false); + const [accountToggled, setAccountToggled] = useState(false); + const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); + const [headerLarge, setHeaderLarge] = useState(false); + const [pageLoaded, setPageLoaded] = useState(false); + const locationRef = useRef(); + const currentPageTypeRef = useRef(currentPage.pageType); + const previousPageRef = useRef(null); + const currentPageRef = useRef(currentPage); + const landingPages = useMemo( + () => pages.filter((page) => page.pageType == "landingPage"), + [pages] + ); + const { menuVisible, setMenuVisible, setActiveSlug } = useMenu(); + const { accountVisible, setAccountVisible } = useAccount(); + + const navigate = useNavigate(); + const location = useLocation(); + const settings = useSettingsContext(); + const isMobile = useMediaQuery({ maxWidth: 800 }); + + const [skipAnimation, setSkipAnimation] = useState(true); + + // Memoize theme lookups to prevent creating new objects on every render + const themeMap = useMemo(() => { + const map = new Map(); + settings?.themes?.forEach((theme) => { + map.set(theme.name, theme); + }); + return map; + }, [settings?.themes]); + + useEffect(() => { + if (loading == false) { + setTimeout(() => { + setSkipAnimation(false); + console.log("skipAnimation", loading); + }, 500); // Reduced from 2000ms to 500ms + } + }, [loading]); + + // Check for iOS webclip and set body className + useEffect(() => { + if (window.navigator.standalone === true) { + document.body.classList.add("tb-ios-webclip"); + } + }, []); + + // Initialize image objects (metadata only, no loading) when they become available + useEffect(() => { + if (!loadedOnce && images && images.length > 0) { + loadImages(images); + setLoadedOnce(true); + } + }, [images, loadImages, loadedOnce]); + + // Handle page load and header animation + useEffect(() => { + if (!pageLoaded && pages.length > 0) { + setPageLoaded(true); + } + if (nextPageIdx == 0 && isMobile == true) { + setHeaderLarge(false); + const timer1 = setTimeout(() => { + setHeaderLarge(true); + const timer2 = setTimeout(() => { + setHeaderLarge(false); + }, 3000); // 3 second + + return () => clearTimeout(timer2); + }, 1000); // 1s wait + + return () => clearTimeout(timer1); + } + if (nextPageIdx == 0 && isMobile == false) { + setHeaderLarge(true); + return; + } + if (nextPageIdx != 0) { + setHeaderLarge(false); + return; + } + }, [pageLoaded, pages.length, nextPageIdx, isMobile]); + + // Track mouse position for transform origin + useEffect(() => { + const handleMouseMove = (event) => { + setMousePosition({ x: event.clientX, y: event.clientY }); + }; + + window.addEventListener("mousemove", handleMouseMove); + + return () => { + window.removeEventListener("mousemove", handleMouseMove); + }; + }, []); + + const setPageTitle = useCallback((name) => { + document.title = name ? `${name} - Tom Butcher` : "Tom Butcher"; + }, []); + + const handleBlogsRoute = useCallback(() => { + const blogSlug = location.pathname.split("/blogs/")[1]; + if (blogSlug != "") { + const blog = blogs.find((p) => p.slug === blogSlug); + if (blog) { + // Set previousPage when navigating to a blog + if (currentPageRef.current.pageType !== "subPage") { + previousPageRef.current = { ...currentPageRef.current }; + } + + setHeaderLarge(false); + if (currentPageTypeRef.current == "blogPage") { + setBlogVisible(false); + setTimeout(() => { + setCurrentBlog(blog); + setBlogVisible(true); + }, 100); // Reduced from 500ms to 100ms + } else { + setBlogVisible(false); + setCurrentBlog(blog); + // Small delay to ensure DOM updates before making visible + requestAnimationFrame(() => { + setBlogVisible(true); + }); + } + currentPageTypeRef.current = "blogPage"; + setPageTitle(blog.name); + } else { + navigate(settings.redirects["404"]); + setCurrentBlog(null); // blog not found + setBlogVisible(false); + } + return; // exit early since we're on a blog page + } + }, [ + blogs, + location.pathname, + settings.redirects, + navigate, + currentPageRef, + previousPageRef, + setCurrentBlog, + setBlogVisible, + setPageTitle, + ]); + + const handleCompaniesRoute = useCallback(() => { + const companySlug = location.pathname.split("/experience/")[1]; + if (companySlug != "") { + const company = companies.find((c) => c.slug === companySlug); + if (company) { + // Set previousPage when navigating to a company + if (currentPageRef.current.pageType !== "subPage") { + previousPageRef.current = { ...currentPageRef.current }; + } + + setHeaderLarge(false); + if (currentPageTypeRef.current == "companyPage") { + setExperienceVisible(false); + setTimeout(() => { + setCurrentCompany(company); + setExperienceVisible(true); + }, 100); // Reduced from 500ms to 100ms + } else { + setExperienceVisible(false); + setCurrentCompany(company); + // Small delay to ensure DOM updates before making visible + requestAnimationFrame(() => { + setExperienceVisible(true); + }); + } + currentPageTypeRef.current = "companyPage"; + setPageTitle(company.name); + } else { + navigate(settings.redirects["404"]); + setCurrentCompany(null); // company not found + setExperienceVisible(false); + } + return; // exit early since we're on a company page + } + }, [ + companies, + location.pathname, + settings.redirects, + navigate, + currentPageRef, + previousPageRef, + setCurrentCompany, + setExperienceVisible, + setPageTitle, + ]); + + const handleProjectsRoute = useCallback(() => { + const projectSlug = location.pathname.split("/projects/")[1]; + if (projectSlug != "") { + const project = projects.find((p) => p.slug === projectSlug); + if (project) { + // Set previousPage when navigating to a project + if (currentPageRef.current.pageType !== "subPage") { + previousPageRef.current = { ...currentPageRef.current }; + } + + setHeaderLarge(false); + if (currentPageTypeRef.current == "projectPage") { + setProjectVisible(false); + setTimeout(() => { + setCurrentProject(project); + setProjectVisible(true); + }, 100); // Reduced from 500ms to 100ms + } else { + setProjectVisible(false); + setCurrentProject(project); + // Small delay to ensure DOM updates before making visible + requestAnimationFrame(() => { + setProjectVisible(true); + }); + } + currentPageTypeRef.current = "projectPage"; + setPageTitle(project.name); + } else { + navigate(settings.redirects["404"]); + setCurrentProject(null); // project not found + setProjectVisible(false); + } + return; // exit early since we're on a project page + } + }, [ + projects, + location.pathname, + settings.redirects, + navigate, + currentPageRef, + previousPageRef, + setCurrentProject, + setProjectVisible, + setPageTitle, + ]); + + // Handle direct URL navigation + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(() => { + locationRef.current = location.pathname; + if (Object.keys(settings).length == 0) { + return; + } + console.log("location.pathname", location.pathname); + // Check if the URL matches /blogs/:slug + if (location.pathname.startsWith("/blogs/")) { + handleBlogsRoute(); + return; + } + // Check if the URL matches /projects/:slug + if (location.pathname.startsWith("/projects/")) { + handleProjectsRoute(); + return; + } + // Check if the URL matches /companies/:slug + if (location.pathname.startsWith("/experience/")) { + handleCompaniesRoute(); + return; + } + setBlogVisible(false); + setProjectVisible(false); + setExperienceVisible(false); + if (pages.length > 0 && location.pathname !== "/") { + const slug = location.pathname.slice(1); // Remove leading slash + const page = pages.find((p) => p.slug === slug); + + if (page) { + // Set previousPage when navigating to a subpage + if ( + page.pageType === "subPage" && + currentPageRef.current.pageType !== "subPage" + ) { + previousPageRef.current = { ...currentPageRef.current }; + } + setNextPage(page); + setCurrentPage(page); + + setNextPageIdx(pages.indexOf(page)); + setCurrentPageIdx(pages.indexOf(page)); + setPageTitle(page.name); + + if (page.pageType === "landingPage") { + // Ensure DOM has rendered before attempting to scroll + setSubPageVisible(false); + requestAnimationFrame(() => { + scroller.scrollTo(slug, { + duration: 0, + delay: 0, + containerId: "app-container", + }); + }); + } else { + if (currentPage.pageType == page.pageType) { + setSubPageVisible(false); + setCurrentSubPage(page); + // Small delay to ensure DOM updates before making visible + // Use double requestAnimationFrame for Edge compatibility + requestAnimationFrame(() => { + requestAnimationFrame(() => { + setSubPageVisible(true); + }); + }); + } else { + setSubPageVisible(false); + setCurrentSubPage(page); + // Small delay to ensure DOM updates before making visible + // Use double requestAnimationFrame for Edge compatibility + requestAnimationFrame(() => { + requestAnimationFrame(() => { + setSubPageVisible(true); + }); + }); + } + } + } else { + navigate(settings.redirects["404"]); + } + } else if ( + pages.length > 0 && + location.pathname === "/" && + settings?.redirects?.index != null + ) { + console.log("settings.redirects", settings.redirects); + const indexPage = pages.find((p) => p.slug === settings.redirects.index); + // Default to index page + setNextPage(indexPage); + setCurrentPage(indexPage); + + setNextPageIdx(0); + setCurrentPageIdx(0); + setPageTitle(indexPage.name); + navigate(`/${indexPage.slug}`, { replace: true }); + } + }, [ + location.pathname, + pages, + settings?.redirects?.index, + navigate, + settings, + blogs, + projects, + companies, + currentPage.pageType, + currentBlog, + currentProject, + currentCompany, + handleBlogsRoute, + handleProjectsRoute, + handleCompaniesRoute, + setPageTitle, + ]); + + // Set up scroll spy to update URL when scrolling + useEffect(() => { + if (currentPage.pageType == "subPage") { + return; + } + if (pages.length > 0) { + let scrollTimeout; + + const handleScrollSpy = () => { + const container = document.getElementById("app-container"); + if (!container) return; + + const scrollTop = container.scrollTop; + const containerHeight = container.clientHeight; + const viewportCenter = scrollTop + containerHeight / 2; + + // Find which page is currently in the center of the viewport + let currentPageIndex = 0; + let minDistance = Infinity; + + pages.forEach((page, index) => { + const element = document.querySelector(`[data-name="${page.slug}"]`); + if (element) { + const elementTop = element.offsetTop; + //const elementBottom = elementTop + element.offsetHeight; + const elementCenter = elementTop + element.offsetHeight / 2; + + const distance = Math.abs(viewportCenter - elementCenter); + + if (distance < minDistance) { + minDistance = distance; + currentPageIndex = index; + setMenuVisible(false); + setAccountVisible(false); + setNextPage(page); + setNextPageIdx(index); + if ( + blogVisible == false && + projectVisible == false && + experienceVisible == false + ) { + setCurrentTheme(themeMap.get(page.theme)); + } + } + } + }); + + // Debounce both current page state and URL updates to reduce frequency + clearTimeout(scrollTimeout); + scrollTimeout = setTimeout(() => { + if (pages[currentPageIndex] && pages[currentPageIndex].slug) { + // Update current page state for Images component + if (currentPageIdx !== currentPageIndex) { + setCurrentPage(pages[currentPageIndex]); + setNextPage(pages[currentPageIndex]); + setNextPageIdx(currentPageIndex); + setCurrentPageIdx(currentPageIndex); + setPageTitle(pages[currentPageIndex].name); + + const newPath = `/${pages[currentPageIndex].slug}`; + if (locationRef.current !== newPath) { + navigate(newPath, { replace: true }); + } + } + } + }, 100); // Debounce for 100ms + }; + + const container = document.getElementById("app-container"); + if (container) { + container.addEventListener("scroll", handleScrollSpy, { + passive: true, + }); + return () => { + container.removeEventListener("scroll", handleScrollSpy); + clearTimeout(scrollTimeout); + }; + } + } + }, [ + pages, + navigate, + currentPageIdx, + currentPage.pageType, + themeMap, + setMenuVisible, + setNextPage, + setNextPageIdx, + setCurrentTheme, + setBlogVisible, + setProjectVisible, + setExperienceVisible, + setPageTitle, + blogVisible, + projectVisible, + experienceVisible, + ]); + + // Update currentPageRef whenever currentPage changes + useEffect(() => { + currentPageRef.current = currentPage; + currentPageTypeRef.current = currentPage.pageType; + }, [currentPage]); + + // Update menu active slug when current page changes + useEffect(() => { + if (setActiveSlug && currentPage?.slug) { + setActiveSlug(currentPage.slug); + } + }, [currentPage?.slug, setActiveSlug]); + + // Set body background color to match current page's theme + useEffect(() => { + const theme = + blogVisible == true + ? settings?.globalThemes?.blog + : projectVisible == true + ? themeMap.get(currentProject?.theme) || settings?.globalThemes?.project + : experienceVisible == true + ? themeMap.get(currentCompany?.theme) || + settings?.globalThemes?.experience + : themeMap.get(currentPage?.theme) || settings?.globalThemes?.page; + setCurrentTheme(theme); + }, [ + nextPage, + themeMap, + blogVisible, + projectVisible, + experienceVisible, + settings?.globalThemes?.blog, + settings?.globalThemes?.project, + settings?.globalThemes?.experience, + settings?.globalThemes?.page, + currentPage?.theme, + currentProject?.theme, + currentCompany?.theme, + ]); + + useEffect(() => { + setMenuToggled( + subPageVisible || + menuVisible || + blogVisible || + projectVisible || + experienceVisible + ); + if (subPageVisible == true) { + setMenuVisible(false); + } + if (blogVisible == true) { + setMenuVisible(false); + } + if (projectVisible == true) { + setMenuVisible(false); + } + if (experienceVisible == true) { + setMenuVisible(false); + } + }, [ + subPageVisible, + menuVisible, + setMenuVisible, + blogVisible, + projectVisible, + experienceVisible, + ]); + + useEffect(() => { + if (accountVisible == false) { + setAccountToggled(false); + } + }, [accountVisible, setAccountToggled]); + // Handle subpage close with smart navigation + const handleSubPageClose = () => { + currentPageTypeRef.current = "landingPage"; + // Check if there's a previous page stored in ref + if (previousPageRef.current && previousPageRef.current.slug) { + // Navigate to the previous page's slug + navigate(`/${previousPageRef.current.slug}`); + } else { + // No previous page, redirect to home + navigate("/"); + } + }; + + const handleMenuToggle = (toggled) => { + setMenuToggled(toggled); + if ( + toggled == false && + (subPageVisible == true || + blogVisible == true || + projectVisible == true || + experienceVisible == true) + ) { + handleSubPageClose(); + return; + } + setMenuVisible(toggled); + }; + + const handleAccountToggle = (toggled) => { + setAccountToggled(toggled); + setAccountVisible(toggled); + }; + + useEffect(() => { + console.log("currentCompany", currentCompany); + }, [currentCompany]); + + return ( + +

+
0 && + skipAnimation == false + ? "tb-visible" + : "tb-hidden" + } + ${skipAnimation ? "tb-skip-animation" : ""} + `} + id="app-container" + > + {landingPages.map((pageData, index) => ( + + + + ))} +
+ + + + + + + + + + + + + + + + + +
+ + ); +}; + +AppContent.propTypes = { + images: PropTypes.shape({ + length: PropTypes.number, + }), + pages: PropTypes.array.isRequired, + blogs: PropTypes.array.isRequired, + projects: PropTypes.array.isRequired, + companies: PropTypes.array.isRequired, + themes: PropTypes.shape({ + find: PropTypes.func, + }), + loading: PropTypes.bool, +}; + +const defaultSettings = { + themes: [], + redirects: {}, + branding: [], +}; + +const fetchContent = async () => { + const response = await axios.get(`${apiUrl}/content`); + return response.data; +}; + +const App = () => { + const actions = {}; + + const { data, isLoading, error, isError } = useQuery({ + queryKey: ["content"], + queryFn: fetchContent, + refetchOnWindowFocus: false, + }); + + const contentArray = Array.isArray(data) ? data : []; + const contentObject = !Array.isArray(data) && data ? data : {}; + + const pages = contentObject.pages || contentArray; + const blogs = contentObject.blogs || contentArray; + const projects = contentObject.projects || contentArray; + const companies = contentObject.companies || contentArray; + const images = contentObject.images || contentArray; + const cvs = contentObject.cvs || contentArray; + const settings = { + ...defaultSettings, + ...(contentObject.settings || {}), + }; + + const errorMessage = isError + ? axios.isAxiosError(error) + ? error.response?.data?.message || + error.message || + "Failed to fetch pages" + : error instanceof Error + ? error.message + : "Failed to fetch pages" + : null; + + if (isError) { + console.error("Error fetching content:", error); + } + + if (errorMessage) { + return ( +
+ +
+ ); + } + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default App; diff --git a/src/components/Blogs/BlogList.jsx b/src/components/Blogs/BlogList.jsx new file mode 100644 index 0000000..20474cd --- /dev/null +++ b/src/components/Blogs/BlogList.jsx @@ -0,0 +1,23 @@ +import PropTypes from "prop-types"; +import { useBlogs } from "../../contexts/BlogsContext"; +import BlogListItem from "./BlogListItem.jsx"; + +const BlogList = () => { + const { blogs } = useBlogs(); + + return ( +
+
+ {blogs.map((blog, i) => ( + + ))} +
+
+ ); +}; + +BlogList.propTypes = { + blogs: PropTypes.array, +}; + +export default BlogList; diff --git a/src/components/Blogs/BlogListItem.jsx b/src/components/Blogs/BlogListItem.jsx new file mode 100644 index 0000000..b427e65 --- /dev/null +++ b/src/components/Blogs/BlogListItem.jsx @@ -0,0 +1,29 @@ +import PropTypes from "prop-types"; +import { useNavigate } from "react-router-dom"; + +const BlogListItem = ({ blogData, key }) => { + const navigate = useNavigate(); + return ( +
{ + navigate(`/blogs/${blogData.slug}`); + }} + > +
+
+

{blogData?.name}

+

{blogData?.subTitle}

+

{blogData?.date}

+
+
+
+ ); +}; + +BlogListItem.propTypes = { + key: PropTypes.any, + blogData: PropTypes.object, +}; + +export default BlogListItem; diff --git a/src/components/Blogs/BlogPage.jsx b/src/components/Blogs/BlogPage.jsx new file mode 100644 index 0000000..875ece4 --- /dev/null +++ b/src/components/Blogs/BlogPage.jsx @@ -0,0 +1,92 @@ +import { useRef, memo, useMemo } from "react"; +import PropTypes from "prop-types"; +import { Layout } from "antd"; +import ContentRenderer from "../ContentRenderer"; +import { useMediaQuery } from "react-responsive"; +import { useSettingsContext } from "../../contexts/SettingsContext"; +import ShareButton from "../Buttons/ShareButton"; + +const { Content } = Layout; + +const BlogPage = memo(({ blogData }) => { + const settings = useSettingsContext(); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const isMobile = useMediaQuery({ maxWidth: 800 }); + const isFullHeight = !useMediaQuery({ maxHeight: 550 }); + const contentRef = useRef(null); + + const theme = useMemo( + () => settings?.globalThemes?.blog || settings?.themes[0], + [settings?.globalThemes?.blog, settings?.themes] + ); + + if (blogData == null) { + return null; + } + + const blogHeader = ( +
+
+

+ {blogData?.name || "n/a"} +

+ +
+ +
+

{blogData?.subTitle || "n/a"}

+

{blogData?.date || "n/a"}

+
+
+ ); + + return ( +
+ +
+
+ +
+
+
+
+ ); +}); + +BlogPage.displayName = "BlogPage"; + +BlogPage.propTypes = { + blogData: PropTypes.object.isRequired, +}; + +export default BlogPage; diff --git a/src/components/Buttons/AccountButton.jsx b/src/components/Buttons/AccountButton.jsx new file mode 100644 index 0000000..66ffeb5 --- /dev/null +++ b/src/components/Buttons/AccountButton.jsx @@ -0,0 +1,48 @@ +import PropTypes from "prop-types"; +import PersonIcon from "../../icons/PersonIcon"; +import MenuButton from "./MenuButton"; + +const AccountButton = ({ + theme = null, + showAccount = true, + onAccountToggle = () => {}, + accountToggled = false, +}) => { + return ( + + ); +}; + +AccountButton.propTypes = { + theme: PropTypes.shape({ + backgroundColor: PropTypes.any, + textColor: PropTypes.any, + }), + showAccount: PropTypes.bool, + onAccountToggle: PropTypes.func, + accountToggled: PropTypes.bool, +}; + +export default AccountButton; diff --git a/src/components/Buttons/MenuButton.jsx b/src/components/Buttons/MenuButton.jsx new file mode 100644 index 0000000..9d05308 --- /dev/null +++ b/src/components/Buttons/MenuButton.jsx @@ -0,0 +1,29 @@ +import { Fade as Hamburger } from "hamburger-react"; +import PropTypes from "prop-types"; + +const MenuButton = ({ isInverted = false, theme, toggled, onToggle }) => { + return ( + + ); +}; + +MenuButton.propTypes = { + isInverted: PropTypes.bool, + theme: PropTypes.object, + toggled: PropTypes.bool, + onToggle: PropTypes.func, +}; + +export default MenuButton; diff --git a/src/components/Buttons/ShareButton.jsx b/src/components/Buttons/ShareButton.jsx new file mode 100644 index 0000000..0151260 --- /dev/null +++ b/src/components/Buttons/ShareButton.jsx @@ -0,0 +1,54 @@ +import { useState, useRef } from "react"; +import PropTypes from "prop-types"; +import ShareIcon from "../../icons/ShareIcon"; +import SharePopupMenu from "../Menu/SharePopupMenu"; +import MenuButton from "./MenuButton"; + +const ShareButton = ({ blogData, projectData, theme = null }) => { + const [sharePopupVisible, setSharePopupVisible] = useState(false); + const buttonRef = useRef(null); + const data = blogData || projectData; + + const shareTitle = data?.title || data?.name || document.title; + const shareUrl = data?.url || window.location.href; + + const handleClick = () => { + setSharePopupVisible(!sharePopupVisible); + }; + + return ( + <> + + setSharePopupVisible(false)} + buttonRef={buttonRef} + url={shareUrl} + title={shareTitle} + /> + + ); +}; + +ShareButton.propTypes = { + blogData: PropTypes.object, + projectData: PropTypes.object, + theme: PropTypes.object, +}; + +export default ShareButton; diff --git a/src/components/Buttons/VisitButton.jsx b/src/components/Buttons/VisitButton.jsx new file mode 100644 index 0000000..d9a87b7 --- /dev/null +++ b/src/components/Buttons/VisitButton.jsx @@ -0,0 +1,20 @@ +import PropTypes from "prop-types"; +import VisitIcon from "../../icons/VisitIcon"; + +const VisitButton = ({ url }) => { + return ( + + ); +}; + +VisitButton.propTypes = { + url: PropTypes.string.isRequired, +}; + +export default VisitButton; diff --git a/src/components/ContentRenderer.jsx b/src/components/ContentRenderer.jsx new file mode 100644 index 0000000..18f4a47 --- /dev/null +++ b/src/components/ContentRenderer.jsx @@ -0,0 +1,622 @@ +import ContactForm from "./Forms/ContactForm"; +import ProjectCards from "./Projects/ProjectCards"; +import BlogList from "./Blogs/BlogList"; +import { useNavigate } from "react-router-dom"; +import SimpleBar from "simplebar-react"; +import Image from "./Image"; +import { useRef, useState, useEffect } from "react"; +import CompaniesList from "./Experience/CompaniesList"; +import dayjs from "dayjs"; +import RightIcon from "../icons/RightIcon"; +import LeftIcon from "../icons/LeftIcon"; +import Video from "./Video"; +import VisitIcon from "../icons/VisitIcon"; + +const gradientHeight = 60; + +const renderAnnotation = (textObject = {}, navigate) => { + if (textObject.bold == true) { + return {renderAnnotation({ ...textObject, bold: false }, navigate)}; + } + if (textObject.italic == true) { + return ( + {renderAnnotation({ ...textObject, italic: false }, navigate)} + ); + } + if (textObject.underline == true) { + return ( + {renderAnnotation({ ...textObject, underline: false }, navigate)} + ); + } + if (textObject.link != undefined) { + const { type, url } = textObject.link; + if (type == "internalLink") { + return ( +
{ + e.preventDefault(); + navigate(url); + }} + > + + {renderAnnotation({ ...textObject, link: undefined }, navigate)} + + + ); + } + if (type == "externalLink") { + return ( + { + e.preventDefault(); + window.open(url, "_blank"); + }} + > + + {renderAnnotation({ ...textObject, link: undefined }, navigate)} + + + + + + ); + } + } + return textObject.text; +}; +const renderText = (text = [], navigate) => { + return text.map((item) => { + return renderAnnotation(item, navigate); + }); +}; + +// Function to render different content types +const renderContentElement = ( + element, + index, + navigate, + paragraphWidth, + pageIcon, + isFirstTitle1, + gap +) => { + const { type, text } = element; + + switch (type) { + case "pageIcon": + // Don't render pageIcon standalone, it will be rendered with first title1 + return null; + case "title1": + return ( +

+ {isFirstTitle1 && pageIcon && ( + + )} + {renderText(text, navigate)} +

+ ); + case "title2": + return ( +

+ {renderText(text, navigate)} +

+ ); + case "title3": + return ( +

+ {renderText(text, navigate)} +

+ ); + case "title4": + return ( +

+ {renderText(text, navigate)} +

+ ); + case "paragraph": + return ( +

+ {renderText(text, navigate)} +

+ ); + case "divider": + return
; + case "list": { + const { ordered, children = [] } = element; + const ListTag = ordered ? "ol" : "ul"; + return ( + + {children.map((child, childIdx) => + renderContentElement( + child, + childIdx, + navigate, + paragraphWidth, + null, + false, + gap + ) + )} + + ); + } + case "listItem": { + // Support for nested lists inside list items + const { text = [], children = [] } = element; + + return ( +
  • + {text.length > 0 && {renderText(text, navigate)}} + {children.length > 0 && + children.map((child, childIdx) => + renderContentElement( + child, + childIdx, + navigate, + paragraphWidth, + null, + false, + gap + ) + )} + {/* If children are lists, they will be rendered here */} +
  • + ); + } + case "button": + return ( + + + + +
    + {scrollElements} +
    +
    + + + ); + } + } + + return renderedElements; + } + + return

    Invalid content format.

    ; + }; + + return renderContent(); +}; + +export default ContentRenderer; diff --git a/src/components/Experience/CompaniesList.jsx b/src/components/Experience/CompaniesList.jsx new file mode 100644 index 0000000..3a64fd5 --- /dev/null +++ b/src/components/Experience/CompaniesList.jsx @@ -0,0 +1,22 @@ +import PropTypes from "prop-types"; +import CompaniesListItem from "./CompaniesListItem.jsx"; +import { useCompanies } from "../../contexts/CompaniesContext"; + +const CompaniesList = () => { + const { companies } = useCompanies(); + return ( +
    +
    + {companies.map((company, i) => ( + + ))} +
    +
    + ); +}; + +CompaniesList.propTypes = { + companies: PropTypes.array, +}; + +export default CompaniesList; diff --git a/src/components/Experience/CompaniesListItem.jsx b/src/components/Experience/CompaniesListItem.jsx new file mode 100644 index 0000000..1cf7420 --- /dev/null +++ b/src/components/Experience/CompaniesListItem.jsx @@ -0,0 +1,39 @@ +import PropTypes from "prop-types"; +import { useNavigate } from "react-router-dom"; +import dayjs from "dayjs"; + +const CompaniesListItem = ({ companyData, key }) => { + const navigate = useNavigate(); + return ( +
    { + navigate(`/experience/${companyData.slug}`); + }} + > +
    +
    +

    + {companyData.duration?.start + ? dayjs(companyData.duration.start).format("MMM YYYY") + : "YEAR"} +

    +
    + {companyData?.logo && ( +
    + )} +
    +
    +
    + ); +}; + +CompaniesListItem.propTypes = { + key: PropTypes.any, + companyData: PropTypes.object, +}; + +export default CompaniesListItem; diff --git a/src/components/Experience/ExperiencePage.jsx b/src/components/Experience/ExperiencePage.jsx new file mode 100644 index 0000000..7d182fc --- /dev/null +++ b/src/components/Experience/ExperiencePage.jsx @@ -0,0 +1,154 @@ +import { useRef, memo, useMemo } from "react"; +import PropTypes from "prop-types"; +import { Layout } from "antd"; +import ContentRenderer from "../ContentRenderer"; +import { useMediaQuery } from "react-responsive"; +import { useSettingsContext } from "../../contexts/SettingsContext"; +import ShareButton from "../Buttons/ShareButton"; +import VisitButton from "../Buttons/VisitButton"; +import dayjs from "dayjs"; + +const { Content } = Layout; + +const ExperiencePage = memo(({ companyData }) => { + const settings = useSettingsContext(); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const isMobile = useMediaQuery({ maxWidth: 800 }); + const isFullHeight = !useMediaQuery({ maxHeight: 550 }); + const contentRef = useRef(null); + + const theme = useMemo( + () => + companyData?.theme != undefined + ? settings.themes.find((theme) => theme.name === companyData.theme) + : settings.globalThemes.experience, + [settings.themes, settings.globalThemes.experience, companyData] + ); + + const startDate = useMemo(() => { + return companyData?.duration?.start + ? dayjs(companyData.duration.start) + : null; + }, [companyData]); + const endDate = useMemo(() => { + return companyData?.duration?.end + ? dayjs(companyData.duration.end) + : dayjs(Date.now()); + }, [companyData]); + + const { years, months } = useMemo(() => { + if (!startDate || !endDate) { + return { years: 0, months: 0 }; + } + const totalMonths = endDate.diff(startDate, "month"); + const years = Math.floor(totalMonths / 12); + const months = totalMonths % 12; + return { years, months }; + }, [startDate, endDate]); + + if (companyData == null) { + return null; + } + + const companyHeader = ( +
    +
    + {companyData?.logo ? ( +
    + ) : ( +

    + {companyData?.name || "n/a"} +

    + )} +
    + {companyData?.externalLink && ( + + )} + +
    +
    + +
    +

    + {companyData?.duration?.start + ? dayjs(companyData.duration.start).format("MMMM YYYY") + : "START DATE"} + {" - "} + {companyData?.duration?.end + ? dayjs(companyData.duration.end).format("MMMM YYYY") + : "Present"} +

    +

    + {years > 0 && ( + <> + {years} {years === 1 ? "year " : "years "} + + )} + {months > 0 && ( + <> + {months} {months === 1 ? "month" : "months"} + + )} +

    +
    +
    + ); + + return ( +
    + +
    +
    + +
    +
    +
    +
    + ); +}); + +ExperiencePage.displayName = "ExperiencePage"; + +ExperiencePage.propTypes = { + companyData: PropTypes.object.isRequired, +}; + +export default ExperiencePage; diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx new file mode 100644 index 0000000..30c49d9 --- /dev/null +++ b/src/components/Footer.jsx @@ -0,0 +1,66 @@ +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import LinkIcon from "../icons/LinkIcon"; +import { useNavigate } from "react-router-dom"; +import { useSettingsContext } from "../contexts/SettingsContext"; +import AccountButton from "./Buttons/AccountButton"; +const Footer = ({ + pageData, + theme = null, + showAccount = true, + showLinks = false, + onAccountToggle = () => {}, + accountToggled = false, +}) => { + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const isMobile = useMediaQuery({ maxWidth: 800 }); + const navigate = useNavigate(); + const settings = useSettingsContext(); + return ( + <> +
    + + +
    +
    + + ); +}; + +Footer.propTypes = { + pageData: PropTypes.object, + theme: PropTypes.shape({ + backgroundColor: PropTypes.any, + textColor: PropTypes.any, + }), + showAccount: PropTypes.bool, + showLinks: PropTypes.bool, + onAccountToggle: PropTypes.func, + accountToggled: PropTypes.bool, +}; + +export default Footer; diff --git a/src/components/Forms/ContactForm.jsx b/src/components/Forms/ContactForm.jsx new file mode 100644 index 0000000..04794a2 --- /dev/null +++ b/src/components/Forms/ContactForm.jsx @@ -0,0 +1,148 @@ +import { useState, useRef } from "react"; +import axios from "axios"; +import CheckIcon from "../../icons/CheckIcon"; +import Turnstile from "./Turnstile"; +import { useNavigate } from "react-router-dom"; +import { useSettingsContext } from "../../contexts/SettingsContext.jsx"; +import LoadingIcon from "../../icons/LoadingIcon.jsx"; +import { useEffect } from "react"; +const apiUrl = import.meta.env.VITE_API_URL; +const turnstileKey = import.meta.env.VITE_TURNSTILE_KEY; + +const ContactForm = () => { + const navigate = useNavigate(); + const settings = useSettingsContext(); + const turnstileRef = useRef(null); // Ref for Turnstile + + const [formData, setFormData] = useState({ + name: "", + email: "", + message: "", + }); + + const [token, setToken] = useState(""); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [loadTurnstile, setLoadTurnstile] = useState(false); + + const handleChange = (e) => { + setFormData({ + ...formData, + [e.target.name]: e.target.value, + }); + }; + + useEffect(() => { + if (turnstileKey && turnstileKey != "") { + setTimeout(() => { + setLoadTurnstile(true); + }, 500); + } + }, []); + + const handleSubmit = async (e) => { + e.preventDefault(); + + if (!token) { + alert("Please complete the CAPTCHA"); + return; + } + + try { + setLoading(true); + // Send formData + token to your backend using axios + const response = await axios.post(`${apiUrl}/contact`, { + ...formData, + token, + }); + console.log(settings); + navigate(`/${settings.redirects.contactFormComplete}`); + console.log("Form submitted:", response.data); + } catch (error) { + console.error("Error submitting form:", error); + const errorData = error.response.data; + setError(errorData); + if (errorData.code.startsWith("captcha-")) { + turnstileRef.current.reset(); + } + } finally { + setLoading(false); + } + }; + + return ( +
    +
    +
    + +
    + +
    + +
    + +
    + +
    + + {/* Cloudflare Turnstile */} + {loadTurnstile == true && ( + setToken(token)} + /> + )} + +
    + + {error &&

    {error.message}

    } +
    + +
    + ); +}; + +export default ContactForm; diff --git a/src/components/Forms/Turnstile.jsx b/src/components/Forms/Turnstile.jsx new file mode 100644 index 0000000..6caca3f --- /dev/null +++ b/src/components/Forms/Turnstile.jsx @@ -0,0 +1,186 @@ +import { + useEffect, + useRef, + forwardRef, + useImperativeHandle, + useMemo, +} from "react"; +import PropTypes from "prop-types"; +import { useTheme } from "../../contexts/ThemeContext.jsx"; + +const Turnstile = forwardRef( + ({ siteKey = null, onVerify, theme = "auto", size = "normal" }, ref) => { + const widgetRef = useRef(null); + const widgetIdRef = useRef(null); + const onVerifyRef = useRef(onVerify); + const { theme: themeContext } = useTheme(); + + useEffect(() => { + onVerifyRef.current = onVerify; + }, [onVerify]); + + const isColorDark = (color) => { + if (typeof color !== "string" || color.length === 0) { + return false; + } + + const hexToRgb = (hex) => { + let normalized = hex.replace("#", ""); + + if (normalized.length === 3 || normalized.length === 4) { + normalized = normalized + .split("") + .map((char) => char + char) + .join(""); + } + + if (normalized.length !== 6 && normalized.length !== 8) { + return null; + } + + const bigint = Number.parseInt(normalized.slice(0, 6), 16); + + return { + r: (bigint >> 16) & 255, + g: (bigint >> 8) & 255, + b: bigint & 255, + }; + }; + + const parseRgbString = (value) => { + const match = value.match( + /^rgba?\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)(?:\s*,\s*(\d*\.?\d+))?\s*\)$/i + ); + + if (!match) { + return null; + } + + return { + r: Number.parseInt(match[1], 10), + g: Number.parseInt(match[2], 10), + b: Number.parseInt(match[3], 10), + a: match[4] !== undefined ? Number.parseFloat(match[4]) : 1, + }; + }; + + const toRgb = (value) => { + if (value.startsWith("#")) { + return hexToRgb(value); + } + + if (value.toLowerCase().startsWith("rgb")) { + return parseRgbString(value); + } + + return null; + }; + + const rgb = toRgb(color); + + if (!rgb) { + return false; + } + + const toLinear = (channel) => { + const channelNormalized = channel / 255; + return channelNormalized <= 0.03928 + ? channelNormalized / 12.92 + : ((channelNormalized + 0.055) / 1.055) ** 2.4; + }; + + const luminance = + 0.2126 * toLinear(rgb.r) + + 0.7152 * toLinear(rgb.g) + + 0.0722 * toLinear(rgb.b); + + return luminance < 0.5; + }; + + const resolvedTheme = useMemo(() => { + const backgroundColor = themeContext?.backgroundColor; + + if (!backgroundColor) { + if (typeof window === "undefined") { + return "light"; + } + + const computedBackground = + window + ?.getComputedStyle(document.body) + ?.getPropertyValue("background-color") ?? ""; + + return isColorDark(computedBackground) ? "dark" : "light"; + } + + return isColorDark(backgroundColor) ? "dark" : "light"; + }, [theme, themeContext?.backgroundColor]); + + // Expose reset function to parent via ref + useImperativeHandle(ref, () => ({ + reset: () => { + if (window.turnstile && widgetIdRef.current !== null) { + window.turnstile.reset(widgetIdRef.current); + } + }, + })); + + useEffect(() => { + if (!widgetRef.current) { + return; + } + + const cleanupWidget = () => { + if (window.turnstile && widgetIdRef.current !== null) { + window.turnstile.remove(widgetIdRef.current); + widgetIdRef.current = null; + } + }; + + const renderWidget = () => { + if (!window.turnstile) return; + + cleanupWidget(); + + widgetIdRef.current = window.turnstile.render(widgetRef.current, { + sitekey: siteKey, + theme: resolvedTheme, + size, + callback: (token) => { + if (typeof onVerifyRef.current === "function") { + onVerifyRef.current(token); + } + }, + }); + }; + + if (!document.getElementById("cf-turnstile-script")) { + const script = document.createElement("script"); + script.src = "https://challenges.cloudflare.com/turnstile/v0/api.js"; + script.id = "cf-turnstile-script"; + script.async = true; + document.body.appendChild(script); + script.onload = renderWidget; + } else { + renderWidget(); + } + + return cleanupWidget; + }, [siteKey, resolvedTheme, size]); + + return ( +
    + ); + } +); + +Turnstile.displayName = "Turnstile"; + +Turnstile.propTypes = { + siteKey: PropTypes.string.isRequired, + onVerify: PropTypes.func, + theme: PropTypes.string, + size: PropTypes.string, +}; + +export default Turnstile; diff --git a/src/components/Header.jsx b/src/components/Header.jsx new file mode 100644 index 0000000..e8818c9 --- /dev/null +++ b/src/components/Header.jsx @@ -0,0 +1,44 @@ +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import HeaderLogo from "./HeaderLogo"; +import MenuButton from "./Buttons/MenuButton"; +const Header = ({ + theme = null, + large = false, + showMenu = true, + onMenuToggle = () => {}, + menuToggled = false, +}) => { + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + return ( + <> +
    + + + {showMenu && ( + + )} +
    +
    + + ); +}; + +Header.propTypes = { + pageData: PropTypes.object, + theme: PropTypes.shape({ + backgroundColor: PropTypes.any, + textColor: PropTypes.any, + }), + large: PropTypes.bool, + showMenu: PropTypes.bool, + visible: PropTypes.bool, + onMenuToggle: PropTypes.func, + menuToggled: PropTypes.bool, +}; + +export default Header; diff --git a/src/components/HeaderLogo.jsx b/src/components/HeaderLogo.jsx new file mode 100644 index 0000000..6e9b9ad --- /dev/null +++ b/src/components/HeaderLogo.jsx @@ -0,0 +1,38 @@ +import PropTypes from "prop-types"; +import { useEffect } from "react"; +import { useSettingsContext } from "../contexts/SettingsContext"; +import LogoSvg from "../../assets/logo.svg?react"; +import { useNavigate } from "react-router-dom"; + +const HeaderLogo = ({ large = false, visible = true }) => { + const settings = useSettingsContext(); + const navigate = useNavigate(); + useEffect(() => {}, [large, settings.branding]); + + return ( +
    +
    { + navigate("/"); + }} + > + +
    +
    + ); +}; + +HeaderLogo.propTypes = { + currentTheme: PropTypes.string, + large: PropTypes.bool, + themes: PropTypes.shape({ + find: PropTypes.func, + }), + visible: PropTypes.bool, +}; + +export default HeaderLogo; diff --git a/src/components/Image.jsx b/src/components/Image.jsx new file mode 100644 index 0000000..bedc9a2 --- /dev/null +++ b/src/components/Image.jsx @@ -0,0 +1,249 @@ +import PropTypes from "prop-types"; +import { useState, useEffect, useRef } from "react"; +import { decode } from "blurhash"; +import { useImageContext } from "../contexts/ImageContext"; +import LoadingIcon from "../icons/LoadingIcon"; + +const Image = ({ src, alt, className, loading = "lazy", ...props }) => { + const { imageObjects, loadIndividualImage } = useImageContext(); + + const [blurhashCanvas, setBlurhashCanvas] = useState(null); + const [imageLoaded, setImageLoaded] = useState(false); + const [currentImageObj, setCurrentImageObj] = useState(null); + const [blurhashDataUrl, setBlurhashDataUrl] = useState(null); + const [imageDataUrl, setImageDataUrl] = useState(null); + const [renderError, setRenderError] = useState(false); + const [showError, setShowError] = useState(false); + const processedSrcRef = useRef(null); + + // Find the image object that matches the src + useEffect(() => { + if (src) { + const imageObj = imageObjects.find((img) => img.src === src); + setCurrentImageObj(imageObj || null); + // Reset processed state when src changes + if (processedSrcRef.current !== src) { + processedSrcRef.current = src; + setImageLoaded(false); + setBlurhashDataUrl(null); + setImageDataUrl(null); + } + } else { + setCurrentImageObj(null); + processedSrcRef.current = null; + setImageLoaded(false); + setBlurhashDataUrl(null); + setImageDataUrl(null); + } + }, [src, imageObjects]); + + // Load image when component renders and image is unloaded + useEffect(() => { + if (src && currentImageObj && currentImageObj.loadingState === "unloaded") { + loadIndividualImage(src); + } + }, [src, currentImageObj, loadIndividualImage]); + + // Generate blurhash canvas when blurhash is available + useEffect(() => { + if ( + currentImageObj?.blurHash && + !blurhashCanvas && + processedSrcRef.current === src + ) { + try { + const pixels = decode(currentImageObj.blurHash, 32, 32); + const canvas = document.createElement("canvas"); + canvas.width = 32; + canvas.height = 32; + const ctx = canvas.getContext("2d"); + const imageData = ctx.createImageData(32, 32); + imageData.data.set(pixels); + ctx.putImageData(imageData, 0, 0); + setBlurhashCanvas(canvas); + setBlurhashDataUrl(canvas.toDataURL()); + } catch (error) { + console.error("Failed to decode blurhash:", error); + } + } + }, [currentImageObj?.blurHash, blurhashCanvas, src]); + + // Convert image blob/object URL to base64 data URL (to match blurhash approach) + useEffect(() => { + const source = currentImageObj?.blob; + if (!source) { + setImageDataUrl(null); + return; + } + + // Already a data URL string + if (typeof source === "string" && source.startsWith("data:")) { + setImageDataUrl(source); + return; + } + + let isCancelled = false; + + const blobToDataUrl = (blob) => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => resolve(reader.result); + reader.onerror = reject; + reader.readAsDataURL(blob); + }); + + async function convert() { + try { + // If we already have a Blob instance + if (source instanceof Blob) { + const dataUrl = await blobToDataUrl(source); + if (!isCancelled) setImageDataUrl(dataUrl); + return; + } + // If we have a URL string (blob: or http/https), fetch and convert + if (typeof source === "string") { + const response = await fetch(source); + const blob = await response.blob(); + const dataUrl = await blobToDataUrl(blob); + if (!isCancelled) setImageDataUrl(dataUrl); + return; + } + setImageDataUrl(null); + } catch (error) { + console.error("Failed to convert image to base64:", error); + if (!isCancelled) setImageDataUrl(null); + } + } + + convert(); + return () => { + isCancelled = true; + }; + }, [currentImageObj?.blob]); + + // Handle image load + const handleImageLoad = () => { + setImageLoaded(true); + }; + + // Handle image error + const handleImageRetry = () => { + setImageLoaded(false); + loadIndividualImage(src); + }; + + // Handle image error + const handleImageError = () => { + setImageLoaded(false); + setCurrentImageObj({ ...currentImageObj, loadingState: "error" }); + }; + + const errorContent = ( +
    +

    Failed to load image

    + +
    + ); + + useEffect(() => { + const isError = currentImageObj?.loadingState === "error"; + + if (isError) { + setRenderError(true); + requestAnimationFrame(() => { + setShowError(true); + }); + } else if (renderError) { + setShowError(false); + } + }, [currentImageObj?.loadingState, renderError]); + + useEffect(() => { + if (!showError && renderError) { + const timeout = setTimeout(() => { + setRenderError(false); + }, 300); + + return () => clearTimeout(timeout); + } + + return undefined; + }, [showError, renderError]); + + // Render image container if image object exists + if (currentImageObj) { + return ( +
    + {imageLoaded == false && + currentImageObj && + currentImageObj.loadingState !== "error" && ( +
    +
    + +
    +
    + )} + {renderError ? ( +
    + {errorContent} +
    + ) : null} + {alt} + {imageDataUrl && ( + {alt} + )} +
    + ); + } + + // No src provided or no matching image object + return null; +}; + +Image.propTypes = { + alt: PropTypes.any, + className: PropTypes.string, + loading: PropTypes.string, + src: PropTypes.any, + style: PropTypes.object, +}; + +export default Image; diff --git a/src/components/LoadingModal.jsx b/src/components/LoadingModal.jsx new file mode 100644 index 0000000..e39b72b --- /dev/null +++ b/src/components/LoadingModal.jsx @@ -0,0 +1,58 @@ +import PropTypes from "prop-types"; +import { useEffect, useState, useRef } from "react"; +import TLoadingSvg from "../../assets/tloading.svg?react"; +import OLoadingSvg from "../../assets/oloading.svg?react"; +import MLoadingSvg from "../../assets/mloading.svg?react"; +import IconLoadingSvg from "../../assets/iconloading.svg?react"; + +const LoadingModal = ({ visible = true }) => { + const [show, setShow] = useState(visible); + const loadingIcons = [IconLoadingSvg, TLoadingSvg, OLoadingSvg, MLoadingSvg]; + const [currentIconIndex, setCurrentIconIndex] = useState(0); + + useEffect(() => { + let timeout; + if (visible) { + // show immediately + setShow(true); + } else { + // delay hiding by 50ms - reduced for faster transition + timeout = setTimeout(() => setShow(false), 50); + } + return () => clearTimeout(timeout); + }, [visible]); + + const interval = useRef(null); + + useEffect(() => { + if (visible) { + interval.current = setInterval(() => { + setCurrentIconIndex( + (prevIndex) => (prevIndex + 1) % loadingIcons.length + ); + }, 500); + + return () => clearInterval(interval.current); + } else { + clearInterval(interval.current); + } + }, [loadingIcons.length, visible]); + + const CurrentIcon = loadingIcons[currentIconIndex]; + + return ( +
    + +
    + ); +}; + +LoadingModal.propTypes = { + visible: PropTypes.bool, +}; + +export default LoadingModal; diff --git a/src/components/Menu/CVDownloadPopupMenu.jsx b/src/components/Menu/CVDownloadPopupMenu.jsx new file mode 100644 index 0000000..4689e57 --- /dev/null +++ b/src/components/Menu/CVDownloadPopupMenu.jsx @@ -0,0 +1,202 @@ +import { useState, useEffect, useRef, useMemo } from "react"; +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import DigitalIcon from "../../icons/DigitalIcon"; +import PrintIcon from "../../icons/PrintIcon"; +import DownloadFileIcon from "../../icons/DownloadFileIcon"; +import WebsiteSelectorIcon from "../../icons/WebsiteSelectorIcon"; +import CVVersionsSelectorPopup from "./CVVersionsSelectorPopup"; + +const CVDownloadPopupMenu = ({ + isVisible = false, + onClose = () => {}, + buttonRef = null, + cvs = [], +}) => { + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [position, setPosition] = useState({ top: 0, right: 0 }); + const popupRef = useRef(null); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const cvDigitalVersionsSelectorButtonRef = useRef(null); + const cvPrintVersionsSelectorButtonRef = useRef(null); + const [ + cvDigitalVersionsSelectorPopupVisible, + setCvDigitalVersionsSelectorPopupVisible, + ] = useState(false); + const [ + cvPrintVersionsSelectorPopupVisible, + setCvPrintVersionsSelectorPopupVisible, + ] = useState(false); + + const cvDigitalVersions = useMemo( + () => cvs.filter((cv) => cv.type === "digital"), + [cvs] + ); + const cvPrintVersions = useMemo( + () => cvs.filter((cv) => cv.type === "print"), + [cvs] + ); + + const handleDigitalVersionsSelectorButtonClick = () => { + setCvDigitalVersionsSelectorPopupVisible( + !cvDigitalVersionsSelectorPopupVisible + ); + }; + + const handlePrintVersionsSelectorButtonClick = () => { + setCvPrintVersionsSelectorPopupVisible( + !cvPrintVersionsSelectorPopupVisible + ); + }; + useEffect(() => { + if (isVisible) { + setShouldRender(true); + setIsExiting(false); + // Calculate position based on button + const updatePosition = () => { + if (buttonRef?.current) { + const rect = buttonRef.current.getBoundingClientRect(); + setPosition({ + top: rect.bottom + 10, + right: window.innerWidth - rect.right, + }); + } + }; + // Update position immediately and on resize + updatePosition(); + window.addEventListener("resize", updatePosition); + return () => window.removeEventListener("resize", updatePosition); + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); // Match animation duration + return () => clearTimeout(timer); + } + }, [isVisible, shouldRender, buttonRef]); + + // Handle click outside + useEffect(() => { + if (!shouldRender || isExiting) return; + + const handleClickOutside = (event) => { + if ( + popupRef.current && + !popupRef.current.contains(event.target) && + buttonRef?.current && + !buttonRef.current.contains(event.target) + ) { + onClose(); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting, onClose, buttonRef]); + + const handleDownload = (option) => { + // Handle download logic here + if (option.url) { + window.open(option.url, "_blank"); + } + onClose(); + }; + + if (!shouldRender) return null; + + return ( +
    +
    +
    +
    + +
    +
    +

    + Digital + +

    +

    + Dark background, light text. Best for emailing. +

    +
    + + +
    +
    +
    +
    + +
    +
    +

    + Printable + +

    +

    + Light background, dark text. Best for printing. +

    +
    + + +
    +
    + setCvDigitalVersionsSelectorPopupVisible(false)} + buttonRef={cvDigitalVersionsSelectorButtonRef} + options={cvDigitalVersions} + /> + setCvPrintVersionsSelectorPopupVisible(false)} + buttonRef={cvPrintVersionsSelectorButtonRef} + options={cvPrintVersions} + /> +
    + ); +}; + +CVDownloadPopupMenu.propTypes = { + isVisible: PropTypes.bool, + onClose: PropTypes.func, + buttonRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLElement), + }), + cvs: PropTypes.array, +}; + +export default CVDownloadPopupMenu; diff --git a/src/components/Menu/CVVersionsSelectorPopup.jsx b/src/components/Menu/CVVersionsSelectorPopup.jsx new file mode 100644 index 0000000..4c441a0 --- /dev/null +++ b/src/components/Menu/CVVersionsSelectorPopup.jsx @@ -0,0 +1,140 @@ +import { useState, useEffect, useRef } from "react"; +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; + +const CVVersionsSelectorPopup = ({ + isVisible = false, + onClose = () => {}, + buttonRef = null, + options = [], +}) => { + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [position, setPosition] = useState({ top: 0, right: 0 }); + const popupRef = useRef(null); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + + useEffect(() => { + if (isVisible) { + setShouldRender(true); + setIsExiting(false); + const updatePosition = () => { + if (buttonRef?.current) { + const rect = buttonRef.current.getBoundingClientRect(); + setPosition({ + top: rect.bottom + 10, + right: window.innerWidth - rect.right, + }); + } + }; + + updatePosition(); + window.addEventListener("resize", updatePosition); + return () => window.removeEventListener("resize", updatePosition); + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); + return () => clearTimeout(timer); + } + }, [isVisible, shouldRender, buttonRef]); + + useEffect(() => { + if (!shouldRender || isExiting) return undefined; + + const handleClickOutside = (event) => { + if ( + popupRef.current && + !popupRef.current.contains(event.target) && + buttonRef?.current && + !buttonRef.current.contains(event.target) + ) { + onClose(); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting, onClose, buttonRef]); + + const handleOptionSelect = (option) => { + if (typeof option.onClick === "function") { + option.onClick(option); + } else if (option.url) { + window.open(option.url, "_blank"); + } + onClose(); + }; + + if (!shouldRender || options.length === 0) return null; + + return ( +
    +
    +
    + {options.map((option, index) => ( + + ))} +
    +
    +
    + ); +}; + +CVVersionsSelectorPopup.propTypes = { + isVisible: PropTypes.bool, + onClose: PropTypes.func, + buttonRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLElement), + }), + options: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + label: PropTypes.string.isRequired, + icon: PropTypes.node, + trailingIcon: PropTypes.node, + url: PropTypes.string, + onClick: PropTypes.func, + }) + ), +}; + +export default CVVersionsSelectorPopup; diff --git a/src/components/Menu/SharePopupMenu.jsx b/src/components/Menu/SharePopupMenu.jsx new file mode 100644 index 0000000..242cdd4 --- /dev/null +++ b/src/components/Menu/SharePopupMenu.jsx @@ -0,0 +1,201 @@ +import { useState, useEffect, useRef } from "react"; +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import { + FaTwitter, + FaFacebookF, + FaLinkedinIn, + FaRedditAlien, + FaEnvelope, + FaLink, +} from "react-icons/fa"; + +const SharePopupMenu = ({ + isVisible = false, + onClose = () => {}, + buttonRef = null, + url = null, + title = null, +}) => { + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [position, setPosition] = useState({ top: 0, right: 0 }); + const [copied, setCopied] = useState(false); + const popupRef = useRef(null); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + + // Get current page URL if not provided + const shareUrl = url || window.location.href; + const shareTitle = title || document.title; + + useEffect(() => { + if (isVisible) { + setShouldRender(true); + setIsExiting(false); + // Calculate position based on button + const updatePosition = () => { + if (buttonRef?.current) { + const rect = buttonRef.current.getBoundingClientRect(); + setPosition({ + top: rect.bottom + 10, + right: window.innerWidth - rect.right, + }); + } + }; + // Update position immediately and on resize + updatePosition(); + window.addEventListener("resize", updatePosition); + return () => window.removeEventListener("resize", updatePosition); + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); // Match animation duration + return () => clearTimeout(timer); + } + }, [isVisible, shouldRender, buttonRef]); + + // Handle click outside + useEffect(() => { + if (!shouldRender || isExiting) return; + + const handleClickOutside = (event) => { + if ( + popupRef.current && + !popupRef.current.contains(event.target) && + buttonRef?.current && + !buttonRef.current.contains(event.target) + ) { + onClose(); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting, onClose, buttonRef]); + + const shareOptions = [ + { + name: "Twitter", + url: `https://twitter.com/intent/tweet?url=${encodeURIComponent( + shareUrl + )}&text=${encodeURIComponent(shareTitle)}`, + icon: FaTwitter, + }, + { + name: "Facebook", + url: `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent( + shareUrl + )}`, + icon: FaFacebookF, + }, + { + name: "LinkedIn", + url: `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent( + shareUrl + )}`, + icon: FaLinkedinIn, + }, + { + name: "Reddit", + url: `https://reddit.com/submit?url=${encodeURIComponent( + shareUrl + )}&title=${encodeURIComponent(shareTitle)}`, + icon: FaRedditAlien, + }, + { + name: "Email", + url: `mailto:?subject=${encodeURIComponent( + shareTitle + )}&body=${encodeURIComponent(shareUrl)}`, + icon: FaEnvelope, + }, + ]; + + const handleShare = (option) => { + if (option.name === "Copy Link") { + navigator.clipboard.writeText(shareUrl).then(() => { + setCopied(true); + setTimeout(() => { + setCopied(false); + onClose(); + }, 1000); + }); + } else { + window.open(option.url, "_blank", "width=600,height=400"); + onClose(); + } + }; + + const handleCopyLink = () => { + navigator.clipboard.writeText(shareUrl).then(() => { + setCopied(true); + setTimeout(() => { + setCopied(false); + onClose(); + }, 1000); + }); + }; + + if (!shouldRender) return null; + + return ( +
    +
    +
    + {shareOptions.map((option, index) => ( + + ))} + +
    +
    +
    + ); +}; + +SharePopupMenu.propTypes = { + isVisible: PropTypes.bool, + onClose: PropTypes.func, + buttonRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLElement), + }), + url: PropTypes.string, + title: PropTypes.string, +}; + +export default SharePopupMenu; diff --git a/src/components/Menu/WebsiteSelectorPopupMenu.jsx b/src/components/Menu/WebsiteSelectorPopupMenu.jsx new file mode 100644 index 0000000..be24f61 --- /dev/null +++ b/src/components/Menu/WebsiteSelectorPopupMenu.jsx @@ -0,0 +1,142 @@ +import { useState, useEffect, useRef } from "react"; +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import Website2024 from "../../svgs/Website2024"; +import Website2025 from "../../svgs/Website2025"; +import Website2026 from "../../svgs/Website2026"; + +const WebsiteSelectorPopupMenu = ({ + isVisible = false, + onClose = () => {}, + buttonRef = null, + websiteOptions = [ + { svg: , year: "2026", url: "https://tombutcher.work" }, + { svg: , year: "2025", url: "https://2025.tombutcher.work" }, + { svg: , year: "2024", url: "https://2024.tombutcher.work" }, + ], +}) => { + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [position, setPosition] = useState({ top: 0 }); + const popupRef = useRef(null); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + + useEffect(() => { + if (isVisible) { + setShouldRender(true); + setIsExiting(false); + // Calculate position based on button + const updatePosition = () => { + if (buttonRef?.current) { + const rect = buttonRef.current.getBoundingClientRect(); + + if (window.innerWidth < 450) { + console.log(rect.left); + setPosition({ + top: rect.bottom + 10, + left: rect.left, + }); + } else { + setPosition({ + top: rect.bottom + 10, + right: window.innerWidth - rect.right, + }); + } + } + }; + // Update position immediately and on resize + updatePosition(); + window.addEventListener("resize", updatePosition); + return () => window.removeEventListener("resize", updatePosition); + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); // Match animation duration + return () => clearTimeout(timer); + } + }, [isVisible, shouldRender, buttonRef]); + + // Handle click outside + useEffect(() => { + if (!shouldRender || isExiting) return; + + const handleClickOutside = (event) => { + if ( + popupRef.current && + !popupRef.current.contains(event.target) && + buttonRef?.current && + !buttonRef.current.contains(event.target) + ) { + onClose(); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting, onClose, buttonRef]); + + const handleWebsiteSelect = (option) => { + // Navigate to the selected website + if (option.url) { + window.location.href = option.url; + } + onClose(); + }; + + if (!shouldRender) return null; + + return ( +
    +
    +
    + {websiteOptions.map((option, index) => ( + + ))} +
    +
    +
    + ); +}; + +WebsiteSelectorPopupMenu.propTypes = { + isVisible: PropTypes.bool, + onClose: PropTypes.func, + buttonRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLElement), + }), + websiteOptions: PropTypes.arrayOf( + PropTypes.shape({ + label: PropTypes.string.isRequired, + year: PropTypes.string.isRequired, + url: PropTypes.string.isRequired, + }) + ), +}; + +export default WebsiteSelectorPopupMenu; diff --git a/src/components/Page.jsx b/src/components/Page.jsx new file mode 100644 index 0000000..fbbbed5 --- /dev/null +++ b/src/components/Page.jsx @@ -0,0 +1,110 @@ +import { useRef, memo, useMemo, useState, useEffect } from "react"; +import PropTypes from "prop-types"; +import { Layout } from "antd"; +import ContentRenderer from "./ContentRenderer"; +import ScrollIcon from "../icons/ScrollIcon"; +import { useMediaQuery } from "react-responsive"; +import { useSettingsContext } from "../contexts/SettingsContext"; +import ParticlesBackground from "./ParticlesBackground"; + +const { Content } = Layout; + +const Page = memo(({ pageData, particlesVisible }) => { + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const isMobile = useMediaQuery({ maxWidth: 800 }); + const isFullHeight = !useMediaQuery({ maxHeight: 550 }); + const contentRef = useRef(null); + const settings = useSettingsContext(); + const [delayedParticlesVisible, setDelayedParticlesVisible] = useState(false); + + const theme = useMemo( + () => settings.themes.find((theme) => theme.name === pageData.theme), + [settings.themes, pageData.theme] + ); + + useEffect(() => { + if (particlesVisible) { + const timer = setTimeout(() => { + setDelayedParticlesVisible(true); + }, 100); + + return () => clearTimeout(timer); + } else { + setDelayedParticlesVisible(false); + } + }, [particlesVisible]); + + return ( +
    + {pageData?.gradientBackground == true && particlesVisible == true && ( + + )} + + +
    +
    + + {pageData?.showScroll == true && } +
    +
    +
    +
    + ); +}); + +Page.displayName = "Page"; + +Page.propTypes = { + id: PropTypes.number, + pageData: PropTypes.object, + theme: PropTypes.shape({ + backgroundColor: PropTypes.any, + textColor: PropTypes.any, + }), + isSubPage: PropTypes.bool, + showClose: PropTypes.bool, + showMenu: PropTypes.bool, + themes: PropTypes.any, + onClose: PropTypes.func, + particlesVisible: PropTypes.bool, +}; + +export default Page; diff --git a/src/components/ParticlesBackground.jsx b/src/components/ParticlesBackground.jsx new file mode 100644 index 0000000..e92f12e --- /dev/null +++ b/src/components/ParticlesBackground.jsx @@ -0,0 +1,177 @@ +import PropTypes from "prop-types"; +import React, { + useState, + useEffect, + useMemo, + useCallback, + useRef, +} from "react"; +import Particles, { initParticlesEngine } from "@tsparticles/react"; +import { loadSlim } from "@tsparticles/slim"; +import convert from "color-convert"; + +const ParticlesComponent = React.memo(({ id, options, particlesLoaded }) => { + return ( + <> + +
    + + ); +}); + +ParticlesComponent.propTypes = { + id: PropTypes.string.isRequired, + options: PropTypes.any, + particlesLoaded: PropTypes.any, +}; + +ParticlesComponent.displayName = "ParticlesComponent"; + +const ParticlesBackground = ({ id, theme, visible }) => { + // Memoize colors to prevent glitching from unnecessary recalculations + const colors = useMemo(() => { + // Generate three transitional hues between backgroundColor and textColor + if (!theme?.backgroundColor || !theme?.textColor) { + return []; + } + + try { + // Convert hex colors to RGB arrays using color-convert + const bgColor = convert.hex.rgb(theme.backgroundColor.replace("#", "")); + const textColor = convert.hex.rgb(theme.textColor.replace("#", "")); + + // Generate 3 intermediate colors + const generatedColors = []; + for (let i = 0; i <= 2; i++) { + const ratio = i / 12; // 0, 0.5, 1 + const r = Math.round(bgColor[0] + (textColor[0] - bgColor[0]) * ratio); + const g = Math.round(bgColor[1] + (textColor[1] - bgColor[1]) * ratio); + const b = Math.round(bgColor[2] + (textColor[2] - bgColor[2]) * ratio); + + // Convert RGB back to hex using color-convert + const hexColor = "#" + convert.rgb.hex(r, g, b); + generatedColors.push(hexColor); + } + + return generatedColors; + } catch (error) { + console.error("Error generating colors:", error); + return ["#FF00A1", "#0310FF", "#2DE2FF"]; + } + }, [theme?.backgroundColor, theme?.textColor]); + const [init, setInit] = useState(false); + const instanceId = useRef( + id || `tsparticles-${Math.random().toString(36).substr(2, 9)}` + ); + + // this should be run only once per application lifetime + useEffect(() => { + initParticlesEngine(async (engine) => { + await loadSlim(engine); + }).then(() => { + setInit(true); + }); + }, []); + + const particlesLoaded = useCallback((container) => { + console.log(container); + }, []); + + const options = useMemo( + () => ({ + background: { + color: { + value: theme?.backgroundColor, + }, + }, + fpsLimit: 120, + interactivity: { + events: { + onClick: { + enable: false, + mode: "push", + }, + onHover: { + enable: true, + mode: "repulse", + }, + }, + modes: { + push: { + quantity: 4, + }, + repulse: { + distance: 100, + duration: 5, + }, + }, + }, + particles: { + color: { + value: colors, + }, + links: { + color: "#ffffff", + distance: 150, + enable: true, + opacity: 0.0, + width: 0, + }, + move: { + direction: "none", + enable: true, + outModes: { + default: "out", + }, + random: true, + speed: 1, + straight: false, + }, + number: { + density: { + enable: true, + }, + value: 400, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + size: { + value: { min: 100, max: 300 }, + }, + }, + detectRetina: true, + }), + [colors] + ); + return ( + <> + {init && theme?.backgroundColor && theme?.textColor && ( +
    + +
    + )} + + ); +}; + +ParticlesBackground.propTypes = { + id: PropTypes.string, + theme: PropTypes.object, + visible: PropTypes.bool, +}; + +export default React.memo(ParticlesBackground); diff --git a/src/components/Projects/ProjectCard.jsx b/src/components/Projects/ProjectCard.jsx new file mode 100644 index 0000000..408b664 --- /dev/null +++ b/src/components/Projects/ProjectCard.jsx @@ -0,0 +1,39 @@ +import PropTypes from "prop-types"; +import { useNavigate } from "react-router-dom"; +import Image from "../Image"; +import ProjectStatus from "./ProjectStatus"; + +const ProjectCard = ({ projectData, key }) => { + const navigate = useNavigate(); + return ( +
    { + navigate(`/projects/${projectData.slug}`); + }} + > +
    +
    + {projectData?.image ? ( + {projectData?.name} + ) : ( +
    No Image
    + )} +
    +
    +

    {projectData?.name}

    + {projectData?.status && projectData?.status !== "complete" && ( + + )} +
    +
    +
    + ); +}; + +ProjectCard.propTypes = { + key: PropTypes.any, + projectData: PropTypes.object, +}; + +export default ProjectCard; diff --git a/src/components/Projects/ProjectCards.jsx b/src/components/Projects/ProjectCards.jsx new file mode 100644 index 0000000..929ca50 --- /dev/null +++ b/src/components/Projects/ProjectCards.jsx @@ -0,0 +1,21 @@ +import ProjectCard from "./ProjectCard"; + +import { useProjects } from "../../contexts/ProjectsContext"; + +const ProjectCards = () => { + const { projects } = useProjects(); + + return ( +
    +
    + {projects.map((project, i) => ( + + ))} +
    +
    + ); +}; + +ProjectCards.propTypes = {}; + +export default ProjectCards; diff --git a/src/components/Projects/ProjectPage.jsx b/src/components/Projects/ProjectPage.jsx new file mode 100644 index 0000000..b75a6fd --- /dev/null +++ b/src/components/Projects/ProjectPage.jsx @@ -0,0 +1,134 @@ +import { useRef, memo, useMemo } from "react"; +import PropTypes from "prop-types"; +import { Layout } from "antd"; +import ContentRenderer from "../ContentRenderer"; +import { useMediaQuery } from "react-responsive"; +import ShareButton from "../Buttons/ShareButton"; +import VisitButton from "../Buttons/VisitButton"; +import ProjectStatus from "./ProjectStatus"; +import { useSettingsContext } from "../../contexts/SettingsContext"; + +const { Content } = Layout; + +const ProjectPage = memo(({ projectData }) => { + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + const isMobile = useMediaQuery({ maxWidth: 800 }); + const isFullHeight = !useMediaQuery({ maxHeight: 550 }); + const contentRef = useRef(null); + const settings = useSettingsContext(); + + const theme = useMemo( + () => + projectData?.theme != undefined + ? settings.themes.find((theme) => theme.name === projectData.theme) + : settings.globalThemes.project, + [settings.themes, settings.globalThemes.project, projectData] + ); + + if (projectData == null) { + return null; + } + + const projectHeader = ( +
    +
    +

    + {projectData?.name || "n/a"} +

    +
    + {projectData?.externalLink && ( + + )} + +
    +
    + +
    +
    +

    + {projectData?.subTitle || "n/a"} +

    +
    +

    + Client: + {projectData?.client || "n/a"} +

    +
    + {projectData?.tools?.map((tool) => ( +

    + {tool} +

    + ))} +
    +
    +
    +
    +

    {projectData?.date || "n/a"}

    +
    + {projectData?.status && projectData?.status !== "complete" && ( + + )} +

    + {projectData?.type || "n/a"} +

    +
    +
    +
    +
    + ); + + return ( +
    + +
    +
    + +
    +
    +
    +
    + ); +}); + +ProjectPage.displayName = "ProjectPage"; + +ProjectPage.propTypes = { + projectData: PropTypes.object.isRequired, +}; + +export default ProjectPage; diff --git a/src/components/Projects/ProjectStatus.jsx b/src/components/Projects/ProjectStatus.jsx new file mode 100644 index 0000000..8c63b16 --- /dev/null +++ b/src/components/Projects/ProjectStatus.jsx @@ -0,0 +1,22 @@ +import PropTypes from "prop-types"; + +const ProjectStatus = ({ status }) => { + const statusName = + status === "planned" + ? "Planned" + : status === "inProgress" + ? "In Progress" + : "Complete"; + + return ( +

    + {statusName} +

    + ); +}; + +ProjectStatus.propTypes = { + status: PropTypes.string, +}; + +export default ProjectStatus; diff --git a/src/components/SubPage.jsx b/src/components/SubPage.jsx new file mode 100644 index 0000000..2b9f42c --- /dev/null +++ b/src/components/SubPage.jsx @@ -0,0 +1,97 @@ +import PropTypes from "prop-types"; +import { useState, useEffect, useRef } from "react"; +import { useMediaQuery } from "react-responsive"; + +export default function SubPage({ + visible = false, + children, + mousePosition, + skipAnimation = false, +}) { + const isMobile = useMediaQuery({ maxWidth: 800 }); + const [isExiting, setIsExiting] = useState(false); + const [shouldRender, setShouldRender] = useState(false); + const [shouldAnimate, setShouldAnimate] = useState(false); + + const mousePositionRef = useRef(null); + const capturedMousePositionRef = useRef(null); + + useEffect(() => { + mousePositionRef.current = mousePosition; + }, [mousePosition]); + + useEffect(() => { + if (visible === true) { + setIsExiting(false); + setShouldAnimate(false); + capturedMousePositionRef.current = mousePositionRef.current; + // Ensure DOM is ready before showing - use double requestAnimationFrame for Edge compatibility + // First frame: render element with initial state (no enter class yet) + requestAnimationFrame(() => { + setShouldRender(true); + // Second frame: ensure browser has painted initial state before adding enter class + requestAnimationFrame(() => { + setShouldAnimate(true); + }); + }); + // Capture mouse position when becoming visible + } else if (visible === false) { + setIsExiting(true); + capturedMousePositionRef.current = mousePositionRef.current; + setShouldRender(false); + setShouldAnimate(false); + // Capture mouse position when becoming hidden (for exit animation) + } + }, [visible]); + + const wrapperClass = isMobile + ? "tb-mobile-sub-page-wrapper" + : "tb-sub-page-wrapper"; + const animationClass = skipAnimation + ? "" + : isExiting + ? `${wrapperClass}-exit` + : shouldAnimate + ? `${wrapperClass}-enter` + : ""; + + if (!visible && !shouldRender) { + return null; + } + + const skipAnimationClass = skipAnimation ? "tb-skip-animation" : ""; + + return ( +
    + {/* Full height panel */} +
    + {children} +
    +
    + ); +} + +SubPage.propTypes = { + children: PropTypes.any, + visible: PropTypes.bool, + mousePosition: PropTypes.shape({ + x: PropTypes.number, + y: PropTypes.number, + }), + skipAnimation: PropTypes.bool, +}; diff --git a/src/components/Video.jsx b/src/components/Video.jsx new file mode 100644 index 0000000..15bd7d0 --- /dev/null +++ b/src/components/Video.jsx @@ -0,0 +1,570 @@ +import PropTypes from "prop-types"; +import { useEffect, useMemo, useRef, useState, useCallback } from "react"; +import { useVideoContext } from "../contexts/VideoContext"; +import LoadingIcon from "../icons/LoadingIcon"; +import FullScreenIcon from "../icons/FullScreenIcon"; +import PlayIcon from "../icons/PlayIcon"; +import PauseIcon from "../icons/PauseIcon"; +import ExitFullScreenIcon from "../icons/ExitFullScreenIcon"; +import Slider from "rc-slider"; +import "rc-slider/assets/index.css"; +import VideoVolume from "./VideoVolume"; +import Volume1Icon from "../icons/Volume1Icon"; +import Volume2Icon from "../icons/Volume2Icon"; +import Volume3Icon from "../icons/Volume3Icon"; +import MuteIcon from "../icons/MuteIcon"; + +const Video = ({ src, mirrorUrl = null, className, poster, ...props }) => { + const { videoStates, loadVideo, getVideoUrl } = useVideoContext(); + + const containerRef = useRef(null); + const videoRef = useRef(null); + const processedSrcRef = useRef(null); + const muteButtonRef = useRef(null); + + const getFullscreenElement = useCallback(() => { + if (typeof document === "undefined") return null; + // Cross-browser fullscreen element getter + return ( + document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.msFullscreenElement || + null + ); + }, []); + + const [videoLoaded, setVideoLoaded] = useState(false); + const [renderError, setRenderError] = useState(false); + const [showError, setShowError] = useState(false); + const [isPlaying, setIsPlaying] = useState(false); + const [isMuted, setIsMuted] = useState(true); + const [volume, setVolume] = useState(0); + const [duration, setDuration] = useState(0); + const [currentTime, setCurrentTime] = useState(0); + const [controlsVisible, setControlsVisible] = useState(false); + const hideControlsTimeoutRef = useRef(null); + const [isHoveringMute, setIsHoveringMute] = useState(false); + const [isHoveringVolumePopup, setIsHoveringVolumePopup] = useState(false); + const [hideVolumeTimeout, setHideVolumeTimeout] = useState(null); + const [isFullscreen, setIsFullscreen] = useState(false); + + const currentVideoState = src ? videoStates[src] : null; + const objectUrl = useMemo( + () => (src ? getVideoUrl(src) : null), + [getVideoUrl, src] + ); + + useEffect(() => { + // If volume is set to zero, ensure muted state is true. + // Increasing volume will unmute via handleVolumeSlider. + if (volume === 0) { + const el = videoRef.current; + if (el) el.muted = true; + setIsMuted(true); + } + }, [volume]); + + // Reset markers when src changes + useEffect(() => { + if (processedSrcRef.current !== src) { + processedSrcRef.current = src; + setVideoLoaded(false); + setRenderError(false); + setShowError(false); + setIsPlaying(false); + setIsMuted(true); + setCurrentTime(0); + setDuration(0); + } + }, [src]); + + // Load video when unloaded + useEffect(() => { + if (!src) return; + if (!currentVideoState || currentVideoState.loadingState === "unloaded") { + void loadVideo(src, mirrorUrl); + } + }, [src, currentVideoState, loadVideo, mirrorUrl]); + + // Wire basic video element handlers when source becomes available + useEffect(() => { + const el = videoRef.current; + if (!el) return; + + // iOS Safari native fullscreen events + const handleBeginFullscreen = () => setIsFullscreen(true); + const handleEndFullscreen = () => setIsFullscreen(false); + + const handleLoadedMetadata = () => { + setDuration(el.duration || 0); + }; + const handleCanPlay = () => { + setVideoLoaded(true); + }; + const handleTimeUpdate = () => { + setCurrentTime(el.currentTime || 0); + }; + const handlePlay = () => setIsPlaying(true); + const handlePause = () => setIsPlaying(false); + const handleError = () => { + setVideoLoaded(false); + setRenderError(true); + }; + + el.addEventListener("loadedmetadata", handleLoadedMetadata); + el.addEventListener("canplay", handleCanPlay); + el.addEventListener("timeupdate", handleTimeUpdate); + el.addEventListener("play", handlePlay); + el.addEventListener("pause", handlePause); + el.addEventListener("error", handleError); + el.addEventListener("webkitbeginfullscreen", handleBeginFullscreen); + el.addEventListener("webkitendfullscreen", handleEndFullscreen); + return () => { + el.removeEventListener("loadedmetadata", handleLoadedMetadata); + el.removeEventListener("canplay", handleCanPlay); + el.removeEventListener("timeupdate", handleTimeUpdate); + el.removeEventListener("play", handlePlay); + el.removeEventListener("pause", handlePause); + el.removeEventListener("error", handleError); + el.removeEventListener("webkitbeginfullscreen", handleBeginFullscreen); + el.removeEventListener("webkitendfullscreen", handleEndFullscreen); + }; + }, [objectUrl]); + + // Ensure muted autoplay when a source becomes available + useEffect(() => { + const el = videoRef.current; + if (!el || !objectUrl) return; + el.muted = true; + const maybePromise = el.play(); + if (maybePromise && typeof maybePromise.then === "function") { + maybePromise.catch(() => { + // Autoplay can be blocked in edge cases; ignore errors silently. + }); + } + }, [objectUrl]); + + // Listen for fullscreen change events (cross-browser) and track state + useEffect(() => { + const handleFullscreenChange = () => { + setIsFullscreen(Boolean(getFullscreenElement())); + }; + // Initial sync + handleFullscreenChange(); + document.addEventListener("fullscreenchange", handleFullscreenChange); + document.addEventListener("webkitfullscreenchange", handleFullscreenChange); + document.addEventListener("mozfullscreenchange", handleFullscreenChange); + document.addEventListener("MSFullscreenChange", handleFullscreenChange); + return () => { + document.removeEventListener("fullscreenchange", handleFullscreenChange); + document.removeEventListener( + "webkitfullscreenchange", + handleFullscreenChange + ); + document.removeEventListener( + "mozfullscreenchange", + handleFullscreenChange + ); + document.removeEventListener( + "MSFullscreenChange", + handleFullscreenChange + ); + }; + }, [getFullscreenElement]); + + // Show controls on mouse movement, then auto-hide after a delay + const showControlsTemporarily = useCallback(() => { + setControlsVisible(true); + if (hideControlsTimeoutRef.current) { + clearTimeout(hideControlsTimeoutRef.current); + } + hideControlsTimeoutRef.current = setTimeout(() => { + setIsHoveringMute(false); + setIsHoveringVolumePopup(false); + setControlsVisible(false); + }, 2500); + }, []); + + useEffect(() => { + return () => { + if (hideControlsTimeoutRef.current) { + clearTimeout(hideControlsTimeoutRef.current); + } + }; + }, []); + + const handleRetry = useCallback(() => { + setVideoLoaded(false); + setRenderError(false); + setShowError(false); + if (src) { + void loadVideo(src, mirrorUrl); + } + }, [loadVideo, mirrorUrl, src]); + + const togglePlay = useCallback(() => { + const el = videoRef.current; + if (!el) return; + if (el.paused) { + void el.play(); + } else { + el.pause(); + } + }, []); + + const handleSeekSlider = useCallback( + (value) => { + const el = videoRef.current; + if (!el || !duration) return; + const next = Number(value); + el.currentTime = Math.min(Math.max(next, 0), duration); + setCurrentTime(el.currentTime); + }, + [duration] + ); + + const handleVolumeSlider = useCallback( + (value) => { + const el = videoRef.current; + if (!el) return; + const v = Number(value); + el.volume = v; + setVolume(v); + if (v > 0 && isMuted) { + el.muted = false; + setIsMuted(false); + } + if (v == 0) { + setIsMuted(true); + } else { + setIsMuted(false); + } + }, + [isMuted] + ); + + const toggleMute = useCallback(() => { + const el = videoRef.current; + if (!el) return; + const next = !isMuted; + el.muted = next; + setIsMuted(next); + if (next == true) { + setVolume(0); + } else if (next == false && volume <= 0.01) { + setVolume(1); + el.volume = 1; + } else { + setVolume(volume); + } + }, [isMuted, volume]); + + const toggleFullscreen = useCallback(() => { + const container = containerRef.current; + const video = videoRef.current; + if (!container) return; + const fsEl = + document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.msFullscreenElement; + if (fsEl) { + if (document.exitFullscreen) { + void document.exitFullscreen(); + } else if (document.webkitExitFullscreen) { + void document.webkitExitFullscreen(); + } else if (document.mozCancelFullScreen) { + void document.mozCancelFullScreen(); + } else if (document.msExitFullscreen) { + void document.msExitFullscreen(); + } + return; + } + // Prefer container fullscreen where supported + if (container.requestFullscreen) { + void container.requestFullscreen(); + } else if (container.webkitRequestFullscreen) { + void container.webkitRequestFullscreen(); + } else if (container.mozRequestFullScreen) { + void container.mozRequestFullScreen(); + } else if (container.msRequestFullscreen) { + void container.msRequestFullscreen(); + } else if (video && typeof video.webkitEnterFullscreen === "function") { + // iOS Safari: fall back to native video fullscreen + try { + video.webkitEnterFullscreen(); + } catch { + // no-op: some iOS versions require user gesture; button click qualifies + } + } + }, []); + + const clearHideVolumeTimeout = useCallback(() => { + if (hideVolumeTimeout) { + clearTimeout(hideVolumeTimeout); + setHideVolumeTimeout(null); + } + }, [hideVolumeTimeout]); + + const scheduleHideVolume = useCallback( + (delayMs = 150) => { + clearHideVolumeTimeout(); + const t = setTimeout(() => { + setIsHoveringMute(false); + //setIsHoveringVolumePopup(false); + }, delayMs); + setHideVolumeTimeout(t); + }, + [clearHideVolumeTimeout] + ); + + useEffect(() => { + return () => { + if (hideVolumeTimeout) { + clearTimeout(hideVolumeTimeout); + } + }; + }, [hideVolumeTimeout]); + + // Error UI (mirrors Image.jsx approach) + useEffect(() => { + const isError = currentVideoState?.loadingState === "error" || renderError; + if (isError) { + setRenderError(true); + requestAnimationFrame(() => setShowError(true)); + } else if (renderError) { + setShowError(false); + } + }, [currentVideoState?.loadingState, renderError]); + + useEffect(() => { + if (!showError && renderError) { + const timeout = setTimeout(() => setRenderError(false), 300); + return () => clearTimeout(timeout); + } + return undefined; + }, [showError, renderError]); + + const errorContent = ( +
    +

    Failed to load video

    + +
    + ); + + // Render + return ( +
    + {/* Loading overlay (reuse styles from Image.jsx) */} + {videoLoaded == false && + (!currentVideoState || currentVideoState.loadingState !== "error") && ( +
    +
    + {typeof currentVideoState?.progress === "number" && + isFinite(currentVideoState.progress) ? ( +
    +
    +
    + ) : ( + + )} +
    +
    + )} + {/* Error overlay */} + {renderError ? ( +
    + {errorContent} +
    + ) : null} + {/* Placeholder panel using tb-textColor @ 50% */} + {!objectUrl &&
    } + + {/* Video element once loaded */} + {objectUrl && ( +
    +
    + )} + + {/* Custom controls, themed like MenuContext buttons */} + {videoLoaded == true && ( + <> +
    + +
    + +
    + +
    + +
    + { + setIsHoveringMute(false); + setIsHoveringVolumePopup(false); + }} + buttonRef={muteButtonRef} + volume={volume} + onChange={handleVolumeSlider} + disabled={!objectUrl} + onMouseEnter={() => { + clearHideVolumeTimeout(); + setIsHoveringVolumePopup(true); + }} + onMouseLeave={() => scheduleHideVolume()} + /> + + )} +
    + ); +}; + +Video.propTypes = { + className: PropTypes.string, + mirrorUrl: PropTypes.string, + poster: PropTypes.string, + src: PropTypes.string, + style: PropTypes.object, +}; + +export default Video; diff --git a/src/components/VideoVolume.jsx b/src/components/VideoVolume.jsx new file mode 100644 index 0000000..86e9ff1 --- /dev/null +++ b/src/components/VideoVolume.jsx @@ -0,0 +1,149 @@ +import PropTypes from "prop-types"; +import { useEffect, useMemo, useRef, useState, useCallback } from "react"; +import Slider from "rc-slider"; +import "rc-slider/assets/index.css"; + +const VideoVolume = ({ + isVisible = false, + onClose = () => {}, + buttonRef = null, + volume = 0, + onChange = () => {}, + disabled = false, + onMouseEnter: onMouseEnterProp, + onMouseLeave: onMouseLeaveProp, +}) => { + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [position, setPosition] = useState(null); + const [isPositioned, setIsPositioned] = useState(false); + const popupRef = useRef(null); + + const updatePosition = useCallback(() => { + if (!buttonRef?.current || !popupRef.current) return; + const buttonRect = buttonRef.current.getBoundingClientRect(); + const margin = 8; + // Absolute positioning: compute relative to offsetParent bounds + const offsetParent = popupRef.current.offsetParent || document.body; + const parentRect = offsetParent.getBoundingClientRect(); + const bottomOffset = Math.max( + 0, + parentRect.bottom - buttonRect.top + margin + ); + const rightOffset = Math.max(0, parentRect.right - buttonRect.right); + setPosition({ bottom: bottomOffset, right: rightOffset + 5 }); + setIsPositioned(true); + }, [buttonRef]); + + useEffect(() => { + if (isVisible) { + setIsPositioned(false); + setShouldRender(true); + setIsExiting(false); + // position after render + const raf1 = requestAnimationFrame(() => { + const raf2 = requestAnimationFrame(() => { + updatePosition(); + }); + return () => cancelAnimationFrame(raf2); + }); + window.addEventListener("resize", updatePosition); + window.addEventListener("scroll", updatePosition, true); + return () => { + cancelAnimationFrame(raf1); + window.removeEventListener("resize", updatePosition); + window.removeEventListener("scroll", updatePosition, true); + }; + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + setPosition(null); + setIsPositioned(false); + }, 800); + return () => clearTimeout(timer); + } + return undefined; + }, [isVisible, shouldRender, updatePosition]); + + // Optional outside click close (does not fight hover logic if parent keeps visible while hovered) + useEffect(() => { + if (!shouldRender || isExiting) return undefined; + const handleClickOutside = (event) => { + if ( + popupRef.current && + !popupRef.current.contains(event.target) && + buttonRef?.current && + !buttonRef.current.contains(event.target) + ) { + onClose(); + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting, onClose, buttonRef]); + + const sliderValue = useMemo(() => { + const v = Number(volume); + if (!isFinite(v)) return 0; + return Math.min(1, Math.max(0, v)); + }, [volume]); + + if (!shouldRender) return null; + + const positioningStyle = + position != null + ? { + bottom: `${position.bottom}px`, + right: `${position.right}px`, + } + : {}; + + return ( +
    +
    + +
    +
    + ); +}; + +VideoVolume.propTypes = { + isVisible: PropTypes.bool, + onClose: PropTypes.func, + buttonRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLElement), + }), + volume: PropTypes.number, + onChange: PropTypes.func, + disabled: PropTypes.bool, + onMouseEnter: PropTypes.func, + onMouseLeave: PropTypes.func, +}; + +export default VideoVolume; diff --git a/src/contexts/AccountContext.jsx b/src/contexts/AccountContext.jsx new file mode 100644 index 0000000..b7fab02 --- /dev/null +++ b/src/contexts/AccountContext.jsx @@ -0,0 +1,233 @@ +import { createContext, useContext, useState, useEffect, useRef } from "react"; +import PropTypes from "prop-types"; +import { useMediaQuery } from "react-responsive"; +import { useKeycloak } from "./KeycloakContext"; +import LoggedOutIcon from "../icons/LoggedOutIcon"; +import LoadingIcon from "../icons/LoadingIcon"; +import UserIcon from "../icons/UserIcon"; +import VisitIcon from "../icons/VisitIcon"; +import CloseIcon from "../icons/CloseIcon"; +import PadlockIcon from "../icons/PadlockIcon"; +import AtSymbolIcon from "../icons/AtSymbolIcon"; +// Create the context +const AccountContext = createContext(); + +// eslint-disable-next-line react-refresh/only-export-components +export const useAccount = () => useContext(AccountContext); + +export const AccountProvider = ({ children }) => { + const { + keycloak, + isAuthenticated, + user, + loading: keycloakLoading, + } = useKeycloak(); + const [accountVisible, setAccountVisible] = useState(false); + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const accountMenuPopupRef = useRef(null); + const accountButtonRef = useRef(null); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + + // Handle login + const handleLogin = async () => { + try { + await keycloak.login(); + } catch (error) { + console.error("Login failed", error); + } + }; + + // Handle logout + const handleLogout = async () => { + try { + await keycloak.logout(); + setAccountVisible(false); + } catch (error) { + console.error("Logout failed", error); + } + }; + + // Handle manage account (Keycloak account console) + const handleManageAccount = async () => { + try { + if (keycloak?.accountManagement) { + await keycloak.accountManagement(); + return; + } + } catch (error) { + console.warn("Keycloak accountManagement redirect failed", error); + } + try { + const authServerUrl = keycloak?.authServerUrl?.replace(/\/$/, ""); + const realm = keycloak?.realm; + if (authServerUrl && realm) { + const accountUrl = `${authServerUrl}/realms/${realm}/account`; + window.open(accountUrl, "_blank", "noopener,noreferrer"); + } + } catch (error) { + console.error("Opening account management failed", error); + } + }; + + // Handle account menu visibility with animation + useEffect(() => { + if (accountVisible) { + console.log("accountVisible", accountVisible); + setShouldRender(true); + setIsExiting(false); + } else if (shouldRender) { + setIsExiting(true); + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); // Match animation duration + return () => clearTimeout(timer); + } + }, [accountVisible, shouldRender]); + + // Handle click outside account menu + useEffect(() => { + if (!shouldRender || isExiting) return; + + const handleClickOutside = (event) => { + // Don't close if clicking on the account button - it handles its own toggle + const accountButton = event.target.closest(".tb-footer-button-account"); + if (accountButton) { + return; + } + + // Check if click is outside the account menu popup + if ( + accountMenuPopupRef.current && + !accountMenuPopupRef.current.contains(event.target) + ) { + setAccountVisible(false); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting]); + + return ( + + {children} + + {/* Account menu overlay */} + {shouldRender && ( +
    +
    + {keycloakLoading ? ( + <> +
    +
    + +
    +
    + + ) : !isAuthenticated ? ( + <> +
    +
    + +
    +
    +
    Logged out
    +
    + Please log in to continue. +
    +
    + +
    + + ) : ( + <> +
    +
    + +
    +
    + {user?.firstName && user?.lastName && ( +
    + {user.firstName} {user.lastName} + {user?.username && ( +
    +
    + +
    +
    + {user.username} +
    +
    + )} +
    + )} + {user?.email && ( +
    + {user.email} +
    + )} +
    +
    +
    + +
    + +
    + + )} +
    +
    + )} +
    + ); +}; + +AccountProvider.propTypes = { + children: PropTypes.node.isRequired, +}; diff --git a/src/contexts/ActionContext.jsx b/src/contexts/ActionContext.jsx new file mode 100644 index 0000000..c72214b --- /dev/null +++ b/src/contexts/ActionContext.jsx @@ -0,0 +1,29 @@ +import React, { createContext, useContext, useEffect } from "react"; +import { useLocation } from "react-router-dom"; + +const ActionContext = createContext(null); + +export const ActionProvider = ({ onAction, children }) => { + const location = useLocation(); + + useEffect(() => { + const searchParams = new URLSearchParams(location.search); + const action = searchParams.get("action"); + if (action && typeof onAction?.[action] === "function") { + // collect all params except action + + const params = {}; + searchParams.forEach((value, key) => { + if (key !== "action") { + params[key] = value; + } + }); + + onAction[action](params); + } + }, [location, onAction]); + + return {children}; +}; + +export const useActionContext = () => useContext(ActionContext); diff --git a/src/contexts/BlogsContext.jsx b/src/contexts/BlogsContext.jsx new file mode 100644 index 0000000..720deb7 --- /dev/null +++ b/src/contexts/BlogsContext.jsx @@ -0,0 +1,34 @@ +import PropTypes from "prop-types"; +import { createContext, useContext, useState, useEffect } from "react"; + +// Create context +const BlogsContext = createContext({ + blogs: [], + setBlogs: () => {}, +}); + +// Provider +export const BlogsProvider = ({ children, initialBlogs = [] }) => { + const [blogs, setBlogs] = useState(initialBlogs); + + // Update blogs whenever initialBlogs changes + useEffect(() => { + if (initialBlogs && initialBlogs.length > 0) { + setBlogs(initialBlogs); + } + }, [initialBlogs]); + + return ( + + {children} + + ); +}; + +BlogsProvider.propTypes = { + children: PropTypes.any, + initialBlogs: PropTypes.array, +}; + +// Hook for consuming +export const useBlogs = () => useContext(BlogsContext); diff --git a/src/contexts/CompaniesContext.jsx b/src/contexts/CompaniesContext.jsx new file mode 100644 index 0000000..4bb7eab --- /dev/null +++ b/src/contexts/CompaniesContext.jsx @@ -0,0 +1,34 @@ +import PropTypes from "prop-types"; +import { createContext, useContext, useState, useEffect } from "react"; + +// Create context +const CompaniesContext = createContext({ + companies: [], + setCompanies: () => {}, +}); + +// Provider +export const CompaniesProvider = ({ children, initialCompanies = [] }) => { + const [companies, setCompanies] = useState(initialCompanies); + + // Update companies whenever initialCompanies changes + useEffect(() => { + if (initialCompanies && initialCompanies.length > 0) { + setCompanies(initialCompanies); + } + }, [initialCompanies]); + + return ( + + {children} + + ); +}; + +CompaniesProvider.propTypes = { + children: PropTypes.any, + initialCompanies: PropTypes.array, +}; + +// Hook for consuming +export const useCompanies = () => useContext(CompaniesContext); diff --git a/src/contexts/FileContext.jsx b/src/contexts/FileContext.jsx new file mode 100644 index 0000000..b01e8a9 --- /dev/null +++ b/src/contexts/FileContext.jsx @@ -0,0 +1,232 @@ +import PropTypes from "prop-types"; +import { + createContext, + useContext, + useEffect, + useState, + useCallback, +} from "react"; + +// Simple file cache that stores object URLs (from Blobs) +class FileCache { + constructor() { + this.cache = new Map(); // url -> objectUrl + this.loadingPromises = new Map(); // url -> Promise + } + + isCached(url) { + return this.cache.has(url); + } + + get(url) { + return this.cache.get(url) || null; + } + + set(url, objectUrl) { + // Revoke old object URL if overwriting + if (this.cache.has(url)) { + const oldUrl = this.cache.get(url); + if (oldUrl && oldUrl !== objectUrl) { + try { + URL.revokeObjectURL(oldUrl); + } catch { + // ignore + } + } + } + this.cache.set(url, objectUrl); + } + + remove(url) { + if (this.cache.has(url)) { + const objectUrl = this.cache.get(url); + try { + URL.revokeObjectURL(objectUrl); + } catch { + // ignore + } + this.cache.delete(url); + } + this.loadingPromises.delete(url); + } + + clear() { + for (const [, objectUrl] of this.cache.entries()) { + try { + URL.revokeObjectURL(objectUrl); + } catch { + // ignore + } + } + this.cache.clear(); + this.loadingPromises.clear(); + } + + async _fetchToObjectUrl(url) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const blob = await response.blob(); + return URL.createObjectURL(blob); + } + + async loadFile(primaryUrl, mirrorUrl = null) { + // Use cache if present + const cached = this.get(primaryUrl); + if (cached) { + return cached; + } + + // Reuse in-flight request if present + if (this.loadingPromises.has(primaryUrl)) { + return this.loadingPromises.get(primaryUrl); + } + + // Compose a single loading promise and store it to dedupe concurrent loads + const loadingPromise = (async () => { + // Try mirror first if provided + if (mirrorUrl) { + try { + const objUrl = await this._fetchToObjectUrl(mirrorUrl); + this.set(primaryUrl, objUrl); // cache under primary URL key + return objUrl; + } catch { + // fall through to primary + } + } + const objUrl = await this._fetchToObjectUrl(primaryUrl); + this.set(primaryUrl, objUrl); + return objUrl; + })(); + + this.loadingPromises.set(primaryUrl, loadingPromise); + try { + const result = await loadingPromise; + return result; + } finally { + this.loadingPromises.delete(primaryUrl); + } + } +} + +const fileCache = new FileCache(); +const FileContext = createContext(); + +export const useFileContext = () => useContext(FileContext); + +export const FileProvider = ({ children }) => { + // Track basic per-URL loading state and resolved object URL for consumers + const [fileStates, setFileStates] = useState({}); // { [url]: { objectUrl: string|null, loadingState: 'unloaded'|'loading'|'loaded'|'error' } } + + const getFileUrl = useCallback( + (url) => { + return fileStates[url]?.objectUrl || fileCache.get(url) || null; + }, + [fileStates] + ); + + const loadFile = useCallback(async (url, mirrorUrl = null) => { + if (!url) return null; + + // Fast path: cached + if (fileCache.isCached(url)) { + const objectUrl = fileCache.get(url); + setFileStates((prev) => ({ + ...prev, + [url]: { objectUrl, loadingState: "loaded" }, + })); + return objectUrl; + } + + // Transition to loading + setFileStates((prev) => ({ + ...prev, + [url]: { + objectUrl: prev[url]?.objectUrl || null, + loadingState: "loading", + }, + })); + + try { + const objectUrl = await fileCache.loadFile(url, mirrorUrl); + setFileStates((prev) => ({ + ...prev, + [url]: { objectUrl, loadingState: "loaded" }, + })); + return objectUrl; + } catch (error) { + setFileStates((prev) => ({ + ...prev, + [url]: { objectUrl: null, loadingState: "error" }, + })); + return null; + } + }, []); + + const removeFile = useCallback( + (url) => { + const existing = fileStates[url]?.objectUrl; + if (existing) { + try { + URL.revokeObjectURL(existing); + } catch { + // ignore + } + } + fileCache.remove(url); + setFileStates((prev) => { + const next = { ...prev }; + delete next[url]; + return next; + }); + }, + [fileStates] + ); + + const clearFiles = useCallback(() => { + // Revoke any object URLs held in state, then clear cache + Object.values(fileStates).forEach((entry) => { + if (entry?.objectUrl) { + try { + URL.revokeObjectURL(entry.objectUrl); + } catch { + // ignore + } + } + }); + setFileStates({}); + fileCache.clear(); + }, [fileStates]); + + useEffect(() => { + return () => { + // Avoid setState in unmount cleanup to prevent update depth loops + try { + fileCache.clear(); + } catch { + // ignore + } + }; + }, []); + + return ( + + {children} + + ); +}; + +FileProvider.propTypes = { + children: PropTypes.any, +}; + +export default FileContext; diff --git a/src/contexts/ImageContext.jsx b/src/contexts/ImageContext.jsx new file mode 100644 index 0000000..80cf026 --- /dev/null +++ b/src/contexts/ImageContext.jsx @@ -0,0 +1,311 @@ +import PropTypes from "prop-types"; +import { + createContext, + useContext, + useState, + useEffect, + useCallback, +} from "react"; + +// Image object: { blurHash: string, url: string, mirrorUrl?: string } +const ImageContext = createContext(); + +export const useImageContext = () => useContext(ImageContext); + +class ImageCache { + constructor() { + this.cache = new Map(); + this.maxCacheSize = 50; + this.cacheOrder = []; + this.loadingPromises = new Map(); // Track ongoing loading operations + } + getCacheKey(url) { + return url; + } + isCached(url) { + return this.cache.has(this.getCacheKey(url)); + } + get(url) { + const key = this.getCacheKey(url); + if (this.cache.has(key)) { + const index = this.cacheOrder.indexOf(key); + if (index > -1) this.cacheOrder.splice(index, 1); + this.cacheOrder.push(key); + return this.cache.get(key); + } + return null; + } + set(url, base64) { + const key = this.getCacheKey(url); + if (this.cache.has(key)) { + const index = this.cacheOrder.indexOf(key); + if (index > -1) this.cacheOrder.splice(index, 1); + } + this.cache.set(key, base64); + this.cacheOrder.push(key); + this.evictIfNeeded(); + } + evictIfNeeded() { + while (this.cache.size > this.maxCacheSize) { + const oldestKey = this.cacheOrder.shift(); + if (oldestKey && this.cache.has(oldestKey)) { + this.cache.delete(oldestKey); + } + } + } + async loadImage(primaryUrl, fallbackUrl = null) { + // Check cache using primary URL as key + const cached = this.get(primaryUrl); + if (cached) { + console.log(`[ImageCache] Using cached image: ${primaryUrl}`); + return cached; + } + + // Check if this image is already being loaded + const key = this.getCacheKey(primaryUrl); + if (this.loadingPromises.has(key)) { + console.log( + `[ImageCache] Image already loading, waiting for existing promise: ${primaryUrl}` + ); + return this.loadingPromises.get(key); + } + + console.log( + `[ImageCache] Starting to load image: ${primaryUrl}${ + fallbackUrl ? ` with fallback: ${fallbackUrl}` : "" + }` + ); + // Create a new loading promise + const loadingPromise = this._performImageLoadWithFallback( + primaryUrl, + fallbackUrl + ); + this.loadingPromises.set(key, loadingPromise); + + try { + const result = await loadingPromise; + console.log(`[ImageCache] Successfully loaded image: ${primaryUrl}`); + return result; + } finally { + // Clean up the loading promise when done + this.loadingPromises.delete(key); + } + } + + async _blobToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => resolve(reader.result); + reader.onerror = reject; + reader.readAsDataURL(blob); + }); + } + + async _performImageLoadWithFallback(primaryUrl, fallbackUrl) { + // Try mirror URL first if available + if (fallbackUrl) { + try { + console.log(`[ImageCache] Trying mirror URL first: ${fallbackUrl}`); + const response = await fetch(fallbackUrl); + if (!response.ok) { + throw new Error(`Mirror URL HTTP error! status: ${response.status}`); + } + const blob = await response.blob(); + const base64 = await this._blobToBase64(blob); + this.set(primaryUrl, base64); // Cache using primary URL as key + console.log( + `[ImageCache] Successfully loaded from mirror URL: ${fallbackUrl}` + ); + return base64; + } catch (error) { + console.warn(`[ImageCache] Mirror URL failed: ${fallbackUrl}`, error); + console.log(`[ImageCache] Falling back to primary URL: ${primaryUrl}`); + } + } + + // Fallback to primary URL + try { + const response = await fetch(primaryUrl); + if (!response.ok) + throw new Error(`Primary URL HTTP error! status: ${response.status}`); + const blob = await response.blob(); + const base64 = await this._blobToBase64(blob); + this.set(primaryUrl, base64); + console.log( + `[ImageCache] Successfully loaded from primary URL: ${primaryUrl}` + ); + return base64; + } catch (error) { + console.error(`[ImageCache] Both URLs failed for: ${primaryUrl}`, error); + throw error; + } + } + + async _performImageLoad(url) { + try { + const response = await fetch(url); + if (!response.ok) + throw new Error(`HTTP error! status: ${response.status}`); + const blob = await response.blob(); + const base64 = await this._blobToBase64(blob); + this.set(url, base64); + return base64; + } catch (error) { + console.error(`Failed to load image: ${url}`, error); + throw error; + } + } + async preloadImages(images) { + // images: [{ url, mirrorUrl?, ... }] + const results = new Map(); + const promises = images.map(async (image) => { + try { + const blobUrl = await this.loadImage(image.url, image.mirrorUrl); + results.set(image.url, blobUrl); + } catch (error) { + results.set(image.url, null); + } + }); + await Promise.allSettled(promises); + return results; + } + clear() { + this.cache.clear(); + this.cacheOrder = []; + this.loadingPromises.clear(); + } + remove(url) { + const key = this.getCacheKey(url); + if (this.cache.has(key)) { + this.cache.delete(key); + const index = this.cacheOrder.indexOf(key); + if (index > -1) this.cacheOrder.splice(index, 1); + } + // Also clean up any ongoing loading promise + this.loadingPromises.delete(key); + } +} + +const imageCache = new ImageCache(); + +export const ImageProvider = ({ children }) => { + const [imageObjects, setImageObjects] = useState([]); + const [allImagesLoaded, setAllImagesLoaded] = useState(false); + + const loadImages = useCallback((images) => { + // images: [{ blurHash, url, mirrorUrl? }] + // Only initialize image objects with metadata, don't load them yet + if (!images || images.length === 0) { + setImageObjects([]); + setAllImagesLoaded(true); + return; + } + + // Initialize image objects with unloaded state (images will be loaded on demand) + const initialImageObjects = images.map((img) => ({ + src: img.url, + blurHash: img.blurHash, + mirrorUrl: img.mirrorUrl, + blob: null, + loadingState: "unloaded", + })); + setImageObjects(initialImageObjects); + setAllImagesLoaded(true); // Set to true since we're not preloading + }, []); + + const loadIndividualImage = useCallback( + async (url) => { + console.log(`[ImageProvider] loadIndividualImage called for: ${url}`); + const imageObj = imageObjects.find((img) => img.src === url); + + // If image object doesn't exist, we can't load it + if (!imageObj) { + console.log(`[ImageProvider] Image object not found: ${url}`); + return; + } + + // Check if already loaded or currently loading + if ( + imageObj.loadingState === "loaded" || + imageObj.loadingState === "loading" + ) { + console.log( + `[ImageProvider] Image already ${imageObj.loadingState}: ${url}` + ); + return; // Already loading or loaded + } + + // Check if image is already cached + if (imageCache.isCached(url)) { + console.log( + `[ImageProvider] Image found in cache, updating state: ${url}` + ); + const base64 = imageCache.get(url); + setImageObjects((prev) => + prev.map((img) => + img.src === url + ? { ...img, blob: base64, loadingState: "loaded" } + : img + ) + ); + return; + } + + console.log(`[ImageProvider] Starting to load individual image: ${url}`); + // Update loading state + setImageObjects((prev) => + prev.map((img) => + img.src === url ? { ...img, loadingState: "loading" } : img + ) + ); + + try { + const mirrorUrl = imageObj.mirrorUrl; + const base64 = await imageCache.loadImage(url, mirrorUrl); + setImageObjects((prev) => + prev.map((img) => + img.src === url + ? { ...img, blob: base64, loadingState: "loaded" } + : img + ) + ); + } catch (error) { + console.error(`[ImageProvider] Failed to load image: ${url}`, error); + setImageObjects((prev) => + prev.map((img) => + img.src === url ? { ...img, loadingState: "error" } : img + ) + ); + } + }, + [imageObjects] + ); + + useEffect(() => { + // Cleanup on unmount + return () => { + setImageObjects([]); + setAllImagesLoaded(false); + imageCache.clear(); + }; + }, []); + + return ( + + {children} + + ); +}; + +ImageProvider.propTypes = { + children: PropTypes.any, +}; + +export default ImageContext; diff --git a/src/contexts/KeycloakContext.jsx b/src/contexts/KeycloakContext.jsx new file mode 100644 index 0000000..6212ce8 --- /dev/null +++ b/src/contexts/KeycloakContext.jsx @@ -0,0 +1,93 @@ +import PropTypes from "prop-types"; +import { createContext, useContext, useState } from "react"; +import { + QueryClient, + QueryClientProvider, + useQuery, +} from "@tanstack/react-query"; +import Keycloak from "keycloak-js"; + +// Initialize Keycloak +const keycloak = new Keycloak({ + url: "https://auth.tombutcher.work", // Your Keycloak server + realm: "master", // Your Keycloak realm + clientId: "2025-web-client", // Your Keycloak client ID +}); + +const KeycloakContext = createContext(null); + +const initKeycloak = async () => { + try { + const authenticated = await keycloak.init({ + onLoad: "check-sso", + silentCheckSsoRedirectUri: + window.location.origin + "/silent-check-sso.html", + silentCheckSsoFallback: false, + checkLoginIframe: false, + }); + + return { + isAuthenticated: authenticated, + user: authenticated + ? { + username: keycloak.tokenParsed?.preferred_username, + email: keycloak.tokenParsed?.email, + firstName: keycloak.tokenParsed?.given_name, + lastName: keycloak.tokenParsed?.family_name, + roles: keycloak.tokenParsed?.realm_access?.roles || [], + } + : null, + }; + } catch (error) { + console.warn("Keycloak init failed", error); + return { + isAuthenticated: false, + user: null, + }; + } +}; + +const KeycloakStateProvider = ({ children }) => { + const { data, isLoading } = useQuery({ + queryKey: ["keycloak-init"], + queryFn: initKeycloak, + staleTime: Infinity, + cacheTime: Infinity, + retry: false, + refetchOnWindowFocus: false, + }); + + return ( + + {children} + + ); +}; + +KeycloakStateProvider.propTypes = { + children: PropTypes.any, +}; + +export const KeycloakProvider = ({ children }) => { + const [queryClient] = useState(() => new QueryClient()); + + return ( + + {children} + + ); +}; + +KeycloakProvider.propTypes = { + children: PropTypes.any, +}; + +// eslint-disable-next-line react-refresh/only-export-components +export const useKeycloak = () => useContext(KeycloakContext); diff --git a/src/contexts/MenuContext.jsx b/src/contexts/MenuContext.jsx new file mode 100644 index 0000000..9bdd056 --- /dev/null +++ b/src/contexts/MenuContext.jsx @@ -0,0 +1,196 @@ +import { createContext, useContext, useState, useEffect, useRef } from "react"; +import PropTypes from "prop-types"; +import { useNavigate } from "react-router-dom"; +import { useMediaQuery } from "react-responsive"; +import DownloadFileIcon from "../icons/DownloadFileIcon"; +import CVDownloadPopupMenu from "../components/Menu/CVDownloadPopupMenu"; +import WebsiteSelectorIcon from "../icons/WebsiteSelectorIcon"; +import WebsiteSelectorPopupMenu from "../components/Menu/WebsiteSelectorPopupMenu"; +// Create the context +const MenuContext = createContext(); + +export const useMenu = () => useContext(MenuContext); + +export const MenuProvider = ({ + children, + pages = [], + currentPageSlug = "", + cvs = [], +}) => { + const [menuVisible, setMenuVisible] = useState(false); + const [activeSlug, setActiveSlug] = useState(currentPageSlug); + const [shouldRender, setShouldRender] = useState(false); + const [isExiting, setIsExiting] = useState(false); + const [cvDownloadPopupVisible, setCvDownloadPopupVisible] = useState(false); + const [websiteSelectorPopupVisible, setWebsiteSelectorPopupVisible] = + useState(false); + const downloadCvButtonRef = useRef(null); + const websiteSelectorButtonRef = useRef(null); + const menuPopupRef = useRef(null); + const navigate = useNavigate(); + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + + useEffect(() => { + if (menuVisible) { + setShouldRender(true); + setIsExiting(false); + } else if (shouldRender) { + setIsExiting(true); + setCvDownloadPopupVisible(false); // Close CV download popup when menu closes + setWebsiteSelectorPopupVisible(false); // Close website selector popup when menu closes + const timer = setTimeout(() => { + setShouldRender(false); + setIsExiting(false); + }, 800); // Match animation duration + return () => clearTimeout(timer); + } + }, [menuVisible, shouldRender]); + + // Handle click outside menu + useEffect(() => { + if (!shouldRender || isExiting) return; + + const handleClickOutside = (event) => { + // Don't close if clicking on the menu button (hamburger) - it handles its own toggle + const menuButton = event.target.closest(".tb-header-button-menu"); + if (menuButton) { + return; + } + + // Check if click is outside the menu popup + if ( + menuPopupRef.current && + !menuPopupRef.current.contains(event.target) + ) { + // Don't close if clicking on CV download popup or its button + const cvPopup = document.querySelector(".tb-cv-download-popup"); + const websiteSelectorPopup = document.querySelector( + ".tb-website-selector-popup" + ); + if ( + (!cvPopup || + (!cvPopup.contains(event.target) && + !downloadCvButtonRef.current?.contains(event.target))) && + (!websiteSelectorPopup || + (!websiteSelectorPopup.contains(event.target) && + !websiteSelectorButtonRef.current?.contains(event.target))) + ) { + setMenuVisible(false); + } + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [shouldRender, isExiting]); + + return ( + + {children} + + {/* Fullscreen menu overlay */} + {shouldRender && ( +
    +
    +
      + {pages + .filter((page) => page.pageType === "landingPage") + .map((page) => { + return ( +
    • +
    • + ); + })} +
    +
    + +
    + +
    +
    +
    + )} + {menuVisible && ( + <> + setWebsiteSelectorPopupVisible(false)} + buttonRef={websiteSelectorButtonRef} + /> + setCvDownloadPopupVisible(false)} + buttonRef={downloadCvButtonRef} + cvs={cvs} + /> + + )} + + ); +}; + +MenuProvider.propTypes = { + children: PropTypes.node.isRequired, + currentPageSlug: PropTypes.string, + pages: PropTypes.arrayOf( + PropTypes.shape({ + slug: PropTypes.string.isRequired, + label: PropTypes.string, // optional display label + }) + ), + cvs: PropTypes.array, +}; diff --git a/src/contexts/ProjectsContext.jsx b/src/contexts/ProjectsContext.jsx new file mode 100644 index 0000000..b5b447a --- /dev/null +++ b/src/contexts/ProjectsContext.jsx @@ -0,0 +1,34 @@ +import PropTypes from "prop-types"; +import { createContext, useContext, useState, useEffect } from "react"; + +// Create context +const ProjectsContext = createContext({ + projects: [], + setProjects: () => {}, +}); + +// Provider +export const ProjectsProvider = ({ children, initialProjects = [] }) => { + const [projects, setProjects] = useState(initialProjects); + + // Update projects whenever initialProjects changes + useEffect(() => { + if (initialProjects && initialProjects.length > 0) { + setProjects(initialProjects); + } + }, [initialProjects]); + + return ( + + {children} + + ); +}; + +ProjectsProvider.propTypes = { + children: PropTypes.any, + initialProjects: PropTypes.array, +}; + +// Hook for consuming +export const useProjects = () => useContext(ProjectsContext); diff --git a/src/contexts/SettingsContext.jsx b/src/contexts/SettingsContext.jsx new file mode 100644 index 0000000..20924fa --- /dev/null +++ b/src/contexts/SettingsContext.jsx @@ -0,0 +1,32 @@ +import { createContext, useContext, useEffect, useState } from "react"; +import PropTypes from "prop-types"; + +const SettingsContext = createContext(null); + +export const SettingsProvider = ({ settings: initialSettings, children }) => { + const [settings, setSettings] = useState(initialSettings); + + // Update internal state whenever the prop changes + useEffect(() => { + setSettings(initialSettings); + }, [initialSettings]); + + return ( + + {children} + + ); +}; + +SettingsProvider.propTypes = { + settings: PropTypes.object.isRequired, + children: PropTypes.node.isRequired, +}; + +export const useSettingsContext = () => { + const settings = useContext(SettingsContext); + if (!settings) { + throw new Error("useSettingsContext must be used inside SettingsProvider"); + } + return settings; +}; diff --git a/src/contexts/ThemeContext.jsx b/src/contexts/ThemeContext.jsx new file mode 100644 index 0000000..5a89538 --- /dev/null +++ b/src/contexts/ThemeContext.jsx @@ -0,0 +1,52 @@ +import PropTypes from "prop-types"; +import { createContext, useContext, useEffect, useState } from "react"; + +// Create context +const ThemeContext = createContext({ + theme: null, +}); + +// Provider +export const ThemeProvider = ({ children, currentTheme }) => { + const [theme, setTheme] = useState(currentTheme); + + // Update theme whenever currentTheme changes + useEffect(() => { + if (currentTheme) { + setTheme(currentTheme); + } + }, [currentTheme]); + + // Apply theme to document + useEffect(() => { + if (theme) { + document.body.style.backgroundColor = theme.backgroundColor || ""; + void document.body.offsetHeight; + // Set global CSS vars + document.documentElement.style.setProperty( + "--tb-textColor", + theme.textColor || "#000000" + ); + document.documentElement.style.setProperty( + "--tb-backgroundColor", + theme.backgroundColor || "#ffffff" + ); + } + + return () => { + document.body.classList.remove("tb-body-bg"); + }; + }, [theme]); + + return ( + {children} + ); +}; + +ThemeProvider.propTypes = { + children: PropTypes.any, + currentTheme: PropTypes.object.isRequired, // The theme object +}; + +// Hook for consuming +export const useTheme = () => useContext(ThemeContext); diff --git a/src/contexts/VideoContext.jsx b/src/contexts/VideoContext.jsx new file mode 100644 index 0000000..8d1bd7f --- /dev/null +++ b/src/contexts/VideoContext.jsx @@ -0,0 +1,336 @@ +import PropTypes from "prop-types"; +import { + createContext, + useContext, + useEffect, + useState, + useCallback, +} from "react"; + +// Simple video cache that stores object URLs (from Blobs) +class VideoCache { + constructor() { + this.cache = new Map(); // url -> objectUrl + this.loadingPromises = new Map(); // url -> Promise + } + + isCached(url) { + return this.cache.has(url); + } + + get(url) { + return this.cache.get(url) || null; + } + + set(url, objectUrl) { + // Revoke old object URL if overwriting + if (this.cache.has(url)) { + const oldUrl = this.cache.get(url); + if (oldUrl && oldUrl !== objectUrl) { + try { + URL.revokeObjectURL(oldUrl); + } catch { + // ignore + } + } + } + this.cache.set(url, objectUrl); + } + + remove(url) { + if (this.cache.has(url)) { + const objectUrl = this.cache.get(url); + try { + URL.revokeObjectURL(objectUrl); + } catch { + // ignore + } + this.cache.delete(url); + } + this.loadingPromises.delete(url); + } + + clear() { + for (const [, objectUrl] of this.cache.entries()) { + try { + URL.revokeObjectURL(objectUrl); + } catch { + // ignore + } + } + this.cache.clear(); + this.loadingPromises.clear(); + } + + async _fetchToObjectUrl(url, onProgress) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + // Stream to track progress when possible + const contentLengthHeader = response.headers.get("content-length"); + const totalBytes = contentLengthHeader + ? parseInt(contentLengthHeader, 10) + : null; + if (response.body && typeof response.body.getReader === "function") { + const reader = response.body.getReader(); + const chunks = []; + let loadedBytes = 0; + // Notify start + if (onProgress) { + try { + onProgress(totalBytes ? 0 : null, { loaded: 0, total: totalBytes }); + } catch { + // ignore + } + } + let doneReading = false; + while (!doneReading) { + const { done, value } = await reader.read(); + if (done) { + doneReading = true; + break; + } + chunks.push(value); + loadedBytes += value.length; + if (onProgress) { + try { + const ratio = totalBytes + ? Math.min(1, loadedBytes / totalBytes) + : null; + onProgress(ratio, { loaded: loadedBytes, total: totalBytes }); + } catch { + // ignore + } + } + } + const blob = new Blob(chunks, { + type: + response.headers.get("content-type") || "application/octet-stream", + }); + if (onProgress) { + try { + const finalTotal = totalBytes ?? blob.size; + onProgress(1, { loaded: finalTotal, total: finalTotal }); + } catch { + // ignore + } + } + return URL.createObjectURL(blob); + } + // Fallback: no streaming support; cannot measure progress + const blob = await response.blob(); + if (onProgress) { + try { + onProgress(1, { loaded: blob.size, total: blob.size }); + } catch { + // ignore + } + } + return URL.createObjectURL(blob); + } + + async loadVideo(primaryUrl, mirrorUrl = null, onProgress) { + // Use cache if present + const cached = this.get(primaryUrl); + if (cached) { + return cached; + } + + // Reuse in-flight request if present + if (this.loadingPromises.has(primaryUrl)) { + return this.loadingPromises.get(primaryUrl); + } + + // Compose a single loading promise and store it to dedupe concurrent loads + const loadingPromise = (async () => { + // Try mirror first if provided + if (mirrorUrl) { + try { + const objUrl = await this._fetchToObjectUrl(mirrorUrl, onProgress); + this.set(primaryUrl, objUrl); // cache under primary URL key + return objUrl; + } catch { + // fall through to primary + } + } + const objUrl = await this._fetchToObjectUrl(primaryUrl, onProgress); + this.set(primaryUrl, objUrl); + return objUrl; + })(); + + this.loadingPromises.set(primaryUrl, loadingPromise); + try { + const result = await loadingPromise; + return result; + } finally { + this.loadingPromises.delete(primaryUrl); + } + } +} + +const videoCache = new VideoCache(); +const VideoContext = createContext(); + +export const useVideoContext = () => useContext(VideoContext); + +export const VideoProvider = ({ children }) => { + // Track basic per-URL loading state and resolved object URL for consumers + const [videoStates, setVideoStates] = useState({}); // { [url]: { objectUrl, loadingState, progress?, loadedBytes?, totalBytes? } } + + const getVideoUrl = useCallback( + (url) => { + return videoStates[url]?.objectUrl || videoCache.get(url) || null; + }, + [videoStates] + ); + + const loadVideo = useCallback(async (url, mirrorUrl = null) => { + if (!url) return null; + + // Fast path: cached + if (videoCache.isCached(url)) { + const objectUrl = videoCache.get(url); + setVideoStates((prev) => ({ + ...prev, + [url]: { + objectUrl, + loadingState: "loaded", + progress: 1, + loadedBytes: null, + totalBytes: null, + }, + })); + return objectUrl; + } + + // Transition to loading + setVideoStates((prev) => ({ + ...prev, + [url]: { + objectUrl: prev[url]?.objectUrl || null, + loadingState: "loading", + progress: 0, + loadedBytes: 0, + totalBytes: null, + }, + })); + + try { + const objectUrl = await videoCache.loadVideo( + url, + mirrorUrl, + (progressRatio, bytes) => { + setVideoStates((prev) => ({ + ...prev, + [url]: { + objectUrl: prev[url]?.objectUrl || null, + loadingState: "loading", + progress: + typeof progressRatio === "number" + ? progressRatio + : prev[url]?.progress ?? null, + loadedBytes: + typeof bytes?.loaded === "number" + ? bytes.loaded + : prev[url]?.loadedBytes ?? null, + totalBytes: + typeof bytes?.total === "number" + ? bytes.total + : prev[url]?.totalBytes ?? null, + }, + })); + } + ); + setVideoStates((prev) => ({ + ...prev, + [url]: { + objectUrl, + loadingState: "loaded", + progress: 1, + loadedBytes: prev?.[url]?.loadedBytes ?? null, + totalBytes: prev?.[url]?.totalBytes ?? null, + }, + })); + return objectUrl; + } catch (error) { + setVideoStates((prev) => ({ + ...prev, + [url]: { + objectUrl: null, + loadingState: "error", + progress: null, + loadedBytes: null, + totalBytes: null, + }, + })); + return null; + } + }, []); + + const removeVideo = useCallback( + (url) => { + const existing = videoStates[url]?.objectUrl; + if (existing) { + try { + URL.revokeObjectURL(existing); + } catch { + // ignore + } + } + videoCache.remove(url); + setVideoStates((prev) => { + const next = { ...prev }; + delete next[url]; + return next; + }); + }, + [videoStates] + ); + + const clearVideos = useCallback(() => { + // Revoke any object URLs held in state, then clear cache + Object.values(videoStates).forEach((entry) => { + if (entry?.objectUrl) { + try { + URL.revokeObjectURL(entry.objectUrl); + } catch { + // ignore + } + } + }); + setVideoStates({}); + videoCache.clear(); + }, [videoStates]); + + useEffect(() => { + return () => { + // Avoid setState in unmount cleanup to prevent update depth loops + try { + videoCache.clear(); + } catch { + // ignore + } + }; + }, []); + + return ( + + {children} + + ); +}; + +VideoProvider.propTypes = { + children: PropTypes.any, +}; + +export default VideoContext; diff --git a/src/icons/AtSymbolIcon.jsx b/src/icons/AtSymbolIcon.jsx new file mode 100644 index 0000000..57cb313 --- /dev/null +++ b/src/icons/AtSymbolIcon.jsx @@ -0,0 +1,7 @@ +import AtSymbolIconSvg from "../../assets/atsymbolicon.svg?react"; + +const AtSymbolIcon = () => { + return ; +}; + +export default AtSymbolIcon; diff --git a/src/icons/CheckIcon.jsx b/src/icons/CheckIcon.jsx new file mode 100644 index 0000000..340a5e9 --- /dev/null +++ b/src/icons/CheckIcon.jsx @@ -0,0 +1,7 @@ +import CheckIconSvg from "../../assets/checkicon.svg?react"; + +const CheckIcon = () => { + return ; +}; + +export default CheckIcon; diff --git a/src/icons/CloseIcon.jsx b/src/icons/CloseIcon.jsx new file mode 100644 index 0000000..284da42 --- /dev/null +++ b/src/icons/CloseIcon.jsx @@ -0,0 +1,6 @@ +import CloseIconSvg from "../../assets/closeicon.svg?react"; +const CloseIcon = () => { + return ; +}; + +export default CloseIcon; diff --git a/src/icons/DigitalIcon.jsx b/src/icons/DigitalIcon.jsx new file mode 100644 index 0000000..b675ccb --- /dev/null +++ b/src/icons/DigitalIcon.jsx @@ -0,0 +1,7 @@ +import DigitalIconSvg from "../../assets/digitalicon.svg?react"; + +const DigitalIcon = () => { + return ; +}; + +export default DigitalIcon; diff --git a/src/icons/DownloadFileIcon.jsx b/src/icons/DownloadFileIcon.jsx new file mode 100644 index 0000000..2070b7e --- /dev/null +++ b/src/icons/DownloadFileIcon.jsx @@ -0,0 +1,7 @@ +import DownloadFileIconSvg from "../../assets/downloadfileicon.svg?react"; + +const DownloadFileIcon = () => { + return ; +}; + +export default DownloadFileIcon; diff --git a/src/icons/DropdownIcon.jsx b/src/icons/DropdownIcon.jsx new file mode 100644 index 0000000..1a97e66 --- /dev/null +++ b/src/icons/DropdownIcon.jsx @@ -0,0 +1,7 @@ +import DropdownIconSvg from "../../assets/dropdownicon.svg?react"; + +const DropdownIcon = () => { + return ; +}; + +export default DropdownIcon; diff --git a/src/icons/ExitFullScreenIcon.jsx b/src/icons/ExitFullScreenIcon.jsx new file mode 100644 index 0000000..ddafd1d --- /dev/null +++ b/src/icons/ExitFullScreenIcon.jsx @@ -0,0 +1,7 @@ +import ExitFullScreenIconSvg from "../../assets/exitfullscreenicon.svg?react"; + +const ExitFullScreenIcon = () => { + return ; +}; + +export default ExitFullScreenIcon; diff --git a/src/icons/FullScreenIcon.jsx b/src/icons/FullScreenIcon.jsx new file mode 100644 index 0000000..a9c1391 --- /dev/null +++ b/src/icons/FullScreenIcon.jsx @@ -0,0 +1,7 @@ +import FullScreenIconSvg from "../../assets/fullscreenicon.svg?react"; + +const FullScreenIcon = () => { + return ; +}; + +export default FullScreenIcon; diff --git a/src/icons/LeftIcon.jsx b/src/icons/LeftIcon.jsx new file mode 100644 index 0000000..c428b43 --- /dev/null +++ b/src/icons/LeftIcon.jsx @@ -0,0 +1,7 @@ +import LeftIconSvg from "../../assets/lefticon.svg?react"; + +const LeftIcon = () => { + return ; +}; + +export default LeftIcon; diff --git a/src/icons/LinkIcon.jsx b/src/icons/LinkIcon.jsx new file mode 100644 index 0000000..0a85eab --- /dev/null +++ b/src/icons/LinkIcon.jsx @@ -0,0 +1,7 @@ +import LinkIconSvg from "../../assets/linkicon.svg?react"; + +const LinkIcon = () => { + return ; +}; + +export default LinkIcon; diff --git a/src/icons/LoadingIcon.jsx b/src/icons/LoadingIcon.jsx new file mode 100644 index 0000000..1cf6480 --- /dev/null +++ b/src/icons/LoadingIcon.jsx @@ -0,0 +1,7 @@ +import LoadingIconSvg from "../../assets/loadingicon.svg?react"; + +const LoadingIcon = () => { + return ; +}; + +export default LoadingIcon; diff --git a/src/icons/LoggedOutIcon.jsx b/src/icons/LoggedOutIcon.jsx new file mode 100644 index 0000000..d750ea7 --- /dev/null +++ b/src/icons/LoggedOutIcon.jsx @@ -0,0 +1,7 @@ +import LoggedOutIconSvg from "../../assets/loggedouticon.svg?react"; + +const LoggedOutIcon = () => { + return ; +}; + +export default LoggedOutIcon; diff --git a/src/icons/MenuIcon.jsx b/src/icons/MenuIcon.jsx new file mode 100644 index 0000000..30ca6c6 --- /dev/null +++ b/src/icons/MenuIcon.jsx @@ -0,0 +1,7 @@ +import MenuIconSvg from "../../assets/menuicon.svg?react"; + +const MenuIcon = () => { + return ; +}; + +export default MenuIcon; diff --git a/src/icons/MuteIcon.jsx b/src/icons/MuteIcon.jsx new file mode 100644 index 0000000..7519feb --- /dev/null +++ b/src/icons/MuteIcon.jsx @@ -0,0 +1,7 @@ +import MuteIconSvg from "../../assets/muteicon.svg?react"; + +const MuteIcon = () => { + return ; +}; + +export default MuteIcon; diff --git a/src/icons/PadlockIcon.jsx b/src/icons/PadlockIcon.jsx new file mode 100644 index 0000000..c237925 --- /dev/null +++ b/src/icons/PadlockIcon.jsx @@ -0,0 +1,6 @@ +import PadlockIconSvg from "../../assets/padlockicon.svg?react"; +const PadlockIcon = () => { + return ; +}; + +export default PadlockIcon; diff --git a/src/icons/PauseIcon.jsx b/src/icons/PauseIcon.jsx new file mode 100644 index 0000000..cb321fc --- /dev/null +++ b/src/icons/PauseIcon.jsx @@ -0,0 +1,7 @@ +import PauseIconSvg from "../../assets/pauseicon.svg?react"; + +const PauseIcon = () => { + return ; +}; + +export default PauseIcon; diff --git a/src/icons/PersonIcon.jsx b/src/icons/PersonIcon.jsx new file mode 100644 index 0000000..047f6a0 --- /dev/null +++ b/src/icons/PersonIcon.jsx @@ -0,0 +1,7 @@ +import PersonIconSvg from "../../assets/personicon.svg?react"; + +const PersonIcon = () => { + return ; +}; + +export default PersonIcon; diff --git a/src/icons/PlayIcon.jsx b/src/icons/PlayIcon.jsx new file mode 100644 index 0000000..c3b19d1 --- /dev/null +++ b/src/icons/PlayIcon.jsx @@ -0,0 +1,7 @@ +import PlayIconSvg from "../../assets/playicon.svg?react"; + +const PlayIcon = () => { + return ; +}; + +export default PlayIcon; diff --git a/src/icons/PrintIcon.jsx b/src/icons/PrintIcon.jsx new file mode 100644 index 0000000..e471439 --- /dev/null +++ b/src/icons/PrintIcon.jsx @@ -0,0 +1,7 @@ +import PrintIconSvg from "../../assets/printicon.svg?react"; + +const PrintIcon = () => { + return ; +}; + +export default PrintIcon; diff --git a/src/icons/RightIcon.jsx b/src/icons/RightIcon.jsx new file mode 100644 index 0000000..6628b45 --- /dev/null +++ b/src/icons/RightIcon.jsx @@ -0,0 +1,7 @@ +import RightIconSvg from "../../assets/righticon.svg?react"; + +const RightIcon = () => { + return ; +}; + +export default RightIcon; diff --git a/src/icons/ScrollIcon.jsx b/src/icons/ScrollIcon.jsx new file mode 100644 index 0000000..a1c4e81 --- /dev/null +++ b/src/icons/ScrollIcon.jsx @@ -0,0 +1,23 @@ +import { useMediaQuery } from "react-responsive"; +import ScrollIconSvg from "../../assets/scrollicon.svg?react"; +import PropTypes from "prop-types"; + +const ScrollIcon = ({ visible = true }) => { + const isLargeMobile = useMediaQuery({ maxWidth: 1200 }); + return ( +
    + +

    SCROLL

    +
    + ); +}; + +ScrollIcon.propTypes = { + visible: PropTypes.bool, +}; + +export default ScrollIcon; diff --git a/src/icons/ShareIcon.jsx b/src/icons/ShareIcon.jsx new file mode 100644 index 0000000..ec8b48b --- /dev/null +++ b/src/icons/ShareIcon.jsx @@ -0,0 +1,7 @@ +import ShareIconSvg from "../../assets/shareicon.svg?react"; + +const ShareIcon = () => { + return ; +}; + +export default ShareIcon; diff --git a/src/icons/UserIcon.jsx b/src/icons/UserIcon.jsx new file mode 100644 index 0000000..ffcc8fe --- /dev/null +++ b/src/icons/UserIcon.jsx @@ -0,0 +1,7 @@ +import UserIconSvg from "../../assets/usericon.svg?react"; + +const UserIcon = () => { + return ; +}; + +export default UserIcon; diff --git a/src/icons/VisitIcon.jsx b/src/icons/VisitIcon.jsx new file mode 100644 index 0000000..1b4c736 --- /dev/null +++ b/src/icons/VisitIcon.jsx @@ -0,0 +1,7 @@ +import VisitIconSvg from "../../assets/visiticon.svg?react"; + +const VisitIcon = () => { + return ; +}; + +export default VisitIcon; diff --git a/src/icons/Volume1Icon.jsx b/src/icons/Volume1Icon.jsx new file mode 100644 index 0000000..af1da7e --- /dev/null +++ b/src/icons/Volume1Icon.jsx @@ -0,0 +1,7 @@ +import Volume1IconSvg from "../../assets/volume1icon.svg?react"; + +const Volume1Icon = () => { + return ; +}; + +export default Volume1Icon; diff --git a/src/icons/Volume2Icon.jsx b/src/icons/Volume2Icon.jsx new file mode 100644 index 0000000..05e48ff --- /dev/null +++ b/src/icons/Volume2Icon.jsx @@ -0,0 +1,7 @@ +import Volume2IconSvg from "../../assets/volume2icon.svg?react"; + +const Volume2Icon = () => { + return ; +}; + +export default Volume2Icon; diff --git a/src/icons/Volume3Icon.jsx b/src/icons/Volume3Icon.jsx new file mode 100644 index 0000000..d5b39e5 --- /dev/null +++ b/src/icons/Volume3Icon.jsx @@ -0,0 +1,7 @@ +import Volume3IconSvg from "../../assets/volume3icon.svg?react"; + +const Volume3Icon = () => { + return ; +}; + +export default Volume3Icon; diff --git a/src/icons/WebsiteSelectorIcon.jsx b/src/icons/WebsiteSelectorIcon.jsx new file mode 100644 index 0000000..9f73109 --- /dev/null +++ b/src/icons/WebsiteSelectorIcon.jsx @@ -0,0 +1,7 @@ +import WebsiteSelectorIconSvg from "../../assets/websiteselectoricon.svg?react"; + +const WebsiteSelectorIcon = () => { + return ; +}; + +export default WebsiteSelectorIcon; diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 0000000..42e4fd7 --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,20 @@ +import { BrowserRouter } from "react-router-dom"; +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import App from "./App.jsx"; +import "antd/dist/reset.css"; // Import Ant Design styles +import "simplebar-react/dist/simplebar.min.css"; +import "./styles/global.css"; + +const queryClient = new QueryClient(); + +createRoot(document.getElementById("root")).render( + + + + + + + +); diff --git a/src/styles/animations.css b/src/styles/animations.css new file mode 100644 index 0000000..fa60dac --- /dev/null +++ b/src/styles/animations.css @@ -0,0 +1,114 @@ +/* Animation styles - Keyframes, transitions, and animation classes */ + +/* Keyframes for menu popup scale animation */ +@keyframes tb-menu-popup-enter { + from { + opacity: 0; + transform: scale(0); + } + to { + opacity: 1; + transform: scale(1); + } +} + +@keyframes tb-menu-popup-exit { + from { + opacity: 1; + transform: scale(1); + } + to { + opacity: 0; + transform: scale(0); + } +} + +@keyframes scale-pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} + +/* Menu popup animation classes */ +.tb-menu-popup-animated { + transform-origin: top right; + animation: tb-menu-popup-enter 0.8s cubic-bezier(0, 1, 0, 1) forwards; +} + +.tb-menu-popup-animated-exit { + transform-origin: top right; + animation: tb-menu-popup-exit 0.8s cubic-bezier(0, 1, 0, 1) forwards; +} + +.tb-account-menu-popup-animated { + transform-origin: bottom left; + animation: tb-menu-popup-enter 0.8s cubic-bezier(0, 1, 0, 1) forwards; +} + +.tb-account-menu-popup-animated-exit { + transform-origin: bottom left; + animation: tb-menu-popup-exit 0.8s cubic-bezier(0, 1, 0, 1) forwards; +} + +/* Sub-page wrapper transition classes */ +.tb-sub-page-wrapper, +.tb-mobile-sub-page-wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: var(--unit-100vh); + z-index: 9; + /* Transform origin will be set dynamically via JavaScript */ + /* Initial state - hidden */ + opacity: 0; + transform: scale(0.05); + /* Transition properties */ + transition: opacity calc(var(--tb-subpage-animation-duration) - 0.3s) + cubic-bezier(0, 1, 0, 1), + transform var(--tb-subpage-animation-duration) cubic-bezier(0, 1, 0, 1); +} + +.tb-sub-page-wrapper-enter, +.tb-mobile-sub-page-wrapper-enter { + opacity: 1; + transform: scale(1); +} + +.tb-sub-page-wrapper-exit, +.tb-mobile-sub-page-wrapper-exit { + opacity: 0; + transform: scale(0.05); + pointer-events: none; +} + +/* Sub-page inner content transition classes */ +.tb-sub-page-inner { + width: 100%; + height: 100%; + overflow: hidden; + /* Initial state - below viewport */ + border-radius: 100px; + /* Transition properties */ + transition: transform var(--tb-subpage-animation-duration) + cubic-bezier(0, 1, 0, 1), + border-radius var(--tb-subpage-animation-duration) cubic-bezier(0, 1, 0, 1); +} + +.tb-sub-page-inner-enter { + border-radius: 0; +} + +.tb-sub-page-inner-exit { + border-radius: 100px; +} + +.tb-skip-animation { + transition: none; +} diff --git a/src/styles/base.css b/src/styles/base.css new file mode 100644 index 0000000..7fe7c19 --- /dev/null +++ b/src/styles/base.css @@ -0,0 +1,250 @@ +/* Base styles - Reset, typography, and CSS variables */ + +/* Reset and base styles */ +* { + font-family: "Rubik", sans-serif; + box-sizing: border-box; +} + +/* CSS Variables */ +:root { + --unit-100vh: 100vh; + --tb-images-width: 45vw; + --tb-header-footer-horizontal-padding: 90px; + --tb-header-footer-vertical-padding: 30px; + --tb-page-padding: 180px; + --tb-page-mobile-padding: 30px; + --tb-subpage-animation-duration: 0.5s; + --tb-loading-textColor: #ff0000; + --tb-loading-backgroundColor: #2f3640; + --tb-page-margin: calc( + calc(var(--tb-header-footer-vertical-padding) * 2) + 30px + ); +} + +body, +html { + height: var(--unit-100vh); + touch-action: pan-y; /* Allow vertical scrolling */ + overscroll-behavior: none; +} + +body { + overflow: hidden; + background-color: var(--tb-loading-backgroundColor); +} + +.tb-root { + height: var(--unit-100vh); + overflow: hidden; +} + +body.tb-body { + transition: background-color 0.5s cubic-bezier(0.4, 0, 0.2, 1); +} + +/* Typography */ +p, +span, +label, +input, +textarea { + font-weight: 500; + font-size: 16px; + line-height: 1; +} + +@supports (height: 100dvh) { + body { + --unit-100vh: 100dvh; + } +} + +@supports (height: 100lvh) { + body.tb-ios-webclip { + --unit-100vh: 100lvh; + } +} + +svg > g[id="Artboard1"], +svg > rect[id="Artboard1"] { + stroke: none; +} + +/* Typography styles */ +.tb-title:first-child { + margin-top: 0; +} + +h1.tb-title, +h1.tb-title a span, +h2.tb-title, +h2.tb-title a span { + font-weight: 600; + font-style: normal; + font-weight: "bold"; + margin: 0.09em 0; +} + +h1.tb-title, +h1.tb-title a span { + font-size: 46px; + line-height: 52px; +} + +h2.tb-title, +h2.tb-title a span { + margin-bottom: 0; + margin-top: 0.5em; + font-size: 32px; + line-height: 1; +} + +h3.tb-title, +h3.tb-title a span { + font-size: 20px; + margin-bottom: 0; + margin-top: 0.5em; + font-weight: 600; +} + +h4.tb-title, +h4.tb-title a span { + font-size: 1.25em; + margin-bottom: 0; + margin-top: 0.5em; +} + +@media (max-width: 600px) { + h1.tb-title, + h1.tb-title a span { + font-size: 2.75em; /* Adjust as needed */ + line-height: 46px; + } + + h2.tb-title, + h2.tb-title a { + font-size: 1.5em; /* Adjust as needed */ + } +} + +.tb-title i { + font-weight: 400; + font-style: italic; +} + +ul.tb-list, +ol.tb-list { + margin: 7.5px 0; +} + +p.tb-paragraph { + margin: 0; +} + +p.tb-paragraph:first-child, +ul.tb-list:first-child, +ol.tb-list:first-child { + margin: 0; +} + +p.tb-paragraph:last-child, +ul.tb-list:last-child, +ol.tb-list:last-child { + margin: 0; +} + +ul.tb-list, +ol.tb-list { + padding-left: 22.5px; +} + +ul.tb-list li, +ol.tb-list li { + margin: 0 0 5px 0; +} + +ul.tb-list li:last-child, +ol.tb-list li:last-child { + margin: 0; +} + +/* Link styling */ +a.tb-link { + color: unset; + display: inline-flex; + align-items: center; + gap: 5px; /* space between text and icon */ + text-decoration: none; +} + +/* Text wrapper for underline */ +a.tb-link .tb-link-text { + position: relative; + display: inline-block; +} + +/* Base underline (50% opacity) */ +a.tb-link .tb-link-text::before { + content: ""; + position: absolute; + left: 0; + bottom: -2px; + height: 2px; + width: 100%; + background-color: var(--tb-textColor); + opacity: 0.15; + border-radius: 1px; +} + +/* Hover underline (100% opacity, animates from left to right) */ +a.tb-link .tb-link-text::after { + content: ""; + position: absolute; + left: 0; + bottom: -2px; + height: 2px; + width: 0; + background-color: var(--tb-textColor); + opacity: 1; + border-radius: 1px; + transition: width 0.3s ease; +} + +/* Animate hover underline */ +a.tb-link:hover .tb-link-text::after { + width: 100%; +} + +/* Keep underline on active item */ +.tb-menu-nav-item-active a.tb-link .tb-link-text::after { + width: 100%; +} + +/* Icon after the text */ +a.tb-link .tb-link-icon { + fill: var(--tb-textColor); + margin-top: 2.5px; +} + +a.tb-link .tb-link-icon > svg { + width: 12.5px; +} + +hr.tb-divider { + width: 100px; + height: 0px; + min-height: 0px; + border: none; + border-radius: 1px; + background-color: var(--tb-textColor); + margin: 8px 0; +} + +.tb-inline-emoji { + height: 1.25em; + vertical-align: middle; + display: inline; + width: auto; + fill: var(--tb-textColor); +} diff --git a/src/styles/components.css b/src/styles/components.css new file mode 100644 index 0000000..04f5b8b --- /dev/null +++ b/src/styles/components.css @@ -0,0 +1,2917 @@ +/* Component styles - Reusable UI components */ + +/* Loading Modal */ +.tb-loading-modal { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: var(--unit-100vh); + background-color: var(--tb-loading-backgroundColor); + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + visibility: hidden; + transition: opacity 0.5s ease, visibility 0.5s ease; + z-index: 9999; +} + +.tb-loading-modal > svg { + width: 60px; + height: 60px; + fill: var(--tb-loading-textColor); +} + +.tb-loading-modal-visible { + opacity: 1; + visibility: visible; +} + +.tb-loading-modal-hidden { + opacity: 0; + visibility: hidden; +} + +.tb-loading-logo { + width: 200px; + display: block; + margin: 0 auto; + animation: scale-pulse 2s infinite ease-in-out; + transform-origin: center center; +} + +/* Particles */ +.tb-particles { + transition: opacity 1s ease-in-out; +} + +.tb-particles-visible { + opacity: 1; +} + +.tb-particles-hidden { + opacity: 0; +} + +.tb-particles-background { + backdrop-filter: blur(40px); + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* Buttons */ + +.tb-button { + padding: 8px 14px; + background-color: transparent; + color: var(--tb-textColor); + border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent); + border-radius: 18px; + transition: background-color 0.3s ease, color 0.3s ease, fill 0.3s ease, + transform 0.5s ease; + display: inline-flex; + align-items: center; + margin: 0.74em 2.5px; + line-height: 1; + min-height: 30px; + font-weight: 500; + position: relative; + transform-origin: center center; + transform: scale(1); +} + +.tb-menu-popup-button, +.tb-account-menu-button { + padding: 9px 10px; + border: none; + font-weight: 600; + transition: color 0.3s ease, transform 0.3s ease, background-color 0.3s ease, + padding 0.3s ease; +} + +.tb-menu-popup-button:hover, +.tb-menu-popup-button-active, +.tb-account-menu-button:hover, +.tb-account-menu-button-active { + transform: scale(1.05); + padding: 9px 14px; +} + +.tb-menu-popup-button-active, +.tb-account-menu-button-active { + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); +} + +.tb-button:disabled { + opacity: 0.5; +} + +.tb-button img { + width: 24px; + margin-right: 24px; +} + +.tb-button > .tb-icon, +.tb-button > svg { + fill: var(--tb-textColor); + stroke: var(--tb-textColor); + height: 16px; + width: auto; + margin-right: 8px; + transition: fill 0.3s ease, stroke 0.3s ease; +} + +.tb-menu-popup-button > svg, +.tb-account-menu-button > svg { + margin-left: 6px; + margin-right: 0; +} + +.tb-menu-popup-button-active > svg, +.tb-menu-popup-button-active > .tb-icon-button > svg { + fill: var(--tb-backgroundColor); + stroke: var(--tb-backgroundColor); +} + +.tb-button:not(:disabled):hover > .tb-icon, +.tb-button:not(:disabled):hover > svg { + fill: var(--tb-backgroundColor); + stroke: var(--tb-backgroundColor); +} + +.tb-button:not(:disabled):hover { + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); + transform: scale(1.025); + cursor: pointer; +} + +.tb-button:not(:disabled):active { + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); + transform: scale(0.975); + cursor: pointer; +} + +.tb-icon-button > svg { + width: 16px; + height: 16px; + fill: var(--tb-textColor); + stroke: var(--tb-textColor); +} + +.tb-button:hover > .tb-icon-button > svg { + fill: var(--tb-backgroundColor); + stroke: var(--tb-backgroundColor); +} + +.tb-icon-button { + position: static; + top: 9px; + left: 0; + right: 0; + bottom: 0; + transform: scale(1); + min-width: 16px; + min-height: 16px; + transform-origin: center center; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, + position 0.3s ease-in-out; + height: 16px; +} + +.tb-icon-button.tb-hidden { + position: absolute; + transform: scale(0.5); +} + +/* Menu Components */ +.tb-menu-popup { + position: absolute; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + backdrop-filter: blur(8px); + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + -webkit-backdrop-filter: blur(8px); + top: calc(var(--tb-header-footer-vertical-padding) + 50px); + right: var(--tb-header-footer-horizontal-padding); + width: auto; + height: auto; + z-index: 9; + border-radius: 25px; + transition: background-color 0.3s ease; +} + +.tb-ios-webclip .tb-menu-popup { + top: calc(var(--tb-header-footer-vertical-padding) + 80px); +} + +.tb-menu-popup::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 10%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-mobile-menu-popup { + top: calc(var(--tb-page-mobile-padding) + 50px); + right: var(--tb-page-mobile-padding); +} + +.tb-menu-popup-container { + padding: 0 13px 2px 13px; +} + +.tb-mobile-menu-popup-container { + padding: 0 13px 2px 13px; +} + +.tb-menu-popup-divider { + width: 1px; + background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent); + margin: 10px 13px; +} + +.tb-menu-nav { + list-style: none; + padding: 0; + margin: 0; + text-align: end; + padding: 15px 22px 3px 22px; +} + +.tb-menu-nav > li { + display: flex; + justify-content: end; +} + +.tb-menu-nav-item { + border: none; + padding: 0.5em 0; + font-size: 1.3em; + background: none; + font-weight: 400; + color: var(--tb-textColor); + position: relative; /* Needed for pseudo-element positioning */ + cursor: pointer; + transition: font-weight 0.3s ease, font-size 0.3s ease; + display: flex; + gap: 15px; + align-items: center; +} + +.tb-menu-nav-item-active { + font-weight: 600; +} + +.tb-menu-nav-item > svg { + width: 1.3em; + fill: var(--tb-textColor); +} + +.tb-menu-nav-item:hover { + font-weight: 600; + font-size: 1.4em; +} + +.tb-menu-nav-item:hover::after { + width: 100%; +} + +.tb-menu-nav-item-active::after { + width: 100%; +} + +.tb-menu-popup-footer { + margin: 10px 2px 0 2px; + border-top: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent); + display: flex; + justify-content: end; +} + +/* Account Menu Popup */ +.tb-account-menu-popup { + position: fixed; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + backdrop-filter: blur(8px); + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + -webkit-backdrop-filter: blur(8px); + bottom: calc(var(--tb-header-footer-vertical-padding) + 50px); + left: var(--tb-header-footer-horizontal-padding); + width: auto; + min-width: 280px; + max-width: 400px; + height: auto; + z-index: 9; + border-radius: 25px; + transition: background-color 0.3s ease, opacity 0.8s ease, transform 0.8s ease; + opacity: 0; + transform: translateY(-10px) scale(0.95); +} + +.tb-ios-webclip .tb-account-menu-popup { + bottom: calc(var(--tb-header-footer-vertical-padding) + 80px); +} + +.tb-account-menu-popup::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 10%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-mobile-account-menu-popup { + bottom: calc(var(--tb-page-mobile-padding) + 50px); + left: var(--tb-page-mobile-padding); +} + +.tb-account-menu-popup-container { + padding: 0 13px; + display: flex; + flex-direction: column; +} + +.tb-mobile-account-menu-popup-container { + padding: 0 13px; +} + +.tb-account-menu-header { + display: flex; + flex-direction: row; + gap: 12px; + align-items: center; + padding: 13px 3px; +} + +.tb-account-menu-icon { + width: 48px; + height: 48px; +} + +.tb-account-menu-icon > svg { + width: 100%; + height: 100%; + object-fit: cover; + object-position: center center; + fill: var(--tb-textColor); +} + +.tb-account-menu-user-info { + padding-bottom: 1px; +} + +.tb-account-menu-user-name { + font-size: 20px; + font-weight: 600; + color: var(--tb-textColor); + margin: 0; + line-height: 1; + display: flex; + gap: 10px; + align-items: center; + margin-bottom: 5px; +} + +.tb-account-menu-user-email { + margin: 0; + font-size: 14px; + font-weight: 500; + color: color-mix(in srgb, var(--tb-textColor) 50%, transparent); + margin-bottom: 0px; +} + +.tb-account-menu-user-username { + font-size: 13px; + font-weight: 500; + margin: 0; + line-height: 1; + border: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent); + border-radius: 12px; + padding: 2px 5px; + padding-left: 3px; + display: flex; + align-items: center; + gap: 3px; + margin-top: 2px; +} + +.tb-account-menu-user-username-at { + color: color-mix(in srgb, var(--tb-textColor) 50%, transparent); + width: 12px; + height: 12px; + margin-bottom: 1px; +} + +.tb-account-menu-user-username-at > svg { + width: 100%; + height: 100%; + object-fit: cover; + object-position: center center; + fill: color-mix(in srgb, var(--tb-textColor) 75%, transparent); +} + +.tb-account-menu-user-username-content { + font-size: 12px; + font-weight: 500; + color: color-mix(in srgb, var(--tb-textColor) 100%, transparent); + padding-top: 1px; + line-height: 1; +} + +.tb-account-menu-content { + display: flex; + flex-direction: column; + gap: 10px; +} + +.tb-account-menu-roles { + display: flex; + flex-direction: column; + gap: 8px; +} + +.tb-account-menu-roles-label { + font-size: 12px; + font-weight: 600; + color: color-mix(in srgb, var(--tb-textColor) 50%, transparent); + text-transform: uppercase; + letter-spacing: 0.5px; + margin: 0; +} + +.tb-account-menu-roles-list { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.tb-account-menu-role { + display: inline-block; + padding: 4px 10px; + border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent); + border-radius: 12px; + font-size: 12px; + font-weight: 600; + color: var(--tb-textColor); + background-color: transparent; + transition: background-color 0.3s ease, border-color 0.3s ease; +} + +.tb-account-menu-footer { + border-top: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent); + display: flex; + justify-content: flex-end; +} + +.tb-account-menu-divider { + width: 1px; + background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent); + margin: 10px 13px; +} + +.tb-account-menu-logout-button > svg { + margin-left: 4px; +} + +.tb-account-menu-login-button { + margin: 0 5px; +} + +.tb-account-menu-loading { + height: 48px; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.tb-account-menu-loading > svg { + width: 18px; + height: 18px; + object-fit: cover; + object-position: center center; + stroke: var(--tb-textColor); +} + +/* CV Download Popup Menu */ +.tb-cv-popup { + position: fixed; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + backdrop-filter: blur(8px); + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + -webkit-backdrop-filter: blur(8px); + width: auto; + height: auto; + z-index: 10; + border-radius: 25px; + transition: background-color 0.3s ease; + color: var(--tb-textColor); + margin-left: 42px; +} + +.tb-cv-popup::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 5%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-mobile-cv-popup { + /* Mobile-specific styles if needed */ +} + +.tb-cv-popup-container { + padding: 13px; + display: flex; + flex-direction: column; + gap: 10px; +} + +.tb-mobile-cv-popup-container { + padding: 13px; +} + +.tb-cv-main-divider { + height: 1px; + width: 100%; + background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent); + border-radius: 2px; +} + +.tb-cv-buttons-divider { + width: 1px; + background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent); + margin: 10px 13px; +} + +.tb-cv-print, +.tb-cv-digital { + display: flex; + flex-direction: row; + gap: 12px; + align-items: center; +} + +.tb-cv-print-icon, +.tb-cv-digital-icon { + min-width: 40px; + width: 40px; + height: 40px; + fill: var(--tb-textColor); + margin-left: 4px; +} + +.tb-cv-description { + flex-grow: 1; +} + +.tb-cv-title { + font-size: 20px; + font-weight: 600; + color: var(--tb-textColor); + margin-bottom: 5px; + display: inline-flex; + align-items: center; + gap: 1px; +} + +.tb-cv-subtitle { + font-size: 14px; + font-weight: 500; + color: color-mix(in srgb, var(--tb-textColor) 50%, transparent); + margin-bottom: 4px; +} + +.tb-cv-digital-buttons { + display: flex; + flex-direction: row; + gap: 3px; +} + +.tb-cv-download-button { + margin: 0; + justify-content: center; +} + +.tb-cv-versions-button { + margin: 0; + margin-left: 3px; + min-height: 20px; + padding: 4px 4.5px 3px 3px; + justify-content: center; +} + +.tb-cv-versions-button:hover { + padding: 4px 4.5px 3px 3px; +} + +.tb-cv-versions-button > svg { + margin-left: 0; +} + +/* Website Selector Popup */ +.tb-website-selector-popup { + position: fixed; + width: 200px; + height: auto; + z-index: 10; + border-radius: 25px; + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + overflow: visible; +} + +.tb-mobile-website-selector-popup { + /* Mobile-specific styles if needed */ +} + +.tb-website-selector-popup-container { +} + +.tb-mobile-website-selector-popup-container { + padding: 0; +} + +.tb-website-selector-list { + display: flex; + flex-direction: column; + align-items: flex-end; +} + +.tb-website-selector-item { + border: none; + padding: 0; + font-size: 1.3em; + background: none; + font-weight: 400; + height: 60px; + width: 200px; + color: var(--tb-textColor); + position: relative; + cursor: pointer; + transition: width 0.3s ease, height 0.3s ease, border-radius 0.3s ease, + box-shadow 0.3s ease; + overflow: hidden; +} + +.tb-website-selector-item::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 10%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-website-selector-item:first-child { + border-top-left-radius: 25px; + border-top-right-radius: 25px; +} + +.tb-website-selector-item:last-child { + border-bottom-left-radius: 25px; + border-bottom-right-radius: 25px; +} + +.tb-website-selector-item > svg { + width: 100%; + height: 100%; + object-fit: cover; /* fill width and clip vertically */ + object-position: center center; /* keep it centered */ + flex-shrink: 0; +} + +.tb-website-selector-item:hover { + height: 68px; + width: 226.66px; + border-top-left-radius: 25px; + border-bottom-left-radius: 25px; + box-shadow: -1px 3px 25px 4px + color-mix(in srgb, var(--tb-backgroundColor) 50%, transparent); + z-index: 11; +} + +@media (max-width: 450px) { + .tb-website-selector-list { + align-items: flex-start; + } + .tb-website-selector-item:hover { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 25px; + border-bottom-right-radius: 25px; + } + .tb-website-selector-item:first-child:hover { + border-top-left-radius: 25px; + } + .tb-website-selector-item:last-child:hover { + border-bottom-left-radius: 25px; + } + .tb-website-selector-popup { + transform-origin: top left !important; + } +} + +/* Share Popup Menu */ +.tb-share-popup { + position: fixed; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + backdrop-filter: blur(8px); + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + -webkit-backdrop-filter: blur(8px); + width: auto; + height: auto; + z-index: 10; + border-radius: 25px; + transition: background-color 0.3s ease; + color: var(--tb-textColor); + margin-left: var(--tb-page-mobile-padding); +} + +.tb-share-popup::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 10%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-mobile-share-popup { + /* Mobile-specific styles if needed */ +} + +.tb-share-popup-container { + padding: 13px; +} + +.tb-mobile-share-popup-container { + padding: 13px; +} + +.tb-share-list { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + align-items: stretch; + justify-items: center; + gap: 0px; +} + +.tb-share-item { + border: none; + padding: 13px 13px; + font-size: 16px; + background: none; + font-weight: 400; + color: var(--tb-textColor); + position: relative; + transition: background-color 0.3s ease, transform 0.3s ease; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + min-width: 105px; + min-height: 110px; + width: 100%; + justify-content: center; + text-align: right; + border-radius: 17px; + transform: scale(1); + cursor: pointer; +} + +.tb-share-item:hover { + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); + transform: scale(1.025); + cursor: pointer; +} + +.tb-share-icon { + transition: font-size 0.3s ease; + font-size: 48px; + min-width: 24px; + text-align: center; +} + +.tb-share-item:hover .tb-share-icon { + font-size: 52px; +} + +.tb-share-item .tb-share-label { + transition: font-weight 0.3s ease; + font-weight: 600; + font-size: 16px; + white-space: nowrap; +} + +.tb-share-item:hover .tb-share-label { + font-weight: 700; +} + +.tb-share-divider { + height: 1px; + width: 100%; + background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent); + margin: 8px 0; + border-radius: 2px; +} + +/* Menu Icon */ +.menu-icon { + cursor: pointer; + width: 64px; + height: 64px; +} + +.tb-line { + transition: transform 0.4s ease, opacity 0.4s ease; + transform-origin: 32px 32px; /* Center of SVG */ +} + +.tb-menu-header { + align-items: center; + justify-content: end; + height: 30px; +} + +/* Header Logo */ +.tb-header-logo { + position: relative; + display: inline-block; +} + +.tb-logo-image { + opacity: 1; + transition: opacity 0.3s ease-in-out, width 0.3s ease-in-out, + transform 0.3s ease-in-out; + width: 30px; + height: 30px; + overflow: hidden; + position: relative; + cursor: pointer; +} + +.tb-logo-image:hover { + transform: scale(1.025); + cursor: pointer; +} + +.tb-logo-image:active { + transform: scale(0.975); + cursor: pointer; +} + +.tb-logo-image-large { + width: 237px; +} + +.tb-logo-image svg { + fill: var(--tb-textColor); + height: 30px; + display: block; + width: auto; + position: absolute; + top: 0; + right: 0; + transition: fill 0.3s ease-in-out, right 0.3s ease-in-out; +} + +.tb-logo-image-large svg { + right: auto; + left: 0; +} + +.tb-logo-image-large-mobile svg { + height: 30px; +} + +.tb-logo-image-hidden { + opacity: 0; +} + +/* Header Button */ +.tb-header-button, +.tb-footer-button { + background: none; + border: none; + width: 30px; + height: 30px; + padding: 0; + z-index: 99; + cursor: pointer; + transform-origin: center center; + transform: scale(1); + transition: transform 0.3s ease; +} +.tb-header-button:active, +.tb-footer-button:active { + transform: scale(0.95); + cursor: pointer; +} + +.tb-header-button:hover, +.tb-footer-button:hover { + transform: scale(1.05); + cursor: pointer; +} + +.tb-header-button-menu > .hamburger-react { + position: relative; + left: -9px; + top: -10px; +} + +.tb-header-button-menu > .hamburger-react > div { + height: 4px !important; +} + +.tb-header-button > svg { + width: 16px; + stroke: var(--tb-textColor); + transition: width 0.3s ease; +} + +.tb-header-button:hover > svg { + width: 18px; +} + +/* Footer Icon */ +.tb-footer-icon { + width: 30px; + height: 30px; + cursor: pointer; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out; + opacity: 1; + transform: scale(1); +} +.tb-footer-icon.tb-hidden { + transform: scale(0.5); +} + +.tb-footer-icon > svg { + transition: fill 0.3s ease-in-out; + fill: var(--tb-textColor); +} + +.tb-footer-icon-close { + width: 30px; + height: 30px; + cursor: pointer; + position: absolute; + top: 0; + right: 0; + transition: opacity 0.3s ease-in-out; + opacity: 1; +} + +.tb-footer-icon-close > svg { + transition: fill 0.3s ease-in-out; + fill: var(--tb-textColor); +} + +/* Scroll Icon */ +.tb-scroll-icon-wrapper { + display: flex; + align-items: center; + flex-direction: row; + column-gap: 15px; + padding-top: 0; + transition: opacity 0.3s ease-in-out; +} + +.tb-scroll-icon-wrapper > svg { + fill: var(--tb-textColor); + height: 38px; + width: auto; +} + +.tb-scroll-icon-text { + margin: 0; + font-weight: 600; + font-size: 1.1em; + color: var(--tb-textColor); +} + +/* Image Components */ +.tb-images-container { + display: flex; + flex-direction: column; + height: var(--unit-100vh); + transition: opacity 0.5s ease-in-out; + opacity: 1; + position: relative; + top: 0; + left: 0; + width: 100%; +} + +.tb-images-container-hidden { + opacity: 0; + position: absolute; +} + +/* Grid layouts for different numbers of images */ +.tb-single-image-grid { + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr; + height: var(--unit-100vh); +} + +.tb-two-images-grid { + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + height: var(--unit-100vh); +} + +.tb-three-images-grid { + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr 1fr; + height: var(--unit-100vh); +} + +.tb-four-images-grid { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + height: var(--unit-100vh); +} + +.tb-multiple-images-grid { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: repeat(auto-fit, minmax(20vh, 1fr)); + height: var(--unit-100vh); + gap: 2px; +} + +.tb-image-wrapper { + width: 100%; + height: 100%; + overflow: hidden; + position: relative; +} + +.tb-image-carousel { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; +} + +.tb-carousel-image-wrapper { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + transition: opacity 1s ease-in-out; +} + +.tb-carousel-image-wrapper.tb-active { + opacity: 1; + z-index: 1; +} + +.tb-carousel-image-wrapper.tb-hidden { + opacity: 0; + z-index: 0; +} + +.tb-carousel-image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.tb-single-image-wrapper { + width: 100%; + height: var(--unit-100vh); + overflow: hidden; +} + +.tb-sidebar-image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.tb-no-images { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + color: #666; + font-style: italic; + text-align: center; + padding: 20px; + grid-column: 1 / -1; + grid-row: 1 / -1; +} + +/* Image component styles */ +.tb-image-container { + position: relative; + width: 100%; + height: 100%; + min-height: 0; +} + +.tb-image-container-loading { + min-height: 200px; +} + +.tb-image-error { + display: flex; + align-items: center; + justify-content: center; + min-height: 200px; + height: 100%; + border-radius: 5px; + font-style: italic; + text-align: center; + padding: 20px; + position: relative; + z-index: 1; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + transition: opacity 0.3s ease-in-out; +} + +.tb-image-error.tb-hidden { + pointer-events: none; +} + +.tb-image-error-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 15px; +} + +.tb-image-error-title { + font-size: 18px; + font-weight: 600; + margin: 0; + font-style: normal; +} + +.tb-image-error-button { + margin: 0; +} + +.tb-image-error-button:hover { + text-shadow: none; +} + +.tb-image-blurhash { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + bottom: 0; + z-index: 0; + object-fit: cover; + filter: blur(0px); /* Blurhash is already blurred */ +} + +.tb-image-content { + position: relative; + object-fit: cover; + width: 100%; + height: 100%; + z-index: 1; + transition: opacity 0.3s ease-in-out, height 0.5s, width 0.5s; + opacity: 1; +} + +.tb-image-loading-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; +} + +.tb-image-loading { + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + gap: 12px; + align-items: flex-start; + justify-content: center; + text-align: left; + font-style: normal; + padding: 8px; + color: var(--tb-textColor); + stroke: var(--tb-textColor); + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 55%, + transparent + ); + border-radius: 22px; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + box-shadow: -1px 12px 45px 0 + color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent); +} + +.tb-image-loading::before { + content: ""; + position: absolute; + inset: 0; + z-index: -1; + padding: 1px; + border-radius: inherit; + background: linear-gradient( + to bottom right, + color-mix(in srgb, var(--tb-textColor) 12%, transparent), + color-mix(in srgb, var(--tb-textColor) 6%, transparent), + color-mix(in srgb, var(--tb-textColor) 12%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; +} + +.tb-image-loading > svg { + width: 18px; + height: 18px; +} + +/* Project Cards */ +.tb-project-cards-container { + position: relative; + flex-grow: 1; + max-height: 400px; + height: min(400px, 50vh); + min-height: 0; + transition: padding-bottom 0.3s ease; + padding-bottom: 0; +} + +.simplebar-scrolling .tb-project-cards-container { + padding-bottom: 40px; +} + +.tb-project-card { + flex: 0 0 auto; /* prevent shrinking */ + height: 100%; + scroll-snap-align: start; /* align each card when scrolling */ + background-color: var(--tb-backgroundColor); + display: flex; + gap: 15px; + flex-direction: column; + cursor: pointer; + transition: transform 0.25s ease, box-shadow 0.25s ease; +} + +.tb-project-card-wrapper { + padding: 7px; +} + +.tb-project-card:hover { + transform: scale(1.015); +} + +.tb-project-card-content { + padding-left: 20px; + display: flex; + flex-direction: row; + gap: 15px; + position: relative; + justify-content: space-between; +} + +.tb-project-type-badge { + margin: 0; + border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent); + padding: 2px 6px 2px 6px; + color: var(--tb-textColor); + border-radius: 12px; + font-size: 12px; + width: fit-content; +} + +.tb-project-type-badge-wrapper { + height: 0; + overflow: hidden; + transition: opacity 0.3s ease; + opacity: 0; + display: flex; + flex-direction: row; + gap: 10px; +} + +.tb-scroll-top .tb-project-type-badge-wrapper { + height: 20px; + opacity: 1; +} + +.tb-project-info-wrapper { + max-height: 0; + overflow: hidden; + transition: max-height 0.3s ease, opacity 0.3s ease; + opacity: 0; + display: flex; + flex-direction: row; + column-gap: 10px; + row-gap: 10px; + align-items: center; + flex-wrap: wrap; +} + +.tb-project-tools-list { + display: flex; + flex-wrap: wrap; + column-gap: 10px; + row-gap: 5px; + font-size: 14px; + max-width: 600px; + align-items: center; +} + +.tb-scroll-top .tb-project-info-wrapper { + max-height: 100px; + opacity: 1; +} + +.tb-project-client { + margin: 0; + font-size: 14px; +} + +.tb-project-client-label { + font-size: 14px; + opacity: 0.5; + margin-right: 5px; +} + +.tb-project-tool-badge { + margin: 0; + border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent); + padding: 2px 6px 2px 6px; + color: var(--tb-textColor); + border-radius: 12px; + font-size: 12px; + width: fit-content; +} + +.tb-project-status-badge { + margin: 0; + border: 2px solid #ffffff7d; + padding: 2px 6px 2px 6px; + color: #ffffff; + border-radius: 12px; + font-size: 12px; +} + +.tb-project-status-badge-planned { + border: 2px solid #00a8ff7d; + color: #00a8ff; +} + +.tb-project-status-badge-inProgress { + border: 2px solid #fbc5317d; + color: #fbc531; +} + +.tb-project-status-badge-complete { + border: 2px solid #4cd1377d; + color: #4cd137; +} + +.tb-project-card-image-wrapper { + max-width: 600px; + width: calc(100vw - var(--tb-page-mobile-padding) * 2); + max-height: 400px; + min-height: 0; + height: min(400px, 50vh); + overflow: hidden; + border-radius: 5px; +} + +.tb-project-card-image { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + border-bottom: 1px solid var(--tb-textColor); +} + +.tb-project-card-placeholder-image { + width: 100%; + height: 200px; + background-color: #eee; + display: flex; + justify-content: center; + align-items: center; + border-radius: 10px; + color: #666; +} + +.tb-project-card-title { + font-weight: 600; + font-size: 18px; + margin: 0; +} + +.tb-project-card-title:before { + content: ""; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 4px; + border-radius: 2px; + background-color: var(--tb-textColor); +} + +.tb-project-cards { + display: flex; + flex-wrap: nowrap; + gap: 5px; + position: relative; + height: 100%; + margin-bottom: 0; +} + +.tb-scroll-btn { + font-family: "Libre Baskerville", serif; + font-weight: 400; + position: absolute; + top: calc(50% - 17.5px); + font-size: 16px; + transform: translateY(-50%); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor); + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + font-size: 2rem; + cursor: pointer; + z-index: 10; + padding: 0; + width: 35px; + height: 35px; + line-height: 0.1px; + border-radius: 50%; + transition: background-color 0.3s ease, transform 0.2s ease, opacity 0.3s ease, + visibility 0.3s ease; + border: none; + opacity: 1; + visibility: visible; +} + +.tb-scroll-btn::before { + content: ""; + position: absolute; + inset: 0; + padding: 1px; /* border thickness */ + border-radius: inherit; + background: linear-gradient( + to bottom right, + /* 👈 diagonal gradient */ + color-mix(in srgb, var(--tb-textColor) 15%, transparent), + color-mix(in srgb, var(--tb-textColor) 10%, transparent), + color-mix(in srgb, var(--tb-textColor) 15%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; + z-index: 1; + transition: background 0.3s ease; +} + +.tb-scroll-btn > svg { + transition: fill 0.3s ease; + fill: var(--tb-textColor); +} + +.tb-scroll-btn:hover { + background-color: var(--tb-textColor); + transform: translateY(-50%) scale(1.075); +} + +.tb-scroll-btn:hover > svg { + fill: var(--tb-backgroundColor); +} + +.tb-scroll-btn.tb-left { + left: 25px; +} + +.tb-scroll-btn.tb-right { + right: 25px; +} + +.tb-scroll-btn.tb-hidden { + opacity: 0; + visibility: hidden; + pointer-events: none; +} + +/* Blog List */ +.tb-blog-list { + display: flex; + flex-direction: column; + gap: 15px; + width: 100%; +} + +.tb-blog-list-container { + height: 100%; + position: relative; + min-height: 0; +} + +.tb-blog-list-scroll { + height: calc( + 100% + calc(var(--tb-header-footer-vertical-padding) * 2) + 30px + ); + width: 100%; + padding-bottom: calc( + calc(var(--tb-header-footer-vertical-padding) * 2) + 30px + ); +} + +.tb-blog-list-scroll .simplebar-content-wrapper { + scroll-snap-type: y mandatory; +} + +/* Content scroll SimpleBar styling */ +.tb-page-vscroll.tb-page-scroll-snap .simplebar-content-wrapper { + scroll-snap-type: y proximity; +} + +.tb-page-hscroll.tb-page-scroll-snap .simplebar-content-wrapper { + scroll-snap-type: x proximity; +} + +.tb-page-vscroll .simplebar-vertical { + margin-left: var(--tb-page-mobile-padding, 0); + width: 4px; + border-radius: 3px; + overflow: hidden; + opacity: 0; + transition: opacity 0.3s ease; + margin-top: var(--simplebar-track-margin-top, 0); + margin-bottom: var(--tb-page-margin, 0); +} + +.tb-page-vscroll:before { + content: ""; + position: absolute; + right: 0; + top: 0; + bottom: 0; + z-index: 1; + opacity: 0; + transition: opacity 0.3s ease; + width: 4px; + border-radius: 3px; +} + +.tb-page-vscroll.simplebar-scrolling:before { + opacity: 1; +} + +.tb-page-hscroll .simplebar-horizontal { + margin-top: 4px; + height: 4px; + border-radius: 3px; + opacity: 0; + overflow: hidden; + transition: opacity 0.3s ease; + background-color: var(--tb-backgroundColor); + margin-left: var(--tb-page-padding, 0); + margin-right: var(--tb-page-padding, 0); + box-shadow: var(--tb-backgroundColor) 0px 0px 20px 20px; +} + +.tb-page-content-mobile .tb-page-hscroll .simplebar-horizontal { + margin-left: var(--tb-page-mobile-padding, 0); + margin-right: var(--tb-page-mobile-padding, 0); +} + +.tb-page-vscroll.simplebar-scrolling .simplebar-vertical { + opacity: 1; +} + +.tb-page-hscroll.simplebar-scrolling .simplebar-horizontal { + opacity: 1; +} +.tb-blog-list-scroll .simplebar-vertical { + margin-bottom: calc( + calc(var(--tb-header-footer-vertical-padding) * 2) + 30px + ); + width: 4px; + border-radius: 3px; +} + +.simplebar-scrollbar:before { + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + background: var(--tb-textColor); + border-radius: 3px; +} + +.simplebar-scrollbar.simplebar-visible, +.simplebar-scrollbar.simplebar-visible:before { + opacity: 1; +} + +.tb-blog-list-item-wrapper { + scroll-snap-align: start; + scroll-snap-stop: normal; +} + +.tb-blog-list-item { + width: 100%; +} + +.tb-blog-list-item h3 { + font-size: 18px; + padding-bottom: 5px; + margin-bottom: 0; + font-weight: 600; + transition: font-size 0.3s ease; +} + +.tb-blog-list-item p { + font-size: 14px; + transition: font-size 0.3s ease; + padding-bottom: 7px; + margin-bottom: 0; +} + +.tb-blog-list-item:hover h3 { + font-size: 22px; + cursor: pointer; +} + +.tb-blog-list-item:hover p { + font-size: 17px; + cursor: pointer; +} + +.tb-blog-list-item-date { + opacity: 0.75; +} + +.tb-blog-list-item-content { + position: relative; + padding-left: 20px; +} + +.tb-blog-list-item-content:before { + content: ""; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 4px; + border-radius: 2px; + background-color: var(--tb-textColor); +} + +.tb-blog-content h1.tb-title { + font-size: 38px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-blog-content-mobile h1.tb-title { + font-size: 28px; + line-height: 1.2; +} + +.tb-blog-content h2.tb-title { + font-size: 32px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-blog-content-mobile h2.tb-title { + font-size: 26px; + line-height: 1.2; +} + +.tb-blog-content p.tb-paragraph { + font-weight: 500; + margin: 0; +} + +.tb-blog-header { + display: flex; + flex-direction: column; + gap: 10px; + transition: gap 0.3s ease; + width: 100%; + margin-bottom: 20px; +} + +.tb-scroll-top .tb-blog-header { + gap: 20px; +} + +.tb-blog-title { + font-size: 30px; + font-weight: 700; + margin: 0; + transition: font-size 0.3s ease; +} + +.tb-scroll-top .tb-blog-title { + font-size: 46px; +} + +.tb-scroll-top .tb-blog-title-mobile { + font-size: 36px; +} + +.tb-blog-subtitle { + font-size: 14px; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-blog-subtitle { + font-size: 18px; +} + +.tb-blog-date { + font-size: 12px; + text-align: end; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-blog-date { + font-size: 16px; +} + +.tb-blog-header-meta, +.tb-blog-header-title { + display: flex; + flex-direction: row; + width: 100%; + justify-content: space-between; + align-items: center; +} + +.tb-project-header-buttons, +.tb-experience-header-buttons { + display: flex; + flex-direction: row; + gap: 15px; + align-items: center; +} + +.tb-share-button { + border: none; + background: none; + padding: 0; + margin: 0; + min-width: 32px; + height: 32px; + transition: transform 0.3s ease; + position: relative; +} + +.tb-share-button:hover { + cursor: pointer; + transform: scale(1.025); +} + +.tb-share-button:active { + transform: scale(0.975); + cursor: pointer; +} + +.tb-share-button-icon { + transition: opacity 0.3s ease; + opacity: 1; +} + +.tb-share-button-icon > svg { + width: auto; + opacity: 1; + transform: scale(1); + transition: opacity 0.3s ease, transform 0.3s ease; + fill: var(--tb-textColor); +} +.tb-share-button-icon.tb-hidden > svg { + transform: scale(0.5); +} + +.tb-share-button-close { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: auto; + opacity: 1; + transition: opacity 0.3s ease; +} + +.tb-visit-button { + border: none; + background: none; + padding: 0; + margin: 3px 0 0 0; + + border-radius: 22px; + padding: 8px 14px; + color: var(--tb-textColor); + font-weight: 500; + transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease; + border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent); + align-items: center; + display: inline-flex; + gap: 6px; + padding-top: 9px; +} + +.tb-visit-button:hover { + cursor: pointer; + transform: scale(1.025); + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); +} + +.tb-visit-button:active { + transform: scale(0.975); + cursor: pointer; +} + +.tb-visit-button > svg { + width: 12px; + fill: var(--tb-textColor); +} + +.tb-visit-button:hover > svg { + fill: var(--tb-backgroundColor); +} +/* Companies List */ +.tb-companies-list { + display: flex; + flex-direction: column; + gap: 15px; + width: 100%; +} + +.tb-companies-list-container { + height: 100%; + max-width: 100%; + width: fit-content; + position: relative; + min-height: 0; +} + +.tb-companies-list-item-wrapper { + scroll-snap-align: start; + scroll-snap-stop: normal; +} + +.tb-companies-list-item { + width: 100%; +} + +.tb-companies-list-item-content { + position: relative; + text-align: left; + display: flex; + gap: 15px; +} + +.tb-companies-list-item-logo { + max-height: 75px; + width: 350px; + max-width: 100%; + transition: max-height 0.3s ease, width 0.3s ease; + align-items: flex-start; + justify-content: flex-start; +} + +.tb-h-divider { + min-width: 4px; + width: 4px; + background-color: var(--tb-textColor); + border-radius: 2px; +} + +.tb-v-divider { + height: 4px; + width: 100%; + background-color: var(--tb-textColor); + border-radius: 2px; +} + +.tb-companies-list-item-logo svg { + fill: var(--tb-textColor); + height: 100%; + width: auto; + max-width: 100%; + padding: 10px 5px; +} + +.tb-companies-list-item-wrapper:hover { + cursor: pointer; +} + +.tb-companies-list-item-wrapper:hover .tb-companies-list-item-logo { + max-height: 85px; + width: 400px; +} + +.tb-companies-list-item-year { + font-size: 16px; + font-weight: 600; + margin: 0; + color: var(--tb-textColor); + max-width: 40px; + text-align: end; +} + +/* Project Page Styles - Matching Blog Page */ +.tb-project-content h1.tb-title { + font-size: 38px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-project-content-mobile h1.tb-title { + font-size: 28px; + line-height: 1.2; +} + +.tb-project-content h2.tb-title { + font-size: 32px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-project-content-mobile h2.tb-title { + font-size: 26px; + line-height: 1.2; +} + +.tb-project-content p.tb-paragraph { + font-weight: 500; + margin: 0; +} + +.tb-project-content .tb-image-container { + width: 100%; + overflow: hidden; + border-radius: 5px; + margin-bottom: 10px; +} + +.tb-project-header { + display: flex; + flex-direction: column; + gap: 10px; + transition: gap 0.3s ease; + width: 100%; + margin-bottom: 20px; +} + +.tb-scroll-top .tb-project-header { + gap: 20px; +} + +.tb-project-title { + font-size: 30px; + font-weight: 700; + margin: 0; + transition: font-size 0.3s ease; +} + +.tb-scroll-top .tb-project-title { + font-size: 46px; +} + +.tb-scroll-top .tb-project-title-mobile { + font-size: 36px; +} + +.tb-project-subtitle { + font-size: 14px; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-project-subtitle { + font-size: 18px; +} + +.tb-project-date { + font-size: 12px; + text-align: end; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-project-date { + font-size: 16px; +} + +.tb-project-header-meta, +.tb-project-header-title { + display: flex; + flex-direction: row; + width: 100%; + justify-content: space-between; + align-items: center; +} + +.tb-experience-logo { + display: flex; + align-items: center; + justify-content: flex-start; + width: 300px; + max-width: 100%; + transition: width 0.3s ease; +} + +.tb-scroll-top .tb-experience-logo { + width: 350px; +} + +.tb-experience-logo > svg { + fill: var(--tb-textColor); + height: 45px; + width: auto; + max-width: 100%; + transition: height 0.3s ease; +} + +.tb-scroll-top .tb-experience-logo > svg { + height: 65px; +} + +.tb-project-header-meta-items { + display: flex; + flex-direction: column; + gap: 10px; +} + +.tb-project-header-meta-items-left { + align-items: flex-start; +} + +.tb-project-header-meta-items-right { + align-items: flex-end; +} + +/* Experience Page Styles - Matching Project Page */ +.tb-experience-content h1.tb-title { + font-size: 38px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-experience-content-mobile h1.tb-title { + font-size: 28px; + line-height: 1.2; +} + +.tb-experience-content h2.tb-title { + font-size: 32px; + font-weight: 600; + margin: 10px 0 0 0; + line-height: 1.2; +} + +.tb-experience-content-mobile h2.tb-title { + font-size: 26px; + line-height: 1.2; +} + +.tb-experience-content p.tb-paragraph { + font-weight: 500; + margin: 0; +} + +.tb-experience-content .tb-image-container { + width: 100%; + overflow: hidden; + border-radius: 5px; + margin-bottom: 10px; +} + +.tb-experience-header { + display: flex; + flex-direction: column; + gap: 10px; + transition: gap 0.3s ease; + width: 100%; + margin-bottom: 20px; +} + +.tb-scroll-top .tb-experience-header { + gap: 20px; +} + +.tb-experience-title { + font-size: 30px; + font-weight: 700; + margin: 0; + transition: font-size 0.3s ease; +} + +.tb-scroll-top .tb-experience-title { + font-size: 46px; +} + +.tb-scroll-top .tb-experience-title-mobile { + font-size: 36px; +} + +.tb-experience-subtitle { + font-size: 14px; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-experience-subtitle { + font-size: 18px; +} + +.tb-experience-date, +.tb-experience-months-years { + font-size: 12px; + text-align: end; + transition: font-size 0.3s ease; + margin: 0; +} + +.tb-scroll-top .tb-experience-date, +.tb-scroll-top .tb-experience-months-years { + font-size: 16px; +} + +.tb-experience-header-meta, +.tb-experience-header-title { + display: flex; + flex-direction: row; + width: 100%; + justify-content: space-between; + align-items: center; +} + +.tb-experience-header-title { + gap: 30px; +} + +/* Features List */ +.tb-features-list { + display: flex; + flex-wrap: wrap; + gap: 6px; + font-size: 14px; + margin: 0.75em 0; + margin-top: 0.25em; + max-width: 600px; + /* Force 2 rows with horizontal scroll if needed */ + overflow: hidden; + position: relative; + align-items: center; +} + +.tb-features-listItem { + background-color: var(--tb-textColor); + color: var(--tb-backgroundColor); + padding: 4px 8px; + border-radius: 15px; + font-size: 0.75rem; + font-weight: 600; + text-transform: lowercase; +} + +.tb-features-overflow-counter { + background-color: transparent; + color: var(--tb-textColor); + font-weight: 700; + position: relative; + display: flex; + align-items: center; + opacity: 0.8; + padding: 0; + padding-left: 1px; +} + +.tb-project-card .tb-features-list { + margin: 0; + margin-top: 5px; +} + +/* Contact Form */ +.tb-contact-form-wrapper { + width: 100%; +} + +.tb-form { + display: flex; + flex-direction: column; + gap: 15px; + margin: 0.75em 0; + width: 100%; +} + +.tb-form-input:focus { + outline: none; /* Removes the default outline */ + box-shadow: none; /* Removes Chrome's blue glow */ +} + +.tb-form-input { + border: none; + border-radius: 18px; + padding: 6.5px 14px; + max-width: 400px; + min-width: 0; + font-weight: 500; + background-color: var(--tb-backgroundColor); + width: 100%; +} + +.tb-form-input::placeholder { + color: color-mix(in srgb, var(--tb-textColor) 50%, transparent); +} + +textarea.tb-form-input { + padding: 12px 14px; + line-height: 1.5; + vertical-align: top; + resize: vertical; +} + +.tb-form-input-wrapper { + position: relative; + max-width: 400px; + border-radius: 19px; + border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent); + padding: 0; + transition: border 0.3s ease; +} + +.tb-form-input-wrapper:hover, +.tb-form-input-wrapper:focus-within { + border: 2px solid var(--tb-textColor); +} + +.tb-form-input-wrapper .tb-form-input { + background-color: var(--tb-backgroundColor); + position: relative; + z-index: 1; +} + +.tb-form-input:disabled { + opacity: 0.5; +} + +.tb-form-actions { + display: flex; + gap: 15px; + align-items: center; +} + +.tb-form-actions > .tb-button { + margin: 0; +} + +.tb-form-actions > .tb-form-error { + margin: 0; + border: 1px solid #ff42457d; + padding: 3px 6px; + color: #ff4245; + border-radius: 12px; + font-size: 12px; +} + +/* CacheReloadView */ +.tbview { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + padding: 5px 25px; + padding-bottom: 10px; +} + +.tbcard-mobile { + width: 100% !important; + height: 100% !important; + display: flex !important; + flex-direction: column !important; +} + +.tbcard-desktop { + width: 70% !important; + height: 70% !important; + display: flex !important; + flex-direction: column !important; +} + +.tb-loading-container { + padding: 20px; +} + +.tb-loading-icon { + font-size: 48px; + color: white; +} + +/* Column Flex Layout */ +.tb-column-flex { + display: flex; + flex-direction: row; + width: 100%; + align-items: center; + margin-bottom: 10px; +} + +.tb-column-flex-item { + flex-shrink: 0; + display: flex; + flex-direction: column; +} + +.tb-column-flex-item .tb-image-container { + margin-bottom: 0; +} + +/* Responsive behavior for column flex */ +@media (max-width: 768px) { + .tb-column-flex { + flex-direction: column; + gap: 15px; + } + + .tb-column-flex-item { + width: 100% !important; + } +} + +.tb-positions-timeline { + display: flex; + flex-direction: column; + gap: 15px; +} + +.tb-position-timeline-item { + display: flex; + flex-direction: row; + width: 100%; + gap: 15px; +} + +.tb-position-timeline-item-content { + flex: 1; +} + +.tb-position-timeline-item-year { + max-width: 40px; + text-align: end; + font-size: 16px; + font-weight: 600; +} + +.tb-position-timeline-item-name { + font-weight: 600; +} + +/* Video component styles (based on Image component styles) */ +.tb-video-container { + position: relative; + width: 100%; + height: 100%; + min-height: 0; + display: flex; + align-items: center; +} + +.tb-video-container-inner { + border-radius: 5px; + overflow: hidden; + width: 100%; +} + +.tb-video-container-inner-fullscreen { + border-radius: 0; +} + +.tb-video-container-loading { + min-height: 200px; +} + +.tb-video-error { + display: flex; + align-items: center; + justify-content: center; + min-height: 200px; + height: 100%; + width: 100%; + border-radius: 5px; + font-style: italic; + text-align: center; + padding: 20px; + position: relative; + z-index: 1; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 50%, + transparent + ); + border-radius: 5px; + transition: opacity 0.3s ease-in-out; +} + +.tb-video-error.tb-hidden { + pointer-events: none; +} + +.tb-video-placeholder { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + bottom: 0; + z-index: 0; + object-fit: cover; + background-color: var(--tb-textColor); + opacity: 0.5; + transition: opacity 0.2s ease-in-out; + pointer-events: none; + border-radius: 5px; +} + +.tb-video-content { + position: relative; + object-fit: cover; + width: 100%; + height: 100%; + z-index: 1; + transition: opacity 0.3s ease-in-out, height 0.5s, width 0.5s; + opacity: 1; + display: block; + border-radius: 0; +} + +.tb-video-loading-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; +} + +.tb-video-loading { + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + gap: 12px; + align-items: center; + justify-content: center; + text-align: left; + font-style: normal; + padding: 8px; + color: var(--tb-textColor); + stroke: var(--tb-textColor); + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 55%, + transparent + ); + border-radius: 22px; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + box-shadow: -1px 12px 45px 0 + color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent); +} + +.tb-video-loading::before { + content: ""; + position: absolute; + inset: 0; + z-index: -1; + padding: 1px; + border-radius: inherit; + background: linear-gradient( + to bottom right, + color-mix(in srgb, var(--tb-textColor) 12%, transparent), + color-mix(in srgb, var(--tb-textColor) 6%, transparent), + color-mix(in srgb, var(--tb-textColor) 12%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; +} + +.tb-video-loading > svg { + width: 18px; + height: 18px; +} + +.tb-video-loading-progress { + max-width: 200px; + width: 200px; + height: 6px; + background-color: color-mix(in srgb, var(--tb-textColor) 25%, transparent); + border-radius: 3px; + overflow: hidden; + margin: 5px; +} + +.tb-video-loading-progress-bar { + height: 100%; + width: 0; + background-image: linear-gradient( + 90deg, + color-mix(in srgb, var(--tb-textColor) 100%, transparent) 0%, + color-mix(in srgb, var(--tb-textColor) 75%, transparent) 16.16%, + color-mix(in srgb, var(--tb-textColor) 50%, transparent) 33.33%, + color-mix(in srgb, var(--tb-textColor) 50%, transparent) 66.67%, + color-mix(in srgb, var(--tb-textColor) 75%, transparent) 83.33%, + color-mix(in srgb, var(--tb-textColor) 100%, transparent) 100% + ); + background-size: 200% 100%; + background-position: 0 0; + transition: width 0.3s ease-in-out; + border-radius: 3px; + animation: tb-video-loading-progress-shift 1.4s linear infinite; + will-change: background-position; +} + +@keyframes tb-video-loading-progress-shift { + 0% { + background-position: 0 0; + } + 100% { + background-position: 200% 0; + } +} + +.tb-video-controls { + position: absolute; + left: 0; + right: 0; + bottom: 0; + display: flex; + gap: 8px; + align-items: center; + margin: 15px; + padding: 0 12px; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 55%, + transparent + ); + border-radius: 30px; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + box-shadow: -1px 12px 45px 0 + color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent); + z-index: 2; + transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out, + margin 0.3s ease-in-out; + opacity: 1; +} + +.tb-video-controls-fullscreen { + margin: 40px; +} + +.tb-video-controls::before { + content: ""; + position: absolute; + inset: 0; + z-index: -1; + padding: 1px; + border-radius: inherit; + background: linear-gradient( + to bottom right, + color-mix(in srgb, var(--tb-textColor) 12%, transparent), + color-mix(in srgb, var(--tb-textColor) 6%, transparent), + color-mix(in srgb, var(--tb-textColor) 12%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; +} + +.tb-video-controls-separator { + width: 1px; + height: 18px; + background-color: color-mix(in srgb, var(--tb-textColor) 25%, transparent); +} + +.tb-video-seek.rc-slider { + height: 4px; + transition: height 0.3s ease-in-out; + padding: 0; +} + +.tb-video-seek .rc-slider-rail { + background: color-mix(in srgb, var(--tb-textColor) 25%, transparent); + transition: height 0.3s ease-in-out; +} + +.tb-video-seek .rc-slider-track { + background: var(--tb-textColor); + transition: height 0.3s ease-in-out; +} + +.tb-video-seek .rc-slider-handle { + opacity: 0; + background: var(--tb-textColor); + border: none; + transform: scale(0.5); + transform-origin: center center; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, + margin-top 0.3s ease-in-out, box-shadow 0.3s ease-in-out; + box-shadow: none; + width: 16px; + height: 16px; +} + +.tb-video-seek.rc-slider:active .rc-slider-handle, +.tb-video-seek.rc-slider:hover .rc-slider-handle { + margin-top: -5px; + opacity: 1; + transform: scale(1); +} + +.tb-video-seek.rc-slider .rc-slider-handle-dragging { + border: none !important; + box-shadow: 0px 0px 25px 0 + color-mix(in srgb, var(--tb-textColor) 75%, transparent); +} + +.tb-video-seek.rc-slider:active, +.tb-video-seek.rc-slider:hover, +.tb-video-seek.rc-slider:active .rc-slider-track, +.tb-video-seek.rc-slider:active .rc-slider-rail, +.tb-video-seek.rc-slider:hover .rc-slider-track, +.tb-video-seek.rc-slider:hover .rc-slider-rail { + height: 6px; +} + +.tb-video-volume { + width: 96px; +} + +.tb-video-controls.tb-hidden { + opacity: 0; + visibility: hidden; + pointer-events: none; +} + +.tb-video-volume-popup { + position: absolute; + padding: 15px; + width: auto; + z-index: 1000; + + transform-origin: bottom center !important; + background-color: color-mix( + in srgb, + var(--tb-backgroundColor) 55%, + transparent + ); + border-radius: 30px; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + box-shadow: -1px 12px 45px 0 + color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent); +} + +.tb-video-volume-popup:before { + content: ""; + position: absolute; + inset: 0; + z-index: -1; + padding: 1px; + border-radius: inherit; + background: linear-gradient( + to bottom right, + color-mix(in srgb, var(--tb-textColor) 12%, transparent), + color-mix(in srgb, var(--tb-textColor) 6%, transparent), + color-mix(in srgb, var(--tb-textColor) 12%, transparent) + ); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: xor; + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; +} + +.tb-video-volume-popup-container { + margin: 4px 0; +} + +.tb-video-volume.rc-slider { + width: 4px; + height: 120px; + padding: 0; + transition: width 0.3s ease-in-out; +} + +.tb-video-volume.rc-slider .rc-slider-rail { + background: color-mix(in srgb, var(--tb-textColor) 25%, transparent); + transition: width 0.3s ease-in-out; + width: 4px; +} + +.tb-video-volume.rc-slider .rc-slider-track { + background: var(--tb-textColor); + transition: width 0.3s ease-in-out; + width: 4px; + margin-left: 0; + left: 0; +} + +.tb-video-volume.rc-slider:active, +.tb-video-volume.rc-slider:hover, +.tb-video-volume.rc-slider:active .rc-slider-track, +.tb-video-volume.rc-slider:active .rc-slider-rail, +.tb-video-volume.rc-slider:hover .rc-slider-track, +.tb-video-volume.rc-slider:hover .rc-slider-rail { + width: 6px; +} + +.tb-video-volume.rc-slider .rc-slider-handle { + margin-left: -6px; + opacity: 0; + background: var(--tb-textColor); + border: none; + transform: scale(0.5); + transform-origin: center center; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, + margin-left 0.3s ease-in-out, box-shadow 0.3s ease-in-out; + box-shadow: none; + width: 16px; + height: 16px; +} + +.tb-video-volume.rc-slider:active .rc-slider-handle, +.tb-video-volume.rc-slider:hover .rc-slider-handle { + margin-left: -5px; + opacity: 1; + transform: scale(1); +} + +.tb-video-volume.rc-slider .rc-slider-handle-dragging { + border: none !important; + box-shadow: 0px 0px 25px 0 + color-mix(in srgb, var(--tb-textColor) 75%, transparent); +} + +.tb-video-volume-button > .tb-icon-button > svg { + width: auto; +} diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..6e80159 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,8 @@ +/* Main CSS file - imports all organized stylesheets */ + +/* Import organized CSS files */ +@import "./base.css"; +@import "./layout.css"; +@import "./components.css"; +@import "./animations.css"; +@import "./utilities.css"; diff --git a/src/styles/layout.css b/src/styles/layout.css new file mode 100644 index 0000000..2ba52bb --- /dev/null +++ b/src/styles/layout.css @@ -0,0 +1,661 @@ +@property --tb-mask-edge-x { + syntax: ""; + inherits: false; + initial-value: calc(100% - 0px); +} + +/* Layout styles - Page structure, positioning, and layout components */ + +/* Improve scrolling performance */ +.tb-app-container, +.tb-page-wrapper, +.tb-page-container { + will-change: transform; + transform: translateZ(0); /* Force hardware acceleration */ +} + +.tb-app-container-locked { + overflow: hidden; +} + +/* App component styles */ +.tb-app-container { + height: var(--unit-100vh); + overflow-y: auto; + opacity: 1; + transition: opacity 0.3s ease-in-out; + scroll-snap-type: y mandatory; + /* Let react-scroll handle smooth scrolling */ + -webkit-overflow-scrolling: touch; /* Smooth scrolling on iOS */ + width: 100%; +} + +.tb-app-container::-webkit-scrollbar { + display: none; +} + +.tb-loading-container { + height: var(--unit-100vh); + display: flex; + align-items: center; + justify-content: center; +} + +.tb-error-container { + height: var(--unit-100vh); + display: flex; + align-items: center; + justify-content: center; + padding: 20px; +} + +/* Page component styles */ +.tb-page-wrapper { + height: var(--unit-100vh); + width: 100%; + scroll-snap-align: start; + scroll-snap-stop: normal; + /* Allow react-scroll to handle smooth transitions */ +} + +.tb-page-container { + height: var(--unit-100vh); + width: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} + +.tb-page-content { + flex: 0 0 0%; + flex-grow: 3; + padding: 0 var(--tb-page-padding); + margin: 0; + z-index: 2; + height: var(--unit-100vh); /* Use fixed height instead of min-height */ + width: 100%; + color: var(--tb-textColor); + display: flex; + flex-direction: column; + align-items: start; + text-align: left; + transition: opacity 0.3s ease-in-out; + /* Prevent layout shifts */ + contain: layout style; + overflow-y: hidden; + overflow-x: hidden; +} + +.tb-page-content-mobile { + padding: 0 var(--tb-page-mobile-padding); +} + +.tb-page-content-hidden { + opacity: 0; +} + +.tb-page-container-mobile { + gap: 0; +} + +.tb-page-icon { + width: 32px; + height: 32px; + display: inline-block; + margin-right: 10px; + fill: var(--tb-textColor); +} + +/* ContentRenderer component styles */ +.tb-content-default { + font-size: 1.2rem; + max-width: 600px; +} + +.tb-content-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + min-height: 0; + justify-content: center; + align-items: flex-start; + margin: var(--tb-page-margin) 0; +} + +.tb-content-container-vscroll { + margin-bottom: 0; + height: 100%; + display: flex; + flex-direction: column; + position: relative; +} + +.tb-content-container-hscroll { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + position: relative; +} + +.tb-content-container .tb-content-scroll { + display: flex; + flex-direction: column; + padding: 0; + margin: 0; + min-height: 100%; +} + +/* Content scroll when used with SimpleBar */ +.tb-page-vscroll .tb-content-scroll { + display: flex; + flex-direction: column; + gap: 1rem; + padding-top: 50px; + padding-bottom: var(--tb-page-margin); + min-height: 100%; + --tb-mask-edge-x: 100%; + transition: --tb-mask-edge-x 0.5s ease; + mask-image: linear-gradient( + to right, + rgb(255, 255, 255) var(--tb-mask-edge-x), + rgba(113, 113, 113, 0.5) 100% + ); + mask-size: 100% 100%; + mask-repeat: no-repeat; + -webkit-mask-image: linear-gradient( + to right, + rgb(255, 255, 255) var(--tb-mask-edge-x), + rgba(113, 113, 113, 0.5) 100% + ); + -webkit-mask-size: 100% 100%; + -webkit-mask-repeat: no-repeat; +} + +.tb-page-vscroll.simplebar-scrolling .tb-content-scroll { + --tb-mask-edge-x: calc(100% - 24px); +} + +.tb-page-hscroll .tb-content-scroll { + display: flex; + flex-direction: row; + gap: 1rem; + padding-left: var(--tb-page-padding); + height: 100%; +} +.tb-page-hscroll .tb-content-scroll > div { + padding-right: var(--tb-page-padding); +} + +.tb-page-hscroll .simplebar-content { + min-height: 0; + max-height: 100%; +} + +.tb-page-content-mobile .tb-page-hscroll .tb-content-scroll { + padding-left: var(--tb-page-mobile-padding); +} + +.tb-page-content-mobile .tb-page-hscroll .tb-content-scroll > div { + padding-right: var(--tb-page-mobile-padding); +} + +.tb-content-container-vscroll .tb-top-gradient { + left: -50px; + right: -50px; + top: -30px; + mask-image: linear-gradient( + to bottom, + rgb(255 255 255) 0%, + rgb(255 255 255) 50%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to bottom, + rgb(255 255 255) 0%, + rgb(255 255 255) 50%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-content-container-vscroll .tb-bottom-gradient { + position: absolute; + top: unset; + left: -50px; + right: -50px; + bottom: 0; + mask-image: linear-gradient( + to top, + rgb(255 255 255 / 75%) 0%, + rgb(255 255 255 / 75%) 25%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to top, + rgb(255 255 255 / 75%) 0%, + rgb(255 255 255 / 75%) 15%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-page-content-mobile .tb-content-container-vscroll .tb-bottom-gradient { + left: calc(var(--tb-page-mobile-padding) * -1); + right: calc(var(--tb-page-mobile-padding) * -1); +} + +.tb-page-content-mobile .tb-content-container-vscroll .tb-top-gradient { + left: calc(var(--tb-page-mobile-padding) * -1); + right: calc(var(--tb-page-mobile-padding) * -1); +} + +/* When content container has scrollable content */ +.tb-content-container-vscroll .tb-page-scroll-sticky { + flex-shrink: 0; + width: 100%; +} + +.tb-content-container-vscroll .tb-page-vscroll { + flex: 1; +} + +.tb-page-vscroll { + max-height: 100%; + width: 100%; + min-height: 0; /* Allow flex child to shrink below content size */ + mask: linear-gradient( + 180deg, + transparent 0%, + black var(--tb-top-gradient-height, 50px), + black var(--tb-bottom-gradient-height, 50px), + transparent 100% + ); + -webkit-mask: linear-gradient( + 180deg, + transparent 0%, + black var(--tb-top-gradient-height, 50px), + black var(--tb-bottom-gradient-height, 50px), + transparent 100% + ); +} + +.tb-page-hscroll { + max-width: 100%; + height: 100%; + min-height: 0; /* Allow flex child to shrink below content size */ + mask: linear-gradient( + 90deg, + transparent 0%, + black var(--tb-page-margin, 50px), + black calc(100% - var(--tb-page-margin, 50px)), + transparent 100% + ); +} + +.tb-page-content-mobile .tb-page-hscroll { + mask: linear-gradient( + 90deg, + transparent 0%, + black var(--tb-page-mobile-padding, 50px), + black calc(100% - var(--tb-page-mobile-padding, 50px)), + transparent 100% + ); +} + +.tb-page-scroll-wrapper { + position: relative; + max-height: 100%; + width: 100%; + min-height: 0; +} + +.tb-content-container-hscroll .tb-page-scroll-wrapper { + margin-left: calc(var(--tb-page-padding) * -1); + width: 100vw; +} + +.tb-page-content-mobile .tb-content-container-hscroll .tb-page-scroll-wrapper { + margin-left: calc(var(--tb-page-mobile-padding) * -1); + width: 100vw; +} + +.tb-page-scroll-start { + scroll-snap-align: start; + scroll-snap-stop: normal; + display: block; +} + +.tb-page-scroll-sticky { + position: sticky; + top: 0; + z-index: 4; +} + +.tb-page-scroll-sticky .tb-title, +.tb-page-scroll-sticky .tb-blog-title, +.tb-page-scroll-sticky .tb-blog-subtitle, +.tb-page-scroll-sticky .tb-blog-date { + text-shadow: 0 0 20px var(--tb-backgroundColor); +} + +.tb-content-align-center { + align-items: center; + text-align: center; +} + +.tb-content-align-right { + align-items: flex-end; + text-align: right; +} + +.tb-content-align-left { + align-items: flex-start; + text-align: left; +} + +.tb-content-align-alternate > *:nth-child(even) { + align-self: flex-end; + text-align: end; +} + +.tb-content-align-alternate > .tb-callout:nth-child(even), +.tb-content-scroll.tb-content-align-alternate > .tb-callout:nth-child(even) { + flex-direction: row-reverse; +} + +.tb-content-align-alternate > p.tb-callout:nth-child(even) { + position: relative; + padding-right: 20px; +} + +.tb-content-scroll.tb-content-align-alternate > *:nth-child(even) { + align-self: flex-start; + text-align: start; +} + +.tb-content-scroll.tb-content-align-alternate > *:nth-child(odd) { + align-self: flex-end; + text-align: end; +} + +.tb-content-scroll.tb-content-align-alternate > .tb-callout:nth-child(odd) { + flex-direction: row-reverse; +} + +.tb-content-scroll.tb-content-align-alternate > .tb-callout:nth-child(even) { + flex-direction: row; +} + +.tb-content-align-alternate > p.tb-callout:nth-child(even):after { + content: ""; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 4px; + border-radius: 2px; + background-color: var(--tb-textColor); +} + +.tb-content-align-alternate > *:nth-child(odd) { + align-self: flex-start; + text-align: start; +} + +.tb-callout { + display: flex; + flex-direction: row; + gap: 15px; + margin: 0; +} + +.tb-callout-icon-container { + width: 32px; + min-width: 32px; + height: 32px; + fill: var(--tb-textColor); + margin-top: 4px; +} + +.tb-callout-content { + display: flex; + flex-direction: column; + gap: 10px; +} + +.tb-content-container-mobile-image { + justify-content: start; +} + +.tb-content-justify-middle { + justify-content: center; +} + +.tb-content-justify-bottom { + justify-content: flex-end; +} + +.tb-content-justify-top { + justify-content: flex-start; +} + +.tb-content-justify-even { + justify-content: space-evenly; +} + +.tb-content-justify-between { + justify-content: space-between; +} + +.tb-content-justify-around { + justify-content: space-around; +} + +.tb-content-container-wrapper { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + flex-grow: 1; +} + +.tb-ios-webclip .tb-content-container-wrapper { + margin-top: 15px; +} + +/* Header and Footer */ +.tb-header { + width: 100%; + display: flex; + position: fixed; + top: 0; + left: 0; + z-index: 10; + margin-top: var(--tb-header-footer-vertical-padding); + padding-left: var(--tb-header-footer-horizontal-padding); + padding-right: var(--tb-header-footer-horizontal-padding); + justify-content: space-between; + align-items: center; + transition: opacity 0.3s ease-in-out; + opacity: 1; +} + +.tb-ios-webclip .tb-header { + margin-top: 60px; +} + +.tb-footer { + width: 100%; + display: flex; + position: fixed; + bottom: 0; + left: 0; + z-index: 10; + margin-bottom: var(--tb-header-footer-vertical-padding); + padding-left: var(--tb-header-footer-horizontal-padding); + padding-right: var(--tb-header-footer-horizontal-padding); + justify-content: space-between; + align-items: center; + transition: opacity 0.3s ease-in-out; + opacity: 1; +} + +.tb-footer-mobile { + margin-bottom: var(--tb-page-mobile-padding); + padding-left: var(--tb-page-mobile-padding); + padding-right: var(--tb-page-mobile-padding); +} + +.tb-header-mobile { + margin-top: var(--tb-page-mobile-padding); + padding-left: var(--tb-page-mobile-padding); + padding-right: var(--tb-page-mobile-padding); +} + +.tb-header-float { + position: absolute; + top: 0; + left: 0; + z-index: 9; +} + +.tb-header-hidden { + opacity: 0; +} + +/* Mobile overlay styles */ +.tb-mobile-overlay { + background-color: green; + position: fixed; + top: var(--unit-100vh); + left: 0; + width: 100vw; + height: 30px; +} + +/* Gradient overlays */ +.tb-bottom-gradient { + position: absolute; + top: unset; + bottom: 0; + left: 0; + right: 0; + z-index: 2; + opacity: 1; + height: 100px; + backdrop-filter: blur(15px); + pointer-events: none; + -webkit-backdrop-filter: blur(15px); + mask-image: linear-gradient( + to top, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to top, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-bottom-gradient-color { + position: sticky; + bottom: 0; + left: 0; + right: 0; + height: 100px; + z-index: 3; + background: linear-gradient( + to top, + var(--tb-backgroundColor) 15%, + transparent 100% + ); +} + +.tb-top-gradient { + position: absolute; + inset: 0; + top: 0; + z-index: 2; + opacity: 1; + height: 100px; + backdrop-filter: blur(15px); + pointer-events: none; + -webkit-backdrop-filter: blur(15px); + mask-image: linear-gradient( + to bottom, + rgb(255 255 255) 0%, + rgb(255 255 255) 0%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to bottom, + rgb(255 255 255) 0%, + rgb(255 255 255) 0%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-left-gradient { + position: absolute; + inset: 0; + left: 0; + z-index: 2; + opacity: 1; + width: var(--tb-page-padding); + backdrop-filter: blur(15px); + pointer-events: none; + -webkit-backdrop-filter: blur(15px); + mask-image: linear-gradient( + to right, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to right, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-right-gradient { + position: absolute; + inset: 0; + right: 0; + left: unset; + z-index: 2; + opacity: 1; + width: var(--tb-page-padding); + backdrop-filter: blur(15px); + pointer-events: none; + -webkit-backdrop-filter: blur(15px); + mask-image: linear-gradient( + to left, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); + -webkit-mask-image: linear-gradient( + to left, + rgb(255 255 255) 0%, + rgb(255 255 255) 25%, + rgb(255 255 255 / 0%) 100% + ); +} + +.tb-content-container-hscroll .tb-left-gradient, +.tb-content-container-hscroll .tb-right-gradient { + margin-top: -100px; + margin-bottom: -100px; +} + +.tb-page-content-mobile .tb-content-container-hscroll .tb-left-gradient, +.tb-page-content-mobile .tb-content-container-hscroll .tb-right-gradient { + width: var(--tb-page-mobile-padding); +} diff --git a/src/styles/utilities.css b/src/styles/utilities.css new file mode 100644 index 0000000..5dcd0a5 --- /dev/null +++ b/src/styles/utilities.css @@ -0,0 +1,41 @@ +/* Utility classes - Helper classes and overrides */ + +/* Utility classes */ +.tb-hidden { + opacity: 0; +} + +.tb-visible { + opacity: 1; +} + +/* OverlayScrollbars custom styling */ +.os-scrollbar { + --os-size: 4px; + --os-padding-perpendicular: 0px; + --os-padding-axis: 0px; + --os-track-border-radius: 2px; + --os-track-bg: transparent; + --os-track-bg-hover: transparent; + --os-track-bg-active: transparent; + --os-handle-border-radius: 2px; + --os-handle-bg: var(--tb-textColor); + --os-handle-bg-hover: var(--tb-textColor); + --os-handle-bg-active: var(--tb-textColor); + --os-handle-min-size: 33px; + --os-handle-max-size: none; + --os-handle-perpendicular-size: 100%; + --os-handle-perpendicular-size-hover: 100%; + --os-handle-perpendicular-size-active: 100%; + --os-handle-interactive-area-offset: 0px; +} + +/* For blog list scrollbar */ +.tb-blog-list-scroll .os-scrollbar { + --os-size: 4px; +} + +/* For project cards horizontal scrollbar */ +.tb-project-cards .os-scrollbar-horizontal { + display: none !important; +} diff --git a/src/svgs/Website2024.jsx b/src/svgs/Website2024.jsx new file mode 100644 index 0000000..c3d4f02 --- /dev/null +++ b/src/svgs/Website2024.jsx @@ -0,0 +1,7 @@ +import Website2024Svg from "../../assets/website2024.svg?react"; + +const Website2024 = () => { + return ; +}; + +export default Website2024; diff --git a/src/svgs/Website2025.jsx b/src/svgs/Website2025.jsx new file mode 100644 index 0000000..d3b3913 --- /dev/null +++ b/src/svgs/Website2025.jsx @@ -0,0 +1,7 @@ +import Website2025Svg from "../../assets/website2025.svg?react"; + +const Website2025 = () => { + return ; +}; + +export default Website2025; diff --git a/src/svgs/Website2026.jsx b/src/svgs/Website2026.jsx new file mode 100644 index 0000000..15573be --- /dev/null +++ b/src/svgs/Website2026.jsx @@ -0,0 +1,7 @@ +import Website2026Svg from "../../assets/website2026.svg?react"; + +const Website2026 = () => { + return ; +}; + +export default Website2026; diff --git a/src/utils/CacheReloadView.jsx b/src/utils/CacheReloadView.jsx new file mode 100644 index 0000000..2a64121 --- /dev/null +++ b/src/utils/CacheReloadView.jsx @@ -0,0 +1,64 @@ +import { useState, useEffect } from "react"; +import { useMediaQuery } from "react-responsive"; +import { Card, Flex, message } from "antd"; +import { LoadingOutlined } from "@ant-design/icons"; + +const CacheReloadView = () => { + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const isMobile = useMediaQuery({ maxWidth: 600 }); + + // Fetch blogs from API + useEffect(() => { + const reloadCache = async () => { + try { + const response = await fetch( + "https://web.tombutcher.work/api/utils/cache", + { method: "POST" } + ); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + window.close(); + setLoading(false); + } catch (err) { + console.error("Error reloading cache:", err); + setError(err.message); + setLoading(false); + message.error("Failed to reload cache!"); + } + }; + + reloadCache(); + }, []); + + return ( +
    + + {loading ? ( + + + + ) : error ? ( + +

    Error to reload cache: {error}

    +
    + ) : ( + +

    Cache Reloaded!

    +
    + )} +
    +
    + ); +}; + +export default CacheReloadView; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..ba19d19 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import svgr from "vite-plugin-svgr"; +import svgo from "vite-plugin-svgo"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react(), svgo(), svgr()], + server: { + host: "0.0.0.0", + allowedHosts: ["thehideout.tombutcher.work"], + }, + base: "/", +}); diff --git a/wrangler.jsonc b/wrangler.jsonc new file mode 100644 index 0000000..a80aacc --- /dev/null +++ b/wrangler.jsonc @@ -0,0 +1,4 @@ +{ + "name": "tombutcher-ui-2026", + "pages_build_output_dir": "./dist" +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..334fa51 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,11563 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adobe/css-tools@^4.4.0": + version "4.4.4" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz" + integrity sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ant-design/colors@^7.0.0", "@ant-design/colors@^7.2.1": + version "7.2.1" + resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.1.tgz" + integrity sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ== + dependencies: + "@ant-design/fast-color" "^2.0.6" + +"@ant-design/colors@^8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz" + integrity sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw== + dependencies: + "@ant-design/fast-color" "^3.0.0" + +"@ant-design/cssinjs-utils@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.3.tgz" + integrity sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg== + dependencies: + "@ant-design/cssinjs" "^1.21.0" + "@babel/runtime" "^7.23.2" + rc-util "^5.38.0" + +"@ant-design/cssinjs@^1.21.0", "@ant-design/cssinjs@^1.23.0": + version "1.24.0" + resolved "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.24.0.tgz" + integrity sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg== + dependencies: + "@babel/runtime" "^7.11.1" + "@emotion/hash" "^0.8.0" + "@emotion/unitless" "^0.7.5" + classnames "^2.3.1" + csstype "^3.1.3" + rc-util "^5.35.0" + stylis "^4.3.4" + +"@ant-design/fast-color@^2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz" + integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA== + dependencies: + "@babel/runtime" "^7.24.7" + +"@ant-design/fast-color@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz" + integrity sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA== + +"@ant-design/icons-svg@^4.4.0": + version "4.4.2" + resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz" + integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA== + +"@ant-design/icons@^5.6.1": + version "5.6.1" + resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz" + integrity sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/icons-svg" "^4.4.0" + "@babel/runtime" "^7.24.8" + classnames "^2.2.6" + rc-util "^5.31.1" + +"@ant-design/icons@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-6.0.2.tgz" + integrity sha512-1U1+6afDP+w+6jDkxrmn/kwoFJvB/aD4mQ/+Rhkp+BBRAfgK46gxKb6VxnoS/hYDiRdhIjzilkCmi6pD7zjxCw== + dependencies: + "@ant-design/colors" "^8.0.0" + "@ant-design/icons-svg" "^4.4.0" + "@rc-component/util" "^1.2.1" + classnames "^2.2.6" + +"@ant-design/react-slick@~1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz" + integrity sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + resize-observer-polyfill "^1.5.1" + throttle-debounce "^5.0.0" + +"@apideck/better-ajv-errors@^0.3.1": + 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== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz" + integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.21.3", "@babel/core@^7.28.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz" + integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.4" + "@babel/types" "^7.28.4" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.16.3": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz" + integrity sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.28.3", "@babel/generator@^7.7.2": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz" + integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== + dependencies: + "@babel/parser" "^7.28.3" + "@babel/types" "^7.28.2" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz" + integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.28.3" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.5": + version "0.6.5" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz" + integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + debug "^4.4.1" + lodash.debounce "^4.0.8" + resolve "^1.22.10" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" + integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.28.3" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz" + integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g== + dependencies: + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.3" + "@babel/types" "^7.28.2" + +"@babel/helpers@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" + integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz" + integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== + dependencies: + "@babel/types" "^7.28.4" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz" + integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.3" + +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz" + integrity sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-decorators" "^7.27.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.21.11" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.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== + +"@babel/plugin-syntax-async-generators@^7.8.4": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz" + integrity sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz" + integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + 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== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-async-generator-functions@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz" + integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.28.0" + +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-block-scoping@^7.28.0": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz" + integrity sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-static-block@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz" + integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.28.3" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-classes@^7.28.3": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz" + integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.28.4" + +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" + +"@babel/plugin-transform-destructuring@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz" + integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.0" + +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-explicit-resource-management@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz" + integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz" + integrity sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-flow" "^7.27.1" + +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== + dependencies: + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-object-rest-spread@^7.28.0": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz" + integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.4" + +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz" + integrity sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.27.1": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz" + integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-jsx-development@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz" + integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.27.1" + +"@babel/plugin-transform-react-jsx-self@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz" + integrity sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-jsx-source@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz" + integrity sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz" + integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/plugin-transform-react-pure-annotations@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz" + integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regenerator@^7.28.3": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz" + integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz" + integrity sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typescript@^7.27.1": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz" + integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz" + integrity sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg== + dependencies: + "@babel/compat-data" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.0" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.28.3" + "@babel/plugin-transform-classes" "^7.28.3" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.0" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.3" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + core-js-compat "^3.43.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + 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== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz" + integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx-development" "^7.27.1" + "@babel/plugin-transform-react-pure-annotations" "^7.27.1" + +"@babel/preset-typescript@^7.16.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz" + integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.27.1" + +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz" + integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + +"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.7.2": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz" + integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz" + integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@csstools/normalize.css@*": + version "12.1.1" + resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz" + integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/unitless@^0.7.5": + version "0.7.5" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@^9.24.0": + version "9.35.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz" + integrity sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw== + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + 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== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@marsidev/react-turnstile@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@marsidev/react-turnstile/-/react-turnstile-1.3.1.tgz" + integrity sha512-h2THG/75k4Y049hgjSGPIcajxXnh+IZAiXVbryQyVmagkboN7pJtBgR16g8akjwUBSfRrg6jw6KvPDjscQflog== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher@^2.4.1": + version "2.5.1" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.1" + "@parcel/watcher-darwin-arm64" "2.5.1" + "@parcel/watcher-darwin-x64" "2.5.1" + "@parcel/watcher-freebsd-x64" "2.5.1" + "@parcel/watcher-linux-arm-glibc" "2.5.1" + "@parcel/watcher-linux-arm-musl" "2.5.1" + "@parcel/watcher-linux-arm64-glibc" "2.5.1" + "@parcel/watcher-linux-arm64-musl" "2.5.1" + "@parcel/watcher-linux-x64-glibc" "2.5.1" + "@parcel/watcher-linux-x64-musl" "2.5.1" + "@parcel/watcher-win32-arm64" "2.5.1" + "@parcel/watcher-win32-ia32" "2.5.1" + "@parcel/watcher-win32-x64" "2.5.1" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.17" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz" + integrity sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ== + dependencies: + ansi-html "^0.0.9" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^4.2.0" + source-map "^0.7.3" + +"@rc-component/async-validator@^5.0.3": + version "5.0.4" + resolved "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz" + integrity sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg== + dependencies: + "@babel/runtime" "^7.24.4" + +"@rc-component/color-picker@~2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-2.0.1.tgz" + integrity sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q== + dependencies: + "@ant-design/fast-color" "^2.0.6" + "@babel/runtime" "^7.23.6" + classnames "^2.2.6" + rc-util "^5.38.1" + +"@rc-component/context@^1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz" + integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w== + dependencies: + "@babel/runtime" "^7.10.1" + rc-util "^5.27.0" + +"@rc-component/mini-decimal@^1.0.1": + version "1.1.0" + resolved "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz" + integrity sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ== + dependencies: + "@babel/runtime" "^7.18.0" + +"@rc-component/mutate-observer@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz" + integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2", "@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz" + integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/qrcode@~1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.0.0.tgz" + integrity sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg== + dependencies: + "@babel/runtime" "^7.24.7" + classnames "^2.3.2" + rc-util "^5.38.0" + +"@rc-component/tour@~1.15.1": + version "1.15.1" + resolved "https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.1.tgz" + integrity sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ== + dependencies: + "@babel/runtime" "^7.18.0" + "@rc-component/portal" "^1.0.0-9" + "@rc-component/trigger" "^2.0.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.3.0.tgz" + integrity sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg== + dependencies: + "@babel/runtime" "^7.23.2" + "@rc-component/portal" "^1.1.0" + classnames "^2.3.2" + rc-motion "^2.0.0" + rc-resize-observer "^1.3.1" + rc-util "^5.44.0" + +"@rc-component/util@^1.2.1": + version "1.3.0" + resolved "https://registry.npmjs.org/@rc-component/util/-/util-1.3.0.tgz" + integrity sha512-hfXE04CVsxI/slmWKeSh6du7sSKpbvVdVEZCa8A+2QWDlL97EsCYme2c3ZWLn1uC9FR21JoewlrhUPWO4QgO8w== + dependencies: + is-mobile "^5.0.0" + react-is "^18.2.0" + +"@rolldown/pluginutils@1.0.0-beta.27": + version "1.0.0-beta.27" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz" + integrity sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA== + +"@rollup/plugin-babel@^5.2.0": + 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== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rollup/pluginutils@^5.2.0": + version "5.3.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz" + integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@rollup/rollup-darwin-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz" + integrity sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw== + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@rushstack/eslint-patch@^1.1.0": + version "1.12.0" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz" + integrity sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + 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== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@*", "@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@tanstack/query-core@5.90.7": + version "5.90.7" + resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.7.tgz" + integrity sha512-6PN65csiuTNfBMXqQUxQhCNdtm1rV+9kC9YwWAIKcaxAauq3Wu7p18j3gQY3YIBJU70jT/wzCCZ2uqto/vQgiQ== + +"@tanstack/react-query@^5.90.7": + version "5.90.7" + resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.7.tgz" + integrity sha512-wAHc/cgKzW7LZNFloThyHnV/AX9gTg3w5yAv0gvQHPZoCnepwqCMtzbuPbb2UvfvO32XZ46e8bPOYbfZhzVnnQ== + dependencies: + "@tanstack/query-core" "5.90.7" + +"@testing-library/dom@^10.0.0", "@testing-library/dom@>=7.21.4": + version "10.4.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz" + integrity sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + picocolors "1.1.1" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^6.6.3": + version "6.8.0" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.8.0.tgz" + integrity sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ== + dependencies: + "@adobe/css-tools" "^4.4.0" + aria-query "^5.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + picocolors "^1.1.1" + redent "^3.0.0" + +"@testing-library/react@^16.3.0": + version "16.3.0" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz" + integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== + dependencies: + "@babel/runtime" "^7.12.5" + +"@testing-library/user-event@^14.6.1": + version "14.6.1" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz" + integrity sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw== + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsparticles/basic@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.9.1.tgz" + integrity sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ== + dependencies: + "@tsparticles/engine" "3.9.1" + "@tsparticles/move-base" "3.9.1" + "@tsparticles/plugin-hex-color" "3.9.1" + "@tsparticles/plugin-hsl-color" "3.9.1" + "@tsparticles/plugin-rgb-color" "3.9.1" + "@tsparticles/shape-circle" "3.9.1" + "@tsparticles/updater-color" "3.9.1" + "@tsparticles/updater-opacity" "3.9.1" + "@tsparticles/updater-out-modes" "3.9.1" + "@tsparticles/updater-size" "3.9.1" + +"@tsparticles/engine@^3.0.2", "@tsparticles/engine@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.9.1.tgz" + integrity sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ== + +"@tsparticles/interaction-external-attract@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.9.1.tgz" + integrity sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-bounce@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.9.1.tgz" + integrity sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-bubble@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.9.1.tgz" + integrity sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-connect@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.9.1.tgz" + integrity sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-grab@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.9.1.tgz" + integrity sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-pause@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.9.1.tgz" + integrity sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-push@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.9.1.tgz" + integrity sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-remove@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.9.1.tgz" + integrity sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-repulse@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.9.1.tgz" + integrity sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-external-slow@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.9.1.tgz" + integrity sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-particles-attract@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.9.1.tgz" + integrity sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-particles-collisions@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.9.1.tgz" + integrity sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/interaction-particles-links@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.9.1.tgz" + integrity sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/move-base@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.9.1.tgz" + integrity sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/move-parallax@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.9.1.tgz" + integrity sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/plugin-easing-quad@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.9.1.tgz" + integrity sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/plugin-hex-color@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/plugin-hex-color/-/plugin-hex-color-3.9.1.tgz" + integrity sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/plugin-hsl-color@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/plugin-hsl-color/-/plugin-hsl-color-3.9.1.tgz" + integrity sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/plugin-rgb-color@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/plugin-rgb-color/-/plugin-rgb-color-3.9.1.tgz" + integrity sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/react@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@tsparticles/react/-/react-3.0.0.tgz" + integrity sha512-hjGEtTT1cwv6BcjL+GcVgH++KYs52bIuQGW3PWv7z3tMa8g0bd6RI/vWSLj7p//NZ3uTjEIeilYIUPBh7Jfq/Q== + +"@tsparticles/shape-circle@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.9.1.tgz" + integrity sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-emoji@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.9.1.tgz" + integrity sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-image@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.9.1.tgz" + integrity sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-line@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.9.1.tgz" + integrity sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-polygon@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.9.1.tgz" + integrity sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-square@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.9.1.tgz" + integrity sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/shape-star@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.9.1.tgz" + integrity sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/slim@^3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.9.1.tgz" + integrity sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw== + dependencies: + "@tsparticles/basic" "3.9.1" + "@tsparticles/engine" "3.9.1" + "@tsparticles/interaction-external-attract" "3.9.1" + "@tsparticles/interaction-external-bounce" "3.9.1" + "@tsparticles/interaction-external-bubble" "3.9.1" + "@tsparticles/interaction-external-connect" "3.9.1" + "@tsparticles/interaction-external-grab" "3.9.1" + "@tsparticles/interaction-external-pause" "3.9.1" + "@tsparticles/interaction-external-push" "3.9.1" + "@tsparticles/interaction-external-remove" "3.9.1" + "@tsparticles/interaction-external-repulse" "3.9.1" + "@tsparticles/interaction-external-slow" "3.9.1" + "@tsparticles/interaction-particles-attract" "3.9.1" + "@tsparticles/interaction-particles-collisions" "3.9.1" + "@tsparticles/interaction-particles-links" "3.9.1" + "@tsparticles/move-parallax" "3.9.1" + "@tsparticles/plugin-easing-quad" "3.9.1" + "@tsparticles/shape-emoji" "3.9.1" + "@tsparticles/shape-image" "3.9.1" + "@tsparticles/shape-line" "3.9.1" + "@tsparticles/shape-polygon" "3.9.1" + "@tsparticles/shape-square" "3.9.1" + "@tsparticles/shape-star" "3.9.1" + "@tsparticles/updater-life" "3.9.1" + "@tsparticles/updater-rotate" "3.9.1" + "@tsparticles/updater-stroke-color" "3.9.1" + +"@tsparticles/updater-color@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.9.1.tgz" + integrity sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-life@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.9.1.tgz" + integrity sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-opacity@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.9.1.tgz" + integrity sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-out-modes@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.9.1.tgz" + integrity sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-rotate@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.9.1.tgz" + integrity sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-size@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.9.1.tgz" + integrity sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@tsparticles/updater-stroke-color@3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.9.1.tgz" + integrity sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA== + dependencies: + "@tsparticles/engine" "3.9.1" + +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9", "@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.28.0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== + dependencies: + "@babel/types" "^7.28.2" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.12" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz" + integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.8", "@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.0.7" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz" + integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.3" + resolved "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz" + integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "*" + +"@types/express@^4.17.13": + version "4.17.23" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz" + integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.8": + version "1.17.16" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz" + integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.14" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz" + integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@^18.0.0 || ^20.0.0 || >=22.0.0": + version "24.3.3" + resolved "https://registry.npmjs.org/@types/node/-/node-24.3.3.tgz" + integrity sha512-GKBNHjoNw3Kra1Qg5UXttsY5kiWMEfoHq2TmXb+b1rcm6N7B3wTrFYIf/oSZ1xNQ+hVVijgLkiDZh7jRRsh+Gw== + dependencies: + undici-types "~7.10.0" + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prettier@^2.1.5": + version "2.7.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/q@^1.5.1": + version "1.5.8" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz" + integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== + +"@types/qs@*": + version "6.14.0" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@^19.1.1": + version "19.1.9" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz" + integrity sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ== + +"@types/react@^18.0.0 || ^19.0.0", "@types/react@^19.0.0", "@types/react@^19.1.0": + version "19.1.13" + resolved "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz" + integrity sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ== + dependencies: + csstype "^3.0.2" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/semver@^7.3.12": + version "7.7.1" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== + +"@types/send@*": + version "0.17.5" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz" + integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.8" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz" + integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/trusted-types@^2.0.2": + version "2.0.7" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +"@types/ws@^8.5.5": + version "8.18.1" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^16.0.0": + version "16.0.9" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" + integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz" + integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@vitejs/plugin-react@^4.3.4": + version "4.7.0" + resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz" + integrity sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA== + dependencies: + "@babel/core" "^7.28.0" + "@babel/plugin-transform-react-jsx-self" "^7.27.1" + "@babel/plugin-transform-react-jsx-source" "^7.27.1" + "@rolldown/pluginutils" "1.0.0-beta.27" + "@types/babel__core" "^7.20.5" + react-refresh "^0.17.0" + +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +accepts@~1.3.4, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0, acorn@^8.15.0, acorn@^8.2.4, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^8.6.0, ajv@>=8: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-html@^0.0.9: + version "0.0.9" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz" + integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + 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" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +antd@^5.24.6: + version "5.27.3" + resolved "https://registry.npmjs.org/antd/-/antd-5.27.3.tgz" + integrity sha512-Jewp1ek1iyqoAyjWyPgzc2kioZ+7S3jh39a+tld/j4ucnuf/cBk4omfyIdhLz49pVNsaEcRp5LtJOSQPFwPgpA== + dependencies: + "@ant-design/colors" "^7.2.1" + "@ant-design/cssinjs" "^1.23.0" + "@ant-design/cssinjs-utils" "^1.1.3" + "@ant-design/fast-color" "^2.0.6" + "@ant-design/icons" "^5.6.1" + "@ant-design/react-slick" "~1.1.2" + "@babel/runtime" "^7.26.0" + "@rc-component/color-picker" "~2.0.1" + "@rc-component/mutate-observer" "^1.1.0" + "@rc-component/qrcode" "~1.0.0" + "@rc-component/tour" "~1.15.1" + "@rc-component/trigger" "^2.3.0" + classnames "^2.5.1" + copy-to-clipboard "^3.3.3" + dayjs "^1.11.11" + rc-cascader "~3.34.0" + rc-checkbox "~3.5.0" + rc-collapse "~3.9.0" + rc-dialog "~9.6.0" + rc-drawer "~7.3.0" + rc-dropdown "~4.2.1" + rc-field-form "~2.7.0" + rc-image "~7.12.0" + rc-input "~1.8.0" + rc-input-number "~9.5.0" + rc-mentions "~2.20.0" + rc-menu "~9.16.1" + rc-motion "^2.9.5" + rc-notification "~5.6.4" + rc-pagination "~5.1.0" + rc-picker "~4.11.3" + rc-progress "~4.0.0" + rc-rate "~2.13.1" + rc-resize-observer "^1.4.3" + rc-segmented "~2.7.0" + rc-select "~14.16.8" + rc-slider "~11.1.8" + rc-steps "~6.0.1" + rc-switch "~4.1.0" + rc-table "~7.52.6" + rc-tabs "~15.7.0" + rc-textarea "~1.10.2" + rc-tooltip "~6.4.0" + rc-tree "~5.13.1" + rc-tree-select "~5.27.0" + rc-upload "~4.9.2" + rc-util "^5.44.4" + scroll-into-view-if-needed "^3.1.0" + throttle-debounce "^5.0.2" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.0.0, aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.reduce@^1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz" + integrity sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-array-method-boxes-properly "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + is-string "^1.1.1" + +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + +async@^3.2.6: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.13: + version "10.4.21" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + dependencies: + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.7: + 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== + dependencies: + possible-typed-array-names "^1.0.0" + +axe-core@^4.10.0: + version "4.10.3" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz" + integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== + +axios@^1.6.0: + version "1.12.1" + resolved "https://registry.npmjs.org/axios/-/axios-1.12.1.tgz" + integrity sha512-Kn4kbSXpkFHCGE6rBFNwIv0GQs4AvDT80jlveJDKFxjbTYMUeB4QtsdPCv6H8Cm19Je7IU6VFtRl2zWZI0rudQ== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.4.1" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz" + integrity sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.4" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.4.14: + version "0.4.14" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz" + integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== + dependencies: + "@babel/compat-data" "^7.27.7" + "@babel/helper-define-polyfill-provider" "^0.6.5" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" + +babel-plugin-polyfill-regenerator@^0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz" + integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@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-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.1.0" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz" + integrity sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +baseline-browser-mapping@^2.8.2: + version "2.8.2" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.2.tgz" + integrity sha512-NvcIedLxrs9llVpX7wI+Jz4Hn9vJQkCPKrTaHIE0sW/Rj1iq6Fzby4NbyTZjQJNoypBXNaG7tEHkTgONZpwgxQ== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bean@*: + version "1.0.15" + resolved "https://registry.npmjs.org/bean/-/bean-1.0.15.tgz" + integrity sha512-/X7mF8caOC3qZYSJu62wEJ7AO5/ZIKwwvjBFded5s8IDdRLJSAXfYLJaNPIa/ALThJIWtqtJbbfGbGOjISX1bw== + +bfj@^7.0.2: + version "7.1.0" + resolved "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== + dependencies: + bluebird "^3.7.2" + check-types "^11.2.3" + hoopy "^0.1.4" + jsonpath "^1.1.1" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +blurhash@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz" + integrity sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w== + +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.3.0" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +bonzo@*: + version "2.0.0" + resolved "https://registry.npmjs.org/bonzo/-/bonzo-2.0.0.tgz" + integrity sha512-RQG5bX6VhxP6H8hOcU5LNk9FmfKwppbxVj8J1cVSZcHYyKaxyC+tV5VUhRYzpgsw5AsYmlsQpBLIGu6DPXPngA== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.3, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: + version "4.26.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.26.0.tgz" + integrity sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A== + dependencies: + baseline-browser-mapping "^2.8.2" + caniuse-lite "^1.0.30001741" + electron-to-chromium "^1.5.218" + node-releases "^2.0.21" + update-browserslist-db "^1.1.3" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + 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== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001741: + version "1.0.30001741" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz" + integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz" + integrity sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg== + +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== + +chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.4.3" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + +classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2, classnames@^2.5.1, classnames@2.x: + version "2.5.1" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + 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" + +color-convert@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-3.1.2.tgz" + integrity sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg== + dependencies: + color-name "^2.0.0" + +color-name@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/color-name/-/color-name-2.0.2.tgz" + integrity sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + 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== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-tags@^1.8.0: + 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== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.8.1" + resolved "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" + vary "~1.1.2" + +compute-scroll-into-view@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz" + integrity sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + 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== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz" + integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.43.0: + version "3.45.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz" + integrity sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA== + dependencies: + browserslist "^4.25.3" + +core-js-pure@^3.23.3: + version "3.45.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.45.1.tgz" + integrity sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ== + +core-js@^3.19.2: + version "3.45.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz" + integrity sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + 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== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.11.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-mediaquery@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz" + integrity sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q== + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.2.2" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz" + integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1, css-what@^6.1.0: + version "6.2.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssdb@^7.1.0: + version "7.11.2" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz" + integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2, csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +dayjs@^1.11.11, dayjs@^1.11.19, "dayjs@>= 1.x": + version "1.11.19" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz" + integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== + +debug@^2.6.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1, debug@4: + version "4.4.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decimal.js@^10.2.1: + version "10.6.0" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-is@^0.1.3, deep-is@~0.1.3: + 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== + +deepmerge@^4.2.2: + 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== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + 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" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.2.1: + 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" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domready@*: + version "1.0.8" + resolved "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz" + integrity sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.2.2" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" + integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.6: + version "3.1.10" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.218: + version "1.5.218" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.218.tgz" + integrity sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg== + +emile@*: + version "1.0.5" + resolved "https://registry.npmjs.org/emile/-/emile-1.0.5.tgz" + integrity sha512-G0W2OdvogpS0XgFE3yeSIgQLxNpbrY8ssi+sgvpjENSqkOu2m91caJsprwAtDWKh7rrpa7O1C5HaU9EnnbzA/A== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enhanced-resolve@^5.17.3: + version "5.18.3" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz" + integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz" + integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-abstract "^1.23.6" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.6" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + iterator.prototype "^1.1.4" + safe-array-concat "^1.1.3" + +es-module-lexer@^1.2.1: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + +esbuild@^0.25.0: + version "0.25.9" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== + dependencies: + debug "^3.2.7" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.32.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.1" + hasown "^2.0.2" + is-core-module "^2.16.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.1" + semver "^6.3.1" + string.prototype.trimend "^1.0.9" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.10.2" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== + dependencies: + aria-query "^5.3.2" + array-includes "^3.1.8" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "^4.10.0" + axobject-query "^4.1.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + hasown "^2.0.2" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.1" + +eslint-plugin-react-hooks@^4.3.0: + version "4.6.2" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react-hooks@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz" + integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== + +eslint-plugin-react-refresh@^0.4.19: + version "0.4.20" + resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz" + integrity sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.37.5: + version "7.37.5" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz" + integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.3" + array.prototype.tosorted "^1.1.4" + doctrine "^2.1.0" + es-iterator-helpers "^1.2.1" + estraverse "^5.3.0" + hasown "^2.0.2" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.9" + object.fromentries "^2.0.8" + object.values "^1.2.1" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.12" + string.prototype.repeat "^1.0.0" + +eslint-plugin-testing-library@^5.0.1: + version "5.11.1" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== + dependencies: + "@typescript-eslint/utils" "^5.58.0" + +eslint-scope@^5.1.1, eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== + dependencies: + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6", eslint@>=8.40: + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.2: + 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== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +express@^4.17.3: + version "4.21.2" + resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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== + +fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + 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== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fdir@^6.4.4: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.4: + 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== + dependencies: + minimatch "^5.0.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + 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" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.0.0, follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.3, for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz" + integrity sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.35" + +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-own-enumerable-property-symbols@^3.0.0: + 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== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^16.0.0: + version "16.4.0" + resolved "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz" + integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== + +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + 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" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + 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== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hamburger-react@^2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/hamburger-react/-/hamburger-react-2.5.2.tgz" + integrity sha512-xsv/I7wQX1RDaulDnvMVCXMMRXnkwnUnkE8seD5eNVZJ4nIrjtK5LLA20l5x/pJ+mPWOzlFxW32VJ86Gbo2Njw== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz" + integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + 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" + +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + +has-symbols@^1.0.1, has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + 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" + +hasown@^2.0.2: + 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" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.6.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz" + integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.6.4" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.4.tgz" + integrity sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.3: + version "2.0.9" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyphenate-style-name@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +immutable@^5.0.2: + version "5.1.3" + resolved "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz" + integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg== + +import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== + dependencies: + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10: + version "1.1.0" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-mobile@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-mobile/-/is-mobile-5.0.0.tgz" + integrity sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + 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== + +is-path-inside@^3.0.3: + 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== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2, is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterator.prototype@^1.1.4: + version "1.1.5" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz" + integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== + dependencies: + define-data-property "^1.1.4" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + get-proto "^1.0.0" + has-symbols "^1.1.0" + set-function-name "^2.0.2" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.4" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz" + integrity sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA== + dependencies: + async "^3.2.6" + filelist "^1.0.4" + picocolors "^1.1.1" + +jeesh@*: + version "0.0.6" + resolved "https://registry.npmjs.org/jeesh/-/jeesh-0.0.6.tgz" + integrity sha512-lGsMRVjOvtd4vAdlM2fq/7oVvls6/gIaDBOiypwYF8O1nhr5pqc2kw74GT4Fp/BBqJtEDA32cOdeMiVRvbMCYQ== + dependencies: + bean "*" + bonzo "*" + domready "*" + qwery "*" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== + dependencies: + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: + version "27.5.1" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +jiti@^1.21.6, jiti@>=1.21.0: + version "1.21.7" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + 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== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + 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== + +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +keycloak-js@^26.1.4: + version "26.2.0" + resolved "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.0.tgz" + integrity sha512-CrFcXTN+d6J0V/1v3Zpioys6qHNWE6yUzVVIsCUAmFn9H14GZ0vuYod+lt+SSpMgWGPuneDZBSGBAeLBFuqjsw== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +language-subtag-registry@^0.3.20: + version "0.3.23" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +launch-editor@^2.6.0: + version "2.11.1" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz" + integrity sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg== + dependencies: + picocolors "^1.1.1" + shell-quote "^1.8.3" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.3.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" + integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + 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" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +matchmediaquery@^0.4.2: + version "0.4.2" + resolved "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz" + integrity sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA== + dependencies: + css-mediaquery "^0.1.2" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.9.4" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz" + integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.21: + version "2.0.21" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz" + integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + 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== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.22" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz" + integrity sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ== + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +object.entries@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz" + integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-object-atoms "^1.1.1" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.8" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz" + integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + gopd "^1.0.1" + safe-array-concat "^1.1.2" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +overlayscrollbars-react@^0.5.6: + version "0.5.6" + resolved "https://registry.npmjs.org/overlayscrollbars-react/-/overlayscrollbars-react-0.5.6.tgz" + integrity sha512-E5To04bL5brn9GVCZ36SnfGanxa2I2MDkWoa4Cjo5wol7l+diAgi4DBc983V7l2nOk/OLJ6Feg4kySspQEGDBw== + +overlayscrollbars@^2.0.0, overlayscrollbars@^2.12.0: + version "2.12.0" + resolved "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-2.12.0.tgz" + integrity sha512-mWJ5MOkcZ/ljHwfLw8+bN0V9ziGCoNoqULcp994j5DTGNQvnkWKWkA7rnO29Kyew5AoHxUnJ4Ndqfcl0HSQjXg== + +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + 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" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + 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" + +p-locate@^5.0.0: + 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== + dependencies: + p-limit "^3.0.2" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0, picocolors@^1.1.1, picocolors@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +"picomatch@^3 || ^4", picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1, pirates@^4.0.4: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: + 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== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47, postcss@^8.4.6, postcss@^8.5.3, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9: + version "8.5.6" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.1.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.1, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +psl@^1.1.33: + version "1.15.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" + +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qs@6.13.0: + 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" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +qwery@*: + version "4.0.0" + resolved "https://registry.npmjs.org/qwery/-/qwery-4.0.0.tgz" + integrity sha512-aQapsrAZapZXVbMIUTPsuclkkxU8/nEk3PanYLRu1WaGZoAGxm5BGcq353RVATVfqObBandy8sbAh6gR28TNNg== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc-cascader@~3.34.0: + version "3.34.0" + resolved "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.34.0.tgz" + integrity sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag== + dependencies: + "@babel/runtime" "^7.25.7" + classnames "^2.3.1" + rc-select "~14.16.2" + rc-tree "~5.13.0" + rc-util "^5.43.0" + +rc-checkbox@~3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.5.0.tgz" + integrity sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.25.2" + +rc-collapse@~3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.9.0.tgz" + integrity sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.27.0" + +rc-dialog@~9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz" + integrity sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-8" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" + +rc-drawer@~7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.3.0.tgz" + integrity sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg== + dependencies: + "@babel/runtime" "^7.23.9" + "@rc-component/portal" "^1.1.1" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.38.1" + +rc-dropdown@~4.2.0, rc-dropdown@~4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.1.tgz" + integrity sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA== + dependencies: + "@babel/runtime" "^7.18.3" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.6" + rc-util "^5.44.1" + +rc-field-form@~2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.7.0.tgz" + integrity sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA== + dependencies: + "@babel/runtime" "^7.18.0" + "@rc-component/async-validator" "^5.0.3" + rc-util "^5.32.2" + +rc-image@~7.12.0: + version "7.12.0" + resolved "https://registry.npmjs.org/rc-image/-/rc-image-7.12.0.tgz" + integrity sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/portal" "^1.0.2" + classnames "^2.2.6" + rc-dialog "~9.6.0" + rc-motion "^2.6.2" + rc-util "^5.34.1" + +rc-input-number@~9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.5.0.tgz" + integrity sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/mini-decimal" "^1.0.1" + classnames "^2.2.5" + rc-input "~1.8.0" + rc-util "^5.40.1" + +rc-input@~1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz" + integrity sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + +rc-mentions@~2.20.0: + version "2.20.0" + resolved "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.20.0.tgz" + integrity sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ== + dependencies: + "@babel/runtime" "^7.22.5" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.6" + rc-input "~1.8.0" + rc-menu "~9.16.0" + rc-textarea "~1.10.0" + rc-util "^5.34.1" + +rc-menu@~9.16.0, rc-menu@~9.16.1: + version "9.16.1" + resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.16.1.tgz" + integrity sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^2.0.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.3.1" + rc-util "^5.27.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0, rc-motion@^2.9.5: + version "2.9.5" + resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.5.tgz" + integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.44.0" + +rc-notification@~5.6.4: + version "5.6.4" + resolved "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.4.tgz" + integrity sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.9.0" + rc-util "^5.20.1" + +rc-overflow@^1.3.1, rc-overflow@^1.3.2: + version "1.4.1" + resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.4.1.tgz" + integrity sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.37.0" + +rc-pagination@~5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-5.1.0.tgz" + integrity sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.38.0" + +rc-picker@~4.11.3: + version "4.11.3" + resolved "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.3.tgz" + integrity sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg== + dependencies: + "@babel/runtime" "^7.24.7" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.1" + rc-overflow "^1.3.2" + rc-resize-observer "^1.4.0" + rc-util "^5.43.0" + +rc-progress@~4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz" + integrity sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + +rc-rate@~2.13.1: + version "2.13.1" + resolved "https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.1.tgz" + integrity sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0, rc-resize-observer@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz" + integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ== + dependencies: + "@babel/runtime" "^7.20.7" + classnames "^2.2.1" + rc-util "^5.44.1" + resize-observer-polyfill "^1.5.1" + +rc-segmented@~2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.7.0.tgz" + integrity sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" + +rc-select@~14.16.2, rc-select@~14.16.8: + version "14.16.8" + resolved "https://registry.npmjs.org/rc-select/-/rc-select-14.16.8.tgz" + integrity sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^2.1.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.3.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.2" + +rc-slider@^11.1.9, rc-slider@~11.1.8: + version "11.1.9" + resolved "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.9.tgz" + integrity sha512-h8IknhzSh3FEM9u8ivkskh+Ef4Yo4JRIY2nj7MrH6GQmrwV6mcpJf5/4KgH5JaVI1H3E52yCdpOlVyGZIeph5A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.36.0" + +rc-steps@~6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz" + integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g== + dependencies: + "@babel/runtime" "^7.16.7" + classnames "^2.2.3" + rc-util "^5.16.1" + +rc-switch@~4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz" + integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg== + dependencies: + "@babel/runtime" "^7.21.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-table@~7.52.6: + version "7.52.7" + resolved "https://registry.npmjs.org/rc-table/-/rc-table-7.52.7.tgz" + integrity sha512-yuZfnTpuHwRa4JH+F28wQfGeDzqtgIDvLBBJk5sFncXQjTExhtBNc6dPfVo5pL5SjabJEoejefs6wsrAKfhDoQ== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/context" "^1.4.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.44.3" + rc-virtual-list "^3.14.2" + +rc-tabs@~15.7.0: + version "15.7.0" + resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.7.0.tgz" + integrity sha512-ZepiE+6fmozYdWf/9gVp7k56PKHB1YYoDsKeQA1CBlJ/POIhjkcYiv0AGP0w2Jhzftd3AVvZP/K+V+Lpi2ankA== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "~4.2.0" + rc-menu "~9.16.0" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.34.1" + +rc-textarea@~1.10.0, rc-textarea@~1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.2.tgz" + integrity sha512-HfaeXiaSlpiSp0I/pvWpecFEHpVysZ9tpDLNkxQbMvMz6gsr7aVZ7FpWP9kt4t7DB+jJXesYS0us1uPZnlRnwQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-input "~1.8.0" + rc-resize-observer "^1.0.0" + rc-util "^5.27.0" + +rc-tooltip@~6.4.0: + version "6.4.0" + resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.4.0.tgz" + integrity sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/trigger" "^2.0.0" + classnames "^2.3.1" + rc-util "^5.44.3" + +rc-tree-select@~5.27.0: + version "5.27.0" + resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.27.0.tgz" + integrity sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww== + dependencies: + "@babel/runtime" "^7.25.7" + classnames "2.x" + rc-select "~14.16.2" + rc-tree "~5.13.0" + rc-util "^5.43.0" + +rc-tree@~5.13.0, rc-tree@~5.13.1: + version "5.13.1" + resolved "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.1.tgz" + integrity sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.1" + +rc-upload@~4.9.2: + version "4.9.2" + resolved "https://registry.npmjs.org/rc-upload/-/rc-upload-4.9.2.tgz" + integrity sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.40.1, rc-util@^5.43.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.3, rc-util@^5.44.4: + version "5.44.4" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz" + integrity sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^18.2.0" + +rc-virtual-list@^3.14.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: + version "3.19.2" + resolved "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.19.2.tgz" + integrity sha512-Ys6NcjwGkuwkeaWBDqfI3xWuZ7rDiQXlH1o2zLfFzATfEgXcqpk8CkgMfbJD81McqjcJVez25a3kPxCR807evA== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.36.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@*, "react-dom@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.2 || ^18.0.0 || ^19.0", "react-dom@^18.0.0 || ^19.0.0", react-dom@^19.1.0, "react-dom@>= 16.13.1", react-dom@>=16.0.0, react-dom@>=16.11.0, react-dom@>=16.8.0, react-dom@>=16.9.0, react-dom@>=18, react-dom@>=18.0.0: + version "19.1.1" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz" + integrity sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw== + dependencies: + scheduler "^0.26.0" + +react-error-overlay@^6.0.11: + version "6.1.0" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz" + integrity sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ== + +react-ga4@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/react-ga4/-/react-ga4-2.1.0.tgz" + integrity sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ== + +react-icons@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz" + integrity sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.2.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-particles@^2.12.2: + version "2.12.2" + resolved "https://registry.npmjs.org/react-particles/-/react-particles-2.12.2.tgz" + integrity sha512-Bo9DdrBRPFy8uiT7BA8P36Rdmz6GhB/RG9kkWUyZGIsS8AxWyuUjpVxw9Lr23K0LVE2aenAJ0vnqEbbLDpBgQw== + dependencies: + tsparticles-engine "^2.12.0" + +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": + version "0.11.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-refresh@^0.17.0: + version "0.17.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz" + integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ== + +react-responsive@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.1.tgz" + integrity sha512-OM5/cRvbtUWEX8le8RCT8scA8y2OPtb0Q/IViEyCEM5FBN8lRrkUOZnu87I88A6njxDldvxG+rLBxWiA7/UM9g== + dependencies: + hyphenate-style-name "^1.0.0" + matchmediaquery "^0.4.2" + prop-types "^15.6.1" + shallow-equal "^3.1.0" + +react-router-dom@^7.5.0: + version "7.9.1" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.1.tgz" + integrity sha512-U9WBQssBE9B1vmRjo9qTM7YRzfZ3lUxESIZnsf4VjR/lXYz9MHjvOxHzr/aUm4efpktbVOrF09rL/y4VHa8RMw== + dependencies: + react-router "7.9.1" + +react-router@7.9.1: + version "7.9.1" + resolved "https://registry.npmjs.org/react-router/-/react-router-7.9.1.tgz" + integrity sha512-pfAByjcTpX55mqSDGwGnY9vDCpxqBLASg0BMNAuMmpSGESo/TaOUG6BllhAtAkCGx8Rnohik/XtaqiYUJtgW2g== + dependencies: + cookie "^1.0.1" + set-cookie-parser "^2.6.0" + +react-scripts@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react-scroll@^1.9.3: + version "1.9.3" + resolved "https://registry.npmjs.org/react-scroll/-/react-scroll-1.9.3.tgz" + integrity sha512-xv7FXqF3k63aSLNu4/NjFvRNI0ge7DmmmsbeGarP7LZVAlJMSjUuW3dTtLxp1Afijyv0lS2qwC0GiFHvx1KBHQ== + dependencies: + lodash.throttle "^4.1.1" + prop-types "^15.7.2" + +react-turnstile@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/react-turnstile/-/react-turnstile-1.1.4.tgz" + integrity sha512-oluyRWADdsufCt5eMqacW4gfw8/csr6Tk+fmuaMx0PWMKP1SX1iCviLvD2D5w92eAzIYDHi/krUWGHhlfzxTpQ== + +react@*, "react@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19", "react@^17.0.2 || ^18.0.0 || ^19.0", "react@^18 || ^19", "react@^18.0.0 || ^19.0.0", react@^19.1.0, react@^19.1.1, "react@>= 16", "react@>= 16.13.1", react@>=16, react@>=16.0.0, react@>=16.11.0, react@>=16.8.0, react@>=16.9.0, react@>=18, react@>=18.0.0: + version "19.1.1" + resolved "https://registry.npmjs.org/react/-/react-19.1.1.tgz" + integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + +regenerate-unicode-properties@^10.2.2: + version "10.2.2" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz" + integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regex-parser@^2.2.11: + version "2.3.1" + resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz" + integrity sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ== + +regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + +regexpu-core@^6.2.0: + version "6.3.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.3.1.tgz" + integrity sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.2" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.2.1" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== + dependencies: + jsesc "~3.0.2" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + 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== + +require-from-string@^2.0.2: + 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== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve@^1.1.7, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^2.0.0, rollup@^2.43.1: + version "2.79.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== + optionalDependencies: + fsevents "~2.3.2" + +rollup@^4.34.9: + version "4.50.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz" + integrity sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.50.1" + "@rollup/rollup-android-arm64" "4.50.1" + "@rollup/rollup-darwin-arm64" "4.50.1" + "@rollup/rollup-darwin-x64" "4.50.1" + "@rollup/rollup-freebsd-arm64" "4.50.1" + "@rollup/rollup-freebsd-x64" "4.50.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.1" + "@rollup/rollup-linux-arm-musleabihf" "4.50.1" + "@rollup/rollup-linux-arm64-gnu" "4.50.1" + "@rollup/rollup-linux-arm64-musl" "4.50.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.50.1" + "@rollup/rollup-linux-ppc64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-musl" "4.50.1" + "@rollup/rollup-linux-s390x-gnu" "4.50.1" + "@rollup/rollup-linux-x64-gnu" "4.50.1" + "@rollup/rollup-linux-x64-musl" "4.50.1" + "@rollup/rollup-openharmony-arm64" "4.50.1" + "@rollup/rollup-win32-arm64-msvc" "4.50.1" + "@rollup/rollup-win32-ia32-msvc" "4.50.1" + "@rollup/rollup-win32-x64-msvc" "4.50.1" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + +safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sass@*, sass@^1.3.0, sass@^1.86.3: + version "1.92.1" + resolved "https://registry.npmjs.org/sass/-/sass-1.92.1.tgz" + integrity sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.26.0: + version "0.26.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz" + integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA== + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +scroll-into-view-if-needed@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz" + integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ== + dependencies: + compute-scroll-into-view "^3.0.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +semver@^7.3.5: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +semver@^7.3.7: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +semver@^7.5.3: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +semver@^7.5.4: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-cookie-parser@^2.6.0: + version "2.7.1" + resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz" + integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ== + +set-function-length@^1.2.2: + 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" + +set-function-name@^2.0.2: + 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" + +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-equal@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz" + integrity sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3, shell-quote@^1.8.3: + version "1.8.3" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simplebar-core@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/simplebar-core/-/simplebar-core-1.3.2.tgz" + integrity sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w== + dependencies: + lodash "^4.17.21" + lodash-es "^4.17.21" + +simplebar-react@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/simplebar-react/-/simplebar-react-3.3.2.tgz" + integrity sha512-ZsgcQhKLtt5ra0BRIJeApfkTBQCa1vUPA/WXI4HcYReFt+oCEOvdVz6rR/XsGJcKxTlCRPmdGx1uJIUChupo+A== + dependencies: + simplebar-core "^1.3.2" + +simplebar@^6.3.2: + version "6.3.2" + resolved "https://registry.npmjs.org/simplebar/-/simplebar-6.3.2.tgz" + integrity sha512-l4P1Oma0nply0g+pkrkwfC1SF5WDnIHrgiQDXSDzIdjngUDLkPgZcPGKrOvuFeXoSensfKijjIjDlUJSEp+mLQ== + dependencies: + simplebar-core "^1.3.2" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +slider@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/slider/-/slider-1.0.4.tgz" + integrity sha512-Q0D38lVkCeTlnVwPDe3yR2G84LU70LjX46tGF9guyVzKRoq7kc/njUVCEeODpxP1957zCpq3o27gj+hRXTLuSw== + dependencies: + emile "*" + jeesh "*" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.2.1, "source-map-js@>=0.6.2 <2.0.0": + 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== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-support@^0.5.6, source-map-support@~0.5.20: + 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== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1, source-map@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.6" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width-cjs@npm:string-width@^4.2.0": + 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" + +string-width@^4.1.0, string-width@^4.2.0: + 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" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + +string.prototype.matchall@^4.0.12, string.prototype.matchall@^4.0.6: + version "4.0.12" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz" + integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-abstract "^1.23.6" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + gopd "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + regexp.prototype.flags "^1.5.3" + set-function-name "^2.0.2" + side-channel "^1.1.0" + +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + 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" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + 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" + +strip-ansi@^7.0.1: + version "7.1.2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + 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== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + 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== + +style-loader@^3.3.1: + version "3.3.4" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +stylis@^4.3.4: + version "4.3.6" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + +sucrase@^3.35.0: + version "3.35.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + 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== + +svg-parser@^2.0.2, svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +svgo@3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tailwindcss@^3.0.2: + version "3.4.17" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz" + integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.6.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.2" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.6" + lilconfig "^3.1.3" + micromatch "^4.0.8" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.1.1" + postcss "^8.4.47" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz" + integrity sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.0.0, terser@^5.10.0, terser@^5.16.0, terser@^5.31.1: + version "5.44.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz" + integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + 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== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== + +throttle-debounce@^5.0.0, throttle-debounce@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz" + integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tinyglobby@^0.2.13: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.1.4" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-interface-checker@^0.1.9: + 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== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsparticles-engine@^2.12.0: + version "2.12.0" + resolved "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz" + integrity sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0": + 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== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.9.4, typescript@>=4.9.5: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-match-property-ecmascript@^2.0.0: + 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== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz" + integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg== + +unicode-property-aliases-ecmascript@^2.0.0: + 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== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite-plugin-svgo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/vite-plugin-svgo/-/vite-plugin-svgo-2.0.0.tgz" + integrity sha512-WaiOUlmt1fKw1w/WWJnx9gVk42D1BASKZmGCPpy6iTLE5iIemN2lim3MwI7Rffyt3aQnPrLfLSLnI8ZUJ9s49g== + dependencies: + svgo "3.3.2" + +vite-plugin-svgr@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.5.0.tgz" + integrity sha512-W+uoSpmVkSmNOGPSsDCWVW/DDAyv+9fap9AZXBvWiQqrboJ08j2vh0tFxTD/LjwqwAd3yYSVJgm54S/1GhbdnA== + dependencies: + "@rollup/pluginutils" "^5.2.0" + "@svgr/core" "^8.1.0" + "@svgr/plugin-jsx" "^8.1.0" + +"vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", vite@^6.2.5, vite@>=2.6.0, vite@>=4.0.2: + version "6.3.6" + resolved "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz" + integrity sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA== + dependencies: + esbuild "^0.25.0" + fdir "^6.4.4" + picomatch "^4.0.2" + postcss "^8.5.3" + rollup "^4.34.9" + tinyglobby "^0.2.13" + optionalDependencies: + fsevents "~2.3.3" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.1: + version "2.4.4" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz" + integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw== + +webidl-conversions@^4.0.2: + 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== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": + version "4.15.2" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": + version "5.101.3" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz" + integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.15.0" + acorn-import-phases "^1.0.3" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.3" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.2" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.11" + watchpack "^2.4.1" + webpack-sources "^3.3.3" + +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.20" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5, word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workbox-background-sync@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz" + integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-broadcast-update@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz" + integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== + dependencies: + workbox-core "6.6.1" + +workbox-build@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.1.tgz" + integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@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" + rollup-plugin-terser "^7.0.0" + 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 "6.6.1" + workbox-broadcast-update "6.6.1" + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-google-analytics "6.6.1" + workbox-navigation-preload "6.6.1" + workbox-precaching "6.6.1" + workbox-range-requests "6.6.1" + workbox-recipes "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + workbox-streams "6.6.1" + workbox-sw "6.6.1" + workbox-window "6.6.1" + +workbox-cacheable-response@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz" + integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== + dependencies: + workbox-core "6.6.1" + +workbox-core@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.1.tgz" + integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== + +workbox-expiration@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.1.tgz" + integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-google-analytics@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz" + integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== + dependencies: + workbox-background-sync "6.6.1" + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-navigation-preload@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz" + integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== + dependencies: + workbox-core "6.6.1" + +workbox-precaching@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.1.tgz" + integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-range-requests@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz" + integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== + dependencies: + workbox-core "6.6.1" + +workbox-recipes@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.1.tgz" + integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== + dependencies: + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-precaching "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-routing@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.1.tgz" + integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== + dependencies: + workbox-core "6.6.1" + +workbox-strategies@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.1.tgz" + integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== + dependencies: + workbox-core "6.6.1" + +workbox-streams@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.1.tgz" + integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + +workbox-sw@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.1.tgz" + integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== + +workbox-webpack-plugin@^6.4.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz" + integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.6.1" + +workbox-window@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.1.tgz" + integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.6.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.13.0: + version "8.18.3" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.3.4, yaml@^2.4.2: + version "2.8.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz" + integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/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%0DM)8pIEU%ve?Gx)*z&gZ`}}ntIR|1 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%0Ax!V0F5Dq$}@AFGX6i zepq0BweA{OHX0v@vr>UHeEa(Ez8gJ%{`@I3_x$qlWgtb&^1JPah|gAdXgcNs7{jPr zacW_u%HFJd;jm4UbFaRPGC7KWpWStnBy(AO z9}Sr^)?EC{&p$g~n>20QmH4P>s2?}98K)pD@C(3~5J&l#J%)(*)y71m1UE4?4;*AS z$_fl?GhrG=vj}BQK!JG~*T~Io(rmI2ziAo9j>2x#PAA>n6{1HGJ zN-@sF;+pxnh)!m_zHG^o@`oMv9+^XOwM*fVpWSbds{3vEI}&R(NXAQJ-9s&ru#JQl zbh5Jv6XWQ7%UhoS0pEIQ#|7|NTj~z~Z;l{kz{J>yG9SagMlypf^Dnfgd%L;$?Ch4* z;)^xy(hY)rLty^+S@Xyd88uo)E}bV7sPYqw3|K{?=tQJ@CtUlW z?I&yns&H6IrV5GBd|-r{x1ev|kuC<4Z=*(sP^}7J)NNDoosJacPQAi5azH9S4|nQ} z8JL37f zYWZ__{Hi^FIcON2m8W$)jwL&DJR@%{ECnYF$s`LHOte*4GuNE7^}$iV(1H<KB0WrFRT~?KuHf@@iR^gy<7dAR|Ma3X9`WX6gV>*w#DoPd# zx*`(?OkPKUsI4_(d1b1xNuuQ349FV(a^V*Av`c$rgkr5%c?DUU7ih+(2Wg)ML65%? zl%y#xy+~tA-RLX-^{;kjs3cG?k{v%p{a;R_nlNH$ z3~MMFfWK0ehC1=o2SbsW-G-&K6?h?LC-$ypGbT-#p#4A6AqK2Yf-uwK%RrMEezdN@ zvq`5Z59F`ydcw5emD+RgVd>_WkZ8xgWJ>WHN^E$wSO?WK)!vlnpT7s@u6CyBlwq_w znXZ=ebz(D$FDFD{px3eIu{-{BI@NkHj1?Wa>DKrWsznrQ2y@xz2)6;JYtw3$jp%$E z<-534UyS0C<#Ufdm+ACzMNSnJj4(u1&KJFn9*D03Y+^U!o5H0{7An1Uk%L?~uLW5p zhA-ZALG?aBiB88FFk+D#S+mnB!B;Ih%R3B>u9a5rvn_6Wi5q~dWr2a z1zkfNP9Q%)t6k-}r(d+?+izExW4 zH;-q%>{_Wxl}NJ*8I*9)e+*jzp<3r`F=kGFnSv{AzVi3JMiCGF<-PkU0m_E3(~)qg z5+g6W>`dofU7j^--k3^6O@9y>dUYmP#4_=2q6|Li>d$&0MI)|N;I%&Xop;}@(tWqY zE|Kp%b>_Rfp8e+6y^9Z;c0`jIvntiOf7bm=KR>JEu(wA~?b!RCI(!}GcJ5oN)BK@h zTOK~X&Ep+!_`G(nCU;f&=C={=t-ikcmwN|&vGunt*LQ#Kn~nV+weA89Glz0mmOITw zR`x2@^1;+tsx7jaNF!*_F{`&>uAXoL;!3384GUrJi3H)4^rID;*|r_J3SWUL3rIyf zP|5cb6tg)*Z)M3fFUWj&*t6{M(?C4y-W!J&8s(8d>eG8}E6&8?=;8 zL(S7@&?;!+Wt&*xEt_3cX5aB@@|&|X zXYZB|?|tpVk3T;5?6X_<>{(mPn#M}rec$u^{`0)f4324>I(eid?LQme;*XDObh$