From ac0b82e6a0ed10962c48631bee451bc8d09a55b4 Mon Sep 17 00:00:00 2001 From: Marcus Rehbock Date: Sun, 9 Aug 2026 00:49:45 -0700 Subject: [PATCH] =?UTF-8?q?Kin:=20personal=20relationships=20app=20?= =?UTF-8?q?=E2=80=94=20server=20(cadence/due/migrations)=20+=20Expo=20Andr?= =?UTF-8?q?oid=20app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- .gitea/workflows/release.yml | 69 + .gitignore | 17 + README.md | 74 + app/.claude/settings.json | 5 + app/.gitignore | 42 + app/.vscode/extensions.json | 1 + app/.vscode/settings.json | 7 + app/AGENTS.md | 3 + app/CLAUDE.md | 1 + app/LICENSE | 21 + app/android/.gitignore | 19 + app/android/app/build.gradle | 194 + app/android/app/debug.keystore | Bin 0 -> 2257 bytes app/android/app/proguard-rules.pro | 14 + app/android/app/src/debug/AndroidManifest.xml | 7 + .../src/debugOptimized/AndroidManifest.xml | 7 + app/android/app/src/main/AndroidManifest.xml | 32 + .../main/java/com/marcus/kin/MainActivity.kt | 65 + .../java/com/marcus/kin/MainApplication.kt | 45 + .../res/drawable-hdpi/splashscreen_logo.png | Bin 0 -> 4833 bytes .../res/drawable-mdpi/splashscreen_logo.png | Bin 0 -> 2921 bytes .../res/drawable-xhdpi/splashscreen_logo.png | Bin 0 -> 6878 bytes .../res/drawable-xxhdpi/splashscreen_logo.png | Bin 0 -> 11938 bytes .../drawable-xxxhdpi/splashscreen_logo.png | Bin 0 -> 17349 bytes .../res/drawable/ic_launcher_background.xml | 6 + .../res/drawable/rn_edit_text_material.xml | 37 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1112 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 1502 bytes .../mipmap-hdpi/ic_launcher_monochrome.webp | Bin 0 -> 1502 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 1854 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 737 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 982 bytes .../mipmap-mdpi/ic_launcher_monochrome.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1225 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1447 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 2154 bytes .../mipmap-xhdpi/ic_launcher_monochrome.webp | Bin 0 -> 2154 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 2499 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2249 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 3421 bytes .../mipmap-xxhdpi/ic_launcher_monochrome.webp | Bin 0 -> 3421 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 3798 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3052 bytes .../ic_launcher_foreground.webp | Bin 0 -> 5032 bytes .../ic_launcher_monochrome.webp | Bin 0 -> 5032 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 5215 bytes .../app/src/main/res/values-night/colors.xml | 1 + .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 5 + .../app/src/main/res/values/styles.xml | 15 + app/android/build.gradle | 24 + app/android/gradle.properties | 63 + app/android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 46175 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + app/android/gradlew | 248 + app/android/gradlew.bat | 98 + app/android/settings.gradle | 39 + app/app.json | 41 + app/assets/images/adaptive-icon.png | Bin 0 -> 13660 bytes app/assets/images/favicon.png | Bin 0 -> 4808 bytes app/assets/images/icon.png | Bin 0 -> 32263 bytes app/assets/images/splash-icon.png | Bin 0 -> 11765 bytes app/package-lock.json | 7763 +++++++++++++++++ app/package.json | 38 + app/src/app/_layout.tsx | 39 + app/src/app/edit.tsx | 107 + app/src/app/index.tsx | 136 + app/src/app/log.tsx | 77 + app/src/app/people.tsx | 122 + app/src/app/person/[id].tsx | 304 + app/src/app/settings.tsx | 85 + app/src/components/PersonRow.tsx | 78 + app/src/components/ui.tsx | 164 + app/src/lib/api.ts | 61 + app/src/lib/config.ts | 32 + app/src/lib/format.ts | 29 + app/src/lib/haptics.ts | 11 + app/src/lib/notifications.ts | 82 + app/src/lib/store.ts | 69 + app/src/lib/theme.ts | 20 + app/src/lib/types.ts | 66 + app/src/lib/useStore.ts | 6 + app/tsconfig.json | 20 + docs/SCOPE.md | 88 + server/.dockerignore | 3 + server/.env.example | 5 + server/Dockerfile | 16 + server/docker-compose.yml | 22 + server/migrations/001_baseline.sql | 73 + server/migrations/002_cadence.sql | 11 + server/package.json | 15 + server/public/app.js | 232 + server/public/index.html | 34 + server/public/styles.css | 102 + server/src/db.ts | 13 + server/src/index.ts | 46 + server/src/migrate.ts | 31 + server/src/routes/due.ts | 65 + server/src/routes/people.ts | 244 + 101 files changed, 11534 insertions(+) create mode 100644 .gitea/workflows/release.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/.claude/settings.json create mode 100644 app/.gitignore create mode 100644 app/.vscode/extensions.json create mode 100644 app/.vscode/settings.json create mode 100644 app/AGENTS.md create mode 100644 app/CLAUDE.md create mode 100644 app/LICENSE create mode 100644 app/android/.gitignore create mode 100644 app/android/app/build.gradle create mode 100644 app/android/app/debug.keystore create mode 100644 app/android/app/proguard-rules.pro create mode 100644 app/android/app/src/debug/AndroidManifest.xml create mode 100644 app/android/app/src/debugOptimized/AndroidManifest.xml create mode 100644 app/android/app/src/main/AndroidManifest.xml create mode 100644 app/android/app/src/main/java/com/marcus/kin/MainActivity.kt create mode 100644 app/android/app/src/main/java/com/marcus/kin/MainApplication.kt create mode 100644 app/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png create mode 100644 app/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png create mode 100644 app/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png create mode 100644 app/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png create mode 100644 app/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png create mode 100644 app/android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 app/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.webp create mode 100644 app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp create mode 100644 app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp create mode 100644 app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.webp create mode 100644 app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp create mode 100644 app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/android/app/src/main/res/values-night/colors.xml create mode 100644 app/android/app/src/main/res/values/colors.xml create mode 100644 app/android/app/src/main/res/values/strings.xml create mode 100644 app/android/app/src/main/res/values/styles.xml create mode 100644 app/android/build.gradle create mode 100644 app/android/gradle.properties create mode 100644 app/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 app/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 app/android/gradlew create mode 100644 app/android/gradlew.bat create mode 100644 app/android/settings.gradle create mode 100644 app/app.json create mode 100644 app/assets/images/adaptive-icon.png create mode 100644 app/assets/images/favicon.png create mode 100644 app/assets/images/icon.png create mode 100644 app/assets/images/splash-icon.png create mode 100644 app/package-lock.json create mode 100644 app/package.json create mode 100644 app/src/app/_layout.tsx create mode 100644 app/src/app/edit.tsx create mode 100644 app/src/app/index.tsx create mode 100644 app/src/app/log.tsx create mode 100644 app/src/app/people.tsx create mode 100644 app/src/app/person/[id].tsx create mode 100644 app/src/app/settings.tsx create mode 100644 app/src/components/PersonRow.tsx create mode 100644 app/src/components/ui.tsx create mode 100644 app/src/lib/api.ts create mode 100644 app/src/lib/config.ts create mode 100644 app/src/lib/format.ts create mode 100644 app/src/lib/haptics.ts create mode 100644 app/src/lib/notifications.ts create mode 100644 app/src/lib/store.ts create mode 100644 app/src/lib/theme.ts create mode 100644 app/src/lib/types.ts create mode 100644 app/src/lib/useStore.ts create mode 100644 app/tsconfig.json create mode 100644 docs/SCOPE.md create mode 100644 server/.dockerignore create mode 100644 server/.env.example create mode 100644 server/Dockerfile create mode 100644 server/docker-compose.yml create mode 100644 server/migrations/001_baseline.sql create mode 100644 server/migrations/002_cadence.sql create mode 100644 server/package.json create mode 100644 server/public/app.js create mode 100644 server/public/index.html create mode 100644 server/public/styles.css create mode 100644 server/src/db.ts create mode 100644 server/src/index.ts create mode 100644 server/src/migrate.ts create mode 100644 server/src/routes/due.ts create mode 100644 server/src/routes/people.ts diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..f3bd313 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,69 @@ +name: Build & Release APK + +on: + push: + branches: [main] + +jobs: + build: + # Desktop runner only — RN/Gradle builds starve the 4-core VPS. + runs-on: desktop + container: + image: eclipse-temurin:21-jdk + steps: + - name: Checkout + # Hand-rolled: actions/checkout needs Node, the JDK image has none. + run: | + apt-get update -qq && apt-get install -y -qq git unzip curl > /dev/null + git init . + git fetch --depth 1 https://git.rehbock.xyz/${{ github.repository }}.git ${{ github.sha }} + git checkout FETCH_HEAD + + - name: Install Node.js + run: | + curl -fsSL https://deb.nodesource.com/setup_22.x | bash - > /dev/null + apt-get install -y -qq nodejs > /dev/null + node --version + + - name: Install Android SDK + run: | + if [ ! -d "$HOME/android-sdk/platforms/android-36" ]; then + mkdir -p "$HOME/android-sdk/cmdline-tools" + curl -fsSL -o /tmp/clt.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip + unzip -q /tmp/clt.zip -d "$HOME/android-sdk/cmdline-tools" + mv "$HOME/android-sdk/cmdline-tools/cmdline-tools" "$HOME/android-sdk/cmdline-tools/latest" + yes | "$HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null || true + "$HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager" \ + "platform-tools" "platforms;android-36" "build-tools;36.0.0" > /dev/null + fi + + - name: Install app deps + run: cd app && npm ci --no-audit --no-fund + + - name: Decode signing keystore + run: echo "${{ secrets.KEYSTORE_B64 }}" | base64 -d > /tmp/release.jks + + - name: Build signed release APK + env: + KEYSTORE_FILE: /tmp/release.jks + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEY_ALIAS: kin + VERSION_CODE: ${{ github.run_number }} + VERSION_NAME: 1.${{ github.run_number }} + run: | + export ANDROID_HOME="$HOME/android-sdk" + cd app/android + echo "sdk.dir=$ANDROID_HOME" > local.properties + ./gradlew assembleRelease --no-daemon --console=plain + + - name: Publish Gitea release with APK + run: | + TAG="v1.${{ github.run_number }}" + API="https://git.rehbock.xyz/api/v1/repos/${{ github.repository }}" + AUTH="Authorization: token ${{ secrets.GITHUB_TOKEN }}" + RELEASE=$(curl -fsS -X POST "$API/releases" -H "$AUTH" -H "Content-Type: application/json" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"target_commitish\":\"${{ github.sha }}\"}") + RID=$(echo "$RELEASE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) + curl -fsS -X POST "$API/releases/$RID/assets?name=kin-$TAG.apk" -H "$AUTH" \ + -F "attachment=@app/android/app/build/outputs/apk/release/app-release.apk" > /dev/null + echo "Released $TAG" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6993de6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# server +server/node_modules/ +server/.env +server/.env.token.local +server/bun.lock + +# app +app/node_modules/ +app/.expo/ +app/dist/ +app/android/app/build/ +app/android/build/ +app/android/.gradle/ +app/android/local.properties +app/android/.kotlin/ +app/ios/ +app/expo-env.d.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..176436a --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# Kin — personal relationships app + +A self-hosted "relational wealth" tracker: who matters, when you last talked, +and who's due for a catch-up. Monica-style personal CRM, but thin: all data +lives in one Postgres database on your own server; the mobile app and web UI +are both clients of the same tiny API. + +- **`server/`** — Bun + Hono API and vanilla-JS web UI, deployed as the `crm` + container at https://crm.rehbock.xyz (data in the shared `personal-db` + Postgres, database `personal`). +- **`app/`** — Expo / React Native app ("Kin"), Android APK built by Gitea + Actions and installed via Obtainium. iOS builds from the same code. +- **`docs/SCOPE.md`** — product scope and architecture decisions. + +## How it works + +Each person can have a **cadence** (contact every N days). The server computes +`urgency = days_since_last_contact / cadence` for everyone; the app's home +screen sorts by it (overdue → coming up → on track) and schedules a local +daily notification ("3 people are due for a catch-up"). Logging an interaction +takes two taps and resets the clock. Snooze pushes someone off the list for a +week without pretending you talked. + +## Auth + +Two paths into the same API, split by Caddy (`~/personal/proxy/Caddyfile` on +the VPS): + +- **Browser** → Caddy `basic_auth` (user `admin`), then proxied to the app. +- **Mobile app** → sends `Authorization: Bearer `; Caddy lets + Bearer requests through and the server validates the token itself + (`API_TOKEN` in `server/.env` on the VPS; local copy in + `server/.env.token.local`, gitignored). + +Anything on the Docker networks can hit the API unauthenticated — the port is +never published on the host. Don't change that property. + +## Server deploy + +The server lives at `~/personal/crm` on the VPS. Restart is NOT enough — the +image bakes the source in: + +```sh +rsync -a --delete --exclude .env --exclude .env.token.local --exclude node_modules \ + server/ rehbock.xyz:personal/crm/ +ssh rehbock.xyz 'cd ~/personal/crm; and docker compose up -d --build' +``` + +Migrations in `server/migrations/*.sql` run automatically at container boot +(recorded in `schema_migrations`). Add a new numbered file; never edit an +applied one. + +## App development + +```sh +cd app +npm install +npx expo start # dev server; press a for Android +npx tsc --noEmit # typecheck +``` + +`app/android/` is committed (CI builds it directly; `expo prebuild` only when +native config changes). Release signing: `~/.android-keys/kin-release.jks` +(alias `kin`, password in `kin-release.password` next to it), or +`KEYSTORE_FILE`/`KEYSTORE_PASSWORD` env in CI. + +## Release pipeline + +Push to `main` → Gitea Actions (`.gitea/workflows/release.yml`) on the +**desktop runner** (label `desktop` — never the VPS) → signed APK → +Gitea release `v1.` with asset `kin-v1..apk` → Obtainium picks it up +from the repo URL. Repo secrets: `KEYSTORE_B64`, `KEYSTORE_PASSWORD`. +Version code/name come from the CI run number; `app.json`'s version is unused +on Android. diff --git a/app/.claude/settings.json b/app/.claude/settings.json new file mode 100644 index 0000000..176e6a5 --- /dev/null +++ b/app/.claude/settings.json @@ -0,0 +1,5 @@ +{ + "enabledPlugins": { + "expo@claude-plugins-official": true + } +} diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..7ad0672 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,42 @@ +# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files + +# dependencies +node_modules/ + +# Expo +.expo/ +dist/ +web-build/ +expo-env.d.ts + +# Native +.kotlin/ +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Metro +.metro-health-check* + +# debug +npm-debug.* +yarn-debug.* +yarn-error.* + +# macOS +.DS_Store +*.pem + +# local env files +.env*.local + +# typescript +*.tsbuildinfo + +example + +# generated native folders (android/ is committed — CI builds it) +/ios diff --git a/app/.vscode/extensions.json b/app/.vscode/extensions.json new file mode 100644 index 0000000..b7ed837 --- /dev/null +++ b/app/.vscode/extensions.json @@ -0,0 +1 @@ +{ "recommendations": ["expo.vscode-expo-tools"] } diff --git a/app/.vscode/settings.json b/app/.vscode/settings.json new file mode 100644 index 0000000..e2798e4 --- /dev/null +++ b/app/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.organizeImports": "explicit", + "source.sortMembers": "explicit" + } +} diff --git a/app/AGENTS.md b/app/AGENTS.md new file mode 100644 index 0000000..0e6bc80 --- /dev/null +++ b/app/AGENTS.md @@ -0,0 +1,3 @@ +# Expo HAS CHANGED + +Read the exact versioned docs at https://docs.expo.dev/versions/v57.0.0/ before writing any code. diff --git a/app/CLAUDE.md b/app/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/app/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/app/LICENSE b/app/LICENSE new file mode 100644 index 0000000..30b20e3 --- /dev/null +++ b/app/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/app/android/.gitignore b/app/android/.gitignore new file mode 100644 index 0000000..1ea9b64 --- /dev/null +++ b/app/android/.gitignore @@ -0,0 +1,19 @@ +# OSX +# +.DS_Store + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ + +# generated inline modules +app/src/main/java/inline/ + +# Bundle artifacts +*.jsbundle diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle new file mode 100644 index 0000000..5395752 --- /dev/null +++ b/app/android/app/build.gradle @@ -0,0 +1,194 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" + +def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) + reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + hermesCommand = new File(["node", "--print", "require.resolve('hermes-compiler/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/hermesc/%OS-BIN%/hermesc" + codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + + enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean() + // Use Expo CLI to bundle the app, this ensures the Metro config + // works correctly with Expo projects. + cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" + + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() +} + +/** + * Set this to true in release builds to optimize the app using [R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization). + */ +def enableMinifyInReleaseBuilds = (findProperty('android.enableMinifyInReleaseBuilds') ?: false).toBoolean() + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' + +android { + ndkVersion rootProject.ext.ndkVersion + + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace 'com.marcus.kin' + defaultConfig { + applicationId 'com.marcus.kin' + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode ((System.getenv("VERSION_CODE") ?: "1").toInteger()) + versionName (System.getenv("VERSION_NAME") ?: "1.0-dev") + + buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\"" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + release { + // CI provides KEYSTORE_FILE/KEYSTORE_PASSWORD; local builds fall + // back to ~/.android-keys/. If neither exists, release builds are + // debug-signed (fine for emulator work, not installable over CI builds). + def ksPath = System.getenv("KEYSTORE_FILE") ?: "${System.properties['user.home']}/.android-keys/kin-release.jks" + def passFile = new File("${System.properties['user.home']}/.android-keys/kin-release.password") + def ksPass = System.getenv("KEYSTORE_PASSWORD") ?: (passFile.exists() ? passFile.text.trim() : null) + if (new File(ksPath).exists() && ksPass != null) { + storeFile file(ksPath) + storePassword ksPass + keyAlias System.getenv("KEY_ALIAS") ?: "kin" + keyPassword System.getenv("KEY_PASSWORD") ?: ksPass + } + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + signingConfig signingConfigs.release.storeFile ? signingConfigs.release : signingConfigs.debug + def enableShrinkResources = findProperty('android.enableShrinkResourcesInReleaseBuilds') ?: 'false' + shrinkResources enableShrinkResources.toBoolean() + minifyEnabled enableMinifyInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + def enablePngCrunchInRelease = findProperty('android.enablePngCrunchInReleaseBuilds') ?: 'true' + crunchPngs enablePngCrunchInRelease.toBoolean() + } + } + packagingOptions { + jniLibs { + def enableLegacyPackaging = findProperty('expo.useLegacyPackaging') ?: 'false' + useLegacyPackaging enableLegacyPackaging.toBoolean() + } + } + androidResources { + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~' + } +} + +// Apply static values from `gradle.properties` to the `android.packagingOptions` +// Accepts values in comma delimited lists, example: +// android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini +["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> + // Split option: 'foo,bar' -> ['foo', 'bar'] + def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); + // Trim all elements in place. + for (i in 0.. 0) { + println "android.packagingOptions.$prop += $options ($options.length)" + // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' + options.each { + android.packagingOptions[prop] += it + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; + def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; + def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; + + if (isGifEnabled) { + // For animated gif support + implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}") + } + + if (isWebpEnabled) { + // For webp support + implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}") + if (isWebpAnimatedEnabled) { + // Animated webp support + implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}") + } + } + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} diff --git a/app/android/app/debug.keystore b/app/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc + + + + + diff --git a/app/android/app/src/debugOptimized/AndroidManifest.xml b/app/android/app/src/debugOptimized/AndroidManifest.xml new file mode 100644 index 0000000..3ec2507 --- /dev/null +++ b/app/android/app/src/debugOptimized/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..60685b1 --- /dev/null +++ b/app/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/android/app/src/main/java/com/marcus/kin/MainActivity.kt b/app/android/app/src/main/java/com/marcus/kin/MainActivity.kt new file mode 100644 index 0000000..43b470a --- /dev/null +++ b/app/android/app/src/main/java/com/marcus/kin/MainActivity.kt @@ -0,0 +1,65 @@ +package com.marcus.kin +import expo.modules.splashscreen.SplashScreenManager + +import android.os.Build +import android.os.Bundle + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +import expo.modules.ReactActivityDelegateWrapper + +class MainActivity : ReactActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + // Set the theme to AppTheme BEFORE onCreate to support + // coloring the background, status bar, and navigation bar. + // This is required for expo-splash-screen. + // setTheme(R.style.AppTheme); + // @generated begin expo-splashscreen - expo prebuild (DO NOT MODIFY) sync-f3ff59a738c56c9a6119210cb55f0b613eb8b6af + SplashScreenManager.registerOnActivity(this) + // @generated end expo-splashscreen + super.onCreate(null) + } + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "main" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate { + return ReactActivityDelegateWrapper( + this, + BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, + object : DefaultReactActivityDelegate( + this, + mainComponentName, + fabricEnabled + ){}) + } + + /** + * Align the back button behavior with Android S + * where moving root activities to background instead of finishing activities. + * @see onBackPressed + */ + override fun invokeDefaultOnBackPressed() { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + if (!moveTaskToBack(false)) { + // For non-root activities, use the default implementation to finish them. + super.invokeDefaultOnBackPressed() + } + return + } + + // Use the default back button implementation on Android S + // because it's doing more than [Activity.moveTaskToBack] in fact. + super.invokeDefaultOnBackPressed() + } +} diff --git a/app/android/app/src/main/java/com/marcus/kin/MainApplication.kt b/app/android/app/src/main/java/com/marcus/kin/MainApplication.kt new file mode 100644 index 0000000..6e2e247 --- /dev/null +++ b/app/android/app/src/main/java/com/marcus/kin/MainApplication.kt @@ -0,0 +1,45 @@ +package com.marcus.kin + +import android.app.Application +import android.content.res.Configuration + +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative +import com.facebook.react.ReactPackage +import com.facebook.react.ReactHost +import com.facebook.react.common.ReleaseLevel +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint + +import expo.modules.ApplicationLifecycleDispatcher +import expo.modules.ExpoReactHostFactory + +class MainApplication : Application(), ReactApplication { + + override val reactHost: ReactHost by lazy { + ExpoReactHostFactory.getDefaultReactHost( + context = applicationContext, + packageList = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } + ) + } + + override fun onCreate() { + super.onCreate() + DefaultNewArchitectureEntryPoint.releaseLevel = try { + ReleaseLevel.valueOf(BuildConfig.REACT_NATIVE_RELEASE_LEVEL.uppercase()) + } catch (e: IllegalArgumentException) { + ReleaseLevel.STABLE + } + loadReactNative(this) + ApplicationLifecycleDispatcher.onApplicationCreate(this) + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig) + } +} diff --git a/app/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png b/app/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..13fe256eb924291e7b2653c9709ce48c359ea193 GIT binary patch literal 4833 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png b/app/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..33d4865937e2f2c8792114c3fde5bebfc0376ca1 GIT binary patch literal 2921 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 cd%!yu02ZULS+sn!?C0r215da6aWAK literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png b/app/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f30a855e87855752afa816c7cdaf38dd0a1fd812 GIT binary patch literal 6878 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 bf>?SK?fKQsRp+4OUyI8(ej{AE{ph~|wM{n@ literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png b/app/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad43361c7c36a558a57b544780784d710486030 GIT binary patch literal 11938 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 M`KuY_7ti1RA47cxi~s-t literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png b/app/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d542047828ebd596cff9b9c5c324f3082de2d35b GIT binary patch literal 17349 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 g_z!{q7X<#~i}>;|vXlw@1iZ}nlDR?gg + + + + + \ No newline at end of file diff --git a/app/android/app/src/main/res/drawable/rn_edit_text_material.xml b/app/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..5c25e72 --- /dev/null +++ b/app/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..d6dc75a --- /dev/null +++ b/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..d6dc75a --- /dev/null +++ b/app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..7713e12447b4e64f692a175b2c4a4c9986fed894 GIT binary patch literal 1112 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2V3GH9aSW+oe0%V0zDTOffsgM$ z&%T+O=5>F&*_LghnQJ%?vh++m=3;oUB0&Ea|BQlVMNF}C= z6}i6n%6v=6b5-JrLs1ho`ZAw%U3kp;#z#$X>54YR(^HMIUz^T4xRf zyK~NVyIwu>oZcke=>=1gw(Oohu}?2X@ZI(x&0@>#F8iVms;Gb1YvL=SBGkjrb6I?g zqSr-@mlizR$~PpgQ9rtF?%R$an~wKt6?^tJf7N&tx3x)A&v(o6)$NDR+nkQb?^bSaLS^Kf3ha(>%}TW>wP@-LV}&WO<-xogx5b)_w6zAT^F+` zaBbZ4D{G}&0*{0hGu`)24(NaW`RD6=LpzI}pswFr)yp^RuWwjh{rkrC>-|Ap?JvL8 z@O|Mo*gR)x#OjSF1s4jn-B}%WBdf{LOS5m^AF0K6_r9oDciJOeykE&fr6T=4qs{fD zfm$2}js`ELPE@zFFgOzS`jZVG@B3we57a=SZ#V9p@#)Sw$0^`EQ!lquMeVJR+RZINn#oNG9=csCjvK12z5Y6gv?fs>{Tl|IAiBeked^}_QI=^Du z{b$a2@m*#)Y?QrPW~PlNFjiVScSfo`OPhJ_-crdHwI46vOV`vq6aTk<^%$ zx4im_XIjfh-RlLWqzP3rA8-ELT=VI7X4Y4$wU1c#O<%?;7S`=^=B$yOg-ieQ%Np@3 zKium-ZfREB2~6UuAQ$KctqA>@_f0F=wzj9FY-6I?{xc6BAOBIDIq~fQkn6dxzAD|f z-_AK&$#Y@Y)4Rg=C+SYTp%=5Qu}Y@+%bD{UOFJIVc*!#pvEp^_AD2xI3&JK$1m+?}0!x72D1Tg*K=U~eafw_wYS^#^V z-dX(Wr_-3}5><;~inCEP3Wv3(-u9<++#kRTW|XKI>02mAnF|Ft;$wyUFv5^`iuvb& ztAh+tnUX!2Ml+qbI7Xz@UKZ(SvFA3AHscbFM1zMfFZ{E4~-bo5V z*)8u^Te}f2!D-IPE~?!I11ECh)r^AYj2$RcH*Suuzj&VIhT-J?mK7l!s8A~$O{vAH z_eaAXP+wbT|{3fHJAP%wajXSrj zIj*PFMsjqVjQnz^6^7}_?az$5ZIwjsu5V;1K9h=79egSk&jp7oBBhD)J%PCD1lpNn zn)0r!Y2qFe4M%3+#D_=QJK}n8Lm}4l&v`n{r(zjx)+YtPkz0(3dLnuS+STz7SD~o* zrUt%Dny}z1i_;>?<8@`SHQOhs_Yn^`WZ8UyV%r(a;fJ$Xb}?RcJH~D#U8$;KeMGL2SgakHdjLI2U+-+#-+kdQi#mU$ex>HUPH5=; zljeyE78=b|WNdbKXJ_`!^pY%}v+K}wcRjCV+pdp@MXpPbM&>Dt-PrzoER}r#QW)E! zWY{oN8ZOCk{dE5N%?WGBku)FP3m|ibdrW=IFm!OOCD-HhwCxIeI^9Pvn3293gv(6M zljI0)2r_5KtKR8DC@S?-`P87Lmi1+&`L*ke<(*e^tsG64tj@yjRBwoSTIu+_Tmtjb zXz9i^Mp-h@d~=K*uDvPH<^V)G$8nYcQBK3^}c>5>}`$v zGQSiB8QujcZM2a=^uVCX9X)U@dg$BM*b#=Iy_pbA+A0GtZGP`5^#nAwZGiY8lB(U8 zj~z{AuwV(?(ac-OCs{4TC!U>hU2b)0cuI-1ivlqmk}j2_-iYSQFNg$BM&bVQCbI+m z2^FM93!S1(@?2PGz(G=S`|(sK8xdm@np-Q2?P-L~O=bdlAD$oY}K zmU*>TxF?Yxu>w$et62Tg(T_l0x6-xE&vZUYZf-;*{z|XS(b@#Y8PG8(z=*>`L zx1C^@9^FHHEy`{ZUoQSDHBoN2BKXsXEdTa9ymK*!#pvEp^_AD2xI3&JK$1m+?}0!x72D1Tg*K=U~eafw_wYS^#^V z-dX(Wr_-3}5><;~inCEP3Wv3(-u9<++#kRTW|XKI>02mAnF|Ft;$wyUFv5^`iuvb& ztAh+tnUX!2Ml+qbI7Xz@UKZ(SvFA3AHscbFM1zMfFZ{E4~-bo5V z*)8u^Te}f2!D-IPE~?!I11ECh)r^AYj2$RcH*Suuzj&VIhT-J?mK7l!s8A~$O{vAH z_eaAXP+wbT|{3fHJAP%wajXSrj zIj*PFMsjqVjQnz^6^7}_?az$5ZIwjsu5V;1K9h=79egSk&jp7oBBhD)J%PCD1lpNn zn)0r!Y2qFe4M%3+#D_=QJK}n8Lm}4l&v`n{r(zjx)+YtPkz0(3dLnuS+STz7SD~o* zrUt%Dny}z1i_;>?<8@`SHQOhs_Yn^`WZ8UyV%r(a;fJ$Xb}?RcJH~D#U8$;KeMGL2SgakHdjLI2U+-+#-+kdQi#mU$ex>HUPH5=; zljeyE78=b|WNdbKXJ_`!^pY%}v+K}wcRjCV+pdp@MXpPbM&>Dt-PrzoER}r#QW)E! zWY{oN8ZOCk{dE5N%?WGBku)FP3m|ibdrW=IFm!OOCD-HhwCxIeI^9Pvn3293gv(6M zljI0)2r_5KtKR8DC@S?-`P87Lmi1+&`L*ke<(*e^tsG64tj@yjRBwoSTIu+_Tmtjb zXz9i^Mp-h@d~=K*uDvPH<^V)G$8nYcQBK3^}c>5>}`$v zGQSiB8QujcZM2a=^uVCX9X)U@dg$BM*b#=Iy_pbA+A0GtZGP`5^#nAwZGiY8lB(U8 zj~z{AuwV(?(ac-OCs{4TC!U>hU2b)0cuI-1ivlqmk}j2_-iYSQFNg$BM&bVQCbI+m z2^FM93!S1(@?2PGz(G=S`|(sK8xdm@np-Q2?P-L~O=bdlAD$oY}K zmU*>TxF?Yxu>w$et62Tg(T_l0x6-xE&vZUYZf-;*{z|XS(b@#Y8PG8(z=*>`L zx1C^@9^FHHEy`{ZUoQSDHBoN2BKXsXEdTa9ymK>7WzDZ`BVR5vB9=_4{b=2x|@YvthXvRTlAJ zHWUP_D?P?(j|N~C%h9nErCVcO0H`MGh_Y}P^}A}k9ML4N0wecBkZO6=us;FmK!cpB zcIHYgWy*UbWf-hRF)^cX??-1TkX?1vl+aGa3xO5)blq-{J~^}2-?WO@*PB{<;@`si z_$ZoWkYr;dD?$Lg2a? zVLUKr(G^Y&#a^(fOfDJXsfK+xLsq2LU=a#pTU9T;Y^+E9 z7jml$pa!Np4SO=M>L@V)?v-*&h0pj~3VK)x{D19V||~GdiwBU;l<;VB(cF z8;2LOA*;*%Az$dRcu{Lk4VkpLlr(c@dwHH%)jNKB6B;ya5~Lu)z(0v={ZMDV%-{OT zMF;Wte8_Cp8&{Qo(p}bD^aC?zfqXjt5PL#yVVLdFe!tqB>gRb%q}a6Wr>r5Q>|G`5 zuWjQpJ#nG6p@BT*NZ9=BJOLd&=;^7Tq>HD3!FdP3xv;ZGTZvTYhD)*C%a2s3U9L7Wq z=HhPO#&-C+f&ZASNM@m-R1v;uSg7?~x0fH_EAhee;w@ub`1OqFX@sxbW&)7uk*Vta z{bGyr6UM@cwpDnad5=zHhZnZmwy*Cb`MP@?Rmue80Ih3TNtkcUt{il!_M-Imj)$Vt zy7pBpw1kTYp5EacHQLouTuGNSK>lbrf}gze5UWSfGvsE7WL zlaWcCmN1{oCM6G~%*;-*H%IBTfBt@z0T4#ifR$zpG^KB`I2_Kio3%drKbh?_N5K{C zDoo=rI>EEz;?(luS`Vm6*I&PGWkzL@-W5h`P*EdijsYpq%qS!la=$(Qb9~}~w*M#! zwv1%+ux@v$yjK~}&v4*Z$oxt1xYy2&^{;!B-WJmiq5PY#+PkouFD;!?OPD*Z%5Sod zhnZzOTC$o_!uxuny147~HZA4*I{R8XmFie@S-IL7`8Mf?9SC{Yv2_0g?N0i^4Do!D z{@w56w4KG>x@_C*u}r9W6|9yZPmOy?r4Ce$^k}N-z{5Md4!&*NJ>>PW&m)X19bxt{ zvdWX$YAXrQ77}TZY}p=kDYl(qcENA%)qg^M>}!w5p&dKDP{rLvj(}k*C__0i0bu{x zO?OLNivUXFHuInne!Kf?H}!8`a&bfd2p}WHx+|oc$mmpN$TB<9C72EXGJbweQ%O%B z6DIFkkC6f?r|qFIL~ZJ~%BJ74tg5|Gs?0n;O`Cx8vUf!AqP>kGK~IRLY%qGQr? zVz+B(CHWFZ#75`#lc5!(wcIJK6j>e9v(P^q(y-=fW9c;Y!A0-zFw?Srjf{6B@3^G$ zVD;hSKi+-5ETjExVdKrIsddpal2xWZe|_<>%$a8ymmQYIJ%07Ka$a8k!iJ6i7+?9$ zuM!Y&KUF-}h;5(kN6zWz=PW&6m>GPa!0h;PXLd{5Af@}44{LM1D2=g`wmY(Tt(A0R zKhq_p5NYcpiV_x+^ou@TnXYj!Y2 zxGwhmW3=w0h`YHPHf%h1CQH<}rm1n(`_GTh%-^HW`{&nv+r04kmpHx~C`$Z#`QG|Y z&8LpmRg1Ji^0#s3$0#({#8b9Q9xvwOd!7IWuI{*4oGU*DXyk)Z2Vof9F_$>GCmz~`OeEZbN~Op?a?i`EX?}D|K9VjTRRAWn5l+NGV$A1txVLp zzB^EJ+O6L^dgjlMH{KPsw$J#?o~YOSz9)a4ocnrChr~qd%{5<5PG6dtSJrHu)+YQ$ zE6&yiN14QD>Kc7+ zezzy{0{5Nvn}-ibu+1!-D9ILj#{S67cjp+Ur_Ag(d+e8BZkgt?=+lEo7p#-7i6vbHA-KAnDUa&V)^mvb||%50dTJ)6O#*f*z5c%ISW z9YlYnMv5to7Z_-~MJM=m-o@%|wYx^WZfhp}F$JfiR z{aWpBER?>!f5OD%MvEG!zcoh{jO#qJPbL=W2{b;~n(H9{^})ZDGp}pJznHhHGS}^# zs>_1S)#Xb|-~C}q>z0U%XL!H+_q|8Yg7^hFTo!#ivC!{>zNB4hdHwCg`ohbX}X<<)3{bI72H({UQ#w!yAEt6R+uI|cOv-G94*rcO8Q&Z#HUmchbK2Hh=h`l-znlN%+O*&vg<~AWyOzE+Y`#7BLfD%u ge?h`vV&WI;OHWN#Y)h|Y0_Il+Pgg&ebxsLQ0K}8du>b%7 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp new file mode 100644 index 0000000000000000000000000000000000000000..04aad625be7428774abd5f64f247f07110d11a1a GIT binary patch literal 982 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p|}=FwgaLaSW+oe0wl9<7%nQ@sHoX zf49&6tZ8Cw+or2Vof9F_$>GCmz~`OeEZbN~Op?a?i`EX?}D|K9VjTRRAWn5l+NGV$A1txVLp zzB^EJ+O6L^dgjlMH{KPsw$J#?o~YOSz9)a4ocnrChr~qd%{5<5PG6dtSJrHu)+YQ$ zE6&yiN14QD>Kc7+ zezzy{0{5Nvn}-ibu+1!-D9ILj#{S67cjp+Ur_Ag(d+e8BZkgt?=+lEo7p#-7i6vbHA-KAnDUa&V)^mvb||%50dTJ)6O#*f*z5c%ISW z9YlYnMv5to7Z_-~MJM=m-o@%|wYx^WZfhp}F$JfiR z{aWpBER?>!f5OD%MvEG!zcoh{jO#qJPbL=W2{b;~n(H9{^})ZDGp}pJznHhHGS}^# zs>_1S)#Xb|-~C}q>z0U%XL!H+_q|8Yg7^hFTo!#ivC!{>zNB4hdHwCg`ohbX}X<<)3{bI72H({UQ#w!yAEt6R+uI|cOv-G94*rcO8Q&Z#HUmchbK2Hh=h`l-znlN%+O*&vg<~AWyOzE+Y`#7BLfD%u ge?h`vV&WI;OHWN#Y)h|Y0_Il+Pgg&ebxsLQ0K}8du>b%7 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..bae41cb9a346d28a06218866d0628814c56b9e85 GIT binary patch literal 1225 zcmV;)1UCDLP)L`9p(Fird-y; ztV-pyVH>uf1wCC-!5z z$~lfhIBF4srd-w{Y{Eh8wsbmh06i8UXv$?R&|VxywWU|Y_wcg&$Ru%O0ba!O$oO<* z@Dv(x%sph1IC3Aa;296bRG3TF_w*nIw+P<3&7Ud1yr=j=4i7 zi6e8^i{~vbTX6v=%@VrXCLFdr9mXcJgzk0_)t0Af95hSlb~~}#^0pg0-4eRpeh-KJ zZmBY(4cnC=3<8g38#LF}t65R)(kC~ZzVaW1o8um>Z?K`RUhRr%H%ldhg}k%Fg9ZzE zDQrg@x~k0BqYPDHXvbrp)fmNw3VBo3)zn!PC&D1Kp|0N5(NQB~MO8syO;TfZQseZM z%Rag~B!xZbsxo7jl)nC%$Nlh2PkOweQ3Hawa)TqsziU3fN=#F0sD_`VdLe&P#$`qdp8qu7)H>uT$4S^J15*Kbh2 za;5(Zkc(npT-WU5Yr}>Lc>$`zQ2)pci&Trw(6nt*c(lI3PquzV;BE~oBViDj%Zf1c z?ai%LgrOPSl4LesWL;ai{EtSStpkzE;SS+&~#1k&0Pn${wPjSV^FSew+Ca=kbz zrIygNW+@cLZz{*w#DpmqZd{jAb7)#l3V**mpd9C~U3GP|p#R2oDdj@bs-^Jy*)#Iv zylO8Ct`Kk#0EpOLYmG89A8hNSe1zrODe z|NhuwboPGem;X3ru#i`#q0qEGDNU40e)QHG{xWdULYz4Nk>~#Smcc?^1@vW-I5O#L zXqD2~#Dq6{dwjlWjScl#^LhPWXB>E^)5zGE3i*8|i6fIXVuvz}O-y*>Y>zcHwKlI> zZMIUW(I?#ev z56-K2+B`Bz9J!AUG-9hy-%Hr*9x_QBS%71>fNvmU=@qdLFSw6P5=R#3Bz}$cc*4@@ zz;1L}fS@UtmBLQ!$99!-9EWh!A_PsjtTMD=4|ZX##T&p8w4+N3K~pZPLfWtmThM}L nV9oP%aSW+oe0%VA{_Jwe10Uc2 z{_#cb(GJf!W|_0rNx#;(y343=mB3o9w@e#%$2PP~C_AWfgx4cRVcmo^aSdC%S?XO) zZ>V@hudw2>PHFdZ%AOT0teX3F*+=Db*Yf)ngh?CoBpb`3oBC*PFf+z z6WX-U%OHfaP3vHQs>CW5=cx%Rgvb*VO=sXyo$SNQYy50SMW;$q2OLezy3@WMJIu886{RB(Y{=_OSRUj1q!GidQ&k+zqi-;<?u zRce^o>XsH27Yj49a|=t@y6Z(Zx0D#UTFrd);e*|(wQ8H6@@DPpUpC|Q4NIkrBV`t* zmS^`(IU9Fm(+MlR-#N3ZZa;rLx&4HdoY?$xo$3}-&RyWzb>)^_)FYP*KxO6gtWI6I zV34PDFlg(UwADxBj>-1x+s#ca(&(M;A=F~K?T^^cs<~;~4+G7s$g61*IB`8YqeECR zPU+e5rWBIaWmZb%=3a=+`SKx_UH|^)| zxu#-Ts^5x~svC6oA1&MMyFc>gL>~{9n%5VE=UD$``W@T9_f5&IIrHZ~P0MTs`rF>3 zZql09pDgmGbpNb5yz_%G&D%BVuHNp-PL=OvueLNd)Co=pU`vkhkvh?-ugLzxK>8Yai3Yx{=(cbP%X9i-52hT)QkE+r-|<`nBsnNNzO0d zfG?jm$ERH>d$B!VW=`6b!W+7x{g?Bbgf{BLRXwwiIv`)hz5Tjk z%d9g~yEBADSQGoh?^k!%X_=K(sMmwi%CD-%IEh7`0pG6OHT}1tVshP!R>kMf^EW)* zUhzL}o}a$MYyrmob>H)K!n|tk>8;iISoqP-xOMjr$LSgZN((N&{V-WuT*FklCT`t& z@rv5azL|$&|19th;Sij-{`!xPPt8~Sw41+mXVJv_btZ?aTdhl~7z34DPSor?(yzDQ z@$C1XYtBsXo>TqX*KW^rbq?o6ZXGkEkN*Di;n90dQ|UkJ|83lO?)?2dXO18J-Qp5_ zru2=BU~rb%j$PXhy?m*DVoAo@|-^ ztgtol#Lw2qb9-y2>h5>Fax~`nIl;iQdDFR1cgx6~D=10n@xRQ;R99TvcE8rdS(`(G z#qj#ZVwVVkZ#y>a^5Lk-P2xJesbWg+F*Ez!RTJ&+MX7K&v$=vC!u;UyR~zlwq33+$ z6%`L1&YSY?^Qrl9=^KO6E*t^cVyFNt0rpJZe|F|eWnke@^XSqkA^W{Wjk@>K1wgJa zbm;1p1%>CIBPzfc{It4!{l&LmB|<=@lTpKwO~7bq_LB(MYw+ZMBiRKL)^hEuzvzU= V1!4QQ?gAFT44$rjF6*2UngDukx)=Ze literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a41ffea317e0931ccc288db02f4fcb5bbbcfe77 GIT binary patch literal 2154 zcmcgu`!^Ge8z1Hpsi-7kLUYL_CbAaAvJlpUSX(0GeoJ_VZ5*Mul#thLZn?ac%^R6C zo675wxz$Qk8&Q+F=We#|I^VzH`#tBmob#N|c|M=>{PKCSkgfbFXkuIjfkCrFGsmZlJ+Ro`kLXl9xs30NJMnAX_?( zqxm&v!=kl<2n9ckbH;_EXH8LmWD}yN;mX(Ne^{mxE3zO8L$~Af!|cKUeaD_RYZ!+I z<01yXS7ix^iYv=2);ySAA`^Szk*?$aJf6(&uOr{12>e9o$=HFP8a;`5vu-zC*!3d= zpKpyQxxV?#pD%n5iF{orO;-d0?GE0)Ubfw zf0oYg@4rgl8vBmRpus$Bm-%JWRMRWVIbHA_?MG_0rask0pN|}&FFF@o#c~CLCRt=R zuqX!S$%UTwO$7hC=?>H>d~wF!Wy)?Un7(&L?=6q{>kUpHy?WTARF!k9rKXQxyE9 zk?XWEoarl}d1#kPl(O}S#skkA z%CpDf-;Z&DHi-3Ng{4h7dA�_=SRxACY2$zmmxjrTHgz10iRDOrX&u(EMkw%ub!L zblkmi8drAJLLdGOgtxOzomxu@^;_@m zud7EPe&d`zQY7RdsH-g5%yMb7>@gG)aihf~;D?&7>iCYXzfMNqsSxLLrI-8+AYN`A zVH^ZoZ%>J6BwklM)yQ!KLA)eF=nrP+aQlDj&-A@lNS3xZyxmKnXC&JOCi%l2Lmbgg=VjD@Q1rj4;>b3sa!OITn1BPO0=-(Q_aE? zP#rNa|GTs=2!ecQx~!>m&x-#6Uk(v(HBxO0&6~opU~%J#oT|%9lhybXo<7uHe2x76 z48o1TM4Q|+`f(@vxsO!uKR>Y#cl*rCs9zdc(8}^`?`NCy zo^17aK<~YWwldfWe8Bam>mN!7jf7)w;@D==aqP-%s~v?Y|65FG?+BzG+nLr>XoPU`!F**WNYc0s#n=tg%(<`I zVse<%c*x~$Dj3meMW7BPbB-ngV)8PLo$pxDv%oIt;D3i&YQ1qEs7XxkdU96l!+E6M zuR*PACf+0;3;K0X(dC0h7V#o}%a5Xf5gVoZU3vx|>}tFemLqRkmQfax=472kYed@c z6Y|g#wXrqU^h`h>i4bxg$UAYyJeMlFS^CZ^rE#T#2}`Ykr-Q#P?xksB+h^PG@>e8S zK_LNP?wzEldDClK>`|+oVbvmYVhxMq5sD|hUMK!4RNIwwytsd2bbGIj)dCs+!Oq=q zC=a^0sXiFKqA2iRTfx4b3X#}5vbAlgNMX($voJQasGi@Xfi$qm{mTmuod`l%K+MI5 zo8RrcX}<3@s8zx46$Vy(h@kp=vw;fGV zV+N1Laf6l8BtSB$5Sp#8hihk=!U6_=z~!a9OL0ZG8!h4rL(t0!zu9w&|`^momZtl}F~1vB584T8czm`&mr*U_IJ)|1nLOANj*M2((nJ&C7&oO4UsVIri#pYTNg>C~`8r*~k9R lJC+tX{|8U~F9q97B-LYH49&|&k;Fd)!125*oMPvj`XB0V3j6>7 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a41ffea317e0931ccc288db02f4fcb5bbbcfe77 GIT binary patch literal 2154 zcmcgu`!^Ge8z1Hpsi-7kLUYL_CbAaAvJlpUSX(0GeoJ_VZ5*Mul#thLZn?ac%^R6C zo675wxz$Qk8&Q+F=We#|I^VzH`#tBmob#N|c|M=>{PKCSkgfbFXkuIjfkCrFGsmZlJ+Ro`kLXl9xs30NJMnAX_?( zqxm&v!=kl<2n9ckbH;_EXH8LmWD}yN;mX(Ne^{mxE3zO8L$~Af!|cKUeaD_RYZ!+I z<01yXS7ix^iYv=2);ySAA`^Szk*?$aJf6(&uOr{12>e9o$=HFP8a;`5vu-zC*!3d= zpKpyQxxV?#pD%n5iF{orO;-d0?GE0)Ubfw zf0oYg@4rgl8vBmRpus$Bm-%JWRMRWVIbHA_?MG_0rask0pN|}&FFF@o#c~CLCRt=R zuqX!S$%UTwO$7hC=?>H>d~wF!Wy)?Un7(&L?=6q{>kUpHy?WTARF!k9rKXQxyE9 zk?XWEoarl}d1#kPl(O}S#skkA z%CpDf-;Z&DHi-3Ng{4h7dA�_=SRxACY2$zmmxjrTHgz10iRDOrX&u(EMkw%ub!L zblkmi8drAJLLdGOgtxOzomxu@^;_@m zud7EPe&d`zQY7RdsH-g5%yMb7>@gG)aihf~;D?&7>iCYXzfMNqsSxLLrI-8+AYN`A zVH^ZoZ%>J6BwklM)yQ!KLA)eF=nrP+aQlDj&-A@lNS3xZyxmKnXC&JOCi%l2Lmbgg=VjD@Q1rj4;>b3sa!OITn1BPO0=-(Q_aE? zP#rNa|GTs=2!ecQx~!>m&x-#6Uk(v(HBxO0&6~opU~%J#oT|%9lhybXo<7uHe2x76 z48o1TM4Q|+`f(@vxsO!uKR>Y#cl*rCs9zdc(8}^`?`NCy zo^17aK<~YWwldfWe8Bam>mN!7jf7)w;@D==aqP-%s~v?Y|65FG?+BzG+nLr>XoPU`!F**WNYc0s#n=tg%(<`I zVse<%c*x~$Dj3meMW7BPbB-ngV)8PLo$pxDv%oIt;D3i&YQ1qEs7XxkdU96l!+E6M zuR*PACf+0;3;K0X(dC0h7V#o}%a5Xf5gVoZU3vx|>}tFemLqRkmQfax=472kYed@c z6Y|g#wXrqU^h`h>i4bxg$UAYyJeMlFS^CZ^rE#T#2}`Ykr-Q#P?xksB+h^PG@>e8S zK_LNP?wzEldDClK>`|+oVbvmYVhxMq5sD|hUMK!4RNIwwytsd2bbGIj)dCs+!Oq=q zC=a^0sXiFKqA2iRTfx4b3X#}5vbAlgNMX($voJQasGi@Xfi$qm{mTmuod`l%K+MI5 zo8RrcX}<3@s8zx46$Vy(h@kp=vw;fGV zV+N1Laf6l8BtSB$5Sp#8hihk=!U6_=z~!a9OL0ZG8!h4rL(t0!zu9w&|`^momZtl}F~1vB584T8czm`&mr*U_IJ)|1nLOANj*M2((nJ&C7&oO4UsVIri#pYTNg>C~`8r*~k9R lJC+tX{|8U~F9q97B-LYH49&|&k;Fd)!125*oMPvj`XB0V3j6>7 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..996219258ca24ace1a9fb888b5e89f6fe59b0482 GIT binary patch literal 2499 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 F{{Rqz87cq( literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..68786fc613b61fb2580edf17b7844d8cf65ff9ef GIT binary patch literal 3421 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..25257971f036b58b42498be6f592ae9c87a828df GIT binary patch literal 3052 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..07800c72a59e61d2addde41181c4407324bb86b3 GIT binary patch literal 5032 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp new file mode 100644 index 0000000000000000000000000000000000000000..07800c72a59e61d2addde41181c4407324bb86b3 GIT binary patch literal 5032 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..f02807a4b4cd1ac5db2654430a9f77bc1604d5d8 GIT binary patch literal 5215 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/values-night/colors.xml b/app/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..3c05de5 --- /dev/null +++ b/app/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/android/app/src/main/res/values/colors.xml b/app/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..814200f --- /dev/null +++ b/app/android/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + #14110F + #14110F + #023c69 + #14110F + \ No newline at end of file diff --git a/app/android/app/src/main/res/values/strings.xml b/app/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..2053dcf --- /dev/null +++ b/app/android/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + Kin + dark + contain + \ No newline at end of file diff --git a/app/android/app/src/main/res/values/styles.xml b/app/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..10c232b --- /dev/null +++ b/app/android/app/src/main/res/values/styles.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/app/android/build.gradle b/app/android/build.gradle new file mode 100644 index 0000000..0554dd1 --- /dev/null +++ b/app/android/build.gradle @@ -0,0 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath('com.android.tools.build:gradle') + classpath('com.facebook.react:react-native-gradle-plugin') + classpath('org.jetbrains.kotlin:kotlin-gradle-plugin') + } +} + +allprojects { + repositories { + google() + mavenCentral() + maven { url 'https://www.jitpack.io' } + } +} + +apply plugin: "expo-root-project" +apply plugin: "com.facebook.react.rootproject" diff --git a/app/android/gradle.properties b/app/android/gradle.properties new file mode 100644 index 0000000..6cdbc8e --- /dev/null +++ b/app/android/gradle.properties @@ -0,0 +1,63 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx8192m -XX:MaxMetaspaceSize=1024m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + +# Enable AAPT2 PNG crunching +android.enablePngCrunchInReleaseBuilds=true + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=arm64-v8a + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=true + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + +# Use this property to enable edge-to-edge display support. +# This allows your app to draw behind system bars for an immersive UI. +# Note: Only works with ReactActivity and should not be used with custom Activity. +edgeToEdgeEnabled=true + +# Enable GIF support in React Native images (~200 B increase) +expo.gif.enabled=true +# Enable webp support in React Native images (~85 KB increase) +expo.webp.enabled=true +# Enable animated webp support (~3.4 MB increase) +# Disabled by default because iOS doesn't support animated webp +expo.webp.animated=false + +# Enable network inspector +EX_DEV_CLIENT_NETWORK_INSPECTOR=true + +# Use legacy packaging to compress native libraries in the resulting APK. +expo.useLegacyPackaging=false + +expo.inlineModules.watchedDirectories=[] \ No newline at end of file diff --git a/app/android/gradle/wrapper/gradle-wrapper.jar b/app/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..61285a659d17295f1de7c53e24fdf13ad755c379 GIT binary patch literal 46175 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

