From a53178cab9d1e2b533b6f125939e9300e31a60fd Mon Sep 17 00:00:00 2001 From: sabaimran <65192171+sabaimran@users.noreply.github.com> Date: Sat, 22 Jun 2024 07:42:41 -0700 Subject: [PATCH] Add developer support for using next.js to serve generated static files (#814) To improve the developer experience for front-end development, we're migrating to Next.js. In order to do this migration page-by-page, we're using static site generation via Next.js. This also helps us avoid making cross site requests from front-end to back-end for the time being, while giving a ramp to separating out server and client if needed for scale down the road. Dev instructions for using the next.js setup are in the added README. This adds scaffolding for including the built files in the python package as well as the docker images. Docker setup has been tested locally. In order to verify the build is working as expected, we can navigate to the {khoj_host}:42110/experimental and verify that the experiment page comes up. This setup works with serving static files included in the src/interface/web folder from the Django app. The key bit for understanding the setup is in the yarn export command in package.json. --- .github/workflows/dockerize.yml | 4 +- .github/workflows/pypi.yml | 12 + .gitignore | 1 + Dockerfile | 15 +- documentation/assets/img/logo.svg | 1 - prod.Dockerfile | 14 +- src/interface/web/.env.development | 1 + src/interface/web/.env.production | 1 + src/interface/web/.eslintrc.json | 3 + src/interface/web/.gitignore | 36 + src/interface/web/README.md | 93 + src/interface/web/app/favicon.ico | Bin 0 -> 205167 bytes src/interface/web/app/globals.css | 158 + src/interface/web/app/layout.tsx | 22 + src/interface/web/app/page.module.css | 230 + src/interface/web/app/page.tsx | 9 + src/interface/web/image-loader.ts | 19 + src/interface/web/next.config.mjs | 38 + src/interface/web/package.json | 39 + src/interface/web/public/agents.svg | 6 + src/interface/web/public/automation.svg | 37 + src/interface/web/public/chat.svg | 24 + src/interface/web/public/close.svg | 5 + .../web/public/copy-button-success.svg | 6 + src/interface/web/public/copy-button.svg | 5 + src/interface/web/public/khoj-logo.svg | 5385 +++++++++++++++++ src/interface/web/public/send.svg | 1 + src/interface/web/public/share.svg | 8 + src/interface/web/public/thumbs-down.svg | 6 + src/interface/web/public/thumbs-up.svg | 6 + src/interface/web/tsconfig.json | 40 + src/interface/web/yarn.lock | 2581 ++++++++ src/khoj/app/settings.py | 2 +- src/khoj/configure.py | 13 + src/khoj/routers/web_client.py | 13 +- src/khoj/utils/constants.py | 1 + 36 files changed, 8828 insertions(+), 7 deletions(-) delete mode 100644 documentation/assets/img/logo.svg create mode 100644 src/interface/web/.env.development create mode 100644 src/interface/web/.env.production create mode 100644 src/interface/web/.eslintrc.json create mode 100644 src/interface/web/.gitignore create mode 100644 src/interface/web/README.md create mode 100644 src/interface/web/app/favicon.ico create mode 100644 src/interface/web/app/globals.css create mode 100644 src/interface/web/app/layout.tsx create mode 100644 src/interface/web/app/page.module.css create mode 100644 src/interface/web/app/page.tsx create mode 100644 src/interface/web/image-loader.ts create mode 100644 src/interface/web/next.config.mjs create mode 100644 src/interface/web/package.json create mode 100644 src/interface/web/public/agents.svg create mode 100644 src/interface/web/public/automation.svg create mode 100644 src/interface/web/public/chat.svg create mode 100644 src/interface/web/public/close.svg create mode 100644 src/interface/web/public/copy-button-success.svg create mode 100644 src/interface/web/public/copy-button.svg create mode 100644 src/interface/web/public/khoj-logo.svg create mode 100644 src/interface/web/public/send.svg create mode 100644 src/interface/web/public/share.svg create mode 100644 src/interface/web/public/thumbs-down.svg create mode 100644 src/interface/web/public/thumbs-up.svg create mode 100644 src/interface/web/tsconfig.json create mode 100644 src/interface/web/yarn.lock diff --git a/.github/workflows/dockerize.yml b/.github/workflows/dockerize.yml index 50b8e0ed..95a915f8 100644 --- a/.github/workflows/dockerize.yml +++ b/.github/workflows/dockerize.yml @@ -8,6 +8,7 @@ on: - master paths: - src/khoj/** + - src/interface/web/** - pyproject.toml - Dockerfile - prod.Dockerfile @@ -30,8 +31,9 @@ on: env: # Tag Image with tag name on release # else with user specified tag (default 'dev') if triggered via workflow + # else with run_id if triggered via a pull request # else with 'pre' (if push to master) - DOCKER_IMAGE_TAG: ${{ github.ref_type == 'tag' && github.ref_name || github.event_name == 'workflow_dispatch' && github.event.inputs.tag || 'pre' }} + DOCKER_IMAGE_TAG: ${{ github.ref_type == 'tag' && github.ref_name || github.event_name == 'workflow_dispatch' && github.event.inputs.tag || github.event_name == 'push' && github.run_id || 'pre' }} jobs: build: diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index 92bf9276..79fab443 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -8,6 +8,7 @@ on: - 'master' paths: - src/khoj/** + - src/interface/web/** - pyproject.toml - .github/workflows/pypi.yml pull_request: @@ -15,6 +16,7 @@ on: - 'master' paths: - src/khoj/** + - src/interface/web/** - pyproject.toml - .github/workflows/pypi.yml @@ -37,6 +39,16 @@ jobs: - name: ⬇️ Install Application run: python -m pip install --upgrade pip && pip install --upgrade . + - name: Install the Next.js application + run: | + yarn install + working-directory: src/interface/web + + - name: Build & export static Next.js app to Django static assets + run: | + yarn ciexport + working-directory: src/interface/web + - name: ⚙️ Build Python Package run: | # Setup Environment for Reproducible Builds diff --git a/.gitignore b/.gitignore index 35315263..18e05eb9 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ todesktop.json # Build artifacts /src/khoj/interface/web/images +/src/khoj/interface/built/ /build/ /dist/ khoj_assistant.egg-info diff --git a/Dockerfile b/Dockerfile index c042a6d1..d091e730 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,11 +3,17 @@ FROM ubuntu:jammy LABEL org.opencontainers.image.source https://github.com/khoj-ai/khoj # Install System Dependencies -RUN apt update -y && apt -y install python3-pip swig +RUN apt update -y && apt -y install python3-pip swig curl -WORKDIR /app +# Install Node.js and Yarn +RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - +RUN apt -y install nodejs +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list +RUN apt update && apt -y install yarn # Install Application +WORKDIR /app COPY pyproject.toml . COPY README.md . ARG VERSION=0.0.0 @@ -20,6 +26,11 @@ COPY . . # Set the PYTHONPATH environment variable in order for it to find the Django app. ENV PYTHONPATH=/app/src:$PYTHONPATH +# Go to the directory src/interface/web and export the built Next.js assets +WORKDIR /app/src/interface/web +RUN bash -c "yarn install && yarn ciexport" +WORKDIR /app + # Run the Application # There are more arguments required for the application to run, # but these should be passed in through the docker-compose.yml file. diff --git a/documentation/assets/img/logo.svg b/documentation/assets/img/logo.svg deleted file mode 100644 index ad9d11a4..00000000 --- a/documentation/assets/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/prod.Dockerfile b/prod.Dockerfile index 0da5363a..47a8a232 100644 --- a/prod.Dockerfile +++ b/prod.Dockerfile @@ -3,7 +3,14 @@ FROM ubuntu:jammy LABEL org.opencontainers.image.source https://github.com/khoj-ai/khoj # Install System Dependencies -RUN apt update -y && apt -y install python3-pip libsqlite3-0 ffmpeg libsm6 libxext6 +RUN apt update -y && apt -y install python3-pip libsqlite3-0 ffmpeg libsm6 libxext6 swig curl + +# Install Node.js and Yarn +RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - +RUN apt -y install nodejs +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list +RUN apt update && apt -y install yarn WORKDIR /app @@ -20,6 +27,11 @@ COPY . . # Set the PYTHONPATH environment variable in order for it to find the Django app. ENV PYTHONPATH=/app/src:$PYTHONPATH +# Go to the directory src/interface/web and export the built Next.js assets +WORKDIR /app/src/interface/web +RUN bash -c "yarn install && yarn ciexport" +WORKDIR /app + # Run the Application # There are more arguments required for the application to run, # but these should be passed in through the docker-compose.yml file. diff --git a/src/interface/web/.env.development b/src/interface/web/.env.development new file mode 100644 index 00000000..6e1d6c66 --- /dev/null +++ b/src/interface/web/.env.development @@ -0,0 +1 @@ +NEXT_PUBLIC_ENV='development' diff --git a/src/interface/web/.env.production b/src/interface/web/.env.production new file mode 100644 index 00000000..bfcbde2a --- /dev/null +++ b/src/interface/web/.env.production @@ -0,0 +1 @@ +NEXT_PUBLIC_ENV='production' diff --git a/src/interface/web/.eslintrc.json b/src/interface/web/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/src/interface/web/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/src/interface/web/.gitignore b/src/interface/web/.gitignore new file mode 100644 index 00000000..fd3dbb57 --- /dev/null +++ b/src/interface/web/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/src/interface/web/README.md b/src/interface/web/README.md new file mode 100644 index 00000000..4196c5c7 --- /dev/null +++ b/src/interface/web/README.md @@ -0,0 +1,93 @@ +This is a [Next.js](https://nextjs.org/) project. + +## Getting Started + +First, install the dependencies: + +```bash +yarn install +``` + +In case you run into any dependency linking issues, you can try running: + +```bash +yarn add next +``` + +### Run the development server: + +```bash +yarn dev +``` + +Make sure the `rewrites` in `next.config.mjs` are set up correctly for your environment. The rewrites are used to proxy requests to the API server. + +```js + rewrites: async () => { + return [ + { + source: '/api/:path*', + destination: 'http://localhost:42110/api/:path*', + }, + ]; + }, +``` + +The `destination` should be the URL of the API server. + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying any of the `.tsx` pages. The page auto-updates as you edit the file. + +### Testing built files + +We've setup a utility command for building and serving the built files. This is useful for testing the production build locally. + +1. Exporting code +To build the files once and serve them, run: +```bash +yarn export +``` + +If you're using Windows: +```bash +yarn windowsexport +``` + + +2. Continuously building code + +To keep building the files and serving them, run: +```bash +yarn watch +``` + +If you're using Windows: +```bash +yarn windowswatch +``` + +Now you should be able to load your custom pages from the Khoj app at http://localhost:42110/. To server any of the built files, you should update the routes in the `web_client.py` like so, where `new_file` is the new page you've added in this repo: + +```python +@web_client.post("/new_route", response_class=FileResponse) +@requires(["authenticated"], redirect="login_page") +def index_post(request: Request): + + return templates.TemplateResponse( + "new_file/index.html", + context={ + "request": request, + }, + ) +``` + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Next.js App Router](https://nextjs.org/docs/app) - learn about the Next.js router. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! diff --git a/src/interface/web/app/favicon.ico b/src/interface/web/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ed751b2d14935cd7772f94fcde5b47e7a012a08d GIT binary patch literal 205167 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

c%3v0@{AxLde#B?E#Do>UR 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 { + return ( + + {children} + + ); +} diff --git a/src/interface/web/app/page.module.css b/src/interface/web/app/page.module.css new file mode 100644 index 00000000..5c4b1e6a --- /dev/null +++ b/src/interface/web/app/page.module.css @@ -0,0 +1,230 @@ +.main { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + padding: 6rem; + min-height: 100vh; +} + +.description { + display: inherit; + justify-content: inherit; + align-items: inherit; + font-size: 0.85rem; + max-width: var(--max-width); + width: 100%; + z-index: 2; + font-family: var(--font-mono); +} + +.description a { + display: flex; + justify-content: center; + align-items: center; + gap: 0.5rem; +} + +.description p { + position: relative; + margin: 0; + padding: 1rem; + background-color: rgba(var(--callout-rgb), 0.5); + border: 1px solid rgba(var(--callout-border-rgb), 0.3); + border-radius: var(--border-radius); +} + +.code { + font-weight: 700; + font-family: var(--font-mono); +} + +.grid { + display: grid; + grid-template-columns: repeat(4, minmax(25%, auto)); + max-width: 100%; + width: var(--max-width); +} + +.card { + padding: 1rem 1.2rem; + border-radius: var(--border-radius); + background: rgba(var(--card-rgb), 0); + border: 1px solid rgba(var(--card-border-rgb), 0); + transition: background 200ms, border 200ms; +} + +.card span { + display: inline-block; + transition: transform 200ms; +} + +.card h2 { + font-weight: 600; + margin-bottom: 0.7rem; +} + +.card p { + margin: 0; + opacity: 0.6; + font-size: 0.9rem; + line-height: 1.5; + max-width: 30ch; + text-wrap: balance; +} + +.center { + display: flex; + justify-content: center; + align-items: center; + position: relative; + padding: 4rem 0; +} + +.center::before { + background: var(--secondary-glow); + border-radius: 50%; + width: 480px; + height: 360px; + margin-left: -400px; +} + +.center::after { + background: var(--primary-glow); + width: 240px; + height: 180px; + z-index: -1; +} + +.center::before, +.center::after { + content: ""; + left: 50%; + position: absolute; + filter: blur(45px); + transform: translateZ(0); +} + +.logo { + position: relative; +} +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + .card:hover { + background: rgba(var(--card-rgb), 0.1); + border: 1px solid rgba(var(--card-border-rgb), 0.15); + } + + .card:hover span { + transform: translateX(4px); + } +} + +@media (prefers-reduced-motion) { + .card:hover span { + transform: none; + } +} + +/* Mobile */ +@media (max-width: 700px) { + .content { + padding: 4rem; + } + + .grid { + grid-template-columns: 1fr; + margin-bottom: 120px; + max-width: 320px; + text-align: center; + } + + .card { + padding: 1rem 2.5rem; + } + + .card h2 { + margin-bottom: 0.5rem; + } + + .center { + padding: 8rem 0 6rem; + } + + .center::before { + transform: none; + height: 300px; + } + + .description { + font-size: 0.8rem; + } + + .description a { + padding: 1rem; + } + + .description p, + .description div { + display: flex; + justify-content: center; + position: fixed; + width: 100%; + } + + .description p { + align-items: center; + inset: 0 0 auto; + padding: 2rem 1rem 1.4rem; + border-radius: 0; + border: none; + border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); + background: linear-gradient( + to bottom, + rgba(var(--background-start-rgb), 1), + rgba(var(--callout-rgb), 0.5) + ); + background-clip: padding-box; + backdrop-filter: blur(24px); + } + + .description div { + align-items: flex-end; + pointer-events: none; + inset: auto 0 0; + padding: 2rem; + height: 200px; + background: linear-gradient( + to bottom, + transparent 0%, + rgb(var(--background-end-rgb)) 40% + ); + z-index: 1; + } +} + +/* Tablet and Smaller Desktop */ +@media (min-width: 701px) and (max-width: 1120px) { + .grid { + grid-template-columns: repeat(2, 50%); + } +} + +@media (prefers-color-scheme: dark) { + .vercelLogo { + filter: invert(1); + } + + .logo { + filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); + } +} + +@keyframes rotate { + from { + transform: rotate(360deg); + } + to { + transform: rotate(0deg); + } +} diff --git a/src/interface/web/app/page.tsx b/src/interface/web/app/page.tsx new file mode 100644 index 00000000..3553c808 --- /dev/null +++ b/src/interface/web/app/page.tsx @@ -0,0 +1,9 @@ +import styles from "./page.module.css"; + +export default function Home() { + return ( +

+ Hi, Khoj here. +
+ ); +} diff --git a/src/interface/web/image-loader.ts b/src/interface/web/image-loader.ts new file mode 100644 index 00000000..45944e9a --- /dev/null +++ b/src/interface/web/image-loader.ts @@ -0,0 +1,19 @@ +export default function khojLoader({ + src, + width, + quality, + }: { + src: string + width: number + quality?: number + }) { + if (src.startsWith("http")) { + return src + } + + if (src.startsWith("/")) { + src = src.slice(1) + } + + return `/static/${src}` +} diff --git a/src/interface/web/next.config.mjs b/src/interface/web/next.config.mjs new file mode 100644 index 00000000..db58c2ea --- /dev/null +++ b/src/interface/web/next.config.mjs @@ -0,0 +1,38 @@ +/** @type {import('next').NextConfig} */ + +const isProd = process.env.NEXT_PUBLIC_ENV === 'production'; + +const nextConfig = { + output: isProd ? 'export' : undefined, + rewrites: isProd ? undefined : async () => { + return [ + { + source: '/api/:path*', + destination: 'http://localhost:42110/api/:path*', + }, + ]; + }, + trailingSlash: true, + skipTrailingSlashRedirect: true, + distDir: 'out', + images: { + loader: isProd ? 'custom' : 'default', + loaderFile: isProd ? './image-loader.ts' : undefined, + remotePatterns: isProd ? [ + { + protocol: "https", + hostname: "**.googleusercontent.com", + }, + { + protocol: "https", + hostname: "generated.khoj.dev", + }, + { + protocol: "https", + hostname: "assets.khoj.dev", + }, + ] : undefined, + } +}; + +export default nextConfig; diff --git a/src/interface/web/package.json b/src/interface/web/package.json new file mode 100644 index 00000000..7bd3c9d3 --- /dev/null +++ b/src/interface/web/package.json @@ -0,0 +1,39 @@ +{ + "name": "khoj-ai", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "collectstatic": "bash -c 'pushd ../../../ && source .venv/bin/activate && python3 src/khoj/manage.py collectstatic --noinput && deactivate && popd'", + "cicollectstatic": "bash -c 'pushd ../../../ && python3 src/khoj/manage.py collectstatic --noinput && popd'", + "export": "yarn build && cp -r out/ ../../khoj/interface/built && yarn collectstatic", + "ciexport": "yarn build && cp -r out/ ../../khoj/interface/built && yarn cicollectstatic", + "watch": "nodemon --watch . --ext js,jsx,ts,tsx,css --ignore 'out/**/*' --exec 'yarn export'", + "windowswatch": "nodemon --watch . --ext js,jsx,ts,tsx,css --ignore 'out/**/*' --exec 'yarn windowsexport'", + "windowscollectstatic": "cd ..\\..\\.. && .\\.venv\\Scripts\\Activate.bat && py .\\src\\khoj\\manage.py collectstatic --noinput && .\\.venv\\Scripts\\deactivate.bat && cd ..", + "windowsexport": "yarn build && xcopy out ..\\..\\khoj\\interface\\built /E /Y && yarn windowscollectstatic" + }, + "dependencies": { + "@types/katex": "^0.16.7", + "@types/markdown-it": "^14.1.1", + "katex": "^0.16.10", + "markdown-it": "^14.1.0", + "markdown-it-highlightjs": "^4.1.0", + "next": "14.2.3", + "react": "^18", + "react-dom": "^18", + "swr": "^2.2.5" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "nodemon": "^3.1.3", + "typescript": "^5" + } +} diff --git a/src/interface/web/public/agents.svg b/src/interface/web/public/agents.svg new file mode 100644 index 00000000..f3974293 --- /dev/null +++ b/src/interface/web/public/agents.svg @@ -0,0 +1,6 @@ + + + + diff --git a/src/interface/web/public/automation.svg b/src/interface/web/public/automation.svg new file mode 100644 index 00000000..162dd9ba --- /dev/null +++ b/src/interface/web/public/automation.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/src/interface/web/public/chat.svg b/src/interface/web/public/chat.svg new file mode 100644 index 00000000..a5cbf3af --- /dev/null +++ b/src/interface/web/public/chat.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/src/interface/web/public/close.svg b/src/interface/web/public/close.svg new file mode 100644 index 00000000..583d7d75 --- /dev/null +++ b/src/interface/web/public/close.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/interface/web/public/copy-button-success.svg b/src/interface/web/public/copy-button-success.svg new file mode 100644 index 00000000..7a00dcd0 --- /dev/null +++ b/src/interface/web/public/copy-button-success.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/interface/web/public/copy-button.svg b/src/interface/web/public/copy-button.svg new file mode 100644 index 00000000..36fc8971 --- /dev/null +++ b/src/interface/web/public/copy-button.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/interface/web/public/khoj-logo.svg b/src/interface/web/public/khoj-logo.svg new file mode 100644 index 00000000..12e065ba --- /dev/null +++ b/src/interface/web/public/khoj-logo.svg @@ -0,0 +1,5385 @@ + + + + + + + + + + + Logo 1024px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Logo 1024px + + + + diff --git a/src/interface/web/public/send.svg b/src/interface/web/public/send.svg new file mode 100644 index 00000000..5605a3aa --- /dev/null +++ b/src/interface/web/public/send.svg @@ -0,0 +1 @@ + diff --git a/src/interface/web/public/share.svg b/src/interface/web/public/share.svg new file mode 100644 index 00000000..793337dd --- /dev/null +++ b/src/interface/web/public/share.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/interface/web/public/thumbs-down.svg b/src/interface/web/public/thumbs-down.svg new file mode 100644 index 00000000..e7d359e6 --- /dev/null +++ b/src/interface/web/public/thumbs-down.svg @@ -0,0 +1,6 @@ + + + +thumbs-down + + diff --git a/src/interface/web/public/thumbs-up.svg b/src/interface/web/public/thumbs-up.svg new file mode 100644 index 00000000..7d8266c9 --- /dev/null +++ b/src/interface/web/public/thumbs-up.svg @@ -0,0 +1,6 @@ + + + +thumbs-up + + diff --git a/src/interface/web/tsconfig.json b/src/interface/web/tsconfig.json new file mode 100644 index 00000000..ee33bd89 --- /dev/null +++ b/src/interface/web/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "out/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/src/interface/web/yarn.lock b/src/interface/web/yarn.lock new file mode 100644 index 00000000..53495d9d --- /dev/null +++ b/src/interface/web/yarn.lock @@ -0,0 +1,2581 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.23.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== + dependencies: + regenerator-runtime "^0.14.0" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.10.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" + integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@next/env@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" + integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== + +"@next/eslint-plugin-next@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz#287ad8620e7061ba01e8d3313d464db6d217b6df" + integrity sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw== + dependencies: + glob "10.3.10" + +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + +"@next/swc-win32-x64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@rushstack/eslint-patch@^1.3.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" + integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== + dependencies: + "@swc/counter" "^0.1.3" + tslib "^2.4.0" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/katex@^0.16.7": + version "0.16.7" + resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868" + integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== + +"@types/linkify-it@^5": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== + +"@types/markdown-it@^14.1.1": + version "14.1.1" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.1.tgz#06bafb7a4e3f77b62b1f308acf7df76687887e0b" + integrity sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" + +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== + +"@types/node@^20": + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + dependencies: + undici-types "~5.26.4" + +"@types/prop-types@*": + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + +"@types/react-dom@^18": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" + integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== + dependencies: + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" + integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + +"@typescript-eslint/types@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" + integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== + +"@typescript-eslint/typescript-estree@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" + integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/visitor-keys@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" + integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== + dependencies: + "@typescript-eslint/types" "7.2.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + 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.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.toreversed@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + 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.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001579: + version "1.0.30001629" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz#907a36f4669031bd8a1a8dbc2fa08b29e0db297e" + integrity sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +client-only@0.0.1, client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enhanced-resolve@^5.12.0: + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.2" + safe-array-concat "^1.1.2" + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.3.tgz#2fb0f7c4eccda530a4b5054438162b2303786d4f" + integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg== + dependencies: + "@next/eslint-plugin-next" "14.2.3" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.5.2: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.28.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react@^7.33.2: + version "7.34.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" + integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.2" + array.prototype.toreversed "^1.1.2" + array.prototype.tosorted "^1.1.3" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.19" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.hasown "^1.1.4" + object.values "^1.2.0" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.11" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +get-tsconfig@^4.5.0: + version "4.7.5" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" + integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + 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: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +highlight.js@^11.9.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" + integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.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.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + 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" + +katex@^0.16.10: + version "0.16.10" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.10.tgz#6f81b71ac37ff4ec7556861160f53bc5f058b185" + integrity sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA== + dependencies: + commander "^8.3.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +language-subtag-registry@^0.3.20: + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + +markdown-it-highlightjs@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/markdown-it-highlightjs/-/markdown-it-highlightjs-4.1.0.tgz#29e91f88d9773d411c59fda143129fef26e55068" + integrity sha512-aYcgme5aYn10BHEvLZaCNgwxU2oaAX9inK9dwCv38wJdq7tal5FzZrLdQQY8MR3I1H07S3BKgYGRX2kKuPT+sA== + dependencies: + highlight.js "^11.9.0" + +markdown-it@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.1: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.6: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next@14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" + integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== + dependencies: + "@next/env" "14.2.3" + "@swc/helpers" "0.5.5" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" + optionalDependencies: + "@next/swc-darwin-arm64" "14.2.3" + "@next/swc-darwin-x64" "14.2.3" + "@next/swc-linux-arm64-gnu" "14.2.3" + "@next/swc-linux-arm64-musl" "14.2.3" + "@next/swc-linux-x64-gnu" "14.2.3" + "@next/swc-linux-x64-musl" "14.2.3" + "@next/swc-win32-arm64-msvc" "14.2.3" + "@next/swc-win32-ia32-msvc" "14.2.3" + "@next/swc-win32-x64-msvc" "14.2.3" + +nodemon@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.3.tgz#dcce9ee0aa7d19cd4dcd576ae9a0456d9078b286" + integrity sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w== + dependencies: + chokidar "^3.5.2" + debug "^4" + ignore-by-default "^1.0.1" + minimatch "^3.1.2" + pstree.remy "^1.1.8" + semver "^7.5.3" + simple-update-notifier "^2.0.0" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.7, object.entries@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.7, object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.hasown@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-dom@^18: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react@^18: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-update-notifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== + dependencies: + semver "^7.5.3" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swr@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/swr/-/swr-2.2.5.tgz#063eea0e9939f947227d5ca760cc53696f46446b" + integrity sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg== + dependencies: + client-only "^0.0.1" + use-sync-external-store "^1.2.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +touch@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" + integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== + +ts-api-utils@^1.0.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typescript@^5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-sync-external-store@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" + integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + 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.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/src/khoj/app/settings.py b/src/khoj/app/settings.py index 349e48ae..2cb4440b 100644 --- a/src/khoj/app/settings.py +++ b/src/khoj/app/settings.py @@ -163,7 +163,7 @@ USE_TZ = True # https://docs.djangoproject.com/en/4.2/howto/static-files/ STATIC_ROOT = BASE_DIR / "static" -STATICFILES_DIRS = [BASE_DIR / "interface/web", BASE_DIR / "interface/email"] +STATICFILES_DIRS = [BASE_DIR / "interface/web", BASE_DIR / "interface/email", BASE_DIR / "interface/built"] STATIC_URL = "/static/" # Default primary key field type diff --git a/src/khoj/configure.py b/src/khoj/configure.py index dc33586b..eca7f3e6 100644 --- a/src/khoj/configure.py +++ b/src/khoj/configure.py @@ -16,9 +16,11 @@ from starlette.authentication import ( SimpleUser, UnauthenticatedUser, ) +from starlette.middleware import Middleware from starlette.middleware.authentication import AuthenticationMiddleware from starlette.middleware.sessions import SessionMiddleware from starlette.requests import HTTPConnection +from starlette.types import ASGIApp, Receive, Scope, Send from khoj.database.adapters import ( AgentAdapters, @@ -306,7 +308,18 @@ def configure_routes(app): def configure_middleware(app): + class NextJsMiddleware(Middleware): + async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: + if scope["type"] == "http" and scope["path"].startswith("/_next"): + scope["path"] = "/static" + scope["path"] + await self.app(scope, receive, send) + + def __init__(self, app: ASGIApp) -> None: + super().__init__(app) + self.app = app + app.add_middleware(AuthenticationMiddleware, backend=UserAuthenticationBackend()) + app.add_middleware(NextJsMiddleware) app.add_middleware(SessionMiddleware, secret_key=os.environ.get("KHOJ_DJANGO_SECRET_KEY", "!secret")) diff --git a/src/khoj/routers/web_client.py b/src/khoj/routers/web_client.py index 6def7ba8..1dc6a2f4 100644 --- a/src/khoj/routers/web_client.py +++ b/src/khoj/routers/web_client.py @@ -34,7 +34,7 @@ from khoj.utils.rawconfig import ( # Initialize Router web_client = APIRouter() -templates = Jinja2Templates(directory=constants.web_directory) +templates = Jinja2Templates([constants.web_directory, constants.next_js_directory]) # Create Routes @@ -118,6 +118,17 @@ def chat_page(request: Request): ) +@web_client.get("/experimental", response_class=FileResponse) +@requires(["authenticated"], redirect="login_page") +def experimental_page(request: Request): + return templates.TemplateResponse( + "index.html", + context={ + "request": request, + }, + ) + + @web_client.get("/login", response_class=FileResponse) def login_page(request: Request): next_url = get_next_url(request) diff --git a/src/khoj/utils/constants.py b/src/khoj/utils/constants.py index f7747a99..d8a54691 100644 --- a/src/khoj/utils/constants.py +++ b/src/khoj/utils/constants.py @@ -2,6 +2,7 @@ from pathlib import Path app_root_directory = Path(__file__).parent.parent.parent web_directory = app_root_directory / "khoj/interface/web/" +next_js_directory = app_root_directory / "khoj/interface/built/" empty_escape_sequences = "\n|\r|\t| " app_env_filepath = "~/.khoj/env" telemetry_server = "https://khoj.beta.haletic.com/v1/telemetry"