pVX@HRij*jw$g4?}Pn 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 literal 0 HcmV?d00001 diff --git a/app/android/gradle/wrapper/gradle-wrapper.properties b/app/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37f78a6 --- /dev/null +++ b/app/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/app/android/gradlew b/app/android/gradlew new file mode 100755 index 0000000..adff685 --- /dev/null +++ b/app/android/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/app/android/gradlew.bat b/app/android/gradlew.bat new file mode 100644 index 0000000..39baf4d --- /dev/null +++ b/app/android/gradlew.bat @@ -0,0 +1,98 @@ +@REM Copyright (c) Meta Platforms, Inc. and affiliates. +@REM +@REM This source code is licensed under the MIT license found in the +@REM LICENSE file in the root directory of this source tree. + +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/app/android/settings.gradle b/app/android/settings.gradle new file mode 100644 index 0000000..e970557 --- /dev/null +++ b/app/android/settings.gradle @@ -0,0 +1,39 @@ +pluginManagement { + def reactNativeGradlePlugin = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })") + }.standardOutput.asText.get().trim() + ).getParentFile().absolutePath + includeBuild(reactNativeGradlePlugin) + + def expoPluginsPath = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })") + }.standardOutput.asText.get().trim(), + "../android/expo-gradle-plugin" + ).absolutePath + includeBuild(expoPluginsPath) +} + +plugins { + id("com.facebook.react.settings") + id("expo-autolinking-settings") +} + +extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> + if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') { + ex.autolinkLibrariesFromCommand() + } else { + ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand) + } +} +expoAutolinking.useExpoModules() + +rootProject.name = 'Kin' + +expoAutolinking.useExpoVersionCatalog() + +include ':app' +includeBuild(expoAutolinking.reactNativeGradlePlugin) diff --git a/app/app.json b/app/app.json new file mode 100644 index 0000000..01cbeb7 --- /dev/null +++ b/app/app.json @@ -0,0 +1,41 @@ +{ + "expo": { + "name": "Kin", + "slug": "kin", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/images/icon.png", + "scheme": "kin", + "userInterfaceStyle": "dark", + "backgroundColor": "#14110F", + "android": { + "package": "com.marcus.kin", + "adaptiveIcon": { + "backgroundColor": "#14110F", + "foregroundImage": "./assets/images/adaptive-icon.png", + "monochromeImage": "./assets/images/adaptive-icon.png" + }, + "predictiveBackGestureEnabled": false + }, + "web": { + "output": "static", + "favicon": "./assets/images/favicon.png" + }, + "plugins": [ + "expo-router", + [ + "expo-splash-screen", + { + "backgroundColor": "#14110F", + "image": "./assets/images/splash-icon.png", + "imageWidth": 96 + } + ], + "expo-notifications" + ], + "experiments": { + "typedRoutes": true, + "reactCompiler": true + } + } +} diff --git a/app/assets/images/adaptive-icon.png b/app/assets/images/adaptive-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bb63a2ea3d3bf8ebde70e50f63c72291b68aac GIT binary patch literal 13660 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/favicon.png b/app/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1003b26711c01957be969c30de291fb63373e94 GIT binary patch literal 4808 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/splash-icon.png b/app/assets/images/splash-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..87d55feb5b750a49400067d766848447a5ac7975 GIT binary patch literal 11765 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�FmU|w&5vMj}_;>jJZlRHK8JBb^Y zmC1ar(HEtYzsnVz$K3b;q`JWbnM5Q$m)pM)DSRQ4il=q=8+HBnsp*cxTSE+w0;NPu zB2ZhTbGg5(4%Sr=ScIBxh09w4Q{hLmJwowcVN4!Y_lTPXbL|{ZpY@+2mmz`Fz{1A} zA=l_oOHwS%%dKt#T%9wBc#r&MdvAi(sHg)}kRP#~TX+U0jw>^YN{VZ4(NTSE0qzrJ zhkKh$zW=3@PEYwawgLvB26C3S@;Pxfg)ut;cwI!NT-!ujGsgnzBLt~#m9)LF!LQcq z&k;P&IIJ62zj6jVM_*Vyk?sfoBlm4eCKB_czZ0)}u~Osf@!I!u2ch_T(ACT3kRSK* z#J4S#>%**Epm?9L+KI$@xvdUX?o%a%U4W7m-Hf6{_)Vt;B7CpAMoaP<=#AIE_%#e( zM$vIX^1+?PF%Hra)q5RZNiz*T5%rP5NOfU=Na)#O+ZzDpqr>t<#oQiV142D19slS@ zU*@y8<=nNp{k3~W9+-ryMF>h(Jsd2otSNh%u6?UU2bt4h}^D z$Rx<*6l8_t;ij%r&Lk%wI&OlUk$oQM`N89|{EgbR=8@PH>ZjB&=uzGP4|SEx+ok4p za4f=!yTYNafyE?*U;FX`fRyBE?zY-xKzy_G;uOd_uu1-#u^G(h@*jQN)t~0bWLl6m zbiw|Jqyi(loTY(!Q_4gx6A6}w&ZX9`t^q7--vMX^z}LG{YAAZ|>{%YL^?O|}Q9uZT zU><6)Ru(jY4%pUm+TQdVOCIzdnIF1?Dc63Sfz&UmCjOhH16;w2h+X@qg>YcssO}Q( zlUExU!8ng!M*N%p@8y3#F8=Sw-IE_{m;Uzyu&2DDjMoVu=;}EblpW5d5>tEQ^?p!i zeWlm4=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz", + "integrity": "sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-decorators": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.29.7.tgz", + "integrity": "sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz", + "integrity": "sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.29.7.tgz", + "integrity": "sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.29.7.tgz", + "integrity": "sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.29.7.tgz", + "integrity": "sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-flow": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz", + "integrity": "sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz", + "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz", + "integrity": "sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz", + "integrity": "sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", + "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz", + "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo-google-fonts/material-symbols": { + "version": "0.4.42", + "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.42.tgz", + "integrity": "sha512-KZmHZRcthJ3KFZZlpzHjopA9guZgWR9fb3uVZlTR0BNlvG2pw1bnYBCpkze2PB0vRllwGhAM7lWXsfmcWCbXYg==", + "license": "MIT AND Apache-2.0" + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.3.3" + } + }, + "node_modules/@expo/config": { + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-57.0.7.tgz", + "integrity": "sha512-4A+V8x5OmQqNm76l84S+RrB6kVoeFrvcm/Xn/6d+ELPF/HeucDheAFchdYxYNy+NEvWzuNlI/oCvrftIeK+dbQ==", + "license": "MIT", + "dependencies": { + "@expo/config-plugins": "~57.0.7", + "@expo/config-types": "^57.0.2", + "@expo/json-file": "^11.0.1", + "@expo/require-utils": "^57.0.4", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4" + } + }, + "node_modules/@expo/config-plugins": { + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.7.tgz", + "integrity": "sha512-jvXMiNuH8W7fmU9yCk4/jVwDX2G/5rWUg5PZ22mriccEeQVS9HJjQiUHivMaK6MxEG5L9f0RPScxe/nQfnpQvg==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.4", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" + }, + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devtools": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-57.0.1.tgz", + "integrity": "sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/dom-webview": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-57.0.1.tgz", + "integrity": "sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/env": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.4.2.tgz", + "integrity": "sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "getenv": "^2.0.0" + }, + "engines": { + "node": ">=20.12.0" + } + }, + "node_modules/@expo/expo-modules-macros-plugin": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@expo/expo-modules-macros-plugin/-/expo-modules-macros-plugin-0.6.1.tgz", + "integrity": "sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==", + "license": "MIT" + }, + "node_modules/@expo/fingerprint": { + "version": "0.20.6", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.20.6.tgz", + "integrity": "sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==", + "license": "MIT", + "dependencies": { + "@expo/env": "^2.4.2", + "@expo/spawn-async": "^1.8.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^10.2.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.4.tgz", + "integrity": "sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==", + "license": "MIT", + "dependencies": { + "@expo/require-utils": "^57.0.4", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/inline-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@expo/inline-modules/-/inline-modules-0.1.4.tgz", + "integrity": "sha512-8bPSCm//dv8raYfrQ4x79rCX52vMw0QzmnYYl4eSOAvEbGvDPPRGGdbrhZZ7oihU+hI1sZNS5kYEgqODgFwfsw==", + "license": "MIT", + "dependencies": { + "@expo/config-plugins": "~57.0.6" + } + }, + "node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/local-build-cache-provider": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-57.0.5.tgz", + "integrity": "sha512-OwiNC0Uxu67TOH7TEQ94GLa4oNzNfbbItKGdy3QMfX+hCSZv2VvjcjRo5vttMHfXCnXa9KZIu3GBS9pvtDHWhA==", + "license": "MIT", + "dependencies": { + "@expo/config": "~57.0.6", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/log-box": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-57.0.2.tgz", + "integrity": "sha512-ZsFyfIR7YCbQAdVLzuTUmMHofZC7ZS9ywYCJNPlLc78x59cI8GwXFEIVbRjjC0uJERpNtXx/tsNNnkhexXlzMw==", + "license": "MIT", + "dependencies": { + "@expo/dom-webview": "^57.0.1", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^57.0.1", + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/metro": { + "version": "56.0.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-56.0.0.tgz", + "integrity": "sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==", + "license": "MIT", + "dependencies": { + "metro": "0.84.4", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-config": "0.84.4", + "metro-core": "0.84.4", + "metro-file-map": "0.84.4", + "metro-minify-terser": "0.84.4", + "metro-resolver": "0.84.4", + "metro-runtime": "0.84.4", + "metro-source-map": "0.84.4", + "metro-symbolicate": "0.84.4", + "metro-transform-plugins": "0.84.4", + "metro-transform-worker": "0.84.4" + } + }, + "node_modules/@expo/metro-config": { + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-57.0.7.tgz", + "integrity": "sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~57.0.6", + "@expo/env": "~2.4.2", + "@expo/json-file": "~11.0.1", + "@expo/metro": "~56.0.0", + "@expo/require-utils": "^57.0.4", + "@expo/spawn-async": "^1.8.0", + "@jridgewell/gen-mapping": "^0.3.13", + "@jridgewell/remapping": "^2.3.5", + "@jridgewell/sourcemap-codec": "^1.5.5", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.36.0", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/@expo/metro-file-map": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/metro-file-map/-/metro-file-map-57.0.1.tgz", + "integrity": "sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fb-watchman": "^2.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "node_modules/@expo/metro-runtime": { + "version": "57.0.8", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-57.0.8.tgz", + "integrity": "sha512-RrdehKXNtWpnm8nNs1QFhS0IauyMKR/nSQiry6dcUJs2T5EH8gYDMcMegUt9yI41K4nO3W8tr3O0xd/GZFObXQ==", + "license": "MIT", + "dependencies": { + "@expo/log-box": "^57.0.2", + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "@expo/log-box": "^57.0.2", + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@expo/osascript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.7.1.tgz", + "integrity": "sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.8.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.13.1.tgz", + "integrity": "sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^11.0.1", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "57.0.10", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-57.0.10.tgz", + "integrity": "sha512-myrS5NolFAQWD8g7QuqkettnkyJx3GRl603N6rlmqAMxmO5EU7sZu4EX2EsIKkva8QtpX84B0E17PsM9xXMsTQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.6", + "@expo/config-types": "^57.0.2", + "@expo/image-utils": "^0.11.4", + "@expo/json-file": "^11.0.1", + "@react-native/normalize-colors": "0.86.2", + "debug": "^4.3.1", + "expo-modules-autolinking": "~57.0.9", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/require-utils": { + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-57.0.4.tgz", + "integrity": "sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@expo/schema-utils": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-57.0.2.tgz", + "integrity": "sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==", + "license": "MIT" + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "license": "MIT" + }, + "node_modules/@expo/spawn-async": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.8.0.tgz", + "integrity": "sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", + "license": "MIT" + }, + "node_modules/@expo/ui": { + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/@expo/ui/-/ui-57.0.9.tgz", + "integrity": "sha512-VIxvk5ncgylBj2vrIP1iLaMc3XmYucKbf0hIcg3qx9l2anB9JzaYnH7cvVgNU3RfwV8R9m/tA7lX9BP7D8uMQw==", + "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.1.0", + "vaul": "^1.1.2" + }, + "peerDependencies": { + "@babel/core": "*", + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-worklets": "*" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-worklets": { + "optional": true + } + } + }, + "node_modules/@expo/xcpretty": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.4.tgz", + "integrity": "sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "chalk": "^4.1.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", + "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.15.tgz", + "integrity": "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-slot": "1.3.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz", + "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.23.tgz", + "integrity": "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-dismissable-layer": "1.1.19", + "@radix-ui/react-focus-guards": "1.1.6", + "@radix-ui/react-focus-scope": "1.1.16", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-slot": "1.3.3", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-layout-effect": "1.1.4", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.7.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.4.tgz", + "integrity": "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.19.tgz", + "integrity": "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-effect-event": "0.0.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.6.tgz", + "integrity": "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.16.tgz", + "integrity": "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", + "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.17.tgz", + "integrity": "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.10.tgz", + "integrity": "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", + "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.3.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.19.tgz", + "integrity": "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-direction": "1.1.4", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", + "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.21.tgz", + "integrity": "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-direction": "1.1.4", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-roving-focus": "1.1.19", + "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", + "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz", + "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", + "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz", + "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" + } + }, + "node_modules/@react-native-masked-view/masked-view": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@react-native-masked-view/masked-view/-/masked-view-0.3.2.tgz", + "integrity": "sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16", + "react-native": ">=0.57" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.86.2.tgz", + "integrity": "sha512-vcX/mBjWAVnWofu7KecotquI2unZ/tITwA7OGdq/mdY/zmGXIEvYhfEYyOQij/LRqi9WAL+iizInTBWnxDhK/Q==", + "license": "MIT", + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.86.2.tgz", + "integrity": "sha512-NNDZqOlNbH5SzgPks1jFDYH3234Rpa5e/nhZymxhIiBH3NcE3uD+rGj/HWXhH7nHF2ToGK6XbUpqy7nmJPeh+g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.0", + "@react-native/codegen": "0.86.2" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.86.2.tgz", + "integrity": "sha512-4XKEJ6jKW9lXMB1O5o47gBoGgolde1fbX13gLW/erlcn+1ky+MHHo5UjuM3RWGdPJHIvIzekDDumSUHhB9x5iQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@react-native/babel-plugin-codegen": "0.86.2", + "babel-plugin-syntax-hermes-parser": "0.36.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.86.2.tgz", + "integrity": "sha512-xKkudsahUJ1n//55g4fXk5BStVqqmZlz8HQveL45ZxcfDnwvhuYe2GymksQANFsSN+slvrarjrfq8kIxJzbceA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.29.0", + "hermes-parser": "0.36.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", + "yargs": "^17.6.2" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.86.2.tgz", + "integrity": "sha512-YHXNKoM6Y/HjREySZ5arET2xgiHgg67r1MdwJB//MPJAJ0Xc5g0u6UHxY9VzsHO3Y07dre6s0BinYwjt1SEWvQ==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.86.2", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.84.3", + "metro-config": "^0.84.3", + "metro-core": "^0.84.3", + "semver": "^7.1.3" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "0.86.2" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.86.2.tgz", + "integrity": "sha512-KGS1aV5F6cIqpnoIUhLBXyVzy1oAj8jBFGau6vX4Vy0HXRJN7p+68RU7x6NuyraHvQcR14ccMGT5TkFuNjQ4gA==", + "license": "BSD-3-Clause", + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/debugger-shell": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.86.2.tgz", + "integrity": "sha512-/TaVJ2+gGajZPJGrFaObUQmHmlaxAlfmOPZicl6pNKDUjzSgFMpcLkdTOExvb+USYTVdGX1XwxXyvjQdUO2bvg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "debug": "^4.4.0", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.86.2.tgz", + "integrity": "sha512-B7L0vKvg+IcEElT7Vpqh1xj5yJAqWUegjbP+bQRaorJMAYnv11GkliTnZV2AdTDfZQJWgOEx8i8LGkHkUg7bnA==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.86.2", + "@react-native/debugger-shell": "0.86.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.3.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.86.2.tgz", + "integrity": "sha512-2F6x14NcHMpVmfTTFKfMkpV5dZedZrLiv6PE+c3vgnesV2bjleUBydr4U+NI8VkI7OwW71L0A5qQ76I9LCrfoQ==", + "license": "MIT", + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.86.2.tgz", + "integrity": "sha512-bIwNcGBaQ74shB5z1mRkxOpjikimuwsnOCEkZSzL67Z1FTyK1ObpENfyd2QvcvVW9Cjl+tHuw9ynpBnb2jPoJQ==", + "license": "MIT", + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.86.2.tgz", + "integrity": "sha512-mX1wgLErdb2hDgXJr9zM9SWLe+ZteZTFTwRWGOQ53yEJwc9DVSnxdTlAtVdMeOj2ntycKh0R8jYdat2Am43cwQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.86.2", + "hermes-parser": "0.36.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.86.2.tgz", + "integrity": "sha512-hJno256j+MS0b3JD1aD3ouTGZVacKNVBuXL2atMQQ8BZ060vl1ptnZ83y569aDW+/rgFSOcqn6ydKeSz4uUKQQ==", + "license": "MIT", + "dependencies": { + "@react-native/js-polyfills": "0.86.2", + "@react-native/metro-babel-transformer": "0.86.2", + "metro-config": "^0.84.3", + "metro-runtime": "^0.84.3" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.86.2.tgz", + "integrity": "sha512-EzPFc9Y6lzYOWeso2almwXI7f8+qReHxWvT+algsOczb2UhWXIWXDoSvkdwoSfiwwmGt/ijJgKJoeHlzPkLwRg==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.86.2.tgz", + "integrity": "sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@types/react": "^19.2.0", + "react": "*", + "react-native": "0.86.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.12", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz", + "integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==", + "license": "MIT" + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "license": "MIT" + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.3.tgz", + "integrity": "sha512-6dBq67jT8lE+JTE8Exm02Kt6ze43hz1jdiSpSJwtTZiT1xQQ6b7nZYTTQ9njdArdU8XklOwaDp/AbT/eYSKF4g==", + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", + "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", + "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", + "license": "ISC" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-cli-detector": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/agent-cli-detector/-/agent-cli-detector-0.1.5.tgz", + "integrity": "sha512-6xvLw0EGPuxoYGZeqyMV4AK+WoZ31jsqb7a5pln1BTf6oDFsrgvfCJT7E7y9oAqifJZhJ3fZ0J36H7o6JzrB0Q==", + "license": "MIT", + "bin": { + "agent-cli-detector": "dist/cli.js" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.36.0.tgz", + "integrity": "sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.36.0" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-expo": { + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-57.0.6.tgz", + "integrity": "sha512-ASyy0iP7yPQtq2QaMEnZG4O7YQ/x4sTMguk7PZcow2OHFnWsBpX6v+UCmh/uwCzGfD1q93jDQEuACWwWx4kSrw==", + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.20.5", + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.28.6", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-plugin-codegen": "0.86.2", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.36.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "expo-widgets": "^57.0.8", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + }, + "expo-widgets": { + "optional": true + } + } + }, + "node_modules/badgin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/badgin/-/badgin-1.2.3.tgz", + "integrity": "sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.13.tgz", + "integrity": "sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.3.0.tgz", + "integrity": "sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dnssd-advertise": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.6.tgz", + "integrity": "sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==", + "license": "MIT" + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.403", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.403.tgz", + "integrity": "sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expo": { + "version": "57.0.11", + "resolved": "https://registry.npmjs.org/expo/-/expo-57.0.11.tgz", + "integrity": "sha512-R97257N39Dw0kQFuI4/RvYx95GQ+dmePdo8hxcMOjDxAT4VcCckjILJeAWCE19Jxjb92hZ5NDXAfDPkkV1RB9w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "^57.0.13", + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.7", + "@expo/devtools": "~57.0.1", + "@expo/dom-webview": "~57.0.1", + "@expo/fingerprint": "^0.20.6", + "@expo/local-build-cache-provider": "^57.0.5", + "@expo/log-box": "^57.0.2", + "@expo/metro": "~56.0.0", + "@expo/metro-config": "~57.0.7", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~57.0.6", + "expo-asset": "~57.0.9", + "expo-constants": "~57.0.9", + "expo-file-system": "~57.0.2", + "expo-font": "~57.0.1", + "expo-keep-awake": "~57.0.1", + "expo-modules-autolinking": "~57.0.9", + "expo-modules-core": "~57.0.10", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-minimum": "^0.1.2" + }, + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-web": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-native-webview": { + "optional": true + } + } + }, + "node_modules/expo-application": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-57.0.2.tgz", + "integrity": "sha512-q31YwcXyymviAmdrtDfAg3Dld4VMxLCNAfgMHip7vZpPX4lzF/AfwsywqBJUAjQnJknzaNAkzqvMVjO5XmKYDA==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-asset": { + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-57.0.9.tgz", + "integrity": "sha512-FXlwwW5ThJ2kwXqVX0VcYcDrbmzPDUGPYJOuQZYfsdVB+TLA8LmOgU0Y5ykzLmLs5ONiqs/YjT6Uubv1NUQFzg==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.11.4", + "expo-constants": "~57.0.9" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-constants": { + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-57.0.9.tgz", + "integrity": "sha512-Y47sGiF+U8fwicUSPdJPjB27PuU+FgLK4Mpai0ksZF5hv8jNN3HBqKuDNxsiu70uHBKf80TaR4gwMPh0pmETiQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@expo/env": "~2.4.2" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-file-system": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-57.0.2.tgz", + "integrity": "sha512-bPgzpaOJ3NWHZxV++Osj/1QoFzFe/QOo1jBF4EODJdiZgrrxyi2dv+7PLhKuut5QqPBuihUOITRh3s5jhRtA5A==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-57.0.1.tgz", + "integrity": "sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-glass-effect": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-57.0.1.tgz", + "integrity": "sha512-m/n8maxqNcHk6ZDhuqXBfD5Kt1Iz3M8xykVgdB0iSCIXvF70IqWXmQhX8Psswhrp8eZ+3r0mAD0Jh/2gFA3QaA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-haptics": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-57.0.1.tgz", + "integrity": "sha512-8VhbnxlIrfXjP0syZr1JT197nafYicQu9119adOJnX62osU9Cw+PdDnAx/6LxuKJRzQdwxOMq7b7eWjhNL5zAQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-keep-awake": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-57.0.1.tgz", + "integrity": "sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-linking": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-57.0.5.tgz", + "integrity": "sha512-SmJI3wr0EVfeKPGf+Qgr9gUbrXk8mM0ATqYLvAX/EAzawDjohPzMJ5pTt7TYMX0Wknj4XCtyCQrGhnERMXT6cQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "expo-constants": "~57.0.9", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-57.0.9.tgz", + "integrity": "sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==", + "license": "MIT", + "dependencies": { + "@expo/require-utils": "^57.0.4", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.1.0", + "commander": "^7.2.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-core": { + "version": "57.0.10", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-57.0.10.tgz", + "integrity": "sha512-aRi3G8OctoyZl8x9CLTVpbPljClfKm2eqKRgBzhcGsrH3gS1t5Y2ye7+PIZK4XK2VVP5iGqygN2b1vtqRo3xVQ==", + "license": "MIT", + "dependencies": { + "@expo/expo-modules-macros-plugin": "0.6.1", + "expo-modules-jsi": "~57.0.4", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-worklets": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0" + }, + "peerDependenciesMeta": { + "react-native-worklets": { + "optional": true + } + } + }, + "node_modules/expo-modules-jsi": { + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/expo-modules-jsi/-/expo-modules-jsi-57.0.4.tgz", + "integrity": "sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw==", + "license": "MIT", + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/expo-notifications": { + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-57.0.9.tgz", + "integrity": "sha512-AeA4sdgvfeyw5/O+JPekCIex8JfoBO21fABfZCKAeXF19pWaVtXva08dqwF41JW/LWAmvrshCAH36gP+jdVD4Q==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.11.4", + "abort-controller": "^3.0.0", + "badgin": "^1.1.5", + "expo-application": "~57.0.2", + "expo-constants": "~57.0.9" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-router": { + "version": "57.0.11", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-57.0.11.tgz", + "integrity": "sha512-kE2hz4lLkddZ94vN4nmbq5aXeo0t6FaZ8xJn/Hyn8/dQPsGlvDK0j4ZVayEUUdNmkNHsBVihgf1bl/2rCsYEzA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@expo/log-box": "^57.0.2", + "@expo/metro-runtime": "^57.0.8", + "@expo/schema-utils": "^57.0.2", + "@expo/ui": "^57.0.9", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-native-masked-view/masked-view": "^0.3.2", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/user-event": "^14.6.1", + "client-only": "^0.0.1", + "color": "^4.2.3", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-glass-effect": "^57.0.1", + "expo-server": "^57.0.1", + "expo-symbols": "^57.0.2", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-is": "^19.1.0", + "react-native-drawer-layout": "^4.2.2", + "react-native-screens": "^4.26.0", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "standard-navigation": "^0.0.5", + "vaul": "^1.1.2" + }, + "peerDependencies": { + "@expo/log-box": "^57.0.2", + "@expo/metro-runtime": "^57.0.8", + "@testing-library/react-native": ">= 13.2.0", + "expo": "*", + "expo-constants": "^57.0.9", + "expo-linking": "^57.0.5", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "^4.26.0", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + }, + "peerDependenciesMeta": { + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo-server": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-57.0.1.tgz", + "integrity": "sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo-splash-screen": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-57.0.5.tgz", + "integrity": "sha512-ZN0LDXlhHRNFjXTYZDojXk8IfaoUIu7qa3hhoBTXgyj1UB/iewGlH6+M3Nvhun2lY2d/+xhwqMhv0hIRoBo09Q==", + "license": "MIT", + "dependencies": { + "@expo/config-plugins": "~57.0.6", + "@expo/image-utils": "^0.11.4", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-57.0.1.tgz", + "integrity": "sha512-Xwaq1gAoVRWx5dPG5VhT5RSbnI9OilhZnO5qoPBnUaBAa5VzRzfdS8q0/bsPt0jR2DKLtGuP0bQ6efMJ4RIMDg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-symbols": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-57.0.2.tgz", + "integrity": "sha512-qZ0iqOflm5lZGwRsQ5Y8sDksw3GAUKwHSX1bJBoocXf7gu14vafIXXYWte+JT9VfXAUGyKodJhLHP/GoOrcNWg==", + "license": "MIT", + "dependencies": { + "@expo-google-fonts/material-symbols": "^0.4.1", + "sf-symbols-typescript": "^2.0.0" + }, + "peerDependencies": { + "expo": "*", + "expo-font": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-system-ui": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-57.0.2.tgz", + "integrity": "sha512-zABCRqFSioDBAo/RtmS0dQiGgDtDPZUVk01Y3Ti4ducobNM4HTM2sNAtq+YPpEUhaVW3hccPVsEUH4LK/ADVhA==", + "license": "MIT", + "dependencies": { + "@react-native/normalize-colors": "0.86.2", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/cli": { + "version": "57.0.13", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-57.0.13.tgz", + "integrity": "sha512-8gjLMyx+s0dLeDHlcfjM9D9x5yrCU5C6516rmC7q/Wiyuj1fxgr/cbDSmjdpQKkjlvvfvNwtRyMk2zhvhPohiw==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.7", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.4.2", + "@expo/image-utils": "^0.11.4", + "@expo/inline-modules": "^0.1.4", + "@expo/json-file": "^11.0.1", + "@expo/log-box": "^57.0.2", + "@expo/metro": "~56.0.0", + "@expo/metro-config": "~57.0.7", + "@expo/metro-file-map": "^57.0.1", + "@expo/osascript": "^2.7.1", + "@expo/package-manager": "^1.13.1", + "@expo/plist": "^0.8.1", + "@expo/prebuild-config": "^57.0.10", + "@expo/require-utils": "^57.0.4", + "@expo/router-server": "^57.0.5", + "@expo/schema-utils": "^57.0.2", + "@expo/spawn-async": "^1.8.0", + "@expo/ws-tunnel": "^2.0.0", + "@expo/xcpretty": "^4.4.4", + "@react-native/dev-middleware": "0.86.2", + "accepts": "^1.3.8", + "agent-cli-detector": "^0.1.2", + "arg": "^5.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "dnssd-advertise": "^1.1.4", + "expo-server": "^57.0.1", + "fetch-nodeshim": "^0.4.10", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.2.1", + "multitars": "^1.0.0", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^4.0.4", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "terminal-link": "^2.1.1", + "toqr": "^0.1.1", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1", + "zod": "^3.25.76" + }, + "bin": { + "expo-internal": "main.js" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-57.0.5.tgz", + "integrity": "sha512-vke39l0bo3H2q9JB/KXpAJ7HpscdTG3Mktbxanc8yn3riWzzSsnv0uxwZGZCrZrnDQzFxlLTXgbZrGkU26ng1w==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^57.0.8", + "expo": "*", + "expo-constants": "^57.0.9", + "expo-font": "^57.0.1", + "expo-router": "*", + "expo-server": "^57.0.1", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/ws-tunnel": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-2.0.0.tgz", + "integrity": "sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==", + "license": "MIT", + "peerDependencies": { + "ws": "^8.0.0" + } + }, + "node_modules/expo/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo/node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch-nodeshim": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.10.tgz", + "integrity": "sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-compiler": { + "version": "250829098.0.16", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.16.tgz", + "integrity": "sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.36.0.tgz", + "integrity": "sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.36.0.tgz", + "integrity": "sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.36.0" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lan-network": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.2.1.tgz", + "integrity": "sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==", + "license": "MIT", + "bin": { + "lan-network": "dist/lan-network-cli.js" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/metro": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.84.4.tgz", + "integrity": "sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.35.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-config": "0.84.4", + "metro-core": "0.84.4", + "metro-file-map": "0.84.4", + "metro-resolver": "0.84.4", + "metro-runtime": "0.84.4", + "metro-source-map": "0.84.4", + "metro-symbolicate": "0.84.4", + "metro-transform-plugins": "0.84.4", + "metro-transform-worker": "0.84.4", + "mime-types": "^3.0.1", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.84.4.tgz", + "integrity": "sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.35.0", + "metro-cache-key": "0.84.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", + "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", + "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.35.0" + } + }, + "node_modules/metro-cache": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.84.4.tgz", + "integrity": "sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.84.4" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-cache-key": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.84.4.tgz", + "integrity": "sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-config": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.84.4.tgz", + "integrity": "sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.84.4", + "metro-cache": "0.84.4", + "metro-core": "0.84.4", + "metro-runtime": "0.84.4", + "yaml": "^2.6.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-core": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.84.4.tgz", + "integrity": "sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.84.4" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-file-map": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.84.4.tgz", + "integrity": "sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.84.4.tgz", + "integrity": "sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-resolver": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.84.4.tgz", + "integrity": "sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-runtime": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.84.4.tgz", + "integrity": "sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-source-map": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.84.4.tgz", + "integrity": "sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.84.4", + "nullthrows": "^1.1.1", + "ob1": "0.84.4", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.84.4.tgz", + "integrity": "sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.84.4", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.84.4.tgz", + "integrity": "sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.84.4.tgz", + "integrity": "sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.84.4", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-minify-terser": "0.84.4", + "metro-source-map": "0.84.4", + "metro-transform-plugins": "0.84.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", + "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", + "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.35.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multitars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-1.0.1.tgz", + "integrity": "sha512-Do9rHaSDfQ2Fk5Dpg2RjQ4M48Ol7rSq1gvKn/dXJYnhKEm8RRjjUvyiGDDEhJqb0hJPGjRaTB1kx6beqKO/i6Q==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.84.4.tgz", + "integrity": "sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "license": "MIT", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/plist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", + "integrity": "sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.9.10", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/plist/node_modules/@xmldom/xmldom": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", + "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.8.tgz", + "integrity": "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.86.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.86.2.tgz", + "integrity": "sha512-zbJXGZpwfZGA79Z9ob6Atvfx4nAQL8yJBa35s58E4Oo+khPykfQP2sTeumkKbjwajFYfVayg8pj7Il9nIfTk7A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-native/assets-registry": "0.86.2", + "@react-native/codegen": "0.86.2", + "@react-native/community-cli-plugin": "0.86.2", + "@react-native/gradle-plugin": "0.86.2", + "@react-native/js-polyfills": "0.86.2", + "@react-native/normalize-colors": "0.86.2", + "@react-native/virtualized-lists": "0.86.2", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-plugin-syntax-hermes-parser": "0.36.0", + "base64-js": "^1.5.1", + "commander": "^12.0.0", + "flow-enums-runtime": "^0.0.6", + "hermes-compiler": "250829098.0.16", + "invariant": "^2.2.4", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.84.3", + "metro-source-map": "^0.84.3", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.5", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.27.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", + "whatwg-fetch": "^3.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + }, + "peerDependencies": { + "@react-native/jest-preset": "0.86.2", + "@types/react": "^19.1.1", + "react": "^19.2.3" + }, + "peerDependenciesMeta": { + "@react-native/jest-preset": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-drawer-layout": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/react-native-drawer-layout/-/react-native-drawer-layout-4.2.10.tgz", + "integrity": "sha512-O6TQdZ5LSm3dqnuR4rX9KPtE+9dVg7jsezEYz1l01rkQTe4fQvYZIoPu2sZFl5X2N70uhRdjnPULySVR3sBUwA==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-reanimated": ">= 2.0.0" + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.32.0.tgz", + "integrity": "sha512-uYIMOKlKENORq2SABE+jIjbPU+h5I/sQKcq2v16zRq848nwEp1fWRVwML4QWqijc8UcXJC25o54S8GQd4Mf2OA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "@types/react-test-renderer": "^19.1.0", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.3.1.tgz", + "integrity": "sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.5.1.tgz", + "integrity": "sha512-RnMvtDuR+68ig864gAvZCOdZehqhC5rFmMo0kn+ARfgVSTvFeF6IFLBVgMPUu0KwihaapEyW24WRi6nEyy1kSA==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-native-is-edge-to-edge": "^1.3.1", + "semver": "^7.7.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "0.83 - 0.86", + "react-native-worklets": "0.10.x" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.7.0.tgz", + "integrity": "sha512-/9/MtQz8ODphjsLdZ+GZAIcC/RtoqW9EeShf7Uvnfgm/pzYrJ75y3PV/J1wuAV1T5Dye5ygq4EAW20RoBq0ABQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.26.2.tgz", + "integrity": "sha512-2XnWsZToKj76trGtEZzx5ELD/qOICFEprEeUntImmitQFVUkea27fiWdUSITArI356Y1qynpXZINW+Unbhky/A==", + "license": "MIT", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", + "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^7.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", + "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", + "license": "MIT" + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/react-native-worklets": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.10.1.tgz", + "integrity": "sha512-62mRM19bDpfpdI8HLkEErcdOsrAPDtE9lA/sw+5lLRpzBHNhxaoj9QyY2KjXqUmirelxkX4zuPGTC3VdA0feJA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/preset-typescript": "^7.28.5", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "semver": "^7.7.4" + }, + "peerDependencies": { + "@babel/core": "*", + "@react-native/metro-config": "*", + "react": "*", + "react-native": "0.83 - 0.86" + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-workspace-root": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", + "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slugify": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", + "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/standard-navigation": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/standard-navigation/-/standard-navigation-0.0.5.tgz", + "integrity": "sha512-YAmzwAiiQVocZxO/VGPFiQHcu5pKiz09QIGC0MK6aRMoa3E0QkoTQgcqJr7ZZ3OMiNhu4DkaGElFI5htjOIDbw==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "license": "MIT" + }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz", + "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toqr": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/toqr/-/toqr-0.1.1.tgz", + "integrity": "sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.0.tgz", + "integrity": "sha512-x/M6q3w4Ybp91CNaS4S69UnliqR3BzRpOT6LWbksjth0S/+jhfaPJsWjt/TewpT8j9eLIojUf5jr29WextHroA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", + "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.2.tgz", + "integrity": "sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/ws": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz", + "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/app/package.json b/app/package.json new file mode 100644 index 0000000..98202b2 --- /dev/null +++ b/app/package.json @@ -0,0 +1,38 @@ +{ + "name": "kin", + "main": "expo-router/entry", + "version": "1.0.0", + "dependencies": { + "@react-native-async-storage/async-storage": "2.2.0", + "expo": "~57.0.11", + "expo-constants": "~57.0.9", + "expo-haptics": "~57.0.1", + "expo-linking": "~57.0.5", + "expo-notifications": "~57.0.9", + "expo-router": "~57.0.11", + "expo-splash-screen": "~57.0.5", + "expo-status-bar": "~57.0.1", + "expo-system-ui": "~57.0.2", + "react": "19.2.3", + "react-dom": "19.2.3", + "react-native": "0.86.2", + "react-native-gesture-handler": "~2.32.0", + "react-native-reanimated": "4.5.1", + "react-native-safe-area-context": "~5.7.0", + "react-native-screens": "~4.26.0", + "react-native-web": "~0.21.0", + "react-native-worklets": "0.10.1" + }, + "devDependencies": { + "@types/react": "~19.2.2", + "typescript": "~6.0.3" + }, + "scripts": { + "start": "expo start", + "android": "expo run:android", + "ios": "expo run:ios", + "web": "expo start --web", + "typecheck": "tsc --noEmit" + }, + "private": true +} diff --git a/app/src/app/_layout.tsx b/app/src/app/_layout.tsx new file mode 100644 index 0000000..e3443ee --- /dev/null +++ b/app/src/app/_layout.tsx @@ -0,0 +1,39 @@ +import React, { useEffect } from "react"; +import { AppState } from "react-native"; +import { Stack } from "expo-router"; +import { StatusBar } from "expo-status-bar"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; +import { C } from "../lib/theme"; +import { hydrate, refresh } from "../lib/store"; + +export default function RootLayout() { + useEffect(() => { + void hydrate(); + const sub = AppState.addEventListener("change", (s) => { + if (s === "active") void refresh(); + }); + return () => sub.remove(); + }, []); + + return ( + + + + + + + + + + + + ); +} diff --git a/app/src/app/edit.tsx b/app/src/app/edit.tsx new file mode 100644 index 0000000..209a15b --- /dev/null +++ b/app/src/app/edit.tsx @@ -0,0 +1,107 @@ +import React, { useEffect, useState } from "react"; +import { Alert, ScrollView, Text, View } from "react-native"; +import { Stack, useLocalSearchParams, useRouter } from "expo-router"; +import { C } from "../lib/theme"; +import { api } from "../lib/api"; +import { refresh } from "../lib/store"; +import { Button, Chips, Field } from "../components/ui"; +import { success } from "../lib/haptics"; +import { CADENCES } from "../lib/types"; + +// Add (no id param) or edit (id param) a person. +export default function EditPerson() { + const { id } = useLocalSearchParams<{ id?: string }>(); + const router = useRouter(); + const editing = Boolean(id); + + const [name, setName] = useState(""); + const [phone, setPhone] = useState(""); + const [email, setEmail] = useState(""); + const [location, setLocation] = useState(""); + const [tags, setTags] = useState(""); + const [notes, setNotes] = useState(""); + const [cadence, setCadence] = useState<(typeof CADENCES)[number]>( + CADENCES.find((c) => c.days === 30)! + ); + const [loaded, setLoaded] = useState(!editing); + const [saving, setSaving] = useState(false); + + useEffect(() => { + if (!id) return; + api.person(id).then((p) => { + setName(p.full_name); + setPhone(p.phone ?? ""); + setEmail(p.email ?? ""); + setLocation(p.location ?? ""); + setTags(p.tags.join(", ")); + setNotes(p.notes ?? ""); + setCadence(CADENCES.find((c) => c.days === p.cadence_days) ?? CADENCES[CADENCES.length - 1]); + setLoaded(true); + }); + }, [id]); + + async function save() { + if (saving) return; + const full_name = name.trim(); + if (!full_name) { + Alert.alert("Name is required"); + return; + } + setSaving(true); + const body = { + full_name, + phone: phone.trim() || null, + email: email.trim() || null, + location: location.trim() || null, + tags, + notes: notes.trim() || null, + cadence_days: cadence.days, + }; + try { + if (id) await api.updatePerson(id, body); + else await api.createPerson(body); + success(); + void refresh(); + router.back(); + } catch (e) { + Alert.alert("Couldn't save", e instanceof Error ? e.message : "unknown error"); + setSaving(false); + } + } + + if (!loaded) { + return ( + + Loading… + + ); + } + + return ( + <> + + + + + + + + + Stay in touch + c.label} + getKey={(c) => String(c.days)} + /> + + + + + +

+
    +
    +

    Select a contact, or add a new one.

    +
    +
    + + + + diff --git a/server/public/styles.css b/server/public/styles.css new file mode 100644 index 0000000..9f9aa01 --- /dev/null +++ b/server/public/styles.css @@ -0,0 +1,102 @@ +:root { + --bg: #0f1115; + --panel: #171a21; + --panel-2: #1e222b; + --border: #2a2f3a; + --text: #e6e8ec; + --muted: #8b93a1; + --accent: #4f8cff; + --accent-2: #2d6ae0; + --danger: #e5484d; + --radius: 10px; +} + +* { box-sizing: border-box; } +body { + margin: 0; + font: 15px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + background: var(--bg); + color: var(--text); +} + +header { + padding: 16px 20px; + border-bottom: 1px solid var(--border); + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 12px 16px; + background: var(--panel); + position: sticky; + top: 0; + z-index: 5; +} +header h1 { font-size: 18px; margin: 0; } +.stats { color: var(--muted); font-size: 13px; } +.controls { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; } + +input, select, textarea, button { + font: inherit; + color: var(--text); + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: 8px; + padding: 8px 10px; +} +input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent); outline-offset: -1px; } +button { cursor: pointer; } +button.primary { background: var(--accent); border-color: var(--accent-2); color: #fff; font-weight: 600; } +button.primary:hover { background: var(--accent-2); } +button.ghost { background: transparent; } +button.danger { color: var(--danger); border-color: var(--danger); background: transparent; } + +main { display: grid; grid-template-columns: 340px 1fr; min-height: calc(100vh - 66px); } + +.list { list-style: none; margin: 0; padding: 8px; border-right: 1px solid var(--border); overflow-y: auto; } +.list li { + padding: 10px 12px; + border-radius: 8px; + cursor: pointer; + display: flex; + flex-direction: column; + gap: 3px; +} +.list li:hover { background: var(--panel); } +.list li.active { background: var(--panel-2); outline: 1px solid var(--accent); } +.list .name { font-weight: 600; } +.list .meta { font-size: 12px; color: var(--muted); display: flex; gap: 8px; flex-wrap: wrap; } +.tagchip { font-size: 11px; padding: 1px 7px; border-radius: 999px; background: #23324d; color: #9dbcff; } + +.detail { padding: 24px; overflow-y: auto; } +.detail .empty { color: var(--muted); } +.detail h2 { margin: 0 0 4px; } +.detail .sub { color: var(--muted); margin: 0 0 16px; } +.detail section.block { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; margin-bottom: 16px; } +.detail section.block h3 { margin: 0 0 12px; font-size: 13px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); } + +.row { display: flex; gap: 10px; margin-bottom: 10px; } +.row label { flex: 0 0 110px; color: var(--muted); padding-top: 8px; } +.row .field { flex: 1; } +.field input, .field textarea, .field select { width: 100%; } +textarea { resize: vertical; min-height: 60px; } + +.timeline { list-style: none; margin: 0; padding: 0; } +.timeline li { padding: 10px 0; border-top: 1px solid var(--border); } +.timeline li:first-child { border-top: none; } +.timeline .when { font-size: 12px; color: var(--muted); } +.badge { font-size: 11px; padding: 1px 8px; border-radius: 999px; background: var(--panel-2); border: 1px solid var(--border); } + +.actions { display: flex; gap: 8px; margin-top: 8px; } +.inline-form { display: grid; gap: 8px; } +.hint { color: var(--muted); font-size: 12px; } +.toast { + position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); + background: var(--panel-2); border: 1px solid var(--border); padding: 10px 16px; + border-radius: 8px; opacity: 0; transition: opacity .2s; pointer-events: none; +} +.toast.show { opacity: 1; } + +@media (max-width: 720px) { + main { grid-template-columns: 1fr; } + .list { max-height: 40vh; } +} diff --git a/server/src/db.ts b/server/src/db.ts new file mode 100644 index 0000000..8bd86d0 --- /dev/null +++ b/server/src/db.ts @@ -0,0 +1,13 @@ +import postgres from "postgres"; + +const url = process.env.DATABASE_URL; +if (!url) throw new Error("DATABASE_URL is not set"); + +// Single shared connection pool for the app. +const sql = postgres(url, { + max: 5, + idle_timeout: 30, + onnotice: () => {}, // silence NOTICE spam +}); + +export default sql; diff --git a/server/src/index.ts b/server/src/index.ts new file mode 100644 index 0000000..aee7859 --- /dev/null +++ b/server/src/index.ts @@ -0,0 +1,46 @@ +import { Hono } from "hono"; +import { serveStatic } from "hono/bun"; +import { logger } from "hono/logger"; +import { migrate } from "./migrate"; +import people from "./routes/people"; +import due from "./routes/due"; + +const app = new Hono(); + +app.use("*", logger()); + +// Health check — used by the container healthcheck. +app.get("/healthz", (c) => c.text("ok")); + +// API auth. Two ways in, matching the Caddy config for crm.rehbock.xyz: +// - Browser/web UI: Caddy enforces basic_auth before proxying, so requests +// without a Bearer header have already been authenticated upstream. +// - Mobile app: sends `Authorization: Bearer `; Caddy passes +// Bearer requests straight through and WE are the auth layer, so any +// Bearer value that doesn't match the token is rejected here. +// Direct access on the Docker networks is unauthenticated by design — the +// port is never published on the host. +const API_TOKEN = process.env.API_TOKEN; +app.use("/api/*", async (c, next) => { + const auth = c.req.header("authorization") ?? ""; + if (auth.startsWith("Bearer ")) { + if (!API_TOKEN || auth !== `Bearer ${API_TOKEN}`) { + return c.json({ error: "unauthorized" }, 401); + } + } + await next(); +}); + +// API +app.route("/api", due); +app.route("/api", people); + +// Static front end (public/) +app.use("/*", serveStatic({ root: "./public" })); + +await migrate(); + +const port = Number(process.env.PORT ?? 3000); +console.log(`kin server listening on :${port}`); + +export default { port, fetch: app.fetch }; diff --git a/server/src/migrate.ts b/server/src/migrate.ts new file mode 100644 index 0000000..93d6f6a --- /dev/null +++ b/server/src/migrate.ts @@ -0,0 +1,31 @@ +import { readdir, readFile } from "node:fs/promises"; +import { fileURLToPath } from "node:url"; +import sql from "./db"; + +const MIGRATIONS_DIR = fileURLToPath(new URL("../migrations", import.meta.url)); + +// Applies migrations/*.sql in filename order, once each, recorded in +// schema_migrations. Runs at boot before the server starts listening. +export async function migrate() { + await sql` + create table if not exists schema_migrations ( + name text primary key, + applied_at timestamptz not null default now() + ) + `; + + const files = (await readdir(MIGRATIONS_DIR)).filter((f) => f.endsWith(".sql")).sort(); + const applied = new Set( + (await sql`select name from schema_migrations`).map((r) => r.name) + ); + + for (const file of files) { + if (applied.has(file)) continue; + const text = await readFile(`${MIGRATIONS_DIR}/${file}`, "utf8"); + await sql.begin(async (tx) => { + await tx.unsafe(text); + await tx`insert into schema_migrations (name) values (${file})`; + }); + console.log(`migrated: ${file}`); + } +} diff --git a/server/src/routes/due.ts b/server/src/routes/due.ts new file mode 100644 index 0000000..51832d5 --- /dev/null +++ b/server/src/routes/due.ts @@ -0,0 +1,65 @@ +import { Hono } from "hono"; +import sql from "../db"; + +const due = new Hono(); + +// The heart of the app: everyone with a cadence, annotated with how overdue +// they are. `urgency` = days_since / cadence_days (>= 1 means overdue), so a +// weekly friend 3 days late outranks a yearly contact 3 days late. +// People never contacted anchor on created_at so they surface immediately. +due.get("/due", async (c) => { + const rows = await sql` + SELECT + p.id, p.full_name, p.email, p.phone, p.tags, p.location, + p.cadence_days, p.snoozed_until, p.birthday, + li.last_contacted, li.last_type, + COALESCE(li.interaction_count, 0)::int AS interaction_count, + GREATEST(0, EXTRACT(epoch FROM now() - COALESCE(li.last_contacted, p.created_at)) / 86400)::int AS days_since + FROM people p + LEFT JOIN ( + SELECT person_id, + max(occurred_at) AS last_contacted, + (array_agg(type ORDER BY occurred_at DESC))[1] AS last_type, + count(*) AS interaction_count + FROM interactions + GROUP BY person_id + ) li ON li.person_id = p.id + WHERE NOT p.archived + AND p.cadence_days IS NOT NULL + `; + + const today = new Date().toISOString().slice(0, 10); + const out = rows + .map((r) => { + const urgency = r.days_since / r.cadence_days; + const snoozed = r.snoozed_until != null && String(r.snoozed_until) > today; + return { + ...r, + urgency: Math.round(urgency * 100) / 100, + due_in_days: Math.ceil(r.cadence_days - r.days_since), + snoozed, + status: snoozed ? "snoozed" : urgency >= 1 ? "overdue" : urgency >= 0.75 ? "due_soon" : "ok", + }; + }) + .sort((a, b) => b.urgency - a.urgency); + + return c.json(out); +}); + +// Snooze someone off the due list for N days (default 7). days=0 unsnoozes. +due.post("/people/:id/snooze", async (c) => { + const id = c.req.param("id"); + const body = await c.req.json().catch(() => ({})); + const days = Number.isFinite(Number(body.days)) ? Number(body.days) : 7; + + const until = + days <= 0 ? null : new Date(Date.now() + days * 86400_000).toISOString().slice(0, 10); + const [row] = await sql` + UPDATE people SET snoozed_until = ${until} WHERE id = ${id} + RETURNING id, snoozed_until + `; + if (!row) return c.json({ error: "not found" }, 404); + return c.json(row); +}); + +export default due; diff --git a/server/src/routes/people.ts b/server/src/routes/people.ts new file mode 100644 index 0000000..0babdf5 --- /dev/null +++ b/server/src/routes/people.ts @@ -0,0 +1,244 @@ +import { Hono } from "hono"; +import sql from "../db"; + +const people = new Hono(); + +// --- helpers ------------------------------------------------------------- + +// Coerce an incoming tags value into a clean string[]. +function normalizeTags(input: unknown): string[] { + if (Array.isArray(input)) return input.map((t) => String(t).trim()).filter(Boolean); + if (typeof input === "string") { + return input.split(",").map((t) => t.trim()).filter(Boolean); + } + return []; +} + +// --- stats --------------------------------------------------------------- + +people.get("/stats", async (c) => { + const [row] = await sql` + SELECT + (SELECT count(*) FROM people WHERE NOT archived) AS people, + (SELECT count(*) FROM interactions) AS interactions, + (SELECT count(*) FROM relationships) AS relationships, + (SELECT count(*) FROM people WHERE NOT archived AND cadence_days IS NOT NULL) AS with_cadence + `; + return c.json(row); +}); + +// Distinct tags across all people, with counts. +people.get("/tags", async (c) => { + const rows = await sql` + SELECT tag, count(*)::int AS count + FROM people, unnest(tags) AS tag + WHERE NOT archived + GROUP BY tag + ORDER BY count DESC, tag ASC + `; + return c.json(rows); +}); + +// --- list ---------------------------------------------------------------- +// Supports ?q=search &tag=filter &sort=name|recent|stale &archived=1 +people.get("/people", async (c) => { + const q = (c.req.query("q") ?? "").trim(); + const tag = (c.req.query("tag") ?? "").trim(); + const sort = c.req.query("sort") ?? "name"; + const includeArchived = c.req.query("archived") === "1"; + + const search = q ? `%${q}%` : null; + const orderBy = + sort === "recent" + ? sql`last_contacted DESC NULLS LAST, full_name ASC` + : sort === "stale" + ? sql`last_contacted ASC NULLS FIRST, full_name ASC` + : sql`full_name ASC`; + + const rows = await sql` + SELECT + p.id, p.full_name, p.email, p.phone, p.tags, p.location, + p.cadence_days, p.snoozed_until, p.archived, p.birthday, + li.last_contacted, + COALESCE(li.interaction_count, 0)::int AS interaction_count + FROM people p + LEFT JOIN ( + SELECT person_id, + max(occurred_at) AS last_contacted, + count(*) AS interaction_count + FROM interactions + GROUP BY person_id + ) li ON li.person_id = p.id + WHERE (${includeArchived} OR NOT p.archived) + AND (${search}::text IS NULL OR p.full_name ILIKE ${search} OR p.email ILIKE ${search} OR p.phone ILIKE ${search} OR p.location ILIKE ${search}) + AND (${tag || null}::text IS NULL OR ${tag} = ANY(p.tags)) + ORDER BY ${orderBy} + `; + return c.json(rows); +}); + +// --- single (with interactions + relationships) -------------------------- +people.get("/people/:id", async (c) => { + const id = c.req.param("id"); + const [person] = await sql`SELECT * FROM people WHERE id = ${id}`; + if (!person) return c.json({ error: "not found" }, 404); + + const interactions = await sql` + SELECT id, type, occurred_at, summary, notes + FROM interactions + WHERE person_id = ${id} + ORDER BY occurred_at DESC + `; + + // Relationships in both directions, resolved to the other person's name. + const relationships = await sql` + SELECT r.id, r.type, r.notes, + other.id AS other_id, other.full_name AS other_name, + (r.from_person_id = ${id}) AS outgoing + FROM relationships r + JOIN people other + ON other.id = CASE WHEN r.from_person_id = ${id} THEN r.to_person_id ELSE r.from_person_id END + WHERE r.from_person_id = ${id} OR r.to_person_id = ${id} + ORDER BY other.full_name + `; + + return c.json({ ...person, interactions, relationships }); +}); + +// --- create -------------------------------------------------------------- +people.post("/people", async (c) => { + const body = await c.req.json().catch(() => ({})); + const full_name = String(body.full_name ?? "").trim(); + if (!full_name) return c.json({ error: "full_name is required" }, 400); + + const tags = normalizeTags(body.tags); + const cadence = Number.isFinite(Number(body.cadence_days)) && Number(body.cadence_days) > 0 + ? Math.round(Number(body.cadence_days)) + : null; + try { + const [row] = await sql` + INSERT INTO people (full_name, first_name, last_name, email, phone, tags, notes, location, source, cadence_days, birthday) + VALUES ( + ${full_name}, + ${body.first_name || null}, + ${body.last_name || null}, + ${body.email || null}, + ${body.phone || null}, + ${tags}, + ${body.notes || null}, + ${body.location || null}, + ${body.source || "crm"}, + ${cadence}, + ${body.birthday || null} + ) + RETURNING * + `; + return c.json(row, 201); + } catch (err: any) { + if (err?.code === "23505") return c.json({ error: "a contact with that email already exists" }, 409); + throw err; + } +}); + +// --- update -------------------------------------------------------------- +people.patch("/people/:id", async (c) => { + const id = c.req.param("id"); + const body = await c.req.json().catch(() => ({})); + + // Build a partial update from only the fields provided. + const fields: Record = {}; + for (const k of ["full_name", "first_name", "last_name", "email", "phone", "notes", "location", "birthday", "snoozed_until"]) { + if (k in body) fields[k] = body[k] === "" ? null : body[k]; + } + if ("tags" in body) fields.tags = normalizeTags(body.tags); + if ("archived" in body) fields.archived = Boolean(body.archived); + if ("cadence_days" in body) { + const n = Number(body.cadence_days); + fields.cadence_days = Number.isFinite(n) && n > 0 ? Math.round(n) : null; + } + + if (Object.keys(fields).length === 0) return c.json({ error: "nothing to update" }, 400); + + try { + const [row] = await sql` + UPDATE people SET ${sql(fields)} WHERE id = ${id} RETURNING * + `; + if (!row) return c.json({ error: "not found" }, 404); + return c.json(row); + } catch (err: any) { + if (err?.code === "23505") return c.json({ error: "a contact with that email already exists" }, 409); + throw err; + } +}); + +// --- delete -------------------------------------------------------------- +people.delete("/people/:id", async (c) => { + const id = c.req.param("id"); + const [row] = await sql`DELETE FROM people WHERE id = ${id} RETURNING id`; + if (!row) return c.json({ error: "not found" }, 404); + return c.json({ deleted: row.id }); +}); + +// --- add interaction ----------------------------------------------------- +people.post("/people/:id/interactions", async (c) => { + const id = c.req.param("id"); + const body = await c.req.json().catch(() => ({})); + + const [person] = await sql`SELECT id FROM people WHERE id = ${id}`; + if (!person) return c.json({ error: "person not found" }, 404); + + const [row] = await sql` + INSERT INTO interactions (person_id, type, occurred_at, summary, notes) + VALUES ( + ${id}, + ${body.type || null}, + ${body.occurred_at ? new Date(body.occurred_at) : sql`now()`}, + ${body.summary || null}, + ${body.notes || null} + ) + RETURNING * + `; + // Logging contact naturally clears any snooze. + await sql`UPDATE people SET snoozed_until = NULL WHERE id = ${id} AND snoozed_until IS NOT NULL`; + return c.json(row, 201); +}); + +// --- delete interaction -------------------------------------------------- +people.delete("/interactions/:id", async (c) => { + const id = c.req.param("id"); + const [row] = await sql`DELETE FROM interactions WHERE id = ${id} RETURNING id`; + if (!row) return c.json({ error: "not found" }, 404); + return c.json({ deleted: row.id }); +}); + +// --- relationships (create/delete — the old web CRM was read-only here) --- +people.post("/people/:id/relationships", async (c) => { + const id = c.req.param("id"); + const body = await c.req.json().catch(() => ({})); + const to = String(body.to_person_id ?? "").trim(); + const type = String(body.type ?? "").trim(); + if (!to || !type) return c.json({ error: "to_person_id and type are required" }, 400); + + try { + const [row] = await sql` + INSERT INTO relationships (from_person_id, to_person_id, type, notes) + VALUES (${id}, ${to}, ${type}, ${body.notes || null}) + RETURNING * + `; + return c.json(row, 201); + } catch (err: any) { + if (err?.code === "23505") return c.json({ error: "that relationship already exists" }, 409); + if (err?.code === "23503") return c.json({ error: "person not found" }, 404); + if (err?.code === "23514") return c.json({ error: "cannot relate a person to themselves" }, 400); + throw err; + } +}); + +people.delete("/relationships/:id", async (c) => { + const id = c.req.param("id"); + const [row] = await sql`DELETE FROM relationships WHERE id = ${id} RETURNING id`; + if (!row) return c.json({ error: "not found" }, 404); + return c.json({ deleted: row.id }); +}); + +export default people